专利名称:一种用于椭圆曲线密码算法芯片的倍点运算电路的利记博彩app
技术领域:
本发明涉及一种用于椭圆曲线密码算法芯片的倍点运算电路。
背景技术:
椭圆曲线密码算法是一种公钥密码算法。椭圆曲线密码算法包含一个点P被一个大整数K乘,即倍点运算,简称K*P。在椭圆曲线密码算法的运算过程中,倍点运算占了绝大部分时间。因而,影响椭圆曲线密码算法芯片性能或者说运算速率的决定性因素是实现倍点运算的电路。
倍点运算是指椭圆曲线上一个点P被一个大整数K乘,类似于有限域的乘法群上的一个元素的K次幂计算。这种运算的标准算法是二进制取幂方法,或称平方和乘算法,对应于椭圆曲线上一系列的二倍点和点加运算。对这种标准算法电路实现现有两类优化方案一类是维持二倍点运算次数不变,减少点加运算的次数,从而减少整个倍点的运算时间。例如将K值由普通二进制编码改为平衡二进制编码,每次迭代执行k指数比特的k-ary方法,k-ary方法的进一步推广后的滑动窗口法等。另一类是在单个倍点的前提下,提高倍点运算电路内部模块的速率,例如P元域利用改进的蒙哥马利算法,提高倍点运算电路内部重要模块——模乘的执行速率,从而提高倍点运算的速率。上述的优化方案对椭圆曲线密码算法芯片的运算速率有一定提高,但是仍然不能完全满足椭圆曲线密码算法的高速芯片实现的要求。
发明内容
本发明的发明目的在于克服上述不足,提供一种运算速率高的用于椭圆曲线密码算法芯片的倍点运算电路。
为实现上述发明目的,本发明一种用于椭圆曲线密码算法芯片的倍点运算电路,包括一用于大整数K值拆分、预运算和逻辑控制的控制模块,倍点模块以及点加模块;控制模块将大整数K值拆分为多个小整数Ki,并结合点P预运算出对应的点Pi;然后在控制模块逻辑控制下,分别在对应的多个倍点模块中进行倍点运算,运算后的数值送入点加模块中进行点加运算,输出大整数K与点P的倍点运算值。
所述的大整数K值拆分为多个小整数Ki,采用以下公式表述的方法进行拆分K=2[n(m-1)/m]Km+…+2[n(i-1)/m]Ki+…+2[n/m]K2+K1上式中[]是取整符号,n是大整数K的二进制位数,m为K值拆分成Ki的个数;所述的结合点P预运算出对应的点Pi,采用以下公式进行预运算Pi=2[n(i-1)/m]*P所述的分别在对应的多个倍点模块中进行倍点运算,运算后的数值送入点加模块中进行点加运算,采用以下公式表述的方法进行K*P=Km*Pm+…+Ki*Pi+…+K2*P2+K1*P1这种m路并行的倍点运算电路对性能的提高是非常显著的,m路并行的倍点运算电路的性能是单路串行的倍点运算电路的近似m倍。由于倍点运算在整个椭圆曲线密码算法中占了95%以上的运算时间,所以整个椭圆曲线密码算法芯片的性能的提高倍数近似为m。
上述拆分个数m可以是任意大于或等于2的小整数,也就是说这种电路适用于2路或2路以上并行运算的方案,m越大则并行程度和芯片性能更高。但是,由于芯片规模和控制电路复杂度的限制,并不是并行的路数越多越好,需要结合具体情况决定采取几路并行的方案。
图1是原倍点模块原理图;
图2是本发明一种用于椭圆曲线密码算法芯片的倍点运算电路原理图;图3是图2所示倍点运算电路分成两路的原理图。
具体实施例方式
下面结合附图和具体实施方式
,对本发明一种用于椭圆曲线密码算法芯片的倍点运算电路作进一步详细的说明和描述。
图1是原倍点模块原理图。图中,对应于椭圆曲线密码算法中的倍点运算,在椭圆曲线密码算法芯片中,有一个执行倍点运算的倍点模块1。倍点模块1在结构上可以分为三个层次,顶层即倍点运算本身,其输入包括倍数K、P点坐标(x0,y0),输出为倍点运算结果K*P值(xk,yk);中间层为椭圆曲线群上二倍点模块11和点加模块12,根据顶层中K值的不同,顶层的倍点运算可以描述为中间层二倍点和点加运算的不同序列;底层为模加、模乘、求逆、数据转换等基本运算模块,中间层的二倍点和点加运算由底层这些基本运算模块构成。控制模块13对整个倍点模块1进行逻辑控制,以实现倍点运算。
图2是本发明一种用于椭圆曲线密码算法芯片的倍点运算电路原理图。图中,输入是n位二进制随机数K和点P(x0,y0),将随机数K分成m个二进制数K1、K2、…、Ki、…、Km,且满足K=2[n(m-1)/m]Km+…+2[n(i-1)/m]Ki+…+2[n/m]K2+K1上式中[]是取整符号,例如[n(i-1)/m]是不大于n(i-1)/m的最大整数,那么根据结合律和分配律,有K*P=Km*Pm+…+Ki*Pi+…+K2*P2+K1*P1上式中Pi=2[n(i-1)/m]*P这样K和P的倍点运算就就分解成了K1和P1、K2和P2、…、Ki和Pi、…、Km和Pm各自倍点运算结果的点加之和,其中K1、K2、…、Ki、…、Km是对K的拆分,P2、…、Pi、…、Pm是对P进行[n/m]次、…、[n(i-1)/m]次、…、[n(m-1)/m]次二倍点运算的结果,如果预先求得P2、…、Pi、…、Pm,就可以进行K1*P、K2*P2、…、Ki*Pi、…、Km*Pm的并行运算。
具体结构及连接关系为控制模块2将大整数K值拆分为多个小整数Ki,并结合点P预运算出对应的点Pi;然后在控制模块逻辑控制下,分别在对应的多个倍点模块1中进行倍点运算,运算后的数值送入点加模块3中进行点加运算,输出大整数K与点P的倍点运算值。
(1)为K1*P、K2*P2、…、Ki*Pi、…、Km*Pm分配各自独立的倍点运算单元,即图2中的倍点模块i,这样m路并行的倍点运算可以不受彼此影响地独立进行;(2)控制模块向各倍点模块i分别发送K1、K2、…、Ki、…、Km和P、P2、…、Pi、…、Pm的坐标(x0,y0)、(x2,y2)、…、(xi,yi)、…、(xm,ym),并在运算过程中控制各倍点模块i的运行;(3)各路倍点运算结束后,将每个倍点模块的运算结果的坐标(xk1,yk1)、(xk2,yk2)、…、(xki,yki)、…、(xkm,ykm)送入一个独立的点加模块,这些倍点运算结果全部经过点加后即得到K*P(xk,yk)。
这种m路并行的倍点运算电路对性能的提高是非常显著的,m路并行的倍点运算电路的性能是单路串行的倍点运算电路的m倍。由于倍点运算在整个椭圆曲线密码算法中占了95%以上的运算时间,所以整个椭圆曲线密码算法芯片的性能的提高倍数近似为m。
图3是图2所示倍点运算电路分成两路的原理图。图中,控制模块2将大整数K拆分2个小整数K2、K1,并结合点P预运算出对应的点P2、P1,K2、K1及点P2、P1,满足K=2[n/2]K2+K1P2=2[n/2]*P、P1=P然后在控制模块2逻辑控制下,分别在对应的倍点模块1、倍点模块2中进行倍点运算,运算后的数值送入点加模块3中进行点加运算,输出大整数K与点P的倍点运算值(xk,yk)。
K*P=K2*P2+K1*P1两部分倍点同时运算,则倍点运算的速度几乎为原来的两倍,因为后面的点加占用的时间不到倍点的1%。由于倍点运算占了整个椭圆曲线运算的95%以上的时间,因此按照本发明的方法可以大幅度提高已有的椭圆曲线芯片的运算速度。如果未采用并行倍点方法时运算速度2000次/秒,则两个倍点并行运算可接近4000次/秒。
在倍点运算的实现上,二元域和P元域的方法有所不同,本发明描述的电路对于二元域和P元域均适用。本发明一种用于椭圆曲线密码算法芯片的倍点运算电路,不限于具体实施方式
的范围,一切利用本发明构思的发明创造均在保护之列。
权利要求
1.一种用于椭圆曲线密码算法芯片的倍点运算电路,其特征在于,包括一用于大整数K值拆分、预运算和逻辑控制的控制模块,倍点模块以及点加模块;控制模块将大整数K值拆分为多个小整数Ki,并结合点P预运算出对应的点Pi;然后在控制模块逻辑控制下,分别在对应的多个倍点模块中进行倍点运算,运算后的数值送入点加模块中进行点加运算,输出大整数K与点P的倍点运算值。
2.根据权利要求1所述的倍点运算电路,其特征在于,所述的大整数K值拆分为多个小整数Ki,采用以下公式表述的方法进行拆分K=2[n(m-1)/m]Km+…+2[n(i-1)/m]Ki+…+2[n/m]K2+K1上式中[]是取整符号,n是大整数K的二进制位数,m为K值拆分成Ki的个数;所述的结合点P预运算出对应的点Pi,采用以下公式进行预运算Pi=2[n(i-1)/m]*P所述的分别在对应的多个倍点模块中进行倍点运算,运算后的数值送入点加模块中进行点加运算,采用以下公式表述的方法进行K*P=Km*Pm+…+Ki*Pi+…+K2*P2+K1*P全文摘要
本发明公开了一种用于椭圆曲线密码算法芯片的倍点运算电路,其特征在于,包括一用于大整数K值拆分、预运算和逻辑控制的控制模块,倍点模块以及点加模块;控制模块将大整数K值拆分为m个小整数K
文档编号H04L9/30GK1625104SQ200410081439
公开日2005年6月8日 申请日期2004年12月9日 优先权日2004年12月9日
发明者陆建, 杨鹤, 司焕丽 申请人:中国电子科技集团公司第三十研究所