亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

執(zhí)行模乘的方法和用2n位的數(shù)執(zhí)行歐幾里德乘法的方法

文檔序號(hào):6332899閱讀:283來(lái)源:國(guó)知局
專利名稱:執(zhí)行模乘的方法和用2n位的數(shù)執(zhí)行歐幾里德乘法的方法
技術(shù)領(lǐng)域
本發(fā)明涉及使用2×n位的數(shù)A、B、N與能夠處理n位的數(shù)的處理器來(lái)執(zhí)行A×B mod N類型的模乘的方法。本發(fā)明還涉及使用n位的數(shù)X、Y、Z執(zhí)行(X×Y)/Z類型的運(yùn)算的方法,該方法適于實(shí)現(xiàn)根據(jù)本發(fā)明執(zhí)行模乘的方法。本發(fā)明對(duì)執(zhí)行比如用于執(zhí)行加密計(jì)算的大數(shù)(如n約為2048位)的運(yùn)算尤其有用。
在對(duì)其大小超過(guò)n的數(shù)執(zhí)行模算術(shù)運(yùn)算時(shí)遇到了大量的問(wèn)題,而這通常涉及使用Montgomery、Barrett、Quisquater或Walter方法之類的復(fù)雜算法,在這些算法中,將大數(shù)分割成n位的字,然后對(duì)n位的字執(zhí)行初等運(yùn)算。
然而,不能使用模算術(shù)處理器執(zhí)行這些算法,從設(shè)備的角度來(lái)看,這些模算術(shù)處理器局限于處理最多為n位的數(shù)。例如,在某些處理器上不能執(zhí)行兩個(gè)n位的數(shù)的簡(jiǎn)單乘法,而這僅僅是由于乘法的結(jié)果是所述處理器不能處理的2×n位的數(shù)。
因此,有必要從軟件的角度來(lái)模擬該設(shè)備,以便能對(duì)大數(shù)執(zhí)行運(yùn)算。為此目的,F(xiàn)isher和Seifert最近在文獻(xiàn)1“增加密碼處理器的位長(zhǎng)”(Increasing the Bitlength of a Crypto-processor,Wieland FISHERand Jean Pierre SEIFERT,CHES 2002,LNCS2523,pp.71-81,Springer-Verlag Berlin Heidelberg 2003)中提出了兩種解決方案,這兩種解決方案使得基于兩種處理n位的數(shù)的初等函數(shù),對(duì)大小為2×n(n是采用的處理器處理的字的大小)位的數(shù)A、B、N執(zhí)行A×B mod N類型的模乘成為可能。
上述兩種初等函數(shù)MultModDiv和MultModDivInit定義如下MultModDiv(X,Y,Z)=(Qa,Ra)=((X×Y)/Z,(X×Y)mod Z)MultModDivInit(X,Y,T,Z)=(Qb,Rb)
=((X×Y+T×2n)/Z,(X×Y+T×2n)mod Z)X、Y、T、Z為最多n位的整數(shù),X、Y、T為正或負(fù)數(shù),Z為正數(shù),Qa、Qb、Ra、Rb為n位的結(jié)果。各MultModDiv和MultModDivInit運(yùn)算特別對(duì)n位的數(shù)執(zhí)行兩次乘法。符號(hào)“A”代表“A的整數(shù)部分”(換言之,將A向下舍入到最近的整數(shù))。符號(hào)“mod”通常為“modulo”的縮寫(xiě)。符號(hào)“×”用來(lái)代表歐幾里德乘法。
從而各MultModDiv或MultModDivInit函數(shù)對(duì)n位的數(shù)X、Y、Z在實(shí)踐中執(zhí)行兩種初等運(yùn)算一種歐幾里德乘法(Q=(X×Y)/Z或 其結(jié)果在缺省情況下舍入成整數(shù);以及一種模乘(R=(X×Y)mod Z或(X×Y+T×2n)mod Z)。
從函數(shù)(Q,R)=MultModDiv(X,Y,Z)的定義能迅速推出X×Y=Q×Z+R類似地,從函數(shù)(Q,R)=MultModDivInit(X,Y,Z,T)的定義中能推出X×Y+T×2n=Q×Z+R這些函數(shù),更一般地說(shuō)實(shí)現(xiàn)下文討論的方法必要的所有算術(shù)運(yùn)算都是在模算術(shù)處理器上執(zhí)行的,該處理器配置成對(duì)最多為n位的數(shù)進(jìn)行處理和產(chǎn)生最多為n位的數(shù)。
在此處和下文中,為清楚起見(jiàn),將用相同的名稱來(lái)代表處理器的寄存器和它包含的n位字或數(shù)。例如,“C=A×B”專門(mén)表示“在乘法電路中將寄存器A中的內(nèi)容與寄存器B中的內(nèi)容相乘,并將乘法的結(jié)果存儲(chǔ)在寄存器C中”的這種方法。
為執(zhí)行運(yùn)算A×B mod N,其中A、B、N為2n位的數(shù),由Fisher和Seifert提出的解決方案將數(shù)A、B、N分解成兩個(gè)n位的字,其中一個(gè)高權(quán)重A1、B1、N1的字和另一個(gè)低權(quán)重A0、B0、N0的字。
第一種解決方案使用了7個(gè)MultModDiv函數(shù),并可以由以下算法FS1(Fisher和Seifert的模乘算法,第一版)進(jìn)行概括輸入2n位的整數(shù)A、B、N,將它們用以下形式進(jìn)行分解
A=A1×2n+A0;B=B1×2n+B0;N=N1×2n+N0輸出A×B mod N執(zhí)行(Q1,R1)=MultModDiv(B1,2n,N1)(Q2,R2)=MultModDiv(Q1,N0,2n)(Q3,R3)=MultModDiv(A1,R1-Q2+B0,N1)(Q4,R4)=MultModDiv(A0,B1,N1)(Q5,R5)=MultModDiv(Q3+Q4,N0,2n)(Q6,R6)=MultModDiv(A1,R2,2n)(Q7,R7)=MultModDiv(A0,B0,2n)返回到(R3+R4-Q5-Q6+Q7)×2n+(R7-R6-R5)R1至R7、Q1至Q7是所需的用以得到最終結(jié)果的n位的中間變量。
Fisher和Seifert提出的第二種解決方案使用五個(gè)MultModDiv類型的函數(shù)和一個(gè)MultModDivInit函數(shù)。可以用以下算法FS2(Fisher和Seifert的模乘算法,第二版)概括該第二種解決方案輸入2n位的整數(shù)A、B、N,將它們用以下形式進(jìn)行分解A=A1×2n+A0;B=B1×2n+B0;N=N1×2n+N0輸出A×B mod N執(zhí)行(Q1,R1)=MultModDiv(A1,B1,N1)(Q2,R2)=MultModDivInit(N0,-Q1,R1,N1)(Q3,R3)=MultModDiv(A1,B0,N1)(Q4,R4)=MultModDiv(A0,B1,N1)(Q5,R5)=MultModDiv(A0,B0,2n)(Q6,R6)=MultModDiv(Q2+Q3+Q4,N0,2n)返回到(R2+R3+R4+Q5-Q6)×2n+(R5-R6)在文獻(xiàn)1中提出了關(guān)于實(shí)現(xiàn)Fisher和Seifert提出的這兩種解決方案的方式的細(xì)節(jié)和另外的信息。
如上所述,這兩種解決方案使得使用本身局限于n位的數(shù)的處理器對(duì)最多為2×n位的數(shù)執(zhí)行模運(yùn)算成為可能。然而,這兩種解決方案消耗了大量的計(jì)算能力,因?yàn)槊總€(gè)MultModDiv或MultModDivInit函數(shù)需要一定數(shù)目的初等運(yùn)算(寄存器內(nèi)容的加法、減法,寄存器中的移位等)。
應(yīng)當(dāng)注意,MultModDivInit函數(shù)的實(shí)現(xiàn)通常比MultModDiv函數(shù)的實(shí)現(xiàn)需要更大數(shù)量的初等運(yùn)算。(實(shí)現(xiàn)MultModDiv和MultModDivInit函數(shù)的例子詳見(jiàn)文獻(xiàn)1)。使用某些處理器,實(shí)現(xiàn)MultModDivInit運(yùn)算的代價(jià)充其量與實(shí)現(xiàn)MultModDiv運(yùn)算一樣(例如參見(jiàn)Sedlak氏算法)。
實(shí)現(xiàn)MultModDiv或MultModDivInit類型的函數(shù)需要對(duì)n位的數(shù)執(zhí)行Q=(X×Y)/Z和R=(X×Y)mod Z類型的初等運(yùn)算。專用于加密計(jì)算的處理器通常具有用于計(jì)算R=(X×Y)mod Z類型的模運(yùn)算的集成硬件裝置,但通常不具有用于執(zhí)行Q=(X×Y)/Z類型的歐幾里德運(yùn)算的硬件裝置。在這種情況下,通常使用模擬手段(軟件)來(lái)執(zhí)行基于模初等運(yùn)算集合的歐幾里德運(yùn)算。
例如,文獻(xiàn)1描述了使得基于R1=(X×Y)mod Z和R2=(X×Y)mod(Z+1)類型的運(yùn)算來(lái)計(jì)算Q=(X×Y)/Z成為可能的方法。更具體地說(shuō),在文獻(xiàn)1中通過(guò)以下關(guān)系計(jì)算QQ=((X*Y)mod Z)-((X*Y)mod(Z+1)),若該值為正,或者Q=((X*Y)mod Z)-((X*Y)mod(Z+1))+(Z+1)使用著名的Montgomery算法執(zhí)行運(yùn)算R=(X×Y)mod Z。然而,盡管這種算法在當(dāng)模Z為奇數(shù)時(shí)特別有效(根據(jù)準(zhǔn)確度和計(jì)算時(shí)間),但是當(dāng)Z為偶數(shù)時(shí)情況卻不是這樣。這意味著文獻(xiàn)1中提出的方法并不有效,因?yàn)閿?shù)Z和Z+1中的一個(gè)或另一個(gè)必然為偶數(shù)。
本發(fā)明的一個(gè)目的是執(zhí)行與Fisher和Seifert提出的算法相同的運(yùn)算(A×B mod N,其中A、B、N為2n位),但是通過(guò)使用MultModDiv或MultModDivInit類型的較少數(shù)目的初等函數(shù)來(lái)執(zhí)行該運(yùn)算,以便在消耗較少計(jì)算能力的同時(shí)提供更快的結(jié)果。
本發(fā)明的另一個(gè)目的是對(duì)n位的數(shù)執(zhí)行S=(X×Y)/Z類型的運(yùn)算的方法,該方法比文獻(xiàn)1中提出的方法更有效??梢允褂酶鶕?jù)本發(fā)明的方法來(lái)執(zhí)行根據(jù)本發(fā)明的模乘。
本發(fā)明因此涉及執(zhí)行A×B mod N類型的模乘的方法,其中A、B、N為2×n位的數(shù)。不管根據(jù)本發(fā)明的方法的實(shí)現(xiàn)方式如何,將數(shù)A、B、N分解成n位的字。然后,在上述方法中,對(duì)n位的數(shù)A1、A0、B1、B0、N1和N0執(zhí)行運(yùn)算。
根據(jù)本發(fā)明的第一實(shí)施例,將數(shù)A、B、N以下列形式分解到基2nA=A1×2n+A0,B=B1×2n+B0和N=N1*2n+N0。換言之,A、B、N的高權(quán)重的n位分別形成了字A1、B1、N1,以及A、B、N的低權(quán)重的n位分別形成了字A0、B0、N0。然后,執(zhí)行六種MultModDiv類型的初等函數(shù),其中第六種提供了模乘的結(jié)果。
具體地說(shuō),執(zhí)行了以下方法A1輸入2n位的整數(shù)A、B、N,將它們用以下形式進(jìn)行分解A=A1×2n+A0;B=B1×2n+B0;N=N1×2n+N0輸出A×B mod N執(zhí)行(Q1,R1)=MultModDiv(A1,B1,N1)(Q2,R2)=MultModDiv(Q1,N0,2n)(Q3,R3)=MultModDiv(A1+A0,B1+B0,2n-1)(Q4,R4)=MultModDiv(A0,B0,2n)(Q5,R5)=MultModDiv(2n-1,Ri+Q3-Q2-Q4,N1)(Q6,R6)=MultModDiv(Q5,N0,2n)返回(R3+R5-Q6-R2-R4)×2n+(R2+R4-R6)以上算法A1確實(shí)執(zhí)行了模乘A×B mod N。根據(jù)Karatsuba氏引理,詳見(jiàn)文獻(xiàn)2“在自動(dòng)機(jī)上的多位數(shù)乘法”(“Multiplication ofMultidigit Numbers On Automata”,Soviet Physics-Doklady,Volume7,pages 595-596,1963),我們得到
A×B=2n(2n-1)A1×B1+2n(A1+A0)×(B1+B0)-(2n-1)A0×B0由于N=N1×2n+N0,我們得到N1×2nηN-N0,其中ηN等價(jià)于模N。
在算法A1中,從Q1至Q6、R1至R6的定義和從MultModDiv函數(shù)的定義中,可以推出2n(2n-1)×A1×B1ηN2n(2n-1)(Q1×N1+R1)ηN-(2n-1)×(Q1×N0)+2n(2n-1)×R1ηN-(2n-1)(Q2×2n+R2)+2n(2n-1)R1ηN2n(2n-1)(R1-Q2)-(2n-1)×R22n(A1+A0)(B1+B0)=2n((2n-1)Q3+R3)=2n(2n-1)Q3+2n×R3(2n-1)×A0×B0=(2n-1)(2n×Q4+R4)=2n(2n-1)Q4+(2n-1)×R4由此最后推出A×B ηN2n(2n-1)(R1+Q3-Q2-Q4)+2n×R3-(2n-1)(R2+R4)ηN2n(Q5×N1+R5)+2n×R3-(2n-1)(R2+R4)ηN-Q5×N0+2n(R3+R5)-(2n-1)(R2+R4)ηN-(Q6×2n+R6)+2n(R3+R5)-(2n-1)(R2+R4)ηN2n×(R3+R5-Q6-R2-R4)+(R2+R4-R6)從而A×B mod N=2n(R3+R5-Q6-R2-R4)+(R2+R4-R6)這是算法A1產(chǎn)生的結(jié)果將注意到根據(jù)本發(fā)明的方法A1比從現(xiàn)有技術(shù)方法知道的方法FS1少用一個(gè)MultModDiv函數(shù)。從而,對(duì)于同樣的結(jié)果,在要執(zhí)行的運(yùn)算總數(shù)方面有所減少,因此減少了用于執(zhí)行該方法而消耗的總時(shí)間和綜合計(jì)算能力。具體來(lái)說(shuō),由于一個(gè)MultModDiv運(yùn)算對(duì)n位的數(shù)執(zhí)行2次模乘,因而在這種情況下,算法A1對(duì)n位的數(shù)執(zhí)行12次模乘,而不是算法FS1中的14次,從而在計(jì)算時(shí)間上取得了(14-12)/14=14%的提高。
根據(jù)本發(fā)明的第二實(shí)施例,將數(shù)A、B、N用以下方式類似分解到基2nA=A1×2n+A0,B=B1×2n+B0和N=N1*2n+N0。然后執(zhí)行一個(gè)MultModDivInit類型的函數(shù)和四個(gè)MultModDiv類型的初等函數(shù),其中第四個(gè)函數(shù)提供了模乘的結(jié)果。
具體地說(shuō),執(zhí)行了以下方法A2輸入2×n位的整數(shù)A、B、N,將它們用以下形式進(jìn)行分解A=A1×2n+A0;B=B1×2n+B0;N=N1×2n+N0輸出A×B mod N執(zhí)行(Q1,R1)=MultModDiv(A1,B1,N1)(Q2,R2)=MultModDiv(A1+A0,B1+B0,2n-1)(Q3,R3)=MultModDiv(A0,B0,2n)(Q4,R4)=MultModDivInit(Q1,N0,Q3-R1-Q2,N1)(Q5,R5)=MultModDiv(N0+N1,Q4,2n)返回到(R2+Q5-R3-R4)×2n+(R3+R4+R5)算法A1確實(shí)執(zhí)行模乘A×B mod N。從Q1至Q5,R1至R5的定義中,我們得到2n(2n-1)×A1×B1ηN2n(2n-1)Q1×N1+R1(2n-1)(-Q1×N0+R1×2n)2n(A1+A0)(B1+B0)=2n((2n-1)Q2+R2)=2n(2n-1)Q2+2n×R2(2n-1)A0×B0=(2n-1)(2n×Q3+R3)=2n(2n-1)Q3+(2n-1)R3從Karatsuba氏引理(文獻(xiàn)2)中,我們得到A×B=2n(2n-1)×A1×B1+2n(A1+A0)(B1+B0)-(2n-1)A0×B0從而,由此推斷出下式(由于N1(2n-1)ηN-N0-N1)A×B ηN-(2n-1)(Q1×N0+(Q3-R1-Q2)×2n)+2n×R2-(2n-1)R3(2n-1)(Q4×N1+R4)+2n×R2-(2n-1)R3(N0-N1)Q4+2n×R2-(2n-1)(R3+R4)(2n×Q5+R5)+2n×R2-(2n-1)(R3+R4)2n(R2+Q5-R3-R4)+(R3+R4+R5)
最后A×B mod N=2n(R2+Q5-R3-R4)+(R3+R4+R5)這是算法A2產(chǎn)生的結(jié)果。
當(dāng)會(huì)注意到,本發(fā)明的方法A2比從現(xiàn)有技術(shù)方法知道的方法FS2少使用一個(gè)MultModDiv函數(shù)。從而同樣在此例中,對(duì)于同樣的結(jié)果,減少了將執(zhí)行的運(yùn)算總數(shù),因此減少了用于執(zhí)行該方法而消耗的總時(shí)間和綜合計(jì)算能力。具體來(lái)說(shuō),由于一個(gè)MultModDiv運(yùn)算或一個(gè)MultModDivInit運(yùn)算對(duì)n位的數(shù)執(zhí)行2次模乘,因此在這種情況下,算法A2對(duì)n位的數(shù)執(zhí)行10次模乘,而不是算法FS2中的12次,因此與文獻(xiàn)1中的等效方法FS2相比,在計(jì)算時(shí)間上取得了(12-10)/12=16%的提高。
根據(jù)本發(fā)明的第三實(shí)施例,將數(shù)A、B、N分解到基U(U不同于2n)使得A=A1×U+A0,B=B1×U+B0以及N=N1×U+N0,其中,A1、A0、B1、B0、N1和N0為n位的字。然后,對(duì)字A1、A0、B1、B0、N1和N0執(zhí)行MultModDiv類型的初等運(yùn)算。
在第一例中,執(zhí)行以下方法A3輸入2×n位整數(shù)A、B、N,將它們用以下形式分解A=A1×U+A0;B=B1×U+B0;N=N1×U+N0;輸出A×B mod N執(zhí)行(Q1,R1)=MultModDiv(A0B0U)(Q2,R2)=MultModDiv(A1+A0,B1+B0,U)(Q3,R3)=MultModDiv(A1,B1,U)(Q4,R4)=MultModDiv(α,Q3,U)(Q5,R5)=MultModDiv(α,-Q1+Q2-Q3+Q4+R3,U)返回到(R5+R1)+(R4-R1+Q1+R2-R3+Q5)×U其中α=U2mod N在該第一例中,算法A3確實(shí)執(zhí)行了模乘A×B mod N。由于α=U2mod N,我們得到U2ηNα。而且,從Q1至Q5,R1至R5的定義,我們得到(U-1)×A0×B0ηN(U-1)(Q1×U+R1)ηNQ1×α-R1+(R1-Q1)×UU×(A1+A0)(B1+B0)ηNU(Q2×U+R2)ηNQ2×α+R2UU(U-1)×A1×B1ηNU2×A1B1-U×A1×B1ηNU×(R3×U+Q3×α)-U×(Q3×U+R3)ηNR3×α+Q3×αU-Q3×α+R3×UηN(-Q3+R3)×α+(-R3+Q3×α)×U從Karatsuba氏引理(文獻(xiàn)2),我們得到A×B=U(U-1)A1×B1+U×(A1+A0)×(B1+B0)-(U-1)×A0×B0,即A×B ηN(-Q3+R3)×α+(-R3+Q3×α)×U+Q2×α+R2×U-Q1×α+R1-(R1-Q1)×UηNα(-Q1+Q2-Q3+R3)+R1+U(-R1+Q1+R2-R3+Q3×α)ηNα(-Q1+Q2-Q3+R3)+R1+U(Q4×U+R4-R1+Q1+R2-R3)ηNα(-Q1+Q2-Q3+Q4+R3)+R1+U(R4-R1+Q1+R2-R3)ηN(R5+R1)+U(R4-R1+Q1+R2-R3+Q5)這是算法A3產(chǎn)生的結(jié)果。
當(dāng)會(huì)注意到,在該第一例中,根據(jù)本發(fā)明的方法A3比現(xiàn)有方法或者甚至比本發(fā)明的第一實(shí)施例或第二實(shí)施例使用更少數(shù)量的MultModDiv函數(shù)。我們因此又得到,對(duì)于相同的結(jié)果,將更多地減少將執(zhí)行的運(yùn)算總數(shù),因此減少用于執(zhí)行該方法而消耗的總時(shí)間和綜合計(jì)算能力。具體來(lái)說(shuō),由于一個(gè)MultModDiv運(yùn)算或MultModDivInit運(yùn)算對(duì)n位的數(shù)執(zhí)行2次模乘,因而在此例中的算法A3對(duì)n位的數(shù)使用10次模乘,而不是算法FS1中的14次,因而,與文獻(xiàn)1中的等效方法FS1相比,在計(jì)算時(shí)間上取得了(14-10)/14=28%的提高。
為執(zhí)行該第一例,舉例來(lái)說(shuō),可選擇 其中√N(yùn)為N的平方根,且 為√N(yùn)的向上舍入的整數(shù)部分(換言之,U是舍入的剛好大于√N(yùn)的整數(shù))。也可能選擇 其中k是整數(shù)。k最好選擇得使α=U2mod N盡可能小。
在第二例中,用以下關(guān)系來(lái)定義UU2ηNα+δ×U。α和δ最好為常量整數(shù),且盡可能小(少于256位)。α和δ最好選擇得使α+δ2也是常量且為小整數(shù)。
理想地,δ=1和α=-1、2或3。能通過(guò)選擇合適的數(shù)N即通過(guò)選擇合適的密匙生成方法(我們記得,此處N是加密算法的密鑰元素)來(lái)得到α和δ。
可以將方法A3進(jìn)行簡(jiǎn)化而給出以下方法A4輸入2×n位的整數(shù)A、B、N,將它們用以下形式進(jìn)行分解A=A1×U+A0;B=B1×U+B0;N=N1×U+N0;輸出A×B mod N執(zhí)行(Q1,R1)=MultModDiv(A0,B0,U)(Q2,R2)=MultModDiv(A1+A0,B1+B0,U)(Q3,R3)=MultModDiv(A1,B1,U)返回到α×(-Q1+Q2-Q3+R3+δ×Q3)+R1+U×[(-R1-R3+Q1+R2+Q3(α+δ2)+(-Q3+R3-Q1+Q2)×δ]算法A4確實(shí)執(zhí)行了模乘A×B mod N。通過(guò)使用U2ηNα+δ×U和Karatsuba氏引理,我們得到(U-1)×A0×B0ηN(U-1)(Q1×U+R1)ηN-Q1×U-R1+R1×U+Q1(α+δ×U)ηNQ1×α-R1+(R1-Q1+Q1×δ)×U
U×(A1+A0)(B1+B0)ηNU(Q2×U+R2)ηNR2×U+Q2×(α+δU)ηNα×Q2+(R2+δ×Q2)UU×A1×B1ηNU(Q3×U+R3)ηNαQ3+(R3+δ×Q3)UU2×A1×B1ηNU(α×Q3+(R3+δ×Q3)×U)ηNα×U×Q3+(R3+δ×Q3)×(α+δ×U)ηNα×(R3+δ×Q3)+((δ×(R3+δ×Q3)+α×Q3)×UU(U-1)×A1×B1ηNα×(R3-Q3+δ×Q3)+((R3+δ×Q3)×(δ-1)+α×Q3)×UηNα×(R3-Q3+δ×Q3)+[-R3+δ×(-Q3+R3)+Q3×(δ2+α)]×U從而A×BηNα×(-Q1+Q2-Q3+R3+δ×Q3)+R1+U×(-R1-R3+Q1+R2+Q3×(α+δ2)+δ×(-Q3+R3-Q1+Q2)當(dāng)會(huì)注意到,本發(fā)明的方法A4比現(xiàn)有方法或者比本發(fā)明的第一實(shí)施例或第二實(shí)施例使用更少數(shù)量的MultModDiv函數(shù)。我們因此得到,對(duì)于相同的結(jié)果,更大地減少將執(zhí)行的運(yùn)算總數(shù),從而也減少了用于執(zhí)行該方法消耗的的總時(shí)間和綜合計(jì)算能力。
在第三例中,執(zhí)行了以下方法A5輸入2×n位的整數(shù)A、B、N,將它們用以下形式進(jìn)行分解A=A1×U+A0;B=B1×U+B0;N=N1×U+N0;輸出A×B mod N執(zhí)行(X1,Y1,Z1,R1)=Coefficients(A,B,U)(Q2,R2)=MultModDiv(α,X1,U)(Q3,R3)=MultModDiv(α,Y1+Q2,U)返回到R1+R3+(R2+Z1+Q3)×U
所述系數(shù)Coefficient函數(shù)以基U計(jì)算從兩個(gè)分解到基U(A1×X+A0和B=B1×X+B0)的整數(shù)A、B產(chǎn)生的多項(xiàng)式的系數(shù)Coefficients(A,B,U)=(C3,C2,C1,C0),使得C3=f;C2=d+3f;C1=e+2f;C0=R0;其中R0=(A mod U)(B mod U)mod UR1=(A mod(U+1))(B mod(U+1))mod(U+1)R2=(A mod(U+2))(B mod(U+2))mod(U+2)R3=(A mod(2U+3))(B mod(2U+3))mod(2U+3)以及a=(R0-R2+((R0-R2)mod 2)(U+2))/2 mod U+2b=R0-R1 mod(U+1)c=(2(R0-R3)+(2(R0-R3)mod 3)(2U+3))/3 mod(2U+3)d=((b-a)mod(U+1))e=a+2df=-6d+4e-4c mod(2U+3)C3、C2、C1、C0驗(yàn)證A×B=C3×U3+C2×U2+C1×U+C0應(yīng)當(dāng)注意,由于A=A1×U+A0和B=B1×U+B0,因而可以用以下關(guān)系方便地計(jì)算R0、R1、R2、R3R0=A0B0mod UR1=(A0-A1)(B0-B1)mod(U+1)R2=(A0-2A1)(B0-2B1)mod(U+2)R3=(A0+(A1mod 2)U-3(A1div 2))×(B0+(B1mod2)U-3(B1div 2))mod(2U+3)如上所述,比如加法、減法之類的輔助運(yùn)算的計(jì)算時(shí)間方面的成本可以忽略不計(jì)。
算法A5確實(shí)執(zhí)行了模乘A×B mod N。通過(guò)使用所述系數(shù)Coefficient函數(shù)的定義,我們得到A×B=X1×U3+Y1×U2+Z1×U+R1ηNR1+αY1+(αX1+Z1)×U
ηNR1+αY1+(Q2×U+R2+Z1)×UηNR1+α(Y1+Q2)+(R2+Z1)×UηNR1+R3+(R2+Z1+Q3)×U在該第三例中,可能選擇 也可能選擇 其中k為整數(shù)。
最好將k選得盡可能小,使得U為奇數(shù)且不能被三整除。為此目的,例如,可以對(duì)若干逐漸增加的k值進(jìn)行測(cè)試,直到得到滿意的U值為止。也可能將k選得盡可能小,使得U為奇數(shù)且不能被三整除并使得α=U2mod N盡可能小。
最后,本發(fā)明涉及執(zhí)行S=(X×Y)/Z類型運(yùn)算的方法,其中X,Y,Z為n位的數(shù)。可以用該方法來(lái)執(zhí)行上述的模乘和更一般地執(zhí)行MultModDiv函數(shù)。在該方法中,執(zhí)行了以下步驟E1將變量Δβ初始化成零,且計(jì)算兩個(gè)數(shù)據(jù)項(xiàng)C=X×Y mod Z和Cβ=X×Y mod(Z+β),β是預(yù)定的n位正整數(shù)。
E2計(jì)算結(jié)果S=[C-Cβ-Δβ(Z+β)]/β。
E3如果中間數(shù)據(jù)項(xiàng)不是整數(shù),則將變量Δβ加1,并重復(fù)步驟E2和其后的步驟E3。
為證明上述方法,將首先證明以下內(nèi)容存在整數(shù)Δβ使得S=XY/Z=[C-Cβ-Δβ(Z+β)]/β。然后將說(shuō)明以上方法使求出Δβ和S的正確值成為可能。
令β為n位的正整數(shù)。我們定義C=X×Y mod ZCβ=X×Y mod(Z+β)Δβ=XY/Z-XY/(Z+β)Δβ驗(yàn)證0≤Δβ≤β。實(shí)際上,由于Z<Z+β,我們得到XY/(Z+β)<XY/Z,且我們從中推出XY/(Z+β)<XY/Z。并且XY/Z=[XY/(Z+β)×(1+β/Z)≤XY/(Z+β)+[(Z-1)2/((Z+β)Z)]<XY/(Z+β)+β由于β是整數(shù), 因此
最后這兩個(gè)不等式使得我們斷定XY/(Z+β)≤XY/Z≤XY/(Z+β)+β即0≤Δβ≤β然后,通過(guò)C和Cβ的定義XY=XY/Z×Z+C=XY/(Z+β)×(Z+β)+Cβ=(Δβ+XY/Z)×(Z+β)+Cβ即C=XY/Z×β+Δβ(Z+β)+Cβ,因此XY/Z=[C-Cβ-Δβ(Z+β)]/β(上述方法的步驟E3的計(jì)算)從最后的關(guān)系,可以推出XY/Z等于(C-Cβ)/β減去修正項(xiàng)Δβ(Z+β)/β。另外,從定義上看,XY/Z和β以及Δβ一樣,是個(gè)整數(shù)。從而,通過(guò)使用Δβ的各種可能值系統(tǒng)地計(jì)算=[C-Cβ-Δβ(Z+β)]/β和通過(guò)驗(yàn)證其結(jié)果是否為整數(shù),可以計(jì)算出β的正確值,從而可以得出XY/Z的正確值。
如上述說(shuō)明,0≤Δβ≤β。因此,通過(guò)選擇小的參數(shù)β,Δβ可能值的數(shù)量有限,因而用來(lái)得到XY/Z的正確值的必需嘗試次數(shù)也有限。
經(jīng)驗(yàn)表明,當(dāng)將b的值選擇成等于2的冪時(shí),可以得到最佳結(jié)果(具體地說(shuō),對(duì)計(jì)算速度而言),其中值β=2給出了最佳結(jié)果。這是因?yàn)?,β?時(shí),僅使用與Z具有相同奇偶性的模(Z和Z+2)執(zhí)行模的化簡(jiǎn)(C=X×Y mod Z和Cβ=X×Y mod(Z+β)),從而避免了與使用偶數(shù)模計(jì)算模乘相關(guān)聯(lián)的任何困難。此外,用計(jì)算時(shí)間來(lái)衡量除以β=2的代價(jià)不大,因?yàn)樵趯?shí)踐中這種運(yùn)算歸結(jié)為將寄存器中的內(nèi)容右移一位。最后,最多只需測(cè)試Δβ的兩個(gè)值(0和1)。
權(quán)利要求
1.一種執(zhí)行A×B mod N類型的模乘的加密方法,在所述方法中-如果2×n位的數(shù)A、B、N未以分解形式給出,則將它們分解成基U,使得A=A1×U+A0,B=B1×U+B0和N=N1×U+N0,A1、A0、B1、B0、N1和N0為n位的字,然后-對(duì)數(shù)A1、A0、B1、B0、N1和N0執(zhí)行MultModDiv類型的運(yùn)算,MultModDiv初等運(yùn)算由 (X×Y)mod Z)定義,X、Y、Z為最多n位的整數(shù)。
2.如權(quán)利要求1所述的方法,其中U不同于2n。
3.如權(quán)利要求2所述的方法,其中-執(zhí)行以下運(yùn)算(Q1,R1)=MultModDiv(A0,B0,U)(Q2,R2)=MultModDiv(A1+A0,B1+B0,U)(Q3,R3)=MultModDiv(A1,B1,U)(Q4,R4)=MultModDiv(α,Q3,U)(Q5,R5)=MultModDiv(α,-Q1+Q2-Q3+Q4+R3,U)R1至R5、Q1至Q5均為n位的中間結(jié)果,α由關(guān)系α=U2mod N定義,然后-回到以下結(jié)果(R5+R1)+(R4-R1+Q1+R2-R3+Q5)×U。
4.如權(quán)利要求3所述的方法,其中將數(shù)U選擇為等于
5.如權(quán)利要求3所述的方法,其中將數(shù)U選擇為等于 k為整數(shù)。
6.如權(quán)利要求5所述的方法,其中數(shù)k選擇得使α盡可能小。
7.如權(quán)利要求2所述的方法,其中,-首先根據(jù)關(guān)系U2ηNα+δ×U計(jì)算數(shù)U,α和δ為整數(shù),然后-執(zhí)行以下運(yùn)算(Q1,R1)=MultModDiv(A0,B0,U)(Q2,R2)=MultModDiv(A1+A0,B1+B0,U)(Q3,R3)=MultModDiv(A1,B1,U)R1至R5、Q1至Q5均為n位的中間結(jié)果,然后-回到以下結(jié)果α(-Q1+Q2-Q3+R3+δQ3)+R1+U×[(-R1-R3+Q1+R2+Q3(α+δ2)+(-Q3+R3-Q1+Q2)×δ].
8.如權(quán)利要求7所述的方法,其中,數(shù)α和δ選擇為常數(shù),且盡可能小并使得α+δ2也為常數(shù)和小整數(shù)。
9.如權(quán)利要求2所述的方法,其中,-執(zhí)行以下運(yùn)算(X1,Y1,Z1,R1)=Coefficients(A,B,U)(Q2,R2)=MultModDiv(α,X1,U)(Q3,R3)=MultModDiv(α,Y1+Q2,U)α是由α=U2mod N定義的整數(shù),Coefficient初等運(yùn)算由Coefficients(A,B,U)=(C3,C2,C1,C0)定義,使得C3=f;C2=d+3f;C1=e+2f;C0=R0;其中R0=(A mod U)(B mod U)mod UR1=(A mod(U+1))(B mod(U+1))mod(U+1)R2=(A mod(U+2))(B mod(U+2))mod(U+2)R3=(A mod(2U+3))(B mod(2U+3))mod(2U+3)以及a=(R0-R2+((R0-R2)mod 2)(U+2))/2 mod U+2b=R0-R1mod(U+1)c=(2(R0-R3)+(2(R0-R3)mod 3)(2U+3))/3mod(2U+3)d=((b-a)mod(U+1))e=a+2df=-6d+4e-4c mod(2U+3)-得到以下結(jié)果R1+R3+(R2+Z1+Q3)×U。
10.如權(quán)利要求2所述的方法,其中-執(zhí)行以下運(yùn)算(X1,Y1,Z1,R1)=Coefficients(A,B,U)(Q2,R2)=MultModDiv(α,X1,U)(Q3,R3)=MultModDiv(α,Y1+Q2,U)α是由α=U2mod N定義的整數(shù),Coefficient初等運(yùn)算由Coefficients(A,B,U)=(C3,C2,C1,C0)定義,使得C3=f;C2=d+3f;C1=e+2f;C0=R0;其中R0=A0B0mod UR1=(A0-A1)(B0-B1)mod(U+1)R2=(A0-2A1)(B0-2B1)mod(U+2)R3=(A0+(A1mod 2)U-3(A1div 2))×(B0+(B1mod 2)U-3(B1div 2))mod(2U+3)以及a=(R0-R2+((R0-R2)mod 2)(U+2))/2mod U+2b=R0-R1mod(U+1)c=(2(R0-R3)+(2(R0-R3)mod 3)(2U+3))/3mod(2U+3)d=((b-a)mod(U+1))e=a+2df=-6d+4e-4c mod(2U+3)-得到以下結(jié)果R1+R3+(R2+Z1+Q3)×U。
11.如權(quán)利要求9或10所述的方法,其中將數(shù)U選擇為等于
12.如權(quán)利要求9或10所述的方法,其中將數(shù)U選擇為等于 k為整數(shù)。
13.如權(quán)利要求12所述的方法,其中將k選擇得盡可能小,使得U為奇數(shù)且不能被三整除。
14.如權(quán)利要求13所述的方法,其中數(shù)k選擇得使α盡可能小。
15.如權(quán)利要求1所述的方法,其中,U等于2n,且在其中-執(zhí)行以下運(yùn)算(Q1,R1)=MultModDiv(A1,B1,N1)(Q2,R2)=MultModDiv(Q1,N0,2n)(Q3,R3)=MultModDiv(A1+A0,B1+B0,2n-1)(Q4,R4)=MultModDiv(A0,B0,2n)(Q5,R5)=MultModDiv(2n-1,R1+Q3-Q2-Q4,N1)(Q6,R6)=MultModDiv(Q5,N0,2n)R1至R6、Q1至Q6均為n位的中間結(jié)果,MultModDiv初等運(yùn)算由 (X×Y)mod Z)定義,X、Y、Z為最多n位的整數(shù),然后-回到以下結(jié)果(R3+Q5-Q6-R2-R4)×2n+(R2+R4-R6)。
16.如權(quán)利要求1所述的方法,其中,U等于2n,且在其中-執(zhí)行以下運(yùn)算(Q1,R1)=MultModDiv(A1,B1,N1)(Q2,R2)=MultModDiv(A1+A0,B1+B0,2n-1)(Q3,R3)=MultModDiv(A0,B0,2n)(Q4,R4)=MultModDivInit(Q1,N0,Q3-R1-Q2,N1)(Q5,R5)=MultModDiv(N0+N1,Q4,2n)R1至R5、Q1至Q5均為n位的中間結(jié)果,MultModDiv初等運(yùn)算由 (X×Y)mod Z)定義,且MultModDivInit初等運(yùn)算由MultModDivInit(X,Y,T, 定義,X、Y、Z和T為最多n位的整數(shù),然后-回到以下結(jié)果(R2+Q5-R3-R4)×2n+(R3+R4+R5)AUTONUMAUTONUM。
全文摘要
本發(fā)明涉及用2n位的數(shù)進(jìn)行模乘的方法。該方法是將數(shù)(A,B)分解到2n基或U基,U是一個(gè)適合的整數(shù);并且隨后對(duì)第一步驟得到的n位的數(shù)執(zhí)行MultModDiv-和/或MultModDivInit-類型的初等運(yùn)算。本發(fā)明還涉及計(jì)算歐幾里德乘法/除法的方法。本發(fā)明可用于密碼計(jì)算。
文檔編號(hào)G06F7/48GK1867890SQ200480030569
公開(kāi)日2006年11月22日 申請(qǐng)日期2004年8月20日 優(yōu)先權(quán)日2003年8月21日
發(fā)明者B·舍瓦利耶-馬梅斯, M·諾耶, P·帕耶 申請(qǐng)人:格姆普拉斯公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1