二元域快速通用模约减方法

文档序号:7886764阅读:1017来源:国知局
专利名称:二元域快速通用模约减方法
技术领域
本发明涉及一种公钥密码应用方法,尤其涉及一种二元域快速通用模约减方法。
背景技术
近年来,椭圆曲线密码体制(ECC)和双线性对密码(Pairing)体制获得广泛的研究和应用。椭圆曲线密码体制可以提供和RSA密码体制相同的功能,但在相同安全强度下具有强大的“短密钥”优势。双线性对密码体制由于其具有双线性性质、非退化性质和可计算性质,因此能够构造具有独特优点的密码体制,例如基于身份的加密方案,BLS短签名方案,基于身份的密钥协商方案等。在二元域上,椭圆曲线密码和双线性对密码都能够较为快速有效的实现。在这两种密码方案的具体实现过程中,都需要进行大量的模乘和模平方的运算,而这两种运算都涉及了模约减运算。传统的模约减方法十分慢,一次只能处理一个位。当二元域上的不可约多项式为三项式或者五项式时,NIST(美国国家标准与技术研究院)给出了快速模约减方法。快速模约减方法能够通过一次处理一个字,将模约减运算转换成多次的二元域加法运算,该方法相比传统的模约减方法速度提升了 32倍。下面以二元域为例,介绍快速模约减方法。模f(x) = χ163+χ7+χ6+χ3+1的快速模约减方法输入:位数为L比特的二进制多项式c (X)。输出:c(X) mod f (x)。步骤1、对于i从iL/3 2j到6,重复执行。步骤1.1、T = C[i];步骤1.2、C[i_6] = C[1-6] (T << 29);步骤1.3、C[1-5] = C[1-5] (T << 4) (T << 3) T (Τ >> 4);步骤1.4、C[1-4] = C[1-4] (Τ >> 28) (T>>29)。步骤2、Τ = C[5] >> 3。步骤3、C
= C
(Τ << 7) (Τ << 6) (Τ << 3) θ Τ。步骤4、C[1] = C[l] (Τ >> 25) (Τ>>26)。步骤5、C [5] = C [5] &0χ7。步骤6、返回(C[5],C[4],C[3],C[2],C[1],C
)。由于当不可约多项式不同时,快速模约减方法的循环次数、每次循环中被约减数据块的选取、以及被约减数据块的移位方向和移位位数等都需要发生相应改变;因此当采用快速模约减方法时,针对每个不可约多项式都需要实现相应的模约减方法。当软件或者硬件支持多应用,即实现多个二元域的运算时,采用快速模约减方法就会导致软件代码量或者硬件面积的大幅增加
发明内容
本发明要解决的技术问题是提供一种二元域快速通用模约减方法,能大幅提高二元域上的椭圆曲线以及双线性对的运算效率。为解决上述技术问题,本发明的二元域快速通用模约减方法是采用如下技术方案实现的:步骤1,提取二元域下不可约多项式— X:.:' - 中所有非零项的次数,即为m,di,其中,f (X)为m次不可约多项式,m为二元域的扩张次数,(Ii是不可约多项式中除了最高位之外任一非零项的次数;步骤2,预计算约减位置参数qi和移位参数!Ti,满足(m-di) = wX 其中w (w> O)为每次循环中约减的数据块的位数;步骤3,根据m、被约减数据的位数(L比特)和被约减数据块的位数(w比特)计算约减循环次数,从最 高数据块即第个数据块到最低数据块即第Im.Av.个数据块
逐块进行约减,其中最低数据块中的部分位即fm/ul X u, — Inn进行约减;步骤4,对被约减数据块进行约减,采用多次数据块的加法来完成数据块的约减,根据预计算的约减位置参数Qi和移位参数^计算被约减数据块多次加法的位置;上述步骤中,i彡O,当i = O时,dQ = O。步骤2中所述移位参数当不可约多项式为三项式时,满足O ( r0, T1 < W。步骤2中所述移位参数ri;当不可约多项式为中间项不靠近的η项式时(η > 3,η项式中任一中间项的次数屯> m% w+w),满足O ( rQ, T1 < W。步骤2中所述约减位置参数Qi和移位参数当不可约多项式为中间项相互靠近的η项式时(η > 3, η项式中所有中间项的次数(Ii ( m% w+w),满足= Q1 = q2 = q3,
0^ r0 < w, Ir1I,|r2|,r3 < w。步骤4中所述的加法,将当前约减数据块C[j](约减数据中的第j个数据块)与数据块c[j-qi](约减数据中的第(j-qi)个数据块)对齐,如果A彡0,将CU]右移A位,如果Α<0,将CU]左移巧位,最终按照移位的方向分别对应加到c[j-qi]和c[j-q1-1]或
者 C[j-qi+l]和 CU-qJ 上;其中,jm/wi 5; < ./\ν|ο本发明的二元域快速通用模约减方法,能够根据不同的不可约多项式预计算相应的参数,并且根据预计算的参数实时的计算相应的约减位置、移位位数及方向等参数,使得快速模约减方法能够适用于所有的二元域上的不可约多项式的模约减运算。本发明与标准的二元域模约减方法相比,所采用的二元域通用模约减方法能够快速实现二元域上的模约减运算,并且能根据输入的不可约多项式实时的调整运算的参数,因此对任意不可约多项式都适用。从而使得二元域上的椭圆曲线以及双线性对的运算效率大幅提升。


下面结合附图与具体实施方式
对本发明作进一步详细的说明:图1是三项式快速通用模约减示意图;图2是五项式快速通用模约减示意图;图3是所述二元域快速通用模约减方法流程示意图。
具体实施例方式近年来,椭圆曲线密码体制和双线性对密码体制获得广泛的研究和应用,椭圆曲线和双线性对实现方法都比较复杂,需要花费大量的时间。本发明提供了一种二元域快速通用模约减方法,并给出了采用该方法的两个快速通用模约减方法的实施例。本发明的方法能够优化二元域中的模约减方法,使得模约减运算的效率大幅提升。参见图3所示,所述二元域快速通用模约减方法如下:(I)提取二元域F:…下不可约多项式{I X:.....: >, +中所有非零项的次数,即为!!!,屯。其中,f(x)为m次不可约多项式,m为二元域的扩张次数,屯是不可约多项式中除了最高位之外任一非零项的次数。(2)预计算约减位置参数qi和移位参数!Ti,满足(H1-(Ii) = wX 其中w (w >O)为每次循环中约减的数据块的位数。(3)根据m、被约减数据的位数(L比特)和被约减数据块的位数(w比特)计算约减循环次数,从最高数据块(第LU V.'个数据块)到最低数据块(第I πι/η-1个数据块)逐块进行约减,其中最低数据块中的部分位([m/w' X V: -1:1n)进行约减。(4)对被约减数据块进行约减,采用多次数据块的加法来完成数据块的约减,根据预计算的约减位置参数Qi和移位参数^计算被约减数据块多次加法的位置。上述步骤中,i >0,当 i = 0 时,(1。= 0。下面对二元域快速通用模约减方法的原理进行说明:本发明的方法对于二元域上任意的不可约多项式都能够得到快速通用的模约减运算。以不可约多项式为三项式{IX:......= Xn++'十I为例,进行C (X)mod f(x)的约减运
算。假设每次循环处理的数据 块为32位,第j个字C[j] (c32J+31x32J+31+-+C32J+1x32J+1+C32Jx32J)的约减如下公式:X:.一2: ΞΞ Xd1 -- V3: —~ 3 1 -3r.1 IllDCl f(X .:)......
λ ;.、: 二 X ;.卞:—r!;.r.π.+ X22卜(mod f(X))VΞ λ::.-'.▼ ^: - V ' ''., tll oil 11 v,))考虑上述同余式右边的两列,C[j]的约减可以通过将C[j]加两次到c上来实现。而CU]的最高位分别加到C的第(32^^31-!!!++)位和第(32j+31-m)位上。因此根据参数m和Cl1能够计算被约减字C[j]约减后两次加法的位置,即,第一步、首先将C[j]与C[j-qQ]对齐,然后将C[j]右移rQ后(rQ = 32),加到C[j-q0]和C[j-q0-l]上(q0 = m/32)(当r0等于O时,那么只需要加到C[j-q0]上)。第二步、首先将C[j]与C[j_qJ对齐,然后将C[j]右移F1后(Γι = (In-(I1) % 32),加到C[j-qJ和C[j_q「l]上Cq1 = (111-(1)/32)(当!T1等于O时,那么只需要加到C[j-qJ上)。但需要注意的是,当Cl1和!11的值较为接近时((^>!11-32),使得计算得到的约减位置参数Q1等于0,从而导致当前约减字C[j]约减之后的位置仍为当前字,因此一个约减字可能需要进行多次加法才能完成约减,加法次数根据Cli和m值的接近程度相应增加。
同理,当不可约多项式为η项式f1:X:+ = Xni + xda-2 +...+ XdJ + I时,对第j个字C[j]的约减可以通过将C[j]加(n-l)次到c上来实现。而C[j]的最高位分别加到c
的第位、......、第(32^^31-111+(^)位和第(32j+31_m)位上。因此根据参数
m,dn_2,……,Cl1就能够计算被约减字C[j]约减后加法的位置。另外,当不可约多项式的中间项次数比较特殊时,可以通过优化模约减方法来简化运算。同样以数据块为32位为例,当η项式(η > 3)中间项相互靠近时,一次约减加法最多只涉及三个约减数据中的字,和原始方法中最多可能涉及(2η-2)个约减数据中的字相比,大大简化了运算量。即当满足所有中间项次数32+32,就能使得当前约减字C[j]的约减加法最多只涉及三个约减数据中的字C[j-q_l]、C[j_q]和C[j_q+1] (q =m/32)。第i步、先将当前约减字C[j]与C[j_q]对齐,然后将C[j]右移A后,对应加到C[j-q]和 C[j-q-l]上。第ii步、对所有i,先将C[j]与C[j_q]对齐,如果&彡0,将C[j]右移ri;如果巧<0,将C[j]左移ri;最终按照移位的方向分别对应加到C[j_q]和C[j-q_l]或者C[j_q+1]和 C[j-q]上。以上的原理说明都以每次循环处理的数据块为32位为例,该原理说明推广到w位同样适用,只要将其中的参数做相应调整即可。由于椭圆曲线密码体制和双线性对密码体制中大量采用三项式和五项式,本发明提供了二元域三项式和五项式快速通用模约减方法实施例。实施例1,每次循环处理约减数据中的32位数据块,当三项式中的次数dJPm的值不太接近时W1 ( m-32),一个约减字只需要进行2次加法就能完成约减。三项式快速通用模约减示意图可参见图1。具体的二元域三项式( X).......Xrn + Xdl + I, O < (I1 ^ m-32)
快速通用模约减方法流程如下描述:输入:不可约多项式 .:'X)」X5"+ '1,满足 O < (I1 彡 m-32,位数为L比特的二进制多项式c (X)。输出:c(X) mod f (x)。步骤I,预计算:m = 32Xq0+r0, (H1-(I1) = 32Xqfr1,满足 O ( r0, T1 < 32a步骤2,i从[L/32j到im/3 21,重复执行。步骤2.1,T = C[i]。步骤2.2, C[i_q。] = C[i_q0] (Τ >> r0) 步骤2.3, C[1-qJ = C[i_qJ (Τ >> T1) 步骤2.4,C[1-q0-l] = C[1-q0-l] (Τ<< (32_r。))。步骤2.5,C[i_q「l] = C[i_q「l] (Τ << (32-r!))。步骤3, T = C[q0] >> r0。步骤4, if(r0 < !T1), C[q0-q「l] = C[q0_q「l] (T << (32-1^+1^))。步骤5,C
= C
T0步骤6, if(r0 < T1), Cliqo-qJ = Ctq0-Q1] (T >> (r「r0)),else, CEqo-qJ = C[q0-qJ (T << ^0T1))
步骤7,将C[qJ的高位([!11/ 32] X 32 — l:m)数据清除。步骤8,返回(C[qJ,C[qQ-l],……,C[1],C
)。实施例2,每次循环处理约减数据中的32位数据块,当五项式中间项相互靠近时
32+32),约减加法最多只涉及三个约减数据中的字。五项式快速通用模约减示意图可参见图2。具体的二元域五项式(中间项靠近)快速通用模约减方法流程如下描述:输入:不可约多项式i'(x + = χ..: 一 Xc3 -T-.Xc- 一 Xc: + 1,满足 O < (I1 < d2
<d3 ^ m% 32+32,位数为L比特的二进制多项式c (x)。输出:c(X) mod f (x)。第I 步,预计算:m = 32 X q+r0, (H1-(I1) = 32 X q+r17 (m_d2) = 32 X q+r2, (m_d3)=32Xq+r3,满足 0 < r。< 32, T11, r21, r3 <32。第2步,i从[L/32j到|m/32|,重复执行;第2.1 步,T = C[i];第2.2 步,C [1-q] = C [i_q] shift (T, r0) shift (T, shift (Τ,r2) shift (T, r3);第2.3 步,if(rQ > 0),C[i_(q+1)] =C[i_(q+l)] (Τ << (32-r0));第2.4 步,if Cr1 > 0),C[i_(q+1) ] = C[i_(q+1) ] (T << (32-1^)),else if
<0),C[1-(q_l)] = C[1-(q-l)] (T >> (32-|rJ));第2.5 步,if (r2 > 0),C[i_(q+1) ] = C[i_(q+1) ] (T << (32_r2)),else if Cr2
<0),C[1-(q_l)] = C[1-(q-l)] (T >> (32_|r2|));第2.6 步,if (r3 > 0),C[i_(q+1) ] = C[i_(q+1) ] (T << (32_r3)),else if Cr3
<0),C[1-(q_l)] = C[1-(q-l)] (T >> (32_|r3|))。第3 步,T = C[q] >> r0。第4 步,C
= C
T shift (T, r「r0) shift (T, r2-r0) shift (T, r3-r0) 第5 步,< 0),C[l] = C[l] shift (T,32-1 !T11 _r0)。第6 步,if(r2 < 0), C[l] = C[l] shift (T, 32-1 r21 _r0)。第7 步,if(r3 < 0), C[l] = C[l] shift (T, 32-1 r31 _r0)。第8步,将c[q]的高位(im/321 X 3 2 l:m)数据清除。第9 步,返回(C[q],c[q-l],……,C[1],C
)。
.丁... ' V..... |其中^11 (1>)= 4.::_^: ^ Q0以上通过具体实施方式
和实施例对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
权利要求
1.一种二元域快速通用模约减方法,其特征在于: 步骤1,提取 二元域F:二下不可约多项式f(xj = X二,Sxd中所有非零项的次数,即为m,屯,其中,f(x)为m次不可约多项式,m为二元域的扩张次数,(Ii是不可约多项式中除了最高位之外任一非零项的次数; 步骤2,预计算约减位置参数qi和移位参数!Ti,满足(H1-(Ii) =WXqfri,其中,w > O,为每次循环中约减的数据块的位数; 步骤3,根据m、被约减数据的位数L比特和被约减数据块的位数w比特,计算约减循环次数,从最高数据块即第1L/Y.1个数据块到最低数据块即第In:/V.」个数据块,逐块进行约减,其中最低数据块中的部分位即fm/ul X \v — 1:m进行约减; 步骤4,对被约减数据块进行约减,采用多次数据块的加法来完成数据块的约减,根据预计算的约减位置参数Qi和移位参数^计算被约减数据块多次加法的位置; 上述步骤中,i彡O,当i = O时,dQ = O。
2.如权利要求1所述的方法,其特征在于:步骤2中所述的移位参数ri,当不可约多项式为三项式时,满足O ( r0, Γ < W0
3.如权利要求1所述的方法,其特征在于:步骤2中所述的移位参数ri,当不可约多项式为中间项不靠近的η项式时,满足O ( !Tci, T1 < w,其中,η > 3, (Ii > m% w+w。
4.如权利要求1所述的方法,其特征在于:步骤2中所述的约减位置参数Qi和移位参数当不可约多项式为中间项相互靠近的η项式时,满足qd = Q1 = q2 = q3,0 ^ r0 < w,T11, |r21, |r3| < w,其中,n > 3, (Ii < m% w+w。
5.如权利要求1所述的方法,其特征在于:步骤4中所述的加法,将当前约减数据块CU]与数据块C[j-qi]对齐,如果ri彡O,将当前约减数据块CU]右移ri位,如果ri < O,将当前约减数据块c[j]左移巧位,最终按照移位的方向分别对应加到数据块c[j-qi]和Ctj-Q1-1]或者C[j-qi+l]和c[j-qi]上;其中,C[j]为约减数据中的第j个数据块;C[j-qi]为约减数据中的第Oqi)个数据块,|m/w| S :Ξ |[./vr —。
全文摘要
本发明公开了一种二元域快速通用模约减方法,提取二元域下不可约多项式中所有非零项的次数;预计算约减位置参数qi和移位参数ri,满足(m-di)=w×qi+ri,其中,w>0,为每次循环中约减的数据块的位数;根据m、被约减数据的位数和被约减数据块的位数计算约减循环次数,从最高数据块到最低数据块逐块进行约减,其中最低数据块中的部分位进行约减;对被约减数据块进行约减,采用多次数据块的加法来完成数据块的约减,根据预计算的约减位置参数qi和移位参数ri计算被约减数据块多次加法的位置。本发明适用于所有的二元域上的不可约多项式的模约减运算,大幅提高二元域上的椭圆曲线以及双线性对的运算效率。
文档编号H04L9/30GK103199999SQ201210004418
公开日2013年7月10日 申请日期2012年1月6日 优先权日2012年1月6日
发明者柴佳晶, 顾海华 申请人:上海华虹集成电路有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1