一种椭圆曲线密码的高速运算装置和方法

文档序号:7944526阅读:498来源:国知局
专利名称:一种椭圆曲线密码的高速运算装置和方法
技术领域
本发明一般地涉及椭圆曲线密码技术,更具体地,涉及一种椭圆曲线密码的高速
运算方法及集成电路。
背景技术
1.椭圆曲线密码技术 1985年,Koblitz和Victor Miller分别独立提出基于椭圆曲线的公钥密码体系(Elliptic Curves Cryptosystem,简称ECC),其安全性是建立在椭圆曲线离散对数问题(Elliptic Curve Discrete LogarithmProblem,简禾尔ECDLP)之上。 1976年,W. Diffie和M. Hellman针对对称密码的密钥分发和管理等问题,提出公钥密码。第一个获得广泛应用的公钥密码是由R. Rivest、 A. Shamir和L. Adleman提出的RSA,其安全性是建立在大整数因子分解的数学难题之上。RSA所涉及的大整数因子分解问题的算法时间复杂度为亚指数级;椭圆曲线上离散对数问题的算法时间复杂度为全指数级。从密码学分析角度来看,椭圆曲线密码用相对RSA更短的密钥就可以达到更高的安全强度。此外,椭圆曲线密码还具有处理速度快、存储空间小等优点。 椭圆曲线密码具有广泛的应用前景,已经吸引了许多密码学工作者投入研究,并已逐渐被国际各大标准组织采纳作为公钥密码标准,例如IEEE P1363、ANSI X9. 62、 ISO/IEC 15946-2等。
2.椭圆曲线定义 当p是大于3的素数时,有限域Fp上的椭圆曲线E定义如下
E :y2 = x3+ax+b, 其中a, b G Fp,且使得(4a2+27b2)mod p ^ 0。椭圆曲线上的点集记为E(Fp)=Kx,y)lx,y GFp且满足曲线方程/二x^ax+W U {0},其中0是椭圆曲线的无穷远点,又称为零点。在仿射坐标下,椭圆曲线E(FP)上的仿射点P(x, y)按照下面定义的加法法则,构成了一个阿贝尔群
a) 0+0 = 0 b)任意一点P (x, y) G E (Fp) \ {0} , P+0 = 0+P = P
c)任意一点P(x,y) G E(FP)\{0},P的逆元-P(x,-y),则P+(-P) =0
d)点P丄(Xl, y》G E (Fp) \ {0} , P2 (x2, y2) G E (Fp) , P3 = P,P G E (Fp)
贝U x3 =入_x「x2 y3 = 入(x「X3)-y工
其中 a)当p丄# p2时,则入=(y2-yi)/(x2-Xi) b)当Pi = P2时,且Pi ^ _P2,PJ入=(3Xl2+a)/2yi 椭圆曲线密码的系统参数组用于描述定义在有限域Fp上的一条椭圆曲线E,该曲
4线的基点G G E(FP),阶为n。参数组由5个参数组成(p, a, b, G, n),其中 a)p :模素数,一般位长为160 256比特 b)a, b :椭圆曲线的方程参数 c)G:椭圆曲线的基点 d)n:基点G的阶 3.椭圆曲线密码算法及实现 椭圆曲线密码一般分为4个运算层次 a)有限域运算,主要包括大数模加、模减、模乘和模逆运算等
b)点加和点倍运算
c)点乘运算 d)椭圆曲线密码机制协议层,主要包括加/解密、签名/验证协议,如椭圆曲线数
字签名算法(Elliptic Curve Digital SignatureAlgorithm,简称ECDSA)等。 针对椭圆曲线密码的4个运算层次,已经存在许多成熟的算法。 一个具体的椭圆
曲线密码系统的实现,主要考虑的因素包括系统安全性、椭圆曲线密码算法的选择及优化、
椭圆曲线密码的应用平台(软件、硬件或固件)、计算环境的约束(处理器的频率、存储空
间、代码空间、电路规模和功耗等)、通信环境的约束(波特率、响应时间)等。 椭圆曲线密码涉及的主要算法包括大整数模乘算法,点加和点倍算法、点乘算法
等,下面具体介绍这几种算法。 1)大整数模乘算法 大整数模乘算法主要涉及到大整数乘法,这对软件和硬件的实现带来很大困难。
1985年,蒙哥马利提出了一种非常有效的模乘算法。该算法的优点是用加法和移位运算代
替传统模乘算法中高成本的除法和减法,适合硬件电路实现,简称蒙哥马利(Mongtgomery)
模乘算法。设M为模数,M > 1, M的二进制位长为n位,即2n—1《M < 2n,令R = 2n, M与R
互素。R—丄禾PM'满足0 < R—1 < M,O < M' <R,RR—丄-MM' =1。 Montgomery模乘算法描述 输入大整数X, Y,M和常数M' 输出:Mon tMu 1 (X, Y),即XYR—'mod M 1)T:=X*Y 2)q = T M' mod R 3) S : = (T+q R) /R 4) if S > M then S = S_M 5) return S 2)点加和点倍算法 在仿射坐标下,仿射坐标点的点加运算和点倍运算均涉及模逆运算和模乘运算。一般来说,模逆运算相对于模乘运算花费的代价过大。为了减少模逆运算次数,通过坐标变换,采用投影坐标实现点加和点倍运算是个不错的选择。而投影坐标有很多种,这些投影坐标的主要区别在于点加和点倍运算所需的模运算次数。在文献"混合坐标下高效的椭圆曲线点乘,,中("Efficient elliptic curve exponentiation using mixedcoordinates[J] Advances in Cryptology-ASIACRYPT' 98,1998,1514 :51—65.")提出一种"修改的雅可比投影坐标"。该投影坐标点的主要优点是相对于其它投影坐标而言,其点倍运算所需的模乘运算次数最少。 在修改的雅可比投影坐标下,椭圆曲线上的P点表示为(X, Y, Z, aZ4)其中a为椭圆曲线方程中的参数。修改的雅可比投影点P(X, Y, Z, aZ4) , Z # 0按照下面的坐标变换公式就可转换为仿射点P(x, y)。
<formula>formula see original document page 6</formula>
同理,设Z = l,则仿射坐标点P(x,y)就可以转化为对应的修改雅可比投影点(X,Y, 1, a)。 椭圆曲线上的两点<formula>formula see original document page 6</formula>
在P # ±Q时,(P+Q)称为点加运算,当Q为固定点时,Z2 = l,则点加运算(P+Q)
的计算公式如下
<formula>formula see original document page 6</formula>
从上述公式可以看出点倍运算至少需要8次模乘运算和4次模加/减运算。
3)点乘算法 椭圆曲线密码中最重要的运算是点乘运算。在给定椭圆曲线中,一个大整数k乘以椭圆曲线点P的运算kP,称为点乘。点乘运算造成了椭圆曲线加/解密和签名/验证的巨大运算量。 椭圆曲线点乘运算kP可以分解为椭圆曲线点加运算(P+Q)和椭圆曲线点倍运算(P+P = 2P),其中k为大整数,其二进制表示为k = (kn—A『2......、k。) ,n为k的二进制长
度,P、Q为椭圆曲线上的整数点。
点乘算法的描述如下 输入k = (kn—人—2......、k。) , P 输出kP l)Q := O(O为无穷远点) 2)for i from n-ldownto Odo 2a Q : = 2Q 2b if ki = lthen Q:=Q+P 3) return Q 从上述椭圆曲线点乘运算的分解可以看出,存在两种基本的运算点倍运算(2Q)和点加运算(Q+P)。 目前,已经存在许多改进的点乘算法,其中大多数算法对k的编码方式进行优化。椭圆曲线群是一种特殊的阿贝尔群,曲线上加法和减法运算一样有效。对k重新编码,用有符号二进制编码来减少二进制编码中的非零元个数,能有效地减少点乘运算中的点加运算次数。目前比较流行的有符号编码是非相邻有符号二进制表示编码(non-adjacent form,简称NAF编码)。这种编码具有最小的海明码重(非零元个数)。 术语"算法"通常定义为解决某一问题的有限步运算序列。基于通用处理器使用某种高级语言和汇编语言来实现某一算法的方法,称为算法的软件实现。将某一算法直接用硬接线、固定的硬件结构实现的方法,称为算法的硬件实现。椭圆曲线密码涉及相对复杂的数学密码算法。椭圆曲线密码算法既可以基于通用处理器编程来实现,也可以通过专门定制电路结构的运算装置来硬件实现。不同应用的需求对椭圆曲线密码算法的软硬件实现提出了不同的要求。 根据不同的应用,同一种算法可以用不同的硬件电路结构来实现。如何将椭圆曲线密码算法映射到可用硬件电路来实现的运算装置上的过程是相当复杂的。算法硬件实现的主要目的是对一个具体的特定算法的执行进行优化。椭圆曲线密码算法硬件实现的运算装置的目的是对算法的执行进行优化,最终支持一个高速椭圆曲线密码系统。目前,主要采用的技术包括时间重叠(流水线技术)、空间展开(多数据部件重复,脉动技术)、点运算序列重组等。为了实现一个高速椭圆曲线密码运算装置,在硬件结构方面上,大多采用基于单/多流水模乘器或单脉动阵列模乘器的结构;在算法执行方面,主要对算法运算序列和硬件资源调度做了相关优化。但迄今为止,大多数关于椭圆曲线密码算法的运算装置的性能仍不满足实际的要求,即平均每秒点乘运算性能都在1000次/秒以下(这里以素域上的模长192比特的通用椭圆曲线为参考基准,工作在10腿z频率下)。

发明内容
为了支持高速椭圆曲线密码系统,提高椭圆曲线密码算法的执行速度,本发明提出了一种椭圆曲线密码的高速运算方法,以及一种椭圆曲线密码的高速运算装置,即一种高速椭圆密码算法的硬件实现。 本发明针对点加算法和点倍算法,重新排列了修改的雅可比坐标点的点加和点倍
7运算序列,提出了一种实现点加运算和点倍运算的新方法,该方法可以基于流水脉动的双 模乘器的特殊硬件结构来实现。
流水脉动双模乘器的特点如下运算数据流水输入,运算结果数据流水输出,输
入、输出数据时间上重叠,模乘器一边输入新的运算数据,一边输出上次的运算结果,并且
在运算结果输出的同时完成模加和模减运算。相对于模乘运算而言,模加/减运算不占用
额外的运算周期。本发明中相继出现的两个点运算首尾相接,两个模乘器的空闲时间相互
补充,使流水脉动双模乘器的硬件效率最大化,加快了点运算的执行速度。 利用本发明的方法可以实现一个具体的椭圆曲线密码的高速运算装置。 根据本发明的第一方面,提供了一种椭圆曲线密码的高速运算方法,其适合于利
用包括流水脉动双模乘器的硬件按下面的运算步骤来进行点加运算和点倍运算。 P = (X" Y" Zn aZ。 , Q = (X2, Y2, Z2, aZ24)是椭圆曲线E(Fp)上的两点在雅可比
投影坐标下的表示,当Q为固定点时,4 = 1,则点加运算P+Q二 (X3, Y3, Z3, aZ34)的运算步
骤包括 a)模乘器n计算T。 = = MontMul (Z" Z》; b)模乘器n计算1\ = = MonMul (Z/, Z》,模乘器s计算U2 = MontMul (X2, Z。, 并且加法器之一计算H = ModSub (U2, X》; c)模乘器s计算S2 = MontMul (Y2, Z。,加法器之一计算r = ModSub (S2, Y》;
d)模乘器n计算T2 = H2 = MontMul (H, H),模乘器s计算Z3 = MontMul (Z!, H)
e)模乘器n计算T3 = H3 = MontMul (H2, H),模乘器s计算T4 = r2 = MontMul (r, r),加法器之一计算T5 = ModSub (r2, H3) f)模乘器n计算T7 = X!H2 = MontMul (X! , H2),模乘器s计算T6 = H4 = MontMul (H3,
H),加法器之一计算X3 = ModSub (r2-H3, 2X^2),另一个加法器计算T8 = ModSub "H2, X3) g)模乘器n计算T9 = Y丄H3 = MontMul (Y" H3),模乘器s计算T10 = r (X^-^)=
MontMul (r, X!tf-X3),同时加法器之一计算Y3 = ModSub (r (X!tf-X3) , Y丄H3) h)模乘器s计算aZ34 = MontMul (aZ!4, H4)。 并且点倍运算2P = (X3, Y3, Z3, aZ34)的运算步骤包括。 i)模乘器n计算T。 = X/ = MontMul (X" X》,加法器之一计算M = ModAdd(3X/, aZ。; j)模乘器n计算T2 = = MontMul " , Z》,模乘器s计算1\ = = MontMul ", Y》,加法器之一计算Z3 = ModAdd(YA, YA);k)模乘器n计算S = MontMul, Y。,模乘器s计算T3 = M2MontMul (M, M),加法
器之一计算X3 = ModSub (M2, 8S),另一个加法器计算T4 = MontSub (4S, X3); 1)模乘器s计算T5 = MontMul (M, 4S_X3),模乘器n计算U = Y, = MontMul (Y/,
Y。,加法器之一计算Y3 = ModSub (M(4S-X3) , 8U); m)模乘器s计算aZ34 = MontMul (16U, aZ。。 在本发明中,MontMul (X,Y)表示操作数X、Y做Mongtgomery模乘运算,即XYR—"mod P,P是模数,ModAdd(X,Y)表示操作数X、Y做模加运算,S卩(X+Y)modp, ModSub (X,Y)表示操 作数X、Y做模减运算,即(X-Y)modp,在本发明中,当点加运算之后出现点倍运算时,点加运 算的步骤h)和点倍运算的步骤i)同时进行;在点倍运算之后出现点倍运算时,前一点倍运
8算的步骤m)与后一点倍运算的步骤i)同时进行;在点倍运算之后出现点加运算时,点倍运算的步骤m)和点加运算的步骤a)同时进行,由此点加和点倍运算首尾相接,双模乘器空闲的部分相互补充。 根据本发明的第二方面,提供了一种椭圆曲线密码的高速点乘运算装置。点乘算法可以分解为点加和点倍运算。在采用NAF编码点乘算法时,点加和点倍出现的相邻点运算序列主要包括点加_ >点倍、点倍_ >点倍、点倍_ >点加,即点加的后续运算为点倍;点倍的后续运算为点加或点倍。因此可以利用根据本发明的第一方面的高速运算方法来实现高速点乘运算。 根据本发明的第三方面,提供了一种椭圆曲线密码的高速运算装置,其特征在于,所述装置包括模乘器n和模乘器s,所述模乘器均是流水脉动的模乘器,用于计算MontMul (X,Y),其中MontMul (X,Y)表示操作数X、Y做Mongtgomery模乘运算,即XYR-lmodP, P是模数;两个加法器,所述加法器用于计算ModAdd(X, Y)或ModSub(X, Y),其中ModAdd(X,Y)表示操作数X、Y做模加运算,S卩(X+Y)modp,ModSub(X, Y)表示操作数X、Y做模减运算,即(X-Y)modp ;数据寄存器,其用于存储数据,以及控制单元,其用于控制所述模乘器和加法器按本发明的第一方面所述的方法中的运算步骤来执行点加运算和点倍运算。
根据本发明的第四方面,提供了一种椭圆曲线密码的高速点乘运算装置。该点乘运算装置利用了本发明的第三方面所述的高速运算装置。 本发明的优点在于找到了一种空间观(硬件部件规模)和时间观(算法执行速度)的平衡。本发明采用的流水脉动的双模乘器结构相对于单模乘器而言,点加运算和点倍运算执行速度大约提高2倍,即点加和点倍运算所需的模乘周期数减少一半。模乘器是椭圆曲线密码的核心运算部件,从算法的硬件实现角度来看,提高模乘器的硬件效率具有重大意义。通过重新排列点加和点倍的运算序列,本发明在最大程度上提高了流水脉动双模乘器的硬件效率。在电路规模和硬件效率上,相对于3个以上的多模乘器而言,本发明采用的双模乘器结构空间规模小,具有一定的优势。本发明的椭圆曲线密码的高速运算装置,在工作频率100MHZ下,平均每秒点乘运算性能可达到6000次/秒以上。


通过对结合附图加明显,本发明附图中,相
图l示意性示出速运算装置包括流水脉动
图2示意性示出
图3示意性示出
图4示意性示出
图5示意性示出
图6示意性示出
图7示意性示出
所示出的实施例进行详细说明,本发明的上述以及其他特征将更同的标号表示相同或相似的部件。在附图中
了根据本发明的一个实施例的高速运算装置的内部框图,所述高双模乘器;
了图1中的流水脉动模乘器的时序了根据本发明的一个实施例的点加流水运算序列了根据本发明的一个实施例的点倍流水运算的序列了根据本发明的一个实施例的点加_ >点倍的流水运算序列了根据本发明的一个实施例的点倍_ >点倍的流水运算序列了根据本发明的一个实施例的点倍_ >点加的流水运算序列图。
9
具体实施例方式
本发明基于流水脉动的双模乘器的特殊硬件结构。点乘算法采用NAF编码的点乘 算法。点乘算法可以分解为点加运算和点倍运算。并且在采用NAF编码的点乘算法时,点加 运算和点倍运算出现的相邻点运算序列主要包括点加_ >点倍、点倍_ >点倍、点倍_ > 点加,即点加的后续运算为点倍;点倍的后续运算为点加或点倍。在本发明中,重新排列了 修改的雅可比坐标点的点加和点倍运算序列。 图1示意性示出了根据本发明的一个实施例的高速运算装置,其采用基于流水脉 动的双模乘器的硬件结构,可以执行一个或多个点加和/或点倍运算。该硬件结构主要由 运算、控制和存储三个部分组成。运算部分包含两个并行的流水脉动的模乘器n101、 s102 和两组加法器103 ;控制部分为由若干复用器组成的控制单元,控制模乘器和加法器的运 行,以及数据的存储;存储部分为数据寄存器104,用于存储在运算过程中用到的初始量、 中间变量以及运算结果等等。优选地,所述高速运算装置可以实现为集成电路的形式。
下面结合图2介绍本发明使用的流水脉动的模乘器的功能。图2示出本发明采
用的模乘器的流水时序图,其中1代表运算周期,i = 1,2,......。 一个运算周期等于若
干个时钟周期。模乘器一边输入新的运算数据,一边输出上次的运算结果。a表示模乘器 的一个操作数输入端,b表示模乘器的另一个操作数的输入端,p表示模乘器的运算结果输 出端。例如,在1\周期,a端流入大整数X。;L周期,b端流入大整数Y。;T3周期,p端流出 MontMul (X。, Y。) 。 MontMul (X。, Y。)表示操作数X。和Y。做Mongtgomery模乘运算的结果,即 XYR—、od p, p是模数。在T4周期,p端流出X丄和Y丄的Montgomery模乘结果MontMul (X" Y》,其中&是a端在T2周期流入的操作数,l是b端在T3周期流入的操作数。以此类推, 在Ti+2周期,p端流出&和Yi+1的模乘结果MontMul (&, Yi+1),其中&是a端在1\周期流入 的操作数,Yi+1是b端在Ti+1周期流入的操作数。 回到图l,模乘器n具有两个输入端an和bn以及一个输出端pn。在Tw周期,pn端 流出叫和bni+1的模乘结果,其中叫是an端在Ti周期流入的操作数,bni+1是bn端在Ti+1 周期流入的操作数。类似地,模乘器s具有两个输入端as和bs以及一个输出端ps。在Ti+2 周期,ps端流出aSi和bsi+1的模乘结果,其中aSi是as端在1\周期流入的操作数,bsw是bs 端在Ti+1周期流入的操作数。因此,在同一运算周期,双模乘器n和s可以执行两个模乘运算。
在图1中,本发明的硬件结构中的两组加法器示出为S和T。每组加法器可以在控 制信号的作用下执行模加运算或模减运算。ModAdd(X, Y)表示操作数X、 Y做模加运算,即 (X+Y)modp,ModSub(X,Y)表示操作数X、 Y做模减运算,艮卩(X-Y)modp,其中p是模数。相对 于模乘运算而言,模加/减运算不占用额外的运算周期。可以在一个运算周期中,在进行模 乘运算后,将模乘结果和/或其他操作数进行模加/减运算。 控制单元可以根据要执行的点运算来控制模乘器和加法器按步骤执行相应的运 算序列来完成点运算。下面将结合图3到图6详细介绍控制单元的功能。点运算包括点加 运算、点倍运算以及点乘运算。如前所述,点乘运算可以分解为一系列点加运算和点倍运 算。因此,在本说明书的上下文中,除非特别指出,否则点运算只表示点加和/或点倍运算。 下面结合图3和图4来详细说明根据本发明的点加和点倍运算序列。 图3示意性示出了本发明设计的修改的雅可比坐标点的点加流水运算序列。修正 的雅可比坐标点的点加运算表示为P+Q = (X3,Y3,Z3,aZ/),其中已知P = (&,YpZpaZ。,
10Q = (X2, Y2, Z2, aZ24) G E(FP) , Z2 = 1。 ai为修正的雅可比坐标点的点加运算序列编号,i从0开始编号。其中T。 L。以及^、S2、H和r表示点加运算中的临时变量。另外,这里模运算所涉及的操作数都是Montgomery表示。图中的第一列表示序列编号,第二列和第三列分别表示模乘器n的输入端an、bn流入的操作数,第四列表示模乘器n的输出端pn流出的运算结果,第五列和第六列分别表示模乘器s的输入端as、bs流入的操作数,第七列表示模乘器s的输出端ps流出的运算结果,第8列表示加法器S和/或T流出的运算结果。本发明的点加流水运算序列如下 在步骤301,编号a0的运算周期,模乘器n的an端流入操作数 在步骤302,编号al的运算周期,模乘器n的an、 bn两端同时流入操作数模
乘器s的as端流入操作数^。 在步骤303,编号a2的运算周期,模乘器n的pn端流出运算结果T。 = MontMul ",Z》,bn端流入操作数T。。模乘器s的as端流入操作数Y2, bs端流入操作数T。。
在步骤304,编号a3的运算周期,加法器S计算H = ModSub (U2, X》,模乘器n的an端流入操作数H, pn端流出运算结果1\ = MontMul ", T。)。模乘器s的as端流入操作数Zn bs端流入操作数1\, ps端流出运算结果U2 = MontMul (X2, T。)。 在步骤305,编号a4的运算周期,模乘器n的an,bn两端流入操作数H。模乘器s的as端流入操作数r, bs端流入操作数H, ps端流出运算结果S2 = MontMul (Y2, T》。同时加法器T计算r = ModSub (S2, Y》。 在步骤306,编号a5的运算周期,模乘器n的pn端流出运算结果T2 = MontMul (H,H),同时an、bn端流入操作数T2。模乘器s的as端流入操作数H,bs端流入操作数r,ps端流出运算结果Z3 = MontMul (Z" H)。 在步骤307,编号a6的运算周期,模乘器n的pn端流出运算结果T3 = MontMul (T2,H) , an端流入操作数T3, bn端流入操作数&。模乘器s的as端流入操作数r, bs端流入操作数T3,ps端流出运算结果T4 = MontMul (r,r).同时加法器T计算T5 = Mont Sub (T4, T3)。
在步骤308,编号a7的运算周期,模乘器n的bn端流入操作数Y15 p端流出操作数T7 = MontMul (T2, X》。模乘器s的as端流入操作数T6, bs端流入操作数T8, ps端流出T6 =MontMul (T3, H)。同时加法器S计算X3 = ModSub (T5, 2T7),加法器T计算T8 = ModSub (3T7,T5)。 在步骤309,编号a8的运算周期,模乘器n的pn端流出运算结果T9 = MontMul ",T3)。模乘器s的bs端流入操作数aZ^,ps端流出运算结果L。。同时计算¥3 = ModSub (T10,T9)。 在步骤310,编号a9的运算周期,模乘器s的ps端流出运算aZ34 = MontMul (aZ」,T6)。 图4示意性示出了本发明设计的修改的雅可比坐标点的点倍流水运算序列。修正的雅可比坐标点的点倍运算表示为2P = (X3, Y3, Z3, aZ/),其中已知P = (&, 1, Z15aZ。 GE(Fp)。 dj为修正的雅可比坐标点的点倍运算序列编号,j从0开始编号。其中T。 T5以及S、U和M表示点倍运算中的临时变量。另外,这里模运算所涉及的操作数都是Montgomery表示。与图3类似,图4中的第一列表示序列编号,第二列和第三列分别表示模乘器n的输入端an、 bn流入的操作数,第四列表示模乘器n的输出端pn流出的运算结果,第五列和第六列分别表示模乘器s的输入端as、 bs流入的操作数,第七列表示模乘器s的 输出端ps流出的运算结果,第8列表示加法器S和/或T流出的运算结果。本发明的点倍 流水运算序列如下 在步骤401,编号为dO的运算周期,模乘器n的an端流入操作数&。 在步骤402,编号为dl的运算周期,模乘器n的an端流入操作数l, bn端流入操
作数&。模乘器s的as端流入操作数l。 在步骤403,编号为d2的运算周期,模乘器n的an端流入操作数&, bn端流入操 作数Z15 pn端流出运算结果T。 = MontMul (&, X》。模乘器s的as端流入操作数M, bs端 流入操作数Y1Q同时加法器S计算M = ModAdd(3X/, aZ。。 在步骤404,编号为d3的运算周期,模乘器n的an端流入操作数L, bn端流入操 作数1\, pn端流出运算结果T2 = MontMul ", Z》。模乘器s的as、 bs端输入操作数M, ps 端流出运算结果1\ = MontMul (Yn Y》。同时加法器S计算Z3 = ModAdd(YA, Y^)。
在步骤405,编号为d4的运算周期,模乘器n的bn端流入操作数1\, pn端流出运 算结果S = MontMul (&, T》。模乘器s的as端流入操作数aZ , bs端流入操作数T4, ps端 流出运算结果T3 = MontMul (M,M)。同时加法器S计算X3 = ModSub (T3, 8S),加法器T计算 T4 = MontSub(4S, X3)。 在步骤406,编号为d5的运算周期,模乘器n的pn端流出运算结果U = MontMul (1\, T》。模乘器s的bs端流入16U, ps端流出运算结果T5 = MontMul (M, T4)。同 时加法器T计算Y3 = MontSub (T5, 8U)。 在步骤407,编号为d6的运算周期,模乘器s的ps端流出运算结果aZ/ = MontMul (16U, aZ。。 在上述图3和图4示出的运算序列中,在同一运算周期中,加法器可以将模乘运算
流程的运算结果作为操作数进行模加/减运算,并且流出相应的运算结果,这是可以实现
的,因为如前文所述,相对于模乘运算而言,模加/减运算不占用额外的运算周期。 并且,应该明白,在上述运行序列中,模乘器n和s是相同的,其可以互换,加法器
S和T也可以相互替代,而不影响点运算的实现。 从上述点加和点倍运算序列中,可以看出点加运算序列中编号为a2的运算发明 周期中,模乘器s空闲,编号为a4和a9的运算周期中,模乘器n空闲。在点倍的运算序列 中,编号为d2的运算周期中,模乘器s空闲;编号为d6的运算周期中,模乘器n空闲。根据 本发明采用的NAF编码点乘算法,点加和点倍出现的相邻点运算序列主要包括点加_ > 点倍、点倍_ >点倍、点倍_ >点加,即点加的后续运算为点倍;点倍的后续运算为点加或 点倍。本发明把相邻的点加和/或点倍运算首尾相接,双模乘器空闲的部分刚好可以相互 补充。从而,点加运算只需7个模乘运算周期完成,点倍运算只需4个模乘运算周期完成。 下面将结合图5、图6和图7详细说明根据本发明的点加_ >点倍、点倍_ >点倍、以及点 倍_>点加运算序列。 图5根据本发明的一个实施例示意性示出了点乘算法中出现的点加_>点倍运算 序列。在该运算序列中,采用了本发明的"首尾"相接的方案,即将当前点加运算中的编号 为a7 a9的流水运算序列与后续点倍运算中的d0 d2的流水运算序列相接。从而可以 节省3个运算周期。
12发明的一个实施例示意性示出了点乘算法中出现的点倍_>点倍运算 序列。在该运算序列中,采用了本发明的"首尾"相接的方案,即将当前点倍运算中的编号 为d4 d6的流水运算序列与后续点倍运算中的d0 d2的流水运算序列相接。从而可以 节省3个运算周期。 图7根据本发明的一个实施例示意性示出了点乘算法中出现的点倍_>点加运算 序列。在该运算序列中,采用本发明的"首尾"相接的方案,即将当前点倍运算中的编号为 d4 d6的流水运算序列与后续点加运算中的a7 d9的流水运算序列相接。从而可以节 省3个运算周期。 显然,当存在多个相邻的点运算序列时,图5-图7中的运算序列可以结合在一起 使用。例如,对于点加_ >点倍_ >点倍运算序列,可以将图5和图6的流水运算序列首尾 相接来实现。即将当前点加运算中的编号为a7 a9的流水运算序列与后续的第一个点 倍运算中的d0 d2的流水运算序列相接,将第一个点倍运算中的编号为d4 d6的流水 运算序列与第二个点倍运算中的d0 d2的流水运算序列相接第二个点倍。又如,对于点 加_ >点倍_ >点倍_ >点加运算序列,可以将图5、图6和图7的流水运算序列首尾相接 来实现。即在点加_ >点倍_ >点倍运算序列的基础上,将第二点倍运算中的编号为d4 d6的流水运算序列与后续点加运算中的a7 d9的流水运算序列相接。以此类推,根据本 发明的"首尾"相接方案,可以通过将一个或多个图5、图6和/或图7中的运算序列首尾相 接来实现一连串的点加/点倍运算,其中除了第一个点运算外,其余的点加运算只需7个模 乘运算周期完成,点倍运算只需4个模乘运算周期完成。 在上述运算过程中,点P禾P /或Q的修改的雅可比坐标表示(&, ^, Zp aZ。 、 (X2, Y2, Z2, aZ24) G E(FP),运算结果(X3, Y3, Z3, aZ34),以及临时变量都可以根据需要存储在数据 寄存器中。 容易理解,因为点乘算法可以分解为点加运算和点倍运算,所以可以利用上述的 点加和/或点倍运算的首尾相接方案来实现高速的点乘算法。根据本发明的点乘高速运算 装置可以利用图1的硬件结构,通过增加一个控制单元来实现。所述增加的控制单元根据 点乘运算所分解的点加和点倍运算序列来控制图1的硬件结构执行相应的点加和/或点倍 运算。作为替代,也可以不增加控制单元,而是修改图1中的控制单元,使得增加相应的控 制功能。 尽管已经描述并说明了本发明的具体实施例,但是本发明并不限于此描述和说明 的具体形式或者布置。本发明的范围意在由所附权利要求及其等同来定义。
1权利要求
一种椭圆曲线密码的高速运算方法,其适合于利用包括流水脉动双模乘器的硬件结构来实现,所述方法按下面的运算步骤来进行点加运算和点倍运算,其中P=(X1,Y1,Z1,aZ14),Q=(X2,Y2,Z2,aZ24)是椭圆曲线E(Fp)上的两点在雅可比投影坐标下的表示,当Q为固定点时,Z2=1,则点加运算P+Q=(X3,Y3,Z3,aZ34)的运算步骤包括a)模乘器n计算T0=Z12=MontMul(Z1,Z1);b)模乘器n计算T1=Z13=MonMul(Z12,Z1),模乘器s计算U2=MontMul(X2,Z12),并且加法器之一计算H=ModSub(U2,X1);c)模乘器s计算S2=MontMul(Y2,Z13),加法器之一计算r=ModSub(S2,Y1);d)模乘器n计算T2=H2MontMul(H,H),模乘器s计算Z3=MontMul(Z1,H)e)模乘器n计算T3=H3=MontMul(H2,H),模乘器s计算T4=r2=MontMul(r,r),加法器之一计算T5=ModSub(r2,H3)f)模乘器n计算T7=X1H2=MontMul(X1,H2),模乘器s计算T6=H4=MontMul(H3,H),加法器之一计算X3=ModSub(r2-H3,2X1H2),另一个加法器计算T8=ModSub(X1H2,X3)g)模乘器n计算T9=Y1H3=MontMul(Y1,H3),模乘器s计算T10=r(X1H2-X3)=MontMul(r,X1H2-X3),同时加法器之一计算Y3=ModSub(r(X1H2-X3),Y1H3)h)模乘器s计算aZ34=MontMul(aZ14,H4);并且点倍运算2P=(X3,Y3,Z3,aZ34)的运算步骤包括。i)模乘器n计算T0=X12=MontMul(X1,X1),加法器之一计算M=ModAdd(3X12,aZ14);j)模乘器n计算T2=Y1Z1=MontMul(Y1,Z1),模乘器s计算T1=Y12=MontMul(Y1,Y1),加法器之一计算Z3=ModAdd(Y1Z1,Y1Z1);k)模乘器n计算S=MontMul(X1,Y12),模乘器s计算T3=M2=MontMul(M,M),加法器之一计算X3=ModSub(M2,8S),另一个加法器计算T4=MontSub(4S,X3);1)模乘器s计算T5=MontMul(M,4S-X3),模乘器n计算U=Y14=MontMul(Y12,Y12),加法器之一计算Y3=ModSub(M(4S-X3),8U);m)模乘器s计算aZ34=MontMul(16U,aZ14),其中,MontMul(X,Y)表示操作数X、Y做Mongtgomery模乘运算,即XYR-1mod p,p是模数,ModAdd(X,Y)表示操作数X、Y做模加运算,即(X+Y)modp,ModSub(X,Y)表示操作数X、Y做模减运算,即(X-Y)modp,并且其中,当点加运算之后出现点倍运算时,当前点加运算的步骤h)和后续点倍运算的步骤i)同时进行;在点倍运算之后出现点倍运算时,当前点倍运算的步骤m)与后续点倍运算的步骤i)同时进行;在点倍运算之后出现点加运算时,当前点倍运算的步骤m)和后续点加运算的步骤a)同时进行,由此相邻的点运算首尾相接,双模乘器空闲的部分相互补充。
2. 根据权利要求1所述的高速运算方法,其中在所述方法用于点乘运算时,点乘算法 采用NAF编码点乘算法。
3. —种椭圆曲线密码的高速运算装置,其特征在于,所述装置包括模乘器n和模乘器s,所述模乘器均是流水脉动的模乘器,用于计算MontMul (X, Y),其 中MontMul (X, Y)表示操作数X、 Y做Mongtgomery模乘运算,即XYR—"mod p, p是模数,两个加法器,所述加法器用于计算ModAdd(X, Y)或ModSub(X, Y),其中ModAdd(X, Y) 表示操作数X、 Y做模加运算,即(X+Y)modp, ModSub (X, Y)表示操作数X、 Y做模减运算,即(X-Y)modp,数据寄存器,用于存储数据,以及控制单元,用于控制所述模乘器和加法器按下面的运算步骤执行点加运算和点倍运 算,其中,椭圆曲线E(Fp)上的两点在雅可比投影坐标下表示为P = (&, Yn Zn aZ。, Q = (X2, Y2, Z2, aZ24),当Q为固定点时,Z2 = 1,则点加运算P+Q = (X3, Y3, Z3, aZ34)的运算步骤包括a) 模乘器n计算T。 = = MontMul (Zn Z》;b) 模乘器n计算1\ = = MonMul (Z/, Z》,模乘器s计算U2 = MontMul (X2, Z。,并 且加法器之一计算H = ModSub (U2, X》;c) 模乘器s计算S2 = MontMul (Y2, Z。,加法器之一计算r = ModSub (S2, Y》;d) 模乘器n计算T2 = H2MontMul (H, H),模乘器s计算Z3 = MontMul (Zn H)e) 模乘器n计算T3 = H3 = MontMul (H2, H),模乘器s计算T4 = r2 = MontMul (r, r), 加法器之一计算T5 = ModSub (r2, H3)f) 模乘器n计算T7 = X丄H2 = MontMul (X" H2),模乘器s计算T6 = H4 = MontMul (H3, H),加法器之一计算X3 = ModSub (r2-H3, 2X^2),另一个加法器计算T8 = ModSub "H2, X3)g) 模乘器n计算T9 = Y!H3 = MontMul (Yn H3),模乘器s计算T1Q = r (X^-X^ = MontMul (r, X!tf-X3),同时加法器之一计算Y3 = ModSub (r (X!tf-X3) , Y丄H3)h) 模乘器s计算aZ34 = MontMul (aZj, H4); 并且点倍运算2P = (X3, Y3, Z3, aZ34)的运算步骤包括。i) 模乘器n计算T。 = X/ = MontMul (Xn X》,加法器之一计算M = ModAdd (3X/, aZ。; j)模乘器n计算T2 = = MontMul (Y" Z》,模乘器s计算1\ = = MontMul (Y"Y》,加法器之一计算Z3 = ModAdd(YA, YA);k)模乘器n计算S = MontMul (X" Y。,模乘器s计算T3 = M2MontMul (M,M),加法器之 一计算X3 = ModSub (M2, 8S),另一个加法器计算T4 = MontSub (4S, X3);1)模乘器s计算T5 = MontMul (M, 4S_X3),模乘器n计算U = Y, = MontMul (Y/, Y。, 加法器之一计算Y3 = ModSub (M(4S-X3) , 8U);m)模乘器s计算az34 = MontMul (16U, aZ。,其中,当点加运算之后出现点倍运算时, 点加运算的步骤h)和点倍运算的步骤i)同时进行;在点倍运算之后出现点倍运算时,前一 点倍运算的步骤m)与后一点倍运算的步骤i)同时进行;在点倍运算之后出现点加运算时, 点倍运算的步骤m)和点加运算的步骤a)同时 进行,由此相邻的点运算首尾相接,双模乘器 空闲的部分相互补充。
4.根据权利要求3所述的高速运算装置,其中在所述装置用于点乘运算时,点乘算法 采用NAF编码点乘算法。
全文摘要
本发明涉及一种椭圆曲线密码的高速运算装置和方法。本发明主要针对椭圆曲线为模长160~256比特,素域Fp上的通用曲线。本发明的高速运算装置是基于流水脉动双模乘器的特殊硬件结构,该硬件结构由运算、控制和存储三个部分组成,运算部分包含两个并行流水脉动的模乘器和两组加法器。本发明基于这种特殊的硬件结构,重新排列修改的雅可比坐标投影点的点加和点倍流水运算序列,并且使得相继出现的点加和/或点倍运算首尾相接,双模乘器空闲的时间相互补充。从而提高了流水脉动双模乘器的硬件效率,使得点加运算只占用7个模乘运算周期,点倍运算占4个模乘运算周期,最大幅度地减少点加和/或点倍以及点乘运算的时钟周期数。
文档编号H04L9/30GK101782845SQ20091000543
公开日2010年7月21日 申请日期2009年1月20日 优先权日2009年1月20日
发明者张学鹏, 袁航, 郭中和 申请人:北京华大信安科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1