一种椭圆曲线数字签名与验签的硬件实现方法和系统与流程

文档序号:27922634发布日期:2021-12-11 11:26阅读:186来源:国知局
一种椭圆曲线数字签名与验签的硬件实现方法和系统与流程

1.本发明涉及信息安全技术领域,更具体地说,涉及一种椭圆曲线数字签名与验签的硬件实现方法和系统。


背景技术:

2.椭圆曲线密码学(ecc,elliptic curve cryptography),是一种建立公开密钥加密的算法,基于椭圆曲线数学,最早在1985年由neal koblitz和victor miller分别独立提出。与rsa加密算法相比,椭圆曲线加密具有更高的安全性、更小的计算量,逐渐成为密码学研究的热点,现已被多个国际标准化组织作为标准化文件。目前ecc算法在数字签名、移动设备通信、安全性半导体、区块链等领域均有重要应用。
3.椭圆曲线数字签名算法(ecdsa,elliptic curve digital signature algorithm),于1999年成为ansi标准,并于2000年成为ieee和nist标准。椭圆曲线数字签名算法是椭圆加密与数字签名算法的结合,由于其计算量小、处理速度快、存储空间占用小等特点,被广泛应用于电子商务系统和其他网络领域,并逐渐成为当前主流区块链平台及项目的默认签名机制。随着网络传输技术和硬件性能的提升,各技术领域对ecdsa算法的速度要求也越来越高,而ecdsa算法中的标量乘计算复杂度高,尤其是模乘的实现与点加、倍点的调度耗时较长,是硬件加速的难点。
4.中国专利申请一种双域椭圆曲线点乘硬件加速器,申请号cn202010605159.1,公开日2020年10月27日,公开了一种双域椭圆曲线点乘硬件加速器,该硬件加速器分为模运算层和点运算层,其中该模运算层包括素数域和二进制域模约减、模乘、模逆模块;点运算层包括素数域naf点乘运算模块,倍点和点加以及二进制域点乘模块。其中,所述硬件加速器是作为从设备挂载在设备总线上并且连接到处理器,处理器通过配置该硬件加速器中的功能寄存器来实现不同的加速运算模式,该发明采用传统蒙哥马利模乘,所需硬件面积较大,且算法实现复杂,硬件无法灵活地进行重构;该发明未对jacobian坐标系下的点加与倍点计算进行进一步调度优化,计算时间与资源利用未达到最优;该发明未充分利用各层次下共同的计算类型,未对ecdsa算法中最高层次的签名与验签计算进行资源重用的优化。


技术实现要素:

5.1.要解决的技术问题
6.针对现有技术中存在的椭圆曲线数字签名算法计算复杂度高,硬件性能不够,加速难度大的问题,本发明提供一种椭圆曲线数字签名与验签的硬件实现方法和系统,优化运算模块调度顺序,降低系统计算时间,提高计算效率,降低硬件资源使用,取得更好的性能。
7.2.技术方案
8.本发明的目的通过以下技术方案实现。
9.一种椭圆曲线数字签名与验签的硬件实现方法,包括以下步骤:
10.读取椭圆曲线参数,判断功能选择信号将系统配置为签名与验签模式;
11.实现椭圆曲线签名与验签调度,在签名算法模式系统调用两次标量乘运算、一次模加运算、两次模乘运算、一次模逆运算和一次取模运算;在验签算法模式,系统调用两次标量乘运算、一次点加运算、两次模乘运算、一次模逆运算和一次取模运算;
12.输出结果,运算结束。
13.在签名模式下,椭圆曲线参数与配置从数据有效信号开始计数,签名模式下从第一个时钟开始,输入端口依次传入的数据为椭圆曲线参数a、模数p、基点x坐标gx、基点y坐标gy、密钥d、随机数k、明文e和基点的阶n。
14.调度时将基点g与密钥d进行标量乘,生成公钥q=dg;
15.将基点g与随机数k进行标量乘,生成点r=(x1,y1)=kg;
16.生成数字签名参数r=x1mod n(n为基点g的阶);
17.调用模乘、模逆、模加,生成数字签名参数s=k
‑1(e+dr)mod n。
18.在验签模式下,椭圆曲线参数与配置从第一个时钟开始,输入端口依次传入的数据为椭圆曲线参数a、模数p、基点x坐标gx、基点y坐标gy、待验证签名数据r’、待验证签名数据s’、明文e、基点的阶n、公钥q的x坐标qx和公钥q的y坐标qy。
19.调度时计算c=(s

)
‑1mod n;
20.计算u1=ec mod n和u2=r

c mod n;
21.调用标量乘,计算u1g和u2q;
22.调用点加,计算(x1,y1)=u1g+u2q;
23.生成验签参数v=x1mod n。
24.优选的,签名与验签控制器调用标量乘计算、点加和倍点计算,以及各种模运算。签名与延签算法包括四个层次,最高层次为椭圆曲线数字签名与验签计算调度,第三层次为标量乘计算,第二层次为点加和倍点计算,第一层次为运算模块计算;最高层次不仅调用第三层次的标量乘计算,还调用第一层次的点加和倍点计算,以及第二层次的运算模块计算。
25.优选的,将点加和倍点运算映射到jacobian坐标系执行。对于一次完整的标量乘来说,只需要两次模逆,减少了模逆运算的次数,进而减少了计算量。
26.优选的,对jacobian坐标系下的点加、倍点计算进行调度优化,减少计算过程中模乘的调用次数和寄存器的消耗。
27.具体实现方法如下:
28.f
p
上的椭圆曲线方程ep(a,b):y2=x3+ax+b上的点(x,y)可以表示为(x,y,z),其中令x=x/z2,y=y/z3(z≠0,若z=0则便是原坐标系下的无穷点),带入椭圆曲线可得:
[0029][0030]
y2=x3+axz4+bz6[0031]
其中a,b∈fp且4a3+27b2≠0 mod p.
[0032]
对于(x1,y1,z1)和(x2,y2,z2)若存在某个点u∈fp且u≠0,使得:
[0033]
x1=u2x2,y1=u3y2,z1=uz2,则称这两个点三元组等价,表示同一个点。
[0034]
jacobian坐标系下的,ep(a,b)上的加法运算定义如下:
[0035]
(a)o+o=p;
[0036]
(b)p+o=o+p=p
[0037]
(c)
[0038]
p的逆元素

p=(u2x2,

u3y2,uz2),u∈fp且u≠0,p+(

p)=o
[0039]
(d)设点
[0040]
p1=(x1,y1,z1)∈e(fp)\{0},p2=(x2,y2,z2)∈e(fp)\{0},p3=p1+p2=(x3,y3,z3)≠o,
[0041]
若p1≠p2则:
[0042]
λ3=λ1‑
λ2,λ6=λ4‑
λ5λ7=λ1+λ2,λ8=λ4+λ5,
[0043]
z3=z1z2λ3[0044]
若p1=p2则:
[0045][0046]
y3=λ1(λ2‑
x3)

λ3,z3=2y1z1[0047]
此时,模乘的计算周期取决于两个乘数的最小位宽。因此,将一个乘数较小的小点数模乘(如上式中4x1)单独作为一个控制指令以优化速度,与一般模乘调用同一个模乘计算阵列,但计算周期远小于一般模乘。
[0048]
在该实现方法中,点加、倍点的具体调度方式如下:
[0049]
倍点:
[0050][0051]
点加:
[0052]
[0053][0054]
在上述倍点、点加调度优化方法中,分析计算过程中的数据依赖与数据重用,减少计算过程中模乘的调用次数,将倍加的15次模乘减少为10次模乘和3次小点数模乘,减少了约33%的时钟周期消耗;将加点的21次模乘减少为16次模乘,减少了约23.8%的时钟周期消耗。同时,寄存器的占用更加紧凑,最大程度的减少的寄存器的消耗,寄存器峰值占用为7个寄存器,最终每路标量乘只需要7个寄存器寄存倍点、点加的中间数据。
[0055]
优选的,采用naf算法降低标量乘的计算复杂度,减小点加和倍点的调用次数。根据naf二进制表示算法(非相邻表示型non

adjacent form naf)来减少计算量,具体的流程如下:
[0056]
输入:点p,l比特的整数
[0057]
输出:q=[k]p。
[0058]
(1)3k的二进制表示是h
r
h
r
‑1…
h1h0,其中最高位h
r
为1;
[0059]
(2)设k的二进制表示是k
r
k
r
‑1…
k1k0,显然r=l或l+1;
[0060]
(3)置q=p;
[0061]
(4)对i从r

1下降到1执行:
[0062]
(i)q=[2]q;
[0063]
(ii)若h
i
=1,且k
i
=0,则q=q+p;
[0064]
(iii)若h
i
=0,且k
i
=1,则q=q

p;
[0065]
(5)输出q;
[0066]
naf算法可以有效的降低一次点乘所需要的倍点和点加数量。将点加和倍点运算映射到jacobian坐标系,对于一次完整的标量乘来说,只需要两次模逆,大大减少了模逆运算的次数,进而减少了计算量。
[0067]
优选的,采用扩展欧几里得算法实现模逆运算。使用扩展欧几里得算法进行模逆运算,对系统整体性能影响较小,相比于蒙哥马利模逆算法,扩展欧几里得算法性能较差但面积更小,满足该实现方法需求。模逆运算控制逻辑较为复杂,且调用次数较少,不实现为阵列形式。在该实现方法中,将多路标量乘结果打拍,分时复用模逆控制器。
[0068]
优选的,将模乘计算展开为秦九韶展开式的形式,分解为若干次重复操作。每次操作包括判断、移位、加法、减法,具体实现方法如下:
[0069]
在有限域中,有以下定理:
[0070]
x
·
y mod n=((x mod n)
·
(y mod n))mod n(0≤x,y≤n)
[0071]
x+y mod n=((x mod n)+(y mod n))mod n(0≤x,y≤n)
[0072]
基于以上定理,为了快速计算出x
·
y mod n,将y进行拆分,将大数的模乘运算,分解为多次移位累加取模运算,来减小计算量。具体的操作如下所示:
[0073][0074]
l表示y的位数。
[0075]
则x
·
y mod n可表示为
[0076]
再进一步展开得到:
[0077][0078][0079]
由展开后的表达式可知硬件上只要实现表达式2(xy
l
‑1+z)modn,z<n,y
l
‑1∈(0,1),经过多次调用或者多级级联即可得到最终的模乘结果,最大迭代次数与y的位宽相等,每个模乘单元实现的计算流程如下:
[0080]
输入:x、y
i
、z、n
[0081]
(1)判断y
i
是否为0:
[0082]
y
i
=0,则输出result1=z到(2);
[0083]
y
i
=1,则输出result1=x+z到(2)。
[0084]
(2)判断result1是否大于n:
[0085]
result1≥n,则输出result2=result1‑
n到(3);
[0086]
result1<n,则输出result2=result1到(3)。
[0087]
(3)将result2左移两位,输出result3=result2<<2到步骤四。
[0088]
(4)判断result3是否大于n:
[0089]
result3≥n,则输出result4=result4‑
n;
[0090]
result3<n,则输出result4=result4。
[0091]
结果result4作为下一级的z输入继续迭代直到y的最低位,第一级的z为0。该实现方法中的模乘单元由两个比较器、一个加法器、两个减法器、一个移位寄存器、一个单比特选择器组成,结构统一,模乘阵列由若干个这样的模乘单元组成,可根据需要灵活的进行流水线和并行度的展开,具有较高的面积性能比。
[0092]
优选的,签名和验签步骤的取模运算用一个加数为零的模加计算代替,避免了额外设计取模电路。
[0093]
一种椭圆曲线数字签名与验签的硬件实现系统,使用所述的一种椭圆曲线数字签名与验签的硬件实现方法,所述系统包括用于配置签名和验签模式的签名验签控制器,用于调用点加和倍点计算的标量乘控制器,用于控制底层运算集合状态的底层运算控制器,和用于实现计算的运算模块。
[0094]
签名验签控制器用于配置为签名和验签模式,并接收椭圆曲线数字签名和验签参数,调用底层运算控制器连接的运算模块,输出签名和验签结果数据。标量乘控制器用于调用点加和倍点计算,完成椭圆曲线上的标量乘运算。底层运算控制器用于实现椭圆曲线数字签名与验签算法中所有底层运算集合的状态机控制。运算模块用于实现不同形式的计算。
[0095]
优选的,标量乘控制器控制调用点加和倍点计算;运算模块包括模乘阵列、模加阵列、模减阵列、模逆阵列和模移位阵列。模逆阵列包括多个模逆计算单元,用于实现模逆计算。模乘阵列包括多个模乘计算单元,用于模乘计算。模加阵列,包括多个模加计算单元,用于模加计算。模减阵列,包括多个模减计算单元,用于模减计算。模移位阵列,包括多个模移位计算单元,用于模移位计算。
[0096]
3.有益效果
[0097]
相比于现有技术,本发明的优点在于:
[0098]
本发明硬件实现中,计算结构,将倍点、点加以及各种模运算实现为计算指令集合,优化点加、倍点计算调度顺序,减少计算时钟周期和寄存器等硬件电路开销。本发明只涉及加法、减法、移位、判断运算,避免了大位宽的乘法器与除法器,硬件结构灵活可适不同性能面积要求,易于硬件实现,在有较高性能的同时,计算复杂度低且硬件资源消耗少。通过基于秦九韶展开式的快速模乘实现,将模乘实现为由若干相同单元组成的阵列形式,可根据位宽、性能的不同灵活配置阵列连接方式,硬件资源消耗小,有良好的实际应用价值。
附图说明
[0099]
图1为本发明的整体结构示意图;
[0100]
图2是本发明的模乘阵列结构示意图;
[0101]
图3是本发明的单个模乘结构示意图。
具体实施方式
[0102]
下面结合说明书附图和具体的实施例,对本发明作详细描述。
[0103]
实施例
[0104]
本实施例公开一种高性能椭圆曲线数字签名与延签的硬件实现方法,先分析椭圆曲线数字签名算法计算通路,将整个算法分为四个层次,最高层次(即第四层)为椭圆曲线数字签名与验签计算调度,第三层次为标量乘计算,第二层次为点加和倍点运算,第一层次为各种模运算(模乘、模逆、模加、模减、模移位)。本实施例实现方法中,为减小额外硬件开销,将签名和验签步骤中生成验签参数的取模用一个加数为0的模加计算代替,避免了额外设计取模电路。
[0105]
最高层次的签名与验签计算调度调用第三层次的标量乘计算,还会调用第一和第二层次运算功能,在本实施例硬件实现方法中,将第一、二层次的倍点、点加以及各种模运算实现为计算指令集合的形式供高层次算法调用,签名验签控制器与标量乘控制器均可配置底层运算控制器,点加、倍点计算对模运算的调用以内部有限状态机fsm跳转的形式实现。
[0106]
标量乘计算的控制复杂,计算复杂度高,对倍点、点加的调用可能超过百次,且只需要提供签名验签控制器的调用,因此不加入计算指令集合而是单独实现一个控制模块。
[0107]
具体的,一种高性能椭圆曲线数字签名与延签的硬件实现方法,包括:签名验签控制器读取系统输入的椭圆曲线参数与配置,签名验签控制器调用标量乘控制器和底层运算控制器进行对应的运算,底层运算控制器根据不同的状态控制运算模块中不同阵列的调用。
[0108]
在签名模式下,椭圆曲线参数与配置从数据有效信号开始计数,签名模式下从第一个时钟开始,输入端口依次传入的数据为椭圆曲线参数a、模数p、基点x坐标gx、基点y坐标gy、密钥d、随机数k、明文e和基点的阶n。
[0109]
在验签模式下,椭圆曲线参数与配置从第一个时钟开始,输入端口依次传入的数据为椭圆曲线参数a、模数p、基点x坐标gx、基点y坐标gy、待验证签名数据r’、待验证签名数据s’、明文e、基点的阶n、公钥q的x坐标qx和公钥q的y坐标qy。
[0110]
首先,对签名模式的硬件实现方法进行描述。
[0111]
配置为签名模式,将基点g与密钥d进行标量乘,生成公钥q=dg;将基点g与随机数k进行标量乘,生成点r=(x1,y1)=kg;生成数字签名参数r=1mod n,n为基点g的阶;调用模乘、模逆、模加,生成数字签名参数s=k
‑1(e+dr)mod n。
[0112]
具体计算时,先调用标量乘控制器,计算q=dg。对标量乘的实现采用naf算法减小标量乘的计算复杂度,减小了点加和倍点的调用次数。一般来说,标量乘(例如kp)的实现通常是采用累加的方式实现的,即:2p=p+p、3p=2p+p
……
以此类推。但这种方式计算量过大,因此考虑了naf二进制表示算法(非相邻表示型non

adjacent form naf)来减少计算量,具体的流程如下:
[0113]
输入:点p,l比特的整数
[0114]
输出:q=[k]p。
[0115]
标量乘的计算过程如下:
[0116]
(1)设3d的二进制表示为h_r,h_(r

1),

,h_1,h_0,其中最高位h_r为1;
[0117]
(2)设d的二进制表示为k_r,k_(r

1),

,k_1,k_0,显然r=l或l+1;
[0118]
(3)置q=g;
[0119]
(4)对i从r

1下降到1执行:
[0120]
a、q=[2]q;
[0121]
b、若h_i=1,且k_i=0,则q=q+g;
[0122]
c、若h_i=0,且k_i=1,则q=q

g;
[0123]
(5)输出q。
[0124]
该标量乘实现方法有效的降低一次标量乘所需要的倍点和点加数量。
[0125]
点加与倍点计算过程为:将q、g映射到jacobian坐标系,将jacobian坐标系下的点加、倍点计算进行了调度优化,具体实现方法如下:
[0126]
f
p
上的椭圆曲线方程ep(a,b):y2=x3+ax+b上的点(x,y)可以表示为(x,y,z),令x=x/z2,y=y/z3(z≠0,若z=0则便是原坐标系下的无穷点),带入椭圆曲线可得:
[0127][0128]
y2=x3+axz4+bz6[0129]
其中a,b∈fp且4a3+27b2≠0 mmod p。
[0130]
对于(x1,y1,z1)和(x2,y2,z2)若存在某个点u∈fp且u≠0,使得:
[0131]
x1=u2x2,y1=u3y2,z1=uz2,
[0132]
则称这两个点三元组等价,表示同一个点。
[0133]
jacobian坐标系下的,ep(a,b)上的加法运算定义如下:
[0134]
(a)o+o=p;
[0135]
(b)p+o=o+p=p
[0136]
(c)
[0137]
p的逆元素

p=(u2x2,

u3y2,uz2),u∈fp且u≠0,p+(

p)=o
[0138]
(d)设点
[0139]
p1=(x1,y1,z1)∈e(fp)\{0},p2=(x2,y2,z2)∈e(fp)\{0},p3=p1+p2=(x3,y3,z3)≠o,
[0140]
若p1≠p2则:
[0141]
λ3=λ1‑
λ2,λ6=λ4‑
λ5λ7=λ1+λ2,λ8=λ4+λ5,,z3=z1z2λ3[0142]
若p1=p2则:
[0143][0144]
y3=λ1(λ2‑
x3)

λ3,z3=2y1z1[0145]
在该实现方法的模乘实现中,模乘的计算周期取决于两个乘数的最小位宽。因此,将一个乘数较小的小点数模乘(如上式中4x1)单独作为一个控制指令以优化速度,与一般模乘调用同一个模乘计算阵列,但计算周期远小于一般模乘。
[0146]
具体的,若计算2q则执行表1:
[0147]
表1
[0148][0149]
若计算q+g则执行表2:
[0150]
表2
[0151][0152][0153]
若计算q

g则将g点y坐标取为

y然后按q+g执行表2。
[0154]
本实施例将点加和倍点运算映射到jacobian坐标系,对于一次完整的标量乘来说,只需要两次模逆,大大减少了模逆运算的次数,进而减少了计算量。
[0155]
在上述倍点、点加调度优化方法中,分析计算过程中的数据依赖与数据重用,减少计算过程中模乘的调用次数,将倍加的15次模乘减少为10次模乘和3次小点数模乘,减少了
约33%的时钟周期消耗;将加点的21次模乘减少为16次模乘,减少了约23.8%的时钟周期消耗。且寄存器的占用更加紧凑,最大程度的减少的寄存器的消耗,寄存器峰值占用为7个寄存器,最终每路标量乘只需要7个寄存器寄存倍点、点加的中间数据。
[0156]
本实施例模乘计算采用基于秦九韶展开式的快速模乘设计模乘阵列,将模乘计算展开为秦九韶展开式的形式,将其分解为若干次重复操作,每次操作包括判断、移位、加法、减法,具体实现方法如下:
[0157]
在有限域中,有以下定理:
[0158]
x
·
y mod n=((x mod n)
·
(y mod n))mod n(0≤x,y≤n)
[0159]
x+y mod n=((x mod n)+(y mod n))mod n(0≤x,y≤n)
[0160]
基于以上定理,为了快速计算出x
·
y mod n,将y进行拆分,将大数的模乘运算,分解为多次移位累加取模运算,来减小计算量。具体的操作如下所示:
[0161][0162]
l表示y的位数。
[0163]
则x
·
y mod n可表示为
[0164]
再进一步展开得到:
[0165][0166]
由展开后的表达式可知硬件上只要实现表达式2(xy
l
‑1+z)modn,z<n,y
l
‑1∈(0,1),经过多次调用或者多级级联即可得到最终的模乘结果,最大迭代次数与y的位宽相等。
[0167]
模乘计算流程如下,将z初始化为0,对y从最高位到最低位重复执行,输入:x、y
i
、z、n:
[0168]
(1)判断y
i
是否为0:
[0169]
若y
i
=0,则输出result1=z到(2);
[0170]
若y
i
=1,则输出result1=x+z到(2)。
[0171]
(2)判断result1是否大于n:
[0172]
若result1≥n,则输出result2=result1‑
n到(3);
[0173]
若result1<n,则输出result2=result1到(3)。
[0174]
(3)将result2左移两位,输出result3=result2<<2到步骤四;如果y
i
为最后一位,则不移位直接输出。
[0175]
(4)判断result3是否大于n:
[0176]
若result3≥n,则输出result4=result4‑
n;
[0177]
若result3<n,则输出result4=result4。
[0178]
最终的结果result4作为下一级的z输入继续迭代直到y的最低位,第一级的z为0。该实现方法中的模乘单元如实施例1所述,硬件包括比较器、加法器、减法器、移位寄存器和单比特选择器,结构统一。模乘阵列包括若干个这样的模乘计算单元,可根据需要灵活的进行流水线和并行度的展开,具有较高的面积性能比。
[0179]
下面,依次调用标量乘控制器,计算r=(x1,y1)=kg。
[0180]
配置底层运算控制器为模加状态,通过模加阵列计算r=x1+0 mod n。
[0181]
配置底层运算控制器为模乘状态,通过模乘阵列计算d
·
r modn。
[0182]
配置底层运算控制器为模加状态,通过模加阵列计算e+d
·
r modn。
[0183]
配置底层运算控制器为模逆状态,通过模逆阵列计算k
‑1modn。
[0184]
配置底层运算控制器为模乘状态,通过模乘阵列计算s=k
‑1(e+dr)mod n。
[0185]
运算模块具体计算方式上文已详细描述,此处不再赘述。本实施例采用扩展欧几里得算法,将多路标量乘结果打拍,分时复用模逆控制器。模逆运算性能对整体性能影响较小,相比于蒙哥马利模逆算法,扩展欧几里得算法性能较差但面积更小,满足该实现方法需求。模逆运算控制逻辑较为复杂,且调用次数较少,不必实现为阵列形式。
[0186]
最后输出计算结果,本实施例为签名模式,则系统输出(r,s),计算结束。
[0187]
基于签名模式的硬件实现方法,下面描述在验签模式下的硬件实现方法。
[0188]
在验签模式下,系统先计算c=(s

)
‑1mod n、u1=ec mod n和u2=r

c mod n。调用标量乘,计算u1g和u2q。调用点加,计算(x1,y1)=u1g+u2q,生成验签参数v=x1mod n。配置底层状态控制器为模逆状态,通过模逆阵列计算c=(s

)
‑1mod n。
[0189]
配置底层状态控制器为模乘状态,通过模乘阵列计算u1=ec mod n。
[0190]
配置底层状态控制器为模乘状态,通过模乘阵列计算u2=r

c mod n。
[0191]
调用标量乘控制器,计算u1g。
[0192]
调用标量乘控制器,计算u2q。
[0193]
配置底层状态控制器为点加状态,计算(x1,y1)=u1g+u2q。
[0194]
配置底层状态控制器为模加状态,通过模加阵列计算v=x1+0 mod n。
[0195]
验签模式与签名模式下的运算模块的计算方法和依据相同,具体计算方式上文已详细描述,此处不再赘述。
[0196]
最后输出计算结果,本实施例为验签模式,则系统输出v,计算结束。
[0197]
基于前述的硬件实现方法,下面对于该方法的硬件系统进行详细描述。
[0198]
一种高性能椭圆曲线数字签名与验签的硬件实现系统,如图1所示,包括签名验签控制器、标量乘控制器、底层运算控制器和运算模块;签名验签控制器与标量乘控制器进行数据传输,标量乘控制器和底层运算控制器进行数据传输,签名验签控制器还和底层运算控制器进行数据传输,底层运算控制器与运算模块进行数据传输。
[0199]
签名验签控制器用于配置为签名和验签模式,并接收椭圆曲线数字签名和验签参数,调用底层运算控制器连接的运算模块,输出签名和验签结果数据。签名验签控制器包括第一有限状态机fsm、第一数据接收模块和第一数据发送模块。
[0200]
标量乘控制器用于调用点加和倍点计算,完成椭圆曲线上的标量乘运算。标量乘控制器包括第二有限状态机fsm、第二数据接收模块和第二数据发送模块。
[0201]
底层运算控制器用于实现椭圆曲线数字签名与验签算法中所有底层运算集合的
状态机控制。底层运算控制器的状态包括倍点运算状态、点加运算状态、模乘运算状态、模加运算状态、模减运算状态、模逆运算状态和模移位状态。底层运算控制器包括计算指令译码器、第三有限状态机fsm和计算阵列选择器。
[0202]
运算模块用于实现不同形式的计算,运算模块包括模乘阵列、模加阵列、模减阵列、模逆阵列和模移位阵列。
[0203]
模乘阵列包括多个模乘计算单元,用于模乘计算。模乘阵列结构如图2所示,模乘计算单元先以级联的方式连接x级,即上一级的结果输入到下一级,x为大于零的整数。级联后的模乘计算单元再并行连接到底层运算控制器。级联与并行的数量可以根据需要调整。如256bit模乘的计算需要256次迭代,迭代可以将同一个模乘模块重复调用256次,也可以把256个模块连到一起。具体实施的时候可以调整级联的数量,比如4个级联就调用64次,单独一个就调用256次,n个级联需要调用256/n次。具体级联数量不大于模乘位宽就行。一般来说,级联数量越多的越多,计算越快,但是芯片面积也越大。
[0204]
模乘计算单元如图3所示,包括比较器、加法器、减法器、移位寄存器和选择器,输入数据分别连接加法器的输入端、第一选择器的输入端、第一减法器的输入端和移位寄存器的输入端,第一选择器的输出端连接加法器的输入端,加法器的输出端连接第一减法器的输入端和第二选择器的输入端,第一减法器的输出端也连接第二选择器的输入端,第二选择器的输出端通过移位寄存器连接第二减法器的输入端、第三选择器的输入端和第四选择器的输入端,第二减法器的输出端连接第三选择器的输入端,第三选择器的输出端连接第四选择器的输入端,第四选择器的输出端输出计算结果。
[0205]
模加阵列,包括多个模加计算单元,用于模加计算。模加计算单元包括加法器、比较器、减法器和选择器,加法器输出端连接减法器输入端、比较器输入端和选择器输入端,减法器输出端连接选择器输入端,比较器输出端连接到选择器输入端,所有的模加计算单元并行连接到底层运算控制器。
[0206]
模减阵列,包括多个模减计算单元,用于模减计算。模减计算单元包括减法器,加法器和选择器,减法器输出端连接加法器输入端和比较器输入端,减法器输出端最高位连接比较器输入端,加法器输出端连接到比较器输入端,所有的模减计算单元并行连接到底层运算控制器。
[0207]
模移位阵列,包括多个模移位计算单元,用于模移位计算。模移位计算单元包括移位寄存器、减法器、比较器和选择器,移位寄存器输出端连接减法器输入端、比较器输入端和选择器输入端。比较器输出端连接到选择器输入端,减法器输出端连接选择器输入端,所有的模移位计算单元并行连接到底层运算控制器。
[0208]
模逆阵列包括多个模逆计算单元,用于实现模逆计算。模逆阵列的模逆计算单元包括第四有限状态机fsm,模移位模块和减法器,用于实现模逆计算。所有的模逆计算单元并行连接到底层运算控制器。
[0209]
本发明硬件实现时,使用naf算法、jacobian坐标系映射优化计算速度,将底层运算实现为可配置阵列,减小硬件开销,对jacobian坐标下倍点、点加计算进行调度优化,基于秦九韶展开式实现模乘计算阵列,可实现较高的计算性能,有较高的应用潜力。
[0210]
以上示意性地对本发明创造及其实施方式进行了描述,该描述没有限制性,在不背离本发明的精神或者基本特征的情况下,能够以其他的具体形式实现本发明。附图中所
示的也只是本发明创造的实施方式之一,实际的结构并不局限于此,权利要求中的任何附图标记不应限制所涉及的权利要求。所以,如果本领域的普通技术人员受其启示,在不脱离本创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本专利的保护范围。此外,“包括”一词不排除其他元件或步骤,在元件前的“一个”一词不排除包括“多个”该元件。产品权利要求中陈述的多个元件也可以由一个元件通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1