專利名稱:二元域快速通用模約減方法
技術領域:
本發(fā)明涉及一種公鑰密碼應用方法,尤其涉及一種二元域快速通用模約減方法。
背景技術:
近年來,橢圓曲線密碼體制(ECC)和雙線性對密碼(Pairing)體制獲得廣泛的研究和應用。橢圓曲線密碼體制可以提供和RSA密碼體制相同的功能,但在相同安全強度下具有強大的“短密鑰”優(yōu)勢。雙線性對密碼體制由于其具有雙線性性質(zhì)、非退化性質(zhì)和可計算性質(zhì),因此能夠構(gòu)造具有獨特優(yōu)點的密碼體制,例如基于身份的加密方案,BLS短簽名方案,基于身份的密鑰協(xié)商方案等。在二元域上,橢圓曲線密碼和雙線性對密碼都能夠較為快速有效的實現(xiàn)。在這兩種密碼方案的具體實現(xiàn)過程中,都需要進行大量的模乘和模平方的運算,而這兩種運算都涉及了模約減運算。傳統(tǒng)的模約減方法十分慢,一次只能處理一個位。當二元域上的不可約多項式為三項式或者五項式時,NIST(美國國家標準與技術研究院)給出了快速模約減方法??焖倌<s減方法能夠通過一次處理一個字,將模約減運算轉(zhuǎn)換成多次的二元域加法運算,該方法相比傳統(tǒng)的模約減方法速度提升了 32倍。下面以二元域為例,介紹快速模約減方法。模f(x) = χ163+χ7+χ6+χ3+1的快速模約減方法輸入:位數(shù)為L比特的二進制多項式c (X)。輸出:c(X) mod f (x)。步驟1、對于i從iL/3 2j到6,重復執(zhí)行。步驟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
)。由于當不可約多項式不同時,快速模約減方法的循環(huán)次數(shù)、每次循環(huán)中被約減數(shù)據(jù)塊的選取、以及被約減數(shù)據(jù)塊的移位方向和移位位數(shù)等都需要發(fā)生相應改變;因此當采用快速模約減方法時,針對每個不可約多項式都需要實現(xiàn)相應的模約減方法。當軟件或者硬件支持多應用,即實現(xiàn)多個二元域的運算時,采用快速模約減方法就會導致軟件代碼量或者硬件面積的大幅增加
發(fā)明內(nèi)容
本發(fā)明要解決的技術問題是提供一種二元域快速通用模約減方法,能大幅提高二元域上的橢圓曲線以及雙線性對的運算效率。為解決上述技術問題,本發(fā)明的二元域快速通用模約減方法是采用如下技術方案實現(xiàn)的:步驟1,提取二元域下不可約多項式— X:.:' - 中所有非零項的次數(shù),即為m,di,其中,f (X)為m次不可約多項式,m為二元域的擴張次數(shù),(Ii是不可約多項式中除了最高位之外任一非零項的次數(shù);步驟2,預計算約減位置參數(shù)qi和移位參數(shù)!Ti,滿足(m-di) = wX 其中w (w> O)為每次循環(huán)中約減的數(shù)據(jù)塊的位數(shù);步驟3,根據(jù)m、被約減數(shù)據(jù)的位數(shù)(L比特)和被約減數(shù)據(jù)塊的位數(shù)(w比特)計算約減循環(huán)次數(shù),從最 高數(shù)據(jù)塊即第個數(shù)據(jù)塊到最低數(shù)據(jù)塊即第Im.Av.個數(shù)據(jù)塊
逐塊進行約減,其中最低數(shù)據(jù)塊中的部分位即fm/ul X u, — Inn進行約減;步驟4,對被約減數(shù)據(jù)塊進行約減,采用多次數(shù)據(jù)塊的加法來完成數(shù)據(jù)塊的約減,根據(jù)預計算的約減位置參數(shù)Qi和移位參數(shù)^計算被約減數(shù)據(jù)塊多次加法的位置;上述步驟中,i彡O,當i = O時,dQ = O。步驟2中所述移位參數(shù)當不可約多項式為三項式時,滿足O ( r0, T1 < W。步驟2中所述移位參數(shù)ri;當不可約多項式為中間項不靠近的η項式時(η > 3,η項式中任一中間項的次數(shù)屯> m% w+w),滿足O ( rQ, T1 < W。步驟2中所述約減位置參數(shù)Qi和移位參數(shù)當不可約多項式為中間項相互靠近的η項式時(η > 3, η項式中所有中間項的次數(shù)(Ii ( m% w+w),滿足= Q1 = q2 = q3,
0^ r0 < w, Ir1I,|r2|,r3 < w。步驟4中所述的加法,將當前約減數(shù)據(jù)塊C[j](約減數(shù)據(jù)中的第j個數(shù)據(jù)塊)與數(shù)據(jù)塊c[j-qi](約減數(shù)據(jù)中的第(j-qi)個數(shù)據(jù)塊)對齊,如果A彡0,將CU]右移A位,如果Α<0,將CU]左移巧位,最終按照移位的方向分別對應加到c[j-qi]和c[j-q1-1]或
者 C[j-qi+l]和 CU-qJ 上;其中,jm/wi 5; < ./\ν|ο本發(fā)明的二元域快速通用模約減方法,能夠根據(jù)不同的不可約多項式預計算相應的參數(shù),并且根據(jù)預計算的參數(shù)實時的計算相應的約減位置、移位位數(shù)及方向等參數(shù),使得快速模約減方法能夠適用于所有的二元域上的不可約多項式的模約減運算。本發(fā)明與標準的二元域模約減方法相比,所采用的二元域通用模約減方法能夠快速實現(xiàn)二元域上的模約減運算,并且能根據(jù)輸入的不可約多項式實時的調(diào)整運算的參數(shù),因此對任意不可約多項式都適用。從而使得二元域上的橢圓曲線以及雙線性對的運算效率大幅提升。
下面結(jié)合附圖與具體實施方式
對本發(fā)明作進一步詳細的說明:圖1是三項式快速通用模約減示意圖;圖2是五項式快速通用模約減示意圖;圖3是所述二元域快速通用模約減方法流程示意圖。
具體實施例方式近年來,橢圓曲線密碼體制和雙線性對密碼體制獲得廣泛的研究和應用,橢圓曲線和雙線性對實現(xiàn)方法都比較復雜,需要花費大量的時間。本發(fā)明提供了一種二元域快速通用模約減方法,并給出了采用該方法的兩個快速通用模約減方法的實施例。本發(fā)明的方法能夠優(yōu)化二元域中的模約減方法,使得模約減運算的效率大幅提升。參見圖3所示,所述二元域快速通用模約減方法如下:(I)提取二元域F:…下不可約多項式{I X:.....: >, +中所有非零項的次數(shù),即為!!!,屯。其中,f(x)為m次不可約多項式,m為二元域的擴張次數(shù),屯是不可約多項式中除了最高位之外任一非零項的次數(shù)。(2)預計算約減位置參數(shù)qi和移位參數(shù)!Ti,滿足(H1-(Ii) = wX 其中w (w >O)為每次循環(huán)中約減的數(shù)據(jù)塊的位數(shù)。(3)根據(jù)m、被約減數(shù)據(jù)的位數(shù)(L比特)和被約減數(shù)據(jù)塊的位數(shù)(w比特)計算約減循環(huán)次數(shù),從最高數(shù)據(jù)塊(第LU V.'個數(shù)據(jù)塊)到最低數(shù)據(jù)塊(第I πι/η-1個數(shù)據(jù)塊)逐塊進行約減,其中最低數(shù)據(jù)塊中的部分位([m/w' X V: -1:1n)進行約減。(4)對被約減數(shù)據(jù)塊進行約減,采用多次數(shù)據(jù)塊的加法來完成數(shù)據(jù)塊的約減,根據(jù)預計算的約減位置參數(shù)Qi和移位參數(shù)^計算被約減數(shù)據(jù)塊多次加法的位置。上述步驟中,i >0,當 i = 0 時,(1。= 0。下面對二元域快速通用模約減方法的原理進行說明:本發(fā)明的方法對于二元域上任意的不可約多項式都能夠得到快速通用的模約減運算。以不可約多項式為三項式{IX:......= Xn++'十I為例,進行C (X)mod f(x)的約減運
算。假設每次循環(huán)處理的數(shù)據(jù) 塊為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上來實現(xiàn)。而CU]的最高位分別加到C的第(32^^31-!!!++)位和第(32j+31-m)位上。因此根據(jù)參數(shù)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),使得計算得到的約減位置參數(shù)Q1等于0,從而導致當前約減字C[j]約減之后的位置仍為當前字,因此一個約減字可能需要進行多次加法才能完成約減,加法次數(shù)根據(jù)Cli和m值的接近程度相應增加。
同理,當不可約多項式為η項式f1:X:+ = Xni + xda-2 +...+ XdJ + I時,對第j個字C[j]的約減可以通過將C[j]加(n-l)次到c上來實現(xiàn)。而C[j]的最高位分別加到c
的第位、......、第(32^^31-111+(^)位和第(32j+31_m)位上。因此根據(jù)參數(shù)
m,dn_2,……,Cl1就能夠計算被約減字C[j]約減后加法的位置。另外,當不可約多項式的中間項次數(shù)比較特殊時,可以通過優(yōu)化模約減方法來簡化運算。同樣以數(shù)據(jù)塊為32位為例,當η項式(η > 3)中間項相互靠近時,一次約減加法最多只涉及三個約減數(shù)據(jù)中的字,和原始方法中最多可能涉及(2η-2)個約減數(shù)據(jù)中的字相比,大大簡化了運算量。即當滿足所有中間項次數(shù)32+32,就能使得當前約減字C[j]的約減加法最多只涉及三個約減數(shù)據(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]上。以上的原理說明都以每次循環(huán)處理的數(shù)據(jù)塊為32位為例,該原理說明推廣到w位同樣適用,只要將其中的參數(shù)做相應調(diào)整即可。由于橢圓曲線密碼體制和雙線性對密碼體制中大量采用三項式和五項式,本發(fā)明提供了二元域三項式和五項式快速通用模約減方法實施例。實施例1,每次循環(huán)處理約減數(shù)據(jù)中的32位數(shù)據(jù)塊,當三項式中的次數(shù)dJPm的值不太接近時W1 ( m-32),一個約減字只需要進行2次加法就能完成約減。三項式快速通用模約減示意圖可參見圖1。具體的二元域三項式( X).......Xrn + Xdl + I, O < (I1 ^ m-32)
快速通用模約減方法流程如下描述:輸入:不可約多項式 .:'X)」X5"+ '1,滿足 O < (I1 彡 m-32,位數(shù)為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,重復執(zhí)行。步驟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)數(shù)據(jù)清除。步驟8,返回(C[qJ,C[qQ-l],……,C[1],C
)。實施例2,每次循環(huán)處理約減數(shù)據(jù)中的32位數(shù)據(jù)塊,當五項式中間項相互靠近時
32+32),約減加法最多只涉及三個約減數(shù)據(jù)中的字。五項式快速通用模約減示意圖可參見圖2。具體的二元域五項式(中間項靠近)快速通用模約減方法流程如下描述:輸入:不可約多項式i'(x + = χ..: 一 Xc3 -T-.Xc- 一 Xc: + 1,滿足 O < (I1 < d2
<d3 ^ m% 32+32,位數(shù)為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|,重復執(zhí)行;第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)數(shù)據(jù)清除。第9 步,返回(C[q],c[q-l],……,C[1],C
)。
.丁... ' V..... |其中^11 (1>)= 4.::_^: ^ Q0以上通過具體實施方式
和實施例對本發(fā)明進行了詳細的說明,但這些并非構(gòu)成對本發(fā)明的限制。在不脫離本發(fā)明原理的情況下,本領域的技術人員還可做出許多變形和改進,這些也應視為本發(fā)明的保護范圍。
權(quán)利要求
1.一種二元域快速通用模約減方法,其特征在于: 步驟1,提取 二元域F:二下不可約多項式f(xj = X二,Sxd中所有非零項的次數(shù),即為m,屯,其中,f(x)為m次不可約多項式,m為二元域的擴張次數(shù),(Ii是不可約多項式中除了最高位之外任一非零項的次數(shù); 步驟2,預計算約減位置參數(shù)qi和移位參數(shù)!Ti,滿足(H1-(Ii) =WXqfri,其中,w > O,為每次循環(huán)中約減的數(shù)據(jù)塊的位數(shù); 步驟3,根據(jù)m、被約減數(shù)據(jù)的位數(shù)L比特和被約減數(shù)據(jù)塊的位數(shù)w比特,計算約減循環(huán)次數(shù),從最高數(shù)據(jù)塊即第1L/Y.1個數(shù)據(jù)塊到最低數(shù)據(jù)塊即第In:/V.」個數(shù)據(jù)塊,逐塊進行約減,其中最低數(shù)據(jù)塊中的部分位即fm/ul X \v — 1:m進行約減; 步驟4,對被約減數(shù)據(jù)塊進行約減,采用多次數(shù)據(jù)塊的加法來完成數(shù)據(jù)塊的約減,根據(jù)預計算的約減位置參數(shù)Qi和移位參數(shù)^計算被約減數(shù)據(jù)塊多次加法的位置; 上述步驟中,i彡O,當i = O時,dQ = O。
2.如權(quán)利要求1所述的方法,其特征在于:步驟2中所述的移位參數(shù)ri,當不可約多項式為三項式時,滿足O ( r0, Γ < W0
3.如權(quán)利要求1所述的方法,其特征在于:步驟2中所述的移位參數(shù)ri,當不可約多項式為中間項不靠近的η項式時,滿足O ( !Tci, T1 < w,其中,η > 3, (Ii > m% w+w。
4.如權(quán)利要求1所述的方法,其特征在于:步驟2中所述的約減位置參數(shù)Qi和移位參數(shù)當不可約多項式為中間項相互靠近的η項式時,滿足qd = Q1 = q2 = q3,0 ^ r0 < w,T11, |r21, |r3| < w,其中,n > 3, (Ii < m% w+w。
5.如權(quán)利要求1所述的方法,其特征在于:步驟4中所述的加法,將當前約減數(shù)據(jù)塊CU]與數(shù)據(jù)塊C[j-qi]對齊,如果ri彡O,將當前約減數(shù)據(jù)塊CU]右移ri位,如果ri < O,將當前約減數(shù)據(jù)塊c[j]左移巧位,最終按照移位的方向分別對應加到數(shù)據(jù)塊c[j-qi]和Ctj-Q1-1]或者C[j-qi+l]和c[j-qi]上;其中,C[j]為約減數(shù)據(jù)中的第j個數(shù)據(jù)塊;C[j-qi]為約減數(shù)據(jù)中的第Oqi)個數(shù)據(jù)塊,|m/w| S :Ξ |[./vr —。
全文摘要
本發(fā)明公開了一種二元域快速通用模約減方法,提取二元域下不可約多項式中所有非零項的次數(shù);預計算約減位置參數(shù)qi和移位參數(shù)ri,滿足(m-di)=w×qi+ri,其中,w>0,為每次循環(huán)中約減的數(shù)據(jù)塊的位數(shù);根據(jù)m、被約減數(shù)據(jù)的位數(shù)和被約減數(shù)據(jù)塊的位數(shù)計算約減循環(huán)次數(shù),從最高數(shù)據(jù)塊到最低數(shù)據(jù)塊逐塊進行約減,其中最低數(shù)據(jù)塊中的部分位進行約減;對被約減數(shù)據(jù)塊進行約減,采用多次數(shù)據(jù)塊的加法來完成數(shù)據(jù)塊的約減,根據(jù)預計算的約減位置參數(shù)qi和移位參數(shù)ri計算被約減數(shù)據(jù)塊多次加法的位置。本發(fā)明適用于所有的二元域上的不可約多項式的模約減運算,大幅提高二元域上的橢圓曲線以及雙線性對的運算效率。
文檔編號H04L9/30GK103199999SQ201210004418
公開日2013年7月10日 申請日期2012年1月6日 優(yōu)先權(quán)日2012年1月6日
發(fā)明者柴佳晶, 顧海華 申請人:上海華虹集成電路有限責任公司