CN104267926A - 获取椭圆曲线密码数据的方法和装置 - Google Patents
获取椭圆曲线密码数据的方法和装置 Download PDFInfo
- Publication number
- CN104267926A CN104267926A CN201410514801.XA CN201410514801A CN104267926A CN 104267926 A CN104267926 A CN 104267926A CN 201410514801 A CN201410514801 A CN 201410514801A CN 104267926 A CN104267926 A CN 104267926A
- Authority
- CN
- China
- Prior art keywords
- computation period
- mould
- parameter
- modular multiplier
- result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明公开了一种获取椭圆曲线密码数据的方法和装置。其中,该方法包括:循环执行如下步骤直至获取模加结果和模乘结果,通过模加结果和模乘结果确定椭圆曲线密码数据,步骤包括:在第一个计算周期向单模乘器输入第一参数;在第二个计算周期向单模乘器输入第二参数;在第三个计算周期至第六个计算周期控制单模乘器对第一参数和第二参数进行模乘计算得到模乘结果;在第七个计算周期和第八个计算周期从单模乘器取出模乘结果,并调用模加器对模乘结果进行模加计算得到模加结果。采用本发明,解决了现有技术中的计算椭圆曲线密码速度慢的问题,实现了提高计算椭圆曲线密码的速度的效果。
Description
技术领域
本发明涉及数据处理领域,具体而言,涉及一种获取椭圆曲线密码数据的方法和装置。
背景技术
当前的椭圆曲线密码算法通常都集中于对曲线点运算算法的研究,一般的点乘是拆分成点加和点倍来实现,点乘和点倍的速度除了取决于底层模乘器的速度外,也取决于基于该模乘器结构的运算排列。现有的点加点倍实现方案,主要是基于脉动Montgomery模乘器的点计算排序方式。
具体地,现有的椭圆曲线密码算法的点运算规则如下:
设两点P=(X1,Y1,Z1,aZ1 4)∈E(Fp),Q=(X2,Y2,Z2,aZ2 4)∈E(Fp),其中E(Fp)表示曲线点(外加无穷远点)构成的有限域,P和Q为该有限域上的点。
令P+Q=(X3,Y3,Z3,aZ3 4),则计算公式为:
点加(P≠±Q):
X3=-H3-2U1H2+r2
Y3=-S1H3+r(U1H2-X3)
Z3=Z1Z2H
aZ3 4=a((Z3)2)2
其中:
U1=X1Z2 2,U2=X2Z1 2
S1=Y1Z2 3,S2=Y2Z1 3
H=U2-U1
r=S2-S1
点倍(P=Q):
X3=M2-2S
Y3=-U+M(S-T)
Z3=2Y1Z1
aZ3 4=2U(aZ1 4)
其中:
S=4X1Y1 2
U=8Y1 4
M=3X1 2+(aZ1 4)
T=M2-2S
从上述运算规则可以看出,点加点倍的运算速度取决于两点:(1)大数加减乘运算器的结构;(2)当有多个大数加减乘运算器时,运算顺序的排列方式。
现有技术中的基于脉动Montgomery模乘器的点运算排序,由于模乘器数据宽度较小(例如32位),一次完整的模乘计算过程分为2个计算周期,每个计算周期是若干个时钟周期,第一个计算周期内的每个时钟周期依次分批输入第二个大数操作数,第二个计算周期内的每个时钟周期依次分批输出大数操作结果,同时可以输入下次模乘运算操作数;运算前,需先将模数和第一个操作数填好。
根据上述模乘器的流水结构,使用双模乘器,有如表1所示的运算排列(每行表示1个计算周期):
表1:
如表1所示,椭圆曲线点点乘的规律:点倍后可能继续点倍,或者点加,点加后只可能点倍,不可能点加。根据该规律,点倍在第5个计算周期时,可以继续后续运算,点加在第8个计算周期时,可以继续后续运算。该方案点倍需4个计算周期,点倍需7个计算周期。
由此可知,现有技术中,模乘器的位宽比较小,完成一次完整的模乘,需要的时钟周期较多;模乘器运算的效率不高:两个模乘器同时都在工作的状态并不是最高的。上表中点加部分的第三行表示模乘器1空闲了一个计算周期。
针对现有技术中计算椭圆曲线密码速度慢的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中计算椭圆曲线密码速度慢的问题,目前尚未提出有效的解决方案,为此,本发明的主要目的在于提供一种获取椭圆曲线密码数据的方法和装置,以解决上述问题。
为了实现上述目的,根据本发明的一个方面,提供了一种获取椭圆曲线密码数据的方法,该方法包括:循环执行如下步骤直至获取模加结果和模乘结果,通过所述模加结果和所述模乘结果确定椭圆曲线密码数据,所述步骤包括:在第一个计算周期向单模乘器输入第一参数;在第二个所述计算周期向所述单模乘器输入第二参数;在第三个所述计算周期至第六个所述计算周期控制所述单模乘器对所述第一参数和所述第二参数进行模乘计算得到所述模乘结果;在第七个所述计算周期和第八个所述计算周期从所述单模乘器取出所述模乘结果,并调用模加器对所述模乘结果进行模加计算得到所述模加结果;其中,所述单模乘器为基于6周期内计算2个数的模乘器,所述第一参数和所述第二参数为计算所述椭圆曲线密码数据的已知参数,所述计算周期用于确定计算时间。
进一步地,在第七个计算周期和第八个计算周期从所述单模乘器取出所述模乘结果的同时,所述方法还包括:将第三参数和第四参数输入所述单模乘器,其中,所述第三参数和所述第四参数也为计算所述椭圆曲线密码的已知参数,所述第三参数和所述第四参数可以为下一个循环输入的所述第一参数和所述第二参数。
进一步地,在第七个所述计算周期和第八个所述计算周期从所述单模乘器取出所述模乘结果包括:在第七个所述计算周期从所述单模乘器中读取所述单模乘器对所述第一参数进行模乘计算得到的第一子模乘结果,并将所述第一子模乘结果输入所述模加器;在第八个所述计算周期从所述单模乘器中读取所述单模乘器对所述第二参数进行模乘计算得到的第二子模乘结果,并将所述第二子模乘结果输入所述模加器。
进一步地,在通过循环执行所述步骤对椭圆曲线进行点倍计算时,在第一个循环的第一个所述计算周期输入的所述第一参数为X1和X1,在第二个所述计算周期输入的所述第二参数为Y1和Y1,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到X1^2和Y1^2,在第七个所述计算周期读取所述X1^2,并调用所述模加器,控制所述模加器计算2X1^2和(X1^2+aZ1^4),在第八个所述计算周期读取所述Y1^2,并调用所述模加器,控制所述模加器计算M,M=3X1^2+aZ1^4;在第二个循环的第一个所述计算周期输入的所述第一参数为X1和Y1^2,在第二个所述计算周期输入的所述第二参数为M和M,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到S=X1Y1^2和M^2,在第七个所述计算周期读取所述S,并调用所述模加器,所述模加器计算2S,在第八个所述计算周期读取所述M^2,并调用所述模加器,控制所述模加器计算4S;在第三个循环的第一个所述计算周期输入的所述第一参数为Y1^2和Y1^2,在第二个所述计算周期输入的所述第二参数为Y1和Z1,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到U=Y1^4和Y1Z1,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到U=Y1^4和Y1Z1的同时,调用所述模加器计算8S、X3=M^2-8S、以及(4S-X3),在第七个所述计算周期读取所述U,并调用所述模加器,控制所述模加器计算2U,在第八个所述计算周期读取所述Y1Z1,并调用所述模加器,控制所述模加器计算4U,其中,在第七个所述计算周期读取所述U的同时输入下一个循环的第一参数M和(4S-X3),在第八个所述计算周期读取所述Y1Z1的同时输入下一个循环的第二参数U和aZ1^4;在第四个循环的第一个所述计算周期输入的所述第一参数为M和(4S-X3),在第二个所述计算周期输入的所述第二参数为U和aZ1^4,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到M(4S-X3)和UaZ1^4,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到M(4S-X3)和UaZ1^4的同时,调用所述模加器计算8U和Z3=2Y1Z1,在第七个所述计算周期读取所述M(4S-X3),并调用所述模加器,控制所述模加器计算Y3=M(4S-X3)-8U,在第八个所述计算周期读取所述UaZ1^4,并调用所述模加器,控制所述模加器计算2UaZ1^4;通过所述模加结果和所述模乘结果确定椭圆曲线密码数据包括:在三个所述计算周期里调用所述模加器,控制所述模加器顺序计算得到4UaZ1^4、8UaZ1^4以及aZ3^4=16UaZ1^4,使用所述模加结果确定所述椭圆曲线密码数据的点倍数据;其中,椭圆上两点P=(X1,Y1,Z1,aZ1 4)∈E(Fp),Q=(X2,Y2,Z2,aZ2 4)∈E(Fp),其中E(Fp)表示曲线点(外加无穷远点)构成的有限域,P+Q=(X3,Y3,Z3,aZ3 4)为所述椭圆曲线密码数据的点倍数据。
进一步地,在通过循环执行所述步骤对椭圆曲线进行点加计算时,在第一个循环的第一个所述计算周期输入的所述第一参数为Z1和Z1,在第二个所述计算周期输入的所述第二参数为Y2和Z1,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到Z1^2和Y2Z1,在第七个所述计算周期读取所述Z1^2,在第八个所述计算周期读取所述Y2Z1;在第二个循环的第一个所述计算周期输入的所述第一参数为X2和Z1^2,在第二个所述计算周期输入的所述第二参数为Y2Z1和Z1^2,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到U2=X2Z1^2和S2=Y2Z1^3,在第七个所述计算周期读取所述U2,在第七个所述计算周期读取所述U2,并调用所述模加器,所述模加器计算H=U2-X1,在第八个所述计算周期读取所述S2,并调用所述模加器,控制所述模加器计算r=S2-Y1;在第三个循环的第一个所述计算周期输入的所述第一参数为H和H,在第二个所述计算周期输入的所述第二参数为r和r,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到H^2和r^2,在第七个所述计算周期读取所述H^2,在第八个所述计算周期读取所述r^2;在第四个循环的第一个所述计算周期输入的所述第一参数为H和H^2,在第二个所述计算周期输入的所述第二参数为X1和H^2,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到H^3和X1H^2,在第七个所述计算周期读取所述H^3,并调用所述模加器,控制所述模加器计算r^2-H^3,在第八个所述计算周期读取所述X1H^2,并调用所述模加器,控制所述模加器计算2X1H^2;在第五个循环的第一个所述计算周期输入的所述第一参数为H和H^3,在第二个所述计算周期输入的所述第二参数为Y1和H^3,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到HH^3和Y1H^3,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到HH^3和Y1H^3的同时,调用所述模加器计算X3=r^2-H^3-2X1H^2,在第七个所述计算周期读取所述HH^3,并调用所述模加器,控制所述模加器计算X1H^2-X3,在第八个所述计算周期读取所述Y1H^3;在第六个循环的第一个所述计算周期输入的所述第一参数为r和(X1H^2-X3),在第二个所述计算周期输入的所述第二参数为(aZ1^4)和H^4,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到r(X1H^2-X3)和aZ3^4=(aZ1^4)H^4,在第七个所述计算周期读取所述r(X1H^2-X3),并调用所述模加器,控制所述模加器计算Y3=r(X1H^2-X3)-Y1H^3,在第八个所述计算周期读取所述aZ3^4;在第七个循环的第一个所述计算周期输入的所述第一参数为Z1和H,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到Z3=Z1H,在第七个所述计算周期读取所述Z3=Z1H;其中,椭圆上两点P=(X1,Y1,Z1,aZ1 4)∈E(Fp),Q=(X2,Y2,Z2,aZ2 4)∈E(Fp),其中E(Fp)表示曲线点(外加无穷远点)构成的有限域,P+Q=(X3,Y3,Z3,aZ3 4)为所述椭圆曲线密码数据的点倍数据。
为了实现上述目的,根据本发明的另一方面,提供了一种获取椭圆曲线密码数据的装置,该装置包括:循环执行模块,用于循环执行如下步骤直至获取模加结果和模乘结果;确定模块,用于通过所述模加结果和所述模乘结果确定椭圆曲线密码数据:所述循环执行模块包括:第一输入模块,用于在第一个计算周期向单模乘器输入第一参数;第二输入模块,用于在第二个所述计算周期向所述单模乘器输入第二参数;第一控制模块,用于在第三个所述计算周期至第六个所述计算周期控制所述单模乘器对所述第一参数和所述第二参数进行模乘计算得到所述模乘结果;第二控制模块,用于在第七个所述计算周期和第八个所述计算周期从所述单模乘器取出所述模乘结果,并调用模加器对所述模乘结果进行模加计算得到所述模加结果;其中,所述单模乘器为基于6周期内计算2个数的模乘器,所述第一参数和所述第二参数为计算所述椭圆曲线密码数据的已知参数,所述计算周期用于确定计算时间。
进一步地,所述循环执行模块还包括:第三输入模块,用于在第七个计算周期和第八个计算周期从所述单模乘器取出所述模乘结果的同时,将第三参数和第四参数输入所述单模乘器,其中,所述第三参数和所述第四参数也为计算所述椭圆曲线密码的已知参数,所述第三参数和所述第四参数可以为下一个循环输入的所述第一参数和所述第二参数。
进一步地,所述第二控制模块包括:第一控制子模块,用于在第七个所述计算周期从所述单模乘器中读取所述单模乘器对所述第一参数进行模乘计算得到的第一子模乘结果,并将所述第一子模乘结果输入所述模加器;第二控制子模块,用于在第八个所述计算周期从所述单模乘器中读取所述单模乘器对所述第二参数进行模乘计算得到的第二子模乘结果,并将所述第二子模乘结果输入所述模加器。
采用本发明,通过使用基于6周期内计算2个数的单模乘器,可以同时计算两个数,并且采用本发明实施例的第一个和第二个计数周期输入,第三个至第六个技术周期计算,第七个和第八个计数周期取出结果的顺序计算得到模乘结果和模加结果,使得模乘器一直处于高速运转的状态,没有空闲周期,并且需要的计算周期少,解决了现有技术中的计算椭圆曲线密码速度慢的问题,实现了提高计算椭圆曲线密码的速度的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的获取椭圆曲线密码数据的方法的流程图;以及
图2是根据本发明实施例的一种获取椭圆曲线密码数据的装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
图1是根据本发明实施例的获取椭圆曲线密码数据的方法的流程图。如图1所示,该方法可以包括:
步骤S102:在第一个计算周期向单模乘器输入第一参数。
步骤S104:在第二个计算周期向单模乘器输入第二参数。
步骤S106:在第三个计算周期至第六个计算周期控制单模乘器对第一参数和第二参数进行模乘计算得到模乘结果。
步骤S108:在第七个计算周期和第八个计算周期从单模乘器取出模乘结果,并调用模加器对模乘结果进行模加计算得到模加结果。
其中,单模乘器为基于6周期内计算2个数的模乘器,第一参数和第二参数为计算椭圆曲线密码数据的已知参数,计算周期用于确定计算时间。
循环执行步骤S102至步骤S108直至获取模加结果和模乘结果。
步骤S110:通过模加结果和模乘结果确定椭圆曲线密码数据。
采用本发明,通过使用基于6周期内计算2个数的单模乘器,可以同时计算两个数,并且采用本发明实施例的第一个和第二个计数周期输入,第三个至第六个技术周期计算,第七个和第八个计数周期取出结果的顺序计算得到模乘结果和模加结果,使得模乘器一直处于高速运转的状态,没有空闲周期,并且需要的计算周期少,解决了现有技术中的计算椭圆曲线密码速度慢的问题,实现了提高计算椭圆曲线密码的速度的效果。
根据本发明的上述实施例,在第七个计算周期和第八个计算周期从单模乘器取出模乘结果的同时,方法还可以包括:将第三参数和第四参数输入单模乘器,其中,第三参数和第四参数也为计算椭圆曲线密码的已知参数,第三参数和第四参数可以为下一个循环输入的第一参数和第二参数。
具体地,本发明实施例的单模乘器是基于6周期内计算2次的大数Montgomery模乘器。调用单模乘器的流水结构如表2所示。
表2:
其中,在表2中的周期数即为上述实施例中的计算周期,第一参数X1,Y1在第1个周期输入,第二参数X2,Y2在第2个周期输入,第3到6个周期模乘器在计算,第7个周期取X1和Y1的模乘结果S1=X1Y1,同时可以输入下次运算的参数(即上述实施例中的第三参数,第三参数也为下一个次循环的第一参数),第8个周期取X2和Y2的模乘结果S2=X2Y2,同时可以输入下次运算的参数(即上述实施例中的第四参数,第四参数也为下一个次循环的第二参数)。
需要进一步说明的是,在第七个计算周期和第八个计算周期从单模乘器取出模乘结果可以包括:在第七个计算周期从单模乘器中读取单模乘器对第一参数进行模乘计算得到的第一子模乘结果,并将第一子模乘结果输入模加器;在第八个计算周期从单模乘器中读取单模乘器对第二参数进行模乘计算得到的第二子模乘结果,并将第二子模乘结果输入模加器。
根据本发明的上述实施例,在通过循环执行步骤对椭圆曲线进行点倍计算时,在第一个循环的第一个计算周期输入的第一参数为X1和X1,在第二个计算周期输入的第二参数为Y1和Y1,在第三个计算周期和第四个计算周期控制单模乘器计算得到X1^2和Y1^2,在第七个计算周期读取X1^2,并调用模加器,控制模加器计算2X1^2和(X1^2+aZ1^4),在第八个计算周期读取Y1^2,并调用模加器,控制模加器计算M,M=3X1^2+aZ1^4;在第二个循环的第一个计算周期输入的第一参数为X1和Y1^2,在第二个计算周期输入的第二参数为M和M,在第三个计算周期和第四个计算周期控制单模乘器计算得到S=X1Y1^2和M^2,在第七个计算周期读取S,并调用模加器,模加器计算2S,在第八个计算周期读取M^2,并调用模加器,控制模加器计算4S;在第三个循环的第一个计算周期输入的第一参数为Y1^2和Y1^2,在第二个计算周期输入的第二参数为Y1和Z1,在第三个计算周期和第四个计算周期控制单模乘器计算得到U=Y1^4和Y1Z1,在第三个计算周期和第四个计算周期控制单模乘器计算得到U=Y1^4和Y1Z1的同时,调用模加器计算8S、X3=M^2-8S、以及(4S-X3),在第七个计算周期读取U,并调用模加器,控制模加器计算2U,在第八个计算周期读取Y1Z1,并调用模加器,控制模加器计算4U,其中,在第七个计算周期读取U的同时输入下一个循环的第一参数M和(4S-X3),在第八个计算周期读取Y1Z1的同时输入下一个循环的第二参数U和aZ1^4;在第四个循环的第一个计算周期输入的第一参数为M和(4S-X3),在第二个计算周期输入的第二参数为U和aZ1^4,在第三个计算周期和第四个计算周期控制单模乘器计算得到M(4S-X3)和UaZ1^4,在第三个计算周期和第四个计算周期控制单模乘器计算得到M(4S-X3)和UaZ1^4的同时,调用模加器计算8U和Z3=2Y1Z1,在第七个计算周期读取M(4S-X3),并调用模加器,控制模加器计算Y3=M(4S-X3)-8U,在第八个计算周期读取UaZ1^4,并调用模加器,控制模加器计算2UaZ1^4;通过模加结果和模乘结果确定椭圆曲线密码数据可以包括:在三个计算周期里调用模加器,控制模加器顺序计算得到4UaZ1^4、8UaZ1^4以及aZ3^4=16UaZ1^4,使用模加结果确定椭圆曲线密码数据的点倍数据;
其中,椭圆上两点P=(X1,Y1,Z1,aZ1 4)∈E(Fp),Q=(X2,Y2,Z2,aZ2 4)∈E(Fp),其中E(Fp)表示曲线点(外加无穷远点)构成的有限域,P+Q=(X3,Y3,Z3,aZ3 4)为椭圆曲线密码数据的点倍数据。
在本发明的另一个可选的实施例中,在通过循环执行步骤对椭圆曲线进行点加计算时,在第一个循环的第一个计算周期输入的第一参数为Z1和Z1,在第二个计算周期输入的第二参数为Y2和Z1,在第三个计算周期和第四个计算周期控制单模乘器计算得到Z1^2和Y2Z1,在第七个计算周期读取Z1^2,在第八个计算周期读取Y2Z1;在第二个循环的第一个计算周期输入的第一参数为X2和Z1^2,在第二个计算周期输入的第二参数为Y2Z1和Z1^2,在第三个计算周期和第四个计算周期控制单模乘器计算得到U2=X2Z1^2和S2=Y2Z1^3,在第七个计算周期读取U2,在第七个计算周期读取U2,并调用模加器,模加器计算H=U2-X1,在第八个计算周期读取S2,并调用模加器,控制模加器计算r=S2-Y1;在第三个循环的第一个计算周期输入的第一参数为H和H,在第二个计算周期输入的第二参数为r和r,在第三个计算周期和第四个计算周期控制单模乘器计算得到H^2和r^2,在第七个计算周期读取H^2,在第八个计算周期读取r^2;在第四个循环的第一个计算周期输入的第一参数为H和H^2,在第二个计算周期输入的第二参数为X1和H^2,在第三个计算周期和第四个计算周期控制单模乘器计算得到H^3和X1H^2,在第七个计算周期读取H^3,并调用模加器,控制模加器计算r^2-H^3,在第八个计算周期读取X1H^2,并调用模加器,控制模加器计算2X1H^2;在第五个循环的第一个计算周期输入的第一参数为H和H^3,在第二个计算周期输入的第二参数为Y1和H^3,在第三个计算周期和第四个计算周期控制单模乘器计算得到HH^3和Y1H^3,在第三个计算周期和第四个计算周期控制单模乘器计算得到HH^3和Y1H^3的同时,调用模加器计算X3=r^2-H^3-2X1H^2,在第七个计算周期读取HH^3,并调用模加器,控制模加器计算X1H^2-X3,在第八个计算周期读取Y1H^3;在第六个循环的第一个计算周期输入的第一参数为r和(X1H^2-X3),在第二个计算周期输入的第二参数为(aZ1^4)和H^4,在第三个计算周期和第四个计算周期控制单模乘器计算得到r(X1H^2-X3)和aZ3^4=(aZ1^4)H^4,在第七个计算周期读取r(X1H^2-X3),并调用模加器,控制模加器计算Y3=r(X1H^2-X3)-Y1H^3,在第八个计算周期读取aZ3^4;在第七个循环的第一个计算周期输入的第一参数为Z1和H,在第三个计算周期和第四个计算周期控制单模乘器计算得到Z3=Z1H,在第七个计算周期读取Z3=Z1H;
其中,椭圆上两点P=(X1,Y1,Z1,aZ1 4)∈E(Fp),Q=(X2,Y2,Z2,aZ2 4)∈E(Fp),其中E(Fp)表示曲线点(外加无穷远点)构成的有限域,P+Q=(X3,Y3,Z3,aZ3 4)为椭圆曲线密码数据的点倍数据。
表3示出了根据本发明实施例的获取椭圆曲线密码数据的点计算排序。
表3:
点倍计算排序中,周期数1-8为第一个循环,周期数8-15为第二个循环,周期数14-21为第三个循环,周期数20-27为第四个循环,其中的3~6、10~13、16~19以及22~25不接受输入输出,第七个周期数表示空闲一个计算周期。点加计算排序中,周期数1-8为第一个循环,周期数8-15为第二个循环,周期数14-21为第三个循环,周期数20-27为第四个循环,周期数26-33为第五个循环,周期数32-39为第六个循环,周期数39-44为第七个循环,其中的3~6、9~12、16~19、22~25、28~31、34~37以及40~43不接受输入输出,第13个周期数表示空闲一个计算周期,第39个计算周期表示本轮模乘器中的无效计算。
其中,上述实施例中的周期数即为计数周期,也为计算周期。
如表3所示实施例,点倍后可能继续点倍,或者点加,点加后只可能点倍,不可能点加。在表3中,点倍在第26周期时,可以继续后续运算,点加在第44周期时,可以继续后续运算。通过本发明上述实施例,点倍计算可以为25个周期,点加计算可以为43个周期,相比于传统方案,在计算速度上的较大提升。表4对比了两者的速度(传统方案中,以1计算周期=10时钟周期来算,以256位ECC对比)。ECC:error correcting code,错误检查和纠正。
表4
方案 | 点加所需时钟周期数 | 点倍所需时钟周期数 | 点乘所需时钟周期数 |
传统方案 | 70 | 40 | 40*256+70*128=19200 |
本发明 | 43 | 25 | 25*256+43*128=11904 |
表4对比的是传统双模乘器与本发明单模乘器的速度,本发明速度上提高了61.3%,在本发明上述实施例中也可以采用多模乘器代替单模乘器进行计算,实际速度提高会远高于61.3%。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图2是根据本发明实施例的一种获取椭圆曲线密码数据的装置的示意图。
如图2所示,该装置可以包括:循环执行模块10,用于循环执行如下步骤直至获取模加结果和模乘结果;确定模块30,用于通过模加结果和模乘结果确定椭圆曲线密码数据:循环执行模块包括:第一输入模块11,用于在第一个计算周期向单模乘器输入第一参数;第二输入模块12,用于在第二个计算周期向单模乘器输入第二参数;第一控制模块13,用于在第三个计算周期至第六个计算周期控制单模乘器对第一参数和第二参数进行模乘计算得到模乘结果;第二控制模块14,用于在第七个计算周期和第八个计算周期从单模乘器取出模乘结果,并调用模加器对模乘结果进行模加计算得到模加结果;其中,单模乘器为基于6周期内计算2个数的模乘器,第一参数和第二参数为计算椭圆曲线密码数据的已知参数,计算周期用于确定计算时间。
采用本发明,通过使用基于6周期内计算2个数的单模乘器,可以同时计算两个数,并且采用本发明实施例的第一个和第二个计数周期输入,第三个至第六个技术周期计算,第七个和第八个计数周期取出结果的顺序计算得到模乘结果和模加结果,使得模乘器一直处于高速运转的状态,没有空闲周期,并且需要的计算周期少,解决了现有技术中的计算椭圆曲线密码速度慢的问题,实现了提高计算椭圆曲线密码的速度的效果。
在本发明的上述实施例中,循环执行模块还可以包括:第三输入模块,用于在第七个计算周期和第八个计算周期从单模乘器取出模乘结果的同时,将第三参数和第四参数输入单模乘器,其中,第三参数和第四参数也为计算椭圆曲线密码的已知参数,第三参数和第四参数可以为下一个循环输入的第一参数和第二参数。
需要进一步说明的是,第二控制模块可以包括:第一控制子模块,用于在第七个计算周期从单模乘器中读取单模乘器对第一参数进行模乘计算得到的第一子模乘结果,并将第一子模乘结果输入模加器;第二控制子模块,用于在第八个计算周期从单模乘器中读取单模乘器对第二参数进行模乘计算得到的第二子模乘结果,并将第二子模乘结果输入模加器。
从以上的描述中,可以看出,本发明实现了如下技术效果:
采用本发明,通过使用基于6周期内计算2个数的单模乘器,可以同时计算两个数,并且采用本发明实施例的第一个和第二个计数周期输入,第三个至第六个技术周期计算,第七个和第八个计数周期取出结果的顺序计算得到模乘结果和模加结果,使得模乘器一直处于高速运转的状态,没有空闲周期,并且需要的计算周期少,解决了现有技术中的计算椭圆曲线密码速度慢的问题,实现了提高计算椭圆曲线密码的速度的效果。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种获取椭圆曲线密码数据的方法,其特征在于,包括:
循环执行如下步骤直至获取模加结果和模乘结果,通过所述模加结果和所述模乘结果确定椭圆曲线密码数据,所述步骤包括:
在第一个计算周期向单模乘器输入第一参数;
在第二个所述计算周期向所述单模乘器输入第二参数;
在第三个所述计算周期至第六个所述计算周期控制所述单模乘器对所述第一参数和所述第二参数进行模乘计算得到所述模乘结果;
在第七个所述计算周期和第八个所述计算周期从所述单模乘器取出所述模乘结果,并调用模加器对所述模乘结果进行模加计算得到所述模加结果;
其中,所述单模乘器为基于6周期内计算2个数的模乘器,所述第一参数和所述第二参数为计算所述椭圆曲线密码数据的已知参数,所述计算周期用于确定计算时间。
2.根据权利要求1所述的方法,其特征在于,在第七个计算周期和第八个计算周期从所述单模乘器取出所述模乘结果的同时,所述方法还包括:
将第三参数和第四参数输入所述单模乘器,其中,所述第三参数和所述第四参数也为计算所述椭圆曲线密码的已知参数,所述第三参数和所述第四参数可以为下一个循环输入的所述第一参数和所述第二参数。
3.根据权利要求2所述的方法,其特征在于,在第七个所述计算周期和第八个所述计算周期从所述单模乘器取出所述模乘结果包括:
在第七个所述计算周期从所述单模乘器中读取所述单模乘器对所述第一参数进行模乘计算得到的第一子模乘结果,并将所述第一子模乘结果输入所述模加器;
在第八个所述计算周期从所述单模乘器中读取所述单模乘器对所述第二参数进行模乘计算得到的第二子模乘结果,并将所述第二子模乘结果输入所述模加器。
4.根据权利要求1所述的方法,其特征在于,
在通过循环执行所述步骤对椭圆曲线进行点倍计算时,
在第一个循环的第一个所述计算周期输入的所述第一参数为X1和X1,在第二个所述计算周期输入的所述第二参数为Y1和Y1,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到X1^2和Y1^2,在第七个所述计算周期读取所述X1^2,并调用所述模加器,控制所述模加器计算2X1^2和(X1^2+aZ1^4),在第八个所述计算周期读取所述Y1^2,并调用所述模加器,控制所述模加器计算M,M=3X1^2+aZ1^4;
在第二个循环的第一个所述计算周期输入的所述第一参数为X1和Y1^2,在第二个所述计算周期输入的所述第二参数为M和M,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到S=X1Y1^2和M^2,在第七个所述计算周期读取所述S,并调用所述模加器,所述模加器计算2S,在第八个所述计算周期读取所述M^2,并调用所述模加器,控制所述模加器计算4S;
在第三个循环的第一个所述计算周期输入的所述第一参数为Y1^2和Y1^2,在第二个所述计算周期输入的所述第二参数为Y1和Z1,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到U=Y1^4和Y1Z1,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到U=Y1^4和Y1Z1的同时,调用所述模加器计算8S、X3=M^2-8S、以及(4S-X3),在第七个所述计算周期读取所述U,并调用所述模加器,控制所述模加器计算2U,在第八个所述计算周期读取所述Y1Z1,并调用所述模加器,控制所述模加器计算4U,其中,在第七个所述计算周期读取所述U的同时输入下一个循环的第一参数M和(4S-X3),在第八个所述计算周期读取所述Y1Z1的同时输入下一个循环的第二参数U和aZ1^4;
在第四个循环的第一个所述计算周期输入的所述第一参数为M和(4S-X3),在第二个所述计算周期输入的所述第二参数为U和aZ1^4,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到M(4S-X3)和UaZ1^4,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到M(4S-X3)和UaZ1^4的同时,调用所述模加器计算8U和Z3=2Y1Z1,在第七个所述计算周期读取所述M(4S-X3),并调用所述模加器,控制所述模加器计算Y3=M(4S-X3)-8U,在第八个所述计算周期读取所述UaZ1^4,并调用所述模加器,控制所述模加器计算2UaZ1^4;
通过所述模加结果和所述模乘结果确定椭圆曲线密码数据包括:在三个所述计算周期里调用所述模加器,控制所述模加器顺序计算得到4UaZ1^4、8UaZ1^4以及aZ3^4=16UaZ1^4,使用所述模加结果确定所述椭圆曲线密码数据的点倍数据;
其中,椭圆上两点P=(X1,Y1,Z1,aZ1 4)∈E(Fp),Q=(X2,Y2,Z2,aZ2 4)∈E(Fp),其中E(Fp)表示曲线点(外加无穷远点)构成的有限域,P+Q=(X3,Y3,Z3,aZ3 4)为所述椭圆曲线密码数据的点倍数据。
5.根据权利要求1所述的方法,其特征在于,
在通过循环执行所述步骤对椭圆曲线进行点加计算时,
在第一个循环的第一个所述计算周期输入的所述第一参数为Z1和Z1,在第二个所述计算周期输入的所述第二参数为Y2和Z1,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到Z1^2和Y2Z1,在第七个所述计算周期读取所述Z1^2,在第八个所述计算周期读取所述Y2Z1;
在第二个循环的第一个所述计算周期输入的所述第一参数为X2和Z1^2,在第二个所述计算周期输入的所述第二参数为Y2Z1和Z1^2,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到U2=X2Z1^2和S2=Y2Z1^3,在第七个所述计算周期读取所述U2,在第七个所述计算周期读取所述U2,并调用所述模加器,所述模加器计算H=U2-X1,在第八个所述计算周期读取所述S2,并调用所述模加器,控制所述模加器计算r=S2-Y1;
在第三个循环的第一个所述计算周期输入的所述第一参数为H和H,在第二个所述计算周期输入的所述第二参数为r和r,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到H^2和r^2,在第七个所述计算周期读取所述H^2,在第八个所述计算周期读取所述r^2;
在第四个循环的第一个所述计算周期输入的所述第一参数为H和H^2,在第二个所述计算周期输入的所述第二参数为X1和H^2,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到H^3和X1H^2,在第七个所述计算周期读取所述H^3,并调用所述模加器,控制所述模加器计算r^2-H^3,在第八个所述计算周期读取所述X1H^2,并调用所述模加器,控制所述模加器计算2X1H^2;
在第五个循环的第一个所述计算周期输入的所述第一参数为H和H^3,在第二个所述计算周期输入的所述第二参数为Y1和H^3,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到HH^3和Y1H^3,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到HH^3和Y1H^3的同时,调用所述模加器计算X3=r^2-H^3-2X1H^2,在第七个所述计算周期读取所述HH^3,并调用所述模加器,控制所述模加器计算X1H^2-X3,在第八个所述计算周期读取所述Y1H^3;
在第六个循环的第一个所述计算周期输入的所述第一参数为r和(X1H^2-X3),在第二个所述计算周期输入的所述第二参数为(aZ1^4)和H^4,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到r(X1H^2-X3)和aZ3^4=(aZ1^4)H^4,在第七个所述计算周期读取所述r(X1H^2-X3),并调用所述模加器,控制所述模加器计算Y3=r(X1H^2-X3)-Y1H^3,在第八个所述计算周期读取所述aZ3^4;
在第七个循环的第一个所述计算周期输入的所述第一参数为Z1和H,在第三个所述计算周期和第四个所述计算周期控制所述单模乘器计算得到Z3=Z1H,在第七个所述计算周期读取所述Z3=Z1H;
其中,椭圆上两点P=(X1,Y1,Z1,aZ1 4)∈E(Fp),Q=(X2,Y2,Z2,aZ2 4)∈E(Fp),其中E(Fp)表示曲线点(外加无穷远点)构成的有限域,P+Q=(X3,Y3,Z3,aZ3 4)为所述椭圆曲线密码数据的点倍数据。
6.一种获取椭圆曲线密码数据的装置,其特征在于,包括:
循环执行模块,用于循环执行如下步骤直至获取模加结果和模乘结果;
确定模块,用于通过所述模加结果和所述模乘结果确定椭圆曲线密码数据;
所述循环执行模块包括:
第一输入模块,用于在第一个计算周期向单模乘器输入第一参数;
第二输入模块,用于在第二个所述计算周期向所述单模乘器输入第二参数;
第一控制模块,用于在第三个所述计算周期至第六个所述计算周期控制所述单模乘器对所述第一参数和所述第二参数进行模乘计算得到所述模乘结果;
第二控制模块,用于在第七个所述计算周期和第八个所述计算周期从所述单模乘器取出所述模乘结果,并调用模加器对所述模乘结果进行模加计算得到所述模加结果;
其中,所述单模乘器为基于6周期内计算2个数的模乘器,所述第一参数和所述第二参数为计算所述椭圆曲线密码数据的已知参数,所述计算周期用于确定计算时间。
7.根据权利要求6所述的装置,其特征在于,所述循环执行模块还包括:
第三输入模块,用于在第七个计算周期和第八个计算周期从所述单模乘器取出所述模乘结果的同时,将第三参数和第四参数输入所述单模乘器,其中,所述第三参数和所述第四参数也为计算所述椭圆曲线密码的已知参数,所述第三参数和所述第四参数可以为下一个循环输入的所述第一参数和所述第二参数。
8.根据权利要求7所述的装置,其特征在于,所述第二控制模块包括:
第一控制子模块,用于在第七个所述计算周期从所述单模乘器中读取所述单模乘器对所述第一参数进行模乘计算得到的第一子模乘结果,并将所述第一子模乘结果输入所述模加器;
第二控制子模块,用于在第八个所述计算周期从所述单模乘器中读取所述单模乘器对所述第二参数进行模乘计算得到的第二子模乘结果,并将所述第二子模乘结果输入所述模加器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410514801.XA CN104267926B (zh) | 2014-09-29 | 2014-09-29 | 获取椭圆曲线密码数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410514801.XA CN104267926B (zh) | 2014-09-29 | 2014-09-29 | 获取椭圆曲线密码数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104267926A true CN104267926A (zh) | 2015-01-07 |
CN104267926B CN104267926B (zh) | 2018-03-09 |
Family
ID=52159452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410514801.XA Active CN104267926B (zh) | 2014-09-29 | 2014-09-29 | 获取椭圆曲线密码数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104267926B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113706745A (zh) * | 2021-08-16 | 2021-11-26 | 广州朗国电子科技股份有限公司 | 一种门锁离线密码生成的方法及相关设备 |
US11683171B2 (en) | 2021-06-03 | 2023-06-20 | International Business Machines Corporation | Acceleration of elliptic curve-based isogeny cryptosystems |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1280726A (zh) * | 1997-12-05 | 2001-01-17 | 保密信息技术公司 | 优化椭圆曲线密码计算的变换方法 |
CN1625104A (zh) * | 2004-12-09 | 2005-06-08 | 中国电子科技集团公司第三十研究所 | 一种用于椭圆曲线密码算法芯片的倍点运算电路 |
CN1700637A (zh) * | 2005-05-18 | 2005-11-23 | 上海迪申电子科技有限责任公司 | 一种新型的椭圆曲线密码协处理器 |
US20100150340A1 (en) * | 2008-12-02 | 2010-06-17 | Electronics And Telecommunications Research Institute | Device and method for elliptic curve cryptosystem |
CN101782845A (zh) * | 2009-01-20 | 2010-07-21 | 北京华大信安科技有限公司 | 一种椭圆曲线密码的高速运算装置和方法 |
US20140098951A1 (en) * | 2012-10-05 | 2014-04-10 | Electronics & Telecommunications Research Institute | Method for elliptic curve cryptography with countermeasures against simple power analysis and fault injection analysis and system thereof |
-
2014
- 2014-09-29 CN CN201410514801.XA patent/CN104267926B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1280726A (zh) * | 1997-12-05 | 2001-01-17 | 保密信息技术公司 | 优化椭圆曲线密码计算的变换方法 |
CN1625104A (zh) * | 2004-12-09 | 2005-06-08 | 中国电子科技集团公司第三十研究所 | 一种用于椭圆曲线密码算法芯片的倍点运算电路 |
CN1700637A (zh) * | 2005-05-18 | 2005-11-23 | 上海迪申电子科技有限责任公司 | 一种新型的椭圆曲线密码协处理器 |
US20100150340A1 (en) * | 2008-12-02 | 2010-06-17 | Electronics And Telecommunications Research Institute | Device and method for elliptic curve cryptosystem |
CN101782845A (zh) * | 2009-01-20 | 2010-07-21 | 北京华大信安科技有限公司 | 一种椭圆曲线密码的高速运算装置和方法 |
US20140098951A1 (en) * | 2012-10-05 | 2014-04-10 | Electronics & Telecommunications Research Institute | Method for elliptic curve cryptography with countermeasures against simple power analysis and fault injection analysis and system thereof |
Non-Patent Citations (4)
Title |
---|
张家喜: "椭圆曲线密码运算效率提高的算法实现", 《宿州学院学报》 * |
张海灵: "椭圆曲线标量乘快速算法的研究与设计", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
李宁: "椭圆曲线密码算法的研究", 《万方数据》 * |
李湛: "一种提高椭圆曲线密码运算效率的改进算法", 《航空计算技术》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11683171B2 (en) | 2021-06-03 | 2023-06-20 | International Business Machines Corporation | Acceleration of elliptic curve-based isogeny cryptosystems |
CN113706745A (zh) * | 2021-08-16 | 2021-11-26 | 广州朗国电子科技股份有限公司 | 一种门锁离线密码生成的方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104267926B (zh) | 2018-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2017088458A1 (zh) | 流水级运算装置、数据处理方法及片上网络芯片 | |
CN101782845B (zh) | 一种椭圆曲线密码的高速运算装置和方法 | |
CN111966324B (zh) | 面向多椭圆曲线标量乘法器的实现方法、装置及存储介质 | |
CN103942031A (zh) | 椭圆域曲线运算方法和椭圆域曲线运算器 | |
Javeed et al. | FPGA based high speed SPA resistant elliptic curve scalar multiplier architecture | |
US9201847B2 (en) | Composite finite field multiplier | |
CN106445464A (zh) | 一种基于心动模型的复合有限域乘法器 | |
KR101925868B1 (ko) | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 | |
CN108875416A (zh) | 椭圆曲线多倍点运算方法和装置 | |
CN112465130A (zh) | 数论变换硬件 | |
CN104267926A (zh) | 获取椭圆曲线密码数据的方法和装置 | |
CN106371808B (zh) | 一种并行计算的方法及终端 | |
CN109933304A (zh) | 适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法 | |
Pornin | Optimized binary gcd for modular inversion | |
CN109388373A (zh) | 用于低功耗内核的乘除法器 | |
Bajard et al. | Arithmetic operations in the polynomial modular number system | |
CN104123431A (zh) | 一种元素的模逆计算方法及装置 | |
CN110232289A (zh) | 椭圆曲线密码的高速倍点运算方法 | |
CN103944714A (zh) | 基于ecc实现抗dpa攻击的标量乘算法的方法及装置 | |
Guo et al. | An integrated P system for arithmetic operations | |
Ma et al. | Fast implementation for modular inversion and scalar multiplication in the elliptic curve cryptography | |
CN106569778B (zh) | 一种数据处理的方法及电子设备 | |
Venturini et al. | Performance analysis of parallel modular multiplication algorithms for ECC in mobile devices | |
CN110096739A (zh) | 有限状态机的模型生成方法、生成装置及终端设备 | |
CN103176768B (zh) | 计算经典模乘的模乘方法以及可扩展模乘器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |