專利名稱:計算方法、計算設備以及計算機程序的制作方法
技術領域:
本發明涉及一種用于計算與蒙哥馬利乘法求余運算(Montgomerymultiplication remainder operation)中要用的蒙哥馬利變換參數相關的值的計算方法、一種采用了該計算方法的計算設備以及一種用于實現該計算設備的計算機程序,具體來說,涉及一種用于提高計算速度的計算方法、計算設備以及計算機程序。
背景技術:
可以預計,隨著信息社會將來的發展,使用電子貨幣或諸如基本居民登記網絡的信息網絡的業務將得到廣泛應用。信息安全技術對于安全地管理這些業務而言是不可缺少的,并且密碼技術被用作信息安全的基本技術。通過使用密碼技術,可以實現諸如加密、數字簽名以及認證的功能,并且可以保護個人信息不受第三方的未授權訪問。
迄今為止,公知的有各種系統作為用于實現密碼技術的密碼系統,這些系統可以被大致分為共鑰密碼系統和公鑰密碼系統兩種類型。被稱為共鑰密碼系統的系統是這樣的系統,其在加密和解密時使用相同的密鑰(共鑰),并通過將對于除發送方和接收方以外的第三方而言未知的信息設為該共鑰來保持安全性。公鑰密碼系統是這樣的系統,其在加密和解密時使用不同的密鑰,并通過將僅由接收方擁有的保密信息設為用于對密文進行解密的密鑰(秘密密鑰)來保持安全性,而不是像用于加密的密鑰(公鑰)那樣公眾均能獲得。當使用共鑰密碼系統時,必須以除發送方和接收方以外的第三方未知的安全方式共享上述共鑰。另一方面,公鑰密碼系統的優點是無需在發送方與接收方之間共享保密信息,但是缺點是與共鑰密碼系統相比,用于進行處理的計算量非常大。因此,在公鑰密碼系統中,提高計算處理的速度是主要問題。
公知的公鑰密碼系統的代表系統是RSA密碼技術和橢圓曲線密碼技術。在RSA密碼技術中進行利用取冪求余運算的處理,而在橢圓曲線密碼技術中進行利用被稱為點標量乘法(point scalar multiplication)的運算的處理。這兩種運算都使用由表達式y=a×b(mod n)表示的乘法求余運算作為基本運算,該表達式使用了對求余的除數進行表示的整數n以及滿足0≤a,b<n的整數a和b。
然而,當直接在硬件或軟件中實現乘法求余運算時,處理時間變得很長并且處理效率變得很低。因此,廣泛采用的是利用被稱為蒙哥馬利乘法求余的運算方法來進行計算,該蒙哥馬利乘法求余使用由以下表達式而非乘法求余運算所表示的整數a、b和n。通過使用由以下表達式表示的蒙哥馬利乘法求余運算,可以實現比常規乘法求余運算更快的處理。應當注意,以下表達式和以下說明中的符號“*”表示乘法符號“×”。
y=a×b×R-1(mod n)其中,n對求余的除數進行表示的整數a,b滿足0≤a,b<n的整數R由2m*k表示的常數k每1個字的位長m對n進行表示所需的最少字數圖1是示出蒙哥馬利乘法求余運算的算法的說明圖。應當注意,圖1所示算法中的x=(xm-1,...,x1,x0)表示用于將整數x表示成m個字值xi(i=m-1,...,1,0,0≤xi<2k)的格式。根據如圖1所示的由m個字值分別表示的a、b和n,在以下說明中,將計算由m個字表示的值y的情況下的蒙哥馬利乘法求余運算y=a×b×R-1(mod n)表達成y=REDC(a,b)n或僅僅寫成REDC。此外,在包括圖1的附圖和以下說明中,符號“=”表示將右手側的數值或表達式賦予左手側。
如上所述,蒙哥馬利乘法求余運算是a×b×R-1(mod n)并進行與常規乘法求余運算a×b(mod n)不同的運算。因此,為了正確地執行取冪求余運算,必須把要代入蒙哥馬利乘法求余的輸入數據變換成被稱為蒙哥馬利系統的數據。當把要帶入常規乘法求余運算的任意輸入數據表示成x時,將通過把x變換成蒙哥馬利系統而獲得的數據表示成x’,將從x變換成x’的變換(蒙哥馬利變換)表示成x’=Mont(x),而將從x’變換成x的變換(蒙哥馬利反變換)表示成x=Mont-1(x’),以下表達式給出了這些變換蒙哥馬利變換x’=Mont(x)=x×R(mod n)蒙哥馬利反變換x=Mont-1(x’)=x’×R-1(mod n)可以由使用REDC的以下表達式表示由以上表達式所表示的蒙哥馬利變換和蒙哥馬利反變換。其中,H是被稱為蒙哥馬利變換參數的值,其被表示成H=R2(mod n),并通過預先計算而獲得。
蒙哥馬利變換x’=REDC(x,H)n=x×R2×R-1=x×R(mod n)其中,H=R2(mod n)蒙哥馬利反變換x=REDC(x’,1)n=x’×1×R-1=x’×R-1(mod n)以下說明將對利用根據上述表達式的蒙哥馬利乘法求余的取冪求余運算的算法進行闡述。圖2是示出使用蒙哥馬利乘法求余運算的取冪求余運算的算法的說明圖。圖2示出了基于被稱為二進制方法的取冪求余運算的蒙哥馬利乘法求余運算的算法,并且根據輸入值a、d和n計算出取冪求余運算結果y=ad(mod n)。圖2中第一行中的處理表示將1賦作y的初始值。第二行中的處理表示計算蒙哥馬利變換參數H=R2(mod n)。第三行中的處理表示對y和a進行蒙哥馬利變換以獲得y’和a’。第四行到第七行中的循環表示從d的最低有效位到最高有效位,根據d的位值重復進行一次或兩次蒙哥馬利乘法求余的處理。第八行中的處理表示對在第四行到第七行的循環中計算出的y’進行蒙哥馬利變換以獲得最終運算結果y。
以下說明將闡述要在圖2所示的算法的第二行中進行的蒙哥馬利變換參數H=R2(mod n)的計算方法。圖3是示出蒙哥馬利變換參數的計算方法的算法的說明圖。圖3所示的蒙哥馬利變換參數的計算方法是通過重復加法、比較以及減法來計算與R=2x的情況對應的H=R2(mod n)的方法。第一行中的處理表示計算H=R(mod n)。盡管存在各種計算H=R(mod n)的方法,但是例如當對于R=2x,n的有效位長是x時,可以簡單地通過R(mod n)=0-n進行計算。第二行到第五行中的循環對于H=R(mod n)計算H+H,然后當該結果大于或等于n時減去n,以執行H+H(modn)的加法求余(2倍求余)。應當注意,也可以通過左移一位運算實現H+H的計算。圖3所示的算法通過將以上加法求余運算重復x次來計算R×2x(mod n)=R2(mod n)。
然而,圖3所示的蒙哥馬利變換參數的計算方法的算法具有這樣的缺點,即,由于在第二行到第五行中將加法求余重復x次,所以處理速度較慢。例如,在n為1024位的RSA運算的情況下,R=21024,這意味著必須進行1024次加法求余運算,并且計算量變得極大,這使得處理速度降低。
因此,通過對REDC運算、移位運算以及減法進行組合,已提出了一些方法來提高蒙哥馬利變換參數H=R2(mod n)的計算速度。以下說明將這些方法作為常規方法1到3進行闡述。應當注意,在以下對常規方法1到常規方法3的說明中,將每1個字的位長表示成k,將由m個字值表示的值表示成n,并將從n的最高有效數字起連續“0”的個數表示成q。例如,在k=8的情況下,當n的位串是“00101011 11001111”時,m=2且q=2,而當n的位串是“10001001 11100110 11100101”時,m=3且q=0。
常規方法1圖4是示出常規方法1中的蒙哥馬利變換參數的計算方法的流程圖。在圖4所示的常規方法1中,輸入求余的除數n并輸出R2(mod n)。其中,R=2m*k(mod n)。常規方法1主要由步驟A1和步驟B1組成。步驟A1是利用移位運算和減法來計算H0=2v×R(mod n)的步驟。其中,v是自然數。步驟B1是利用REDC運算根據H0計算H=R2(mod n)的步驟。
在步驟A1的步驟S101中,將“n”和“0”作為初始值分別賦予第一寄存器REG1和第二寄存器REG2。應當注意,n的有效字長是m,將從按右對齊方式存儲在第一寄存器REG1中的初始值n的最高有效數字起連續“0”的個數表示成q。應當注意,在以下說明中,將存儲在第一寄存器REG1中的值表示成REG1,將存儲在第二寄存器REG2中的值表示成REG2。
在步驟A1的步驟S102中,對于第一寄存器REG1重復執行q次左移一位運算以計算REG1=n’=n×2q。
在步驟A1的步驟S103中,將通過REG2-REG1計算出的值存儲在第二寄存器REG2中以使REG2=n’=n×2q。
在步驟A1的步驟S104中,重復v+q次以下運算以使REG2=2m*k+v+q對于第二寄存器REG2進行左移一位運算、對REG2≥REG1進行真/假判斷、以及當REG2≥REG1為真時將REG2-REG1的運算結果存儲在第二寄存器REG2中的處理。其中,v是滿足v≥1、并使得對于m和k而言(m×k)/v是2的冪的整數。
在步驟A1的步驟S105中,對于第一寄存器REG1和第二寄存器REG2重復q次右移一位運算,以計算出REG1=n和REG2=H0=2m*k+v(mod n)。
在步驟B1的步驟S106中,將被表示成REDC(REG2,REG2)n的REDC運算的結果存儲在第二寄存器REG2中的處理重復p次,以計算REG2=H=22*m*k(mod n)=R2(mod n)。其中,p是滿足p=log2((m×k)/v)的整數,REDC(REG2,REG2)n表示蒙哥馬利乘法求余運算REDC(A,B)n=2-m*k×A×B(mod n)。
在步驟S107中,輸出計算結果REG2=R2(mod n)并且處理結束。
圖5是示出常規方法1中的蒙哥馬利變換參數的計算方法所需運算次數的圖表。圖5按運算的類型和步驟示出了利用圖4所示的常規方法1的計算方法所需的運算次數。應當注意,圖5中,SFT表示進行一位移位的移位運算,SUB表示減法,CMP表示比較運算,REDC表示蒙哥馬利乘法求余運算。
為了滿足步驟S106中的條件,即,p必須是滿足p=log2((m×k)/v)的整數,存在這樣的限制(m×k)/v的值必須由(m×k)/v=2x(使用整數x)表示,即,其值為2的冪。由于常規方法1中的v值的選擇因該限制而受限,所以v的值需要隨著n的有效位長而增加。如從圖5所示的圖表看到的,由于SFT、SUB和CMP的計算次數取決于v,所以總計算量隨著v的增加而增加。
接下來,參照圖5所示的圖表對常規方法1中的計算方法的運算次數的示例進行描述。
示例1-1.應用于1024位的RSA密碼技術的計算根據以上條件,n是1024位。假設1個字=32位,則k=32并且n的有效字長m=32。由于每1個字的位長k與n的有效字長m的乘積k×m等于n的總位數,所以n的最高有效位=1并且q=0。此外,由于m×k=1024,所以可以選擇v=1,2,4,...,1024。當v=1時,SFT是4×0+1=1次,SUB是0.5×(0+1)+1=1.5次,CMP是0+1=1次,REDC是p=log2((32×32)/1)=10次。
示例1-2.應用于163位的橢圓曲線密碼技術的計算根據以上條件,n是163位。假設1個字=8位,則k=8并且n的有效字長m=21。假設n的位長=8并且有效字長m=21,則最高有效m×k-163=21×8-163=5位是0并且q=5。此外,由于m×k=168,所以可以選擇v=21,42,84,168。當v=21時,SFT是4×5+21=41次,SUB是0.5×(5+21)+1=14次,CMP是5+21=26次,REDC是p=log2((21×8)/21)=3次。
例如在日本特開平8-263316(1996)號公報、日本特開平8-339310(1996)號公報以及日本特開平11-305995(1999)號公報中公開了常規方法1中所描述的這種計算方法。
常規方法2圖6是示出了常規方法2中的蒙哥馬利變換參數的計算方法的流程圖。在圖6所示的常規方法2中,輸入求余的除數n并輸出R2(mod n)。其中,R=2m*k(mod n)。常規方法2主要由步驟A2和步驟B2組成。步驟A2是使用例如與常規方法1中所描述的處理相同的處理中的移位運算和減法來計算H0=2v×R(mod n)的步驟。其中,v是自然數。步驟B2是利用REDC運算從H0計算出H=R2(mod n)的步驟。
在步驟A2的步驟S201中,將“n”和“0”作為初始值分別賦予第一寄存器REG1和第二寄存器REG2。應當注意,n的有效字長是m,將從按右對齊方式存儲在第一寄存器REG1中的初始值n的最高有效數字起連續“0”的個數表示成q。
在步驟A2的步驟S202中,對于第一寄存器REG1重復執行q次左移一位運算,以計算REG1=n’=n×2q。
在步驟A2的步驟S203中,將通過REG2-REG1計算出的值存儲在第二寄存器REG2中,以使得REG2=n’=n×2q。
在步驟A2的步驟S204中,重復v+q次2倍求余運算以使得REG2=2m*k+v+q,該2倍求余運算由以下運算組成對于第二寄存器REG2進行左移一位運算、對REG2≥REG1進行真/假判斷、以及當REG2≥REG1為真時將REG2-REG1的運算結果存儲在第二寄存器REG2中的處理。其中,v是滿足v≥1、并使得對于m和k而言(m×k)/v是自然數。
在步驟A2的步驟S205中,對第一寄存器REG1和第二寄存器REG2重復q次右移一位運算,以計算REG1=n和REG2=H0=2m*k+v(mod n)。然后,將存儲在第二寄存器REG2中的值存儲到輔助寄存器REG0中。
在步驟B2的步驟S206中,將被表示成REDC(REG2,REG2)n的REDC運算的結果存儲在第二寄存器REG2中,此外,當(m×k)的第i位值=1時,對i=p’-2,...,1,0,重復p’-1次將被表示成REDC(REG2,REG2)n的REDC運算的結果存儲在第二寄存器REG2中的處理,以計算REG2=H=22*m*k(mod n)=R2(mod n)。其中,p’是表示位長為(m×k)/v的整數,REDC(A,B)n表示蒙哥馬利乘法求余運算REDC(A,B)n=2-m*k×A×B(mod n)。
在步驟S207中,輸出計算結果REG2=R2(mod n)并且處理結束。
圖7是示出了常規方法2中的蒙哥馬利變換參數的計算方法所需的運算次數的圖表。圖7按運算的類型和步驟示出了利用圖6而示出的常規方法2的計算方法所需的運算次數。應當注意,圖7中,SFT表示進行一位移位的移位運算,SUB表示減法,CMP表示比較運算,REDC表示蒙哥馬利乘法求余運算。此外,W(x)是x的除最高有效位以外的1的個數,并且在步驟S206中在(m×k)/v的位值是1的情況下是REDC運算的次數。例如,W((10000)2)=0并且W((1000101)2)=2。其中,符號(...)2表示二進制數,例如(1101)2=13,(11100)2=28。
由于p’是由步驟S206所示的(m×k)/v表示的整數,并且在常規方法2中可以按比常規方法1更寬的條件設置v的值,所以可以通過設置v的最佳值,使得以比常規方法1小的計算量計算出蒙哥馬利變換參數H。
接下來,參照圖7所示的圖表對常規方法2中的計算次數的示例進行說明。
示例2-1.應用于1024位的RSA密碼技術的計算根據以上條件,n是1024位。假設1個字=32位,則k=32并且n的有效字長m=32。由于每1個字的位長k與n的有效字長m的乘積k×m等于n的總位數,所以n的最高有效位=1并且q=0。此外,由于m×k=1024,所以可以從1024個任意因數(factor)中選擇v。當v=1時,SFT是1次,SUB是0.5×(1)+1=1.5次,CMP是1次,REDC是p=log2((32×32)/1)=10次。
示例2-2.應用于163位的橢圓曲線密碼技術的計算根據以上條件,n是163位。假設1個字=8位,則k=8并且n的有效字長m=21。假設n的位長=8并且有效字長m=21,則最高有效m×k-163=21×8-163=5位是0并且q=5。此外,由于m×k=168,所以可以從168個任意因數中選擇v。當v=21時,SFT是4×5+21=41次,SUB是0.5×(5+21)+1=14次,CMP是5+21=26次,并且根據(m×k)/v=(1000)2,REDC是p’-1+W((m×k)/v)=4-1+0=3次。
例如在美國專利No.5777916中公開了在常規方法2中描述的這種計算方法。
常規方法3圖8是示出常規方法3中的蒙哥馬利變換參數的計算方法的流程圖。在圖8所示的常規方法3中,輸入求余的除數n并輸出R2(mod n)。其中,R=2m*k(mod n)。常規方法3主要由步驟A3、步驟B3以及步驟C3組成。步驟A3是利用移位運算和減法來計算滿足H0=2m*k+v的H0的步驟。其中,v是自然數并且滿足(m×k)/v是自然數。步驟B3是利用REDC運算根據H0計算H=2E(p”,m,k)(mod n)的步驟。其中,p”是整數,其滿足2p”-1<(m×k)/v≤2p”,并且E(p”,m,k)=m×k+v×2p”。步驟C3是當2p”>(m×k)/v時對于g=2k*G(p”,m,k)通過H=REDC(H,G)n進行校正運算的步驟。其中,G由G(p”,m,k)=2×m-(v×2p”)/k表示并且是滿足1≤G(p”,m,k)≤m-1的范圍的整數。
在步驟A3的步驟S301中,將“n”和“2(m-1)*k”作為初始值分別賦給第一寄存器REG1和第二寄存器REG2。應當注意,n的有效字長是m。
在步驟A3的步驟S302中,重復k+v次2倍求余運算以使得REG2=H0=2m*k+v(mod n),該2倍求余運算由以下運算組成對于第二寄存器REG2進行左移一位處理、對REG2≥REG1進行真/假判斷、以及當REG2≥REG1為真時將REG2-REG1的運算結果存儲在第二寄存器REG2中的處理。其中,v是自然數并且(m×k)/v是整數。
在步驟B3的步驟S303中,對于i=1,2,...,p”,重復p”次將被表示成REDC(REG2,REG2)n的REDC運算的結果存儲在第二寄存器REG2中的處理,以計算REG2=2E(p”,m,k)(mod n)。其中,p”是滿足2p”-1<(m×k)/v≤2p”的整數,E(p”,m,k)=m×k+v×2p”,并且REDC(A,B)n表示蒙哥馬利乘法求余運算REDC(A,B)n=2-m*k×A×B(mod n)。
在步驟C3的步驟S304中,當2p”>(m×k)/v時將被表示成REDC(REG2,g)n的REDC運算的結果存儲在第二寄存器REG2中。其中,g=2k*G(p”,m,k)并且G(p”,m,k)=2×m-(v×2p”)/k。
在步驟S305中,輸出計算結果REG2=R2(mod n)并且處理結束。
圖9是示出常規方法3中的蒙哥馬利變換參數的計算方法所需的運算次數的圖表。圖9按運算的類型和步驟示出了利用圖8而示出的常規方法3的計算方法所需的運算次數。應當注意,圖9中,SFT表示進行一位移位的移位運算,SUB表示減法,CMP表示比較運算,REDC表示蒙哥馬利乘法求余運算。
如步驟A3所示,在常規方法3中不使用q值來計算H0。此外,通過將步驟S304中所示的校正運算處理添加到步驟S303中,不再存在(m×k)/v的值必須是2的冪的限制,并且v只要滿足步驟S302中所示的條件即可。此外,無需檢測(m×k)/v的各個位值。
接下來,參照圖9所示的圖表對常規方法3中的計算次數的示例進行說明。
示例3-1.應用于1024位的RSA密碼技術的計算根據以上條件,n是1024位。假設1個字=32位,則k=32并且n的有效字長m=32。由于m×k=1024,所以可以從1024個任意因數中選擇v。當v=1時,SFT是32+1=33次,SUB是0.5×(32+1)=16.5次,CMP是32+1=33次,REDC是p=log2((32×32)/1)=10次。
示例3-2.應用于163位的橢圓曲線密碼技術的計算根據以上條件,n是163位。假設1個字=8位,則k=8并且n的有效字長m=21。由于m×k=168,所以可以從168個任意因數中選擇v。當v=21時,SFT是8+21=29次,SUB是0.5×(8+21)=14.5次,CMP是8+21=29次,并且根據(m×k)/v=(1000)2,REDC是p’-1+W((m×k)/v)=4-1+0=3次。
例如在PCT國際公開No.2005/013243中公開了常規方法3中描述的這種計算方法。
然而,以上常規方法1到常規方法3存在如下所述地要解決的問題。
問題1由于常規方法1所描述的計算方法中的步驟A1的處理使用從存儲在第一寄存器REG1中的“n”的位串中的較高位起連續“0”的個數作為后續計算所需的參數q,所以必需計算數據值的最高有效位(以下稱為MSB)。這存在如下問題為了計算MSB,必需進行按位(bit-oriented)運算處理,而該按位運算處理在軟件實現中的處理效率較低。此外,由于從圖5所示的圖表顯見,移位運算次數、減法次數以及比較運算次數取決于q的值,所以存在處理負荷隨著q變大而增加的問題。如上所述,存在與q相關的處理負荷增加的問題。
問題2此外,常規方法1所描述的計算方法被設計成在步驟B1的處理中重復p次REDC運算以計算H=22*m*k(mod n)=R2(mod n)。其中,p限于滿足p=log2((m×k)/v)的整數,即,該值使得(m×k)/v的值是2的冪。為了滿足該限制,按以下過程確定m、k以及v根據n的位長和每1個字的位長確定m和k,并對于確定的m和k將v的值設置為使得(m×k)/v的值為2的冪。即,由于必須將v的值設成使得(m×k)/v的值為2的冪的限制,v的值可能很大。如從圖5中所示的圖表顯見,移位運算次數、減法次數以及比較運算次數取決于v的值,因而存在處理負荷隨著v變大而增加的問題。如上所述,存在如下問題與(m×k)/v的值必須是2的冪的限制相關的處理負荷增加。
問題3常規方法2所描述的計算方法(包括與常規方法1的步驟A1的處理相同的步驟A2的處理)具有與常規方法1類似的與q相關的處理負荷增加的問題。
問題4此外,由于在步驟B2的處理中重復p’-1次REDC運算,并且常規方法2所描述的計算方法檢測(m×k)的第i個位值,所以存在這樣的問題必需進行在軟件實現中處理效率很低的按位運算處理。如上所述,由于重復進行REDC運算而存在與對(m×k)/v的各個位值進行檢測相關的問題。
問題5常規方法3所描述的計算方法的優勢在于沒有常規方法1和常規方法2中所描述的取決于q值以及MSB的計算的處理。然而,由于在步驟A3的處理中重復k+v次2倍求余運算,所以從圖9所示的圖表顯見,移位運算次數、減法次數以及比較運算次數取決于k的值,并且處理負荷隨著k變大而增加。
圖10是示出常規方法中的蒙哥馬利變換參數的計算方法所需的運算次數的圖表。圖10示出了圖5所示的常規方法1中的步驟A1的計算量、圖7所示的常規方法2中的步驟A2的計算量以及圖8所示的常規方法3中的步驟A3的計算量。應當注意,移位運算SFT、減法SUB以及比較運算CMP的運算所需的處理負荷被視為是相同的,從而便于對各計算方法中的處理負荷進行比較,并且以常數LC代替該運算所需的處理負荷。
圖10的圖表表明當滿足(2.5×k+2.5×v)×LC<(5.5×q+2.5×v+1)×LC時,即,當滿足(5×k-2)/11<q時,常規方法3中所描述的計算方法的計算量比常規方法1和常規方法2的計算量小,并且是高效的方法。然而,當q的值較小并且滿足(5×k-2)/11>q,即,當q較小時,常規方法3中所描述的計算方法的計算量比常規方法1和常規方法2的計算量大,并且變得低效。
在RSA密碼技術中,實際上通常使用為2的冪的n的位長(如2048、1024或512)作為q的值,在這種情況下q=0。盡管在使用橢圓曲線密碼技術時n的位長取任意值,但是在SECG(Standards for EfficientCryptography Group)中的SEC1所指定的標準中,推薦使用32的倍數的位長,如160、192或224,在使用這些參數中任一個的情況下q=0。
因此,從實際觀點來看,常規方法3中所描述的計算方法并不總是優于常規方法1和常規方法2,并且在q的值較小時存在步驟A3處理的處理負荷比步驟A1和A2處理的處理負荷大的問題。
發明內容
為解決以上問題而提出了本發明,本發明的目的是提供一種計算方法、采用了該計算方法的計算設備以及用于實現該計算設備的計算機程序,其能夠通過以下步驟解決常規方法1到常規方法3中的問題獲得n的負數作為2m*k關于除數n的等價值,并將該負數存儲在寄存器中;重復對存儲在該寄存器中的值在進位方向上進行一位移位、并舍去溢出該寄存器的最高有效位的處理,直到要舍去的最高有效位變成0,以獲得2m*k+1關于除數n的等價值并將該等價值存儲在寄存器中;以及根據存儲在該寄存器中的值,通過蒙哥馬利乘法求余運算計算出使得關于除數n的余數值與蒙哥馬利變換參數關于除數n的余數值相同的等價值。
根據第一方面的計算方法是一種用于使用寄存器計算與蒙哥馬利變換參數相關的值的計算方法,該蒙哥馬利變換參數用于蒙哥馬利乘法求余運算并且是與求余的除數n相關的余數值,該寄存器具有至少m個字,每個字的位長是k,該計算方法的特征在于包括以下步驟獲得n的負數作為2m*k關于除數n的等價值,并將該負數存儲在寄存器中;重復對存儲在該寄存器中的值在進位方向上進行一位移位、并舍去溢出該寄存器的最高有效位的處理,直到要舍去的最高有效位變成0,以獲得2m*k+1關于除數n的等價值并將該等價值存儲在寄存器中;以及根據存儲在該寄存器中的值通過蒙哥馬利乘法求余運算計算出使得關于除數n的余數值與蒙哥馬利變換參數關于除數n的余數值相同的等價值。
根據第二方面的計算方法是根據第一方面的計算方法,其特征在于利用所計算出的等價值執行取冪求余運算。
根據第三方面的計算設備是一種用于計算與蒙哥馬利變換參數相關的值的計算設備,該蒙哥馬利變換參數用于蒙哥馬利乘法求余運算并且是與求余的除數n相關的余數值,該計算設備的特征在于包括寄存器;用于在該寄存器中存儲求余的除數n的負數的裝置;用于重復對存儲在該寄存器中的值在進位方向上進行一位移位的處理直到溢出該寄存器的最高有效位變成0的裝置;以及用于根據存儲在該寄存器中的值通過蒙哥馬利乘法求余運算計算出使得關于除數n的余數值與蒙哥馬利變換參數關于除數n的余數值相同的等價值。
根據第四方面的計算設備是一種用于計算與蒙哥馬利變換參數相關的值的計算設備,該蒙哥馬利變換參數用于蒙哥馬利乘法求余運算并且是與求余的除數n相關的余數值,該計算設備的特征在于包括寄存器,至少具有m個字,每個字的位長是k;運算裝置,用于對值A和B以及有效字長為m的求余的除數n執行被定義為2-m*k×A×B(mod n)的蒙哥馬利乘法求余運算REDC(A,B)n;用于在該寄存器中存儲求余的除數n的負數的裝置;用于重復對存儲在該寄存器中的值在進位方向上進行一位移位的移位處理直到溢出該寄存器的最高有效位變成0的裝置;用于重復p次通過運算裝置對存儲在寄存器中的值REG執行蒙哥馬利乘法求余運算REDC(REG,REG)n并將其結果存儲在該寄存器中的處理的裝置,p是滿足2p-1<m×k≤2p的整數;用于在2p>m×k(其中,g=2k*G(p,m,k)并且G(p,m,k)=2×m-2p/k)時通過運算裝置對存儲在寄存器中的值REG執行蒙哥馬利乘法求余運算REDC(REG,g)n并將其結果存儲在該寄存器中的裝置;以及用于輸出存儲在該寄存器中的值REG作為使得關于除數n的余數值與蒙哥馬利變換參數關于除數n的余數值相同的等價值的裝置。
根據第五方面的計算設備是根據第四方面的計算設備,其特征在于還包括多個寄存器;用于在具有m個字的第一寄存器中存儲n并在具有m個或更多個字的第二寄存器中存儲0的裝置;以及用于從存儲在第二寄存器中的值中減去存儲在第一寄存器中的值以計算出求余的除數n的負數的裝置。
根據第六方面的計算設備是根據第四方面的計算設備,其特征在于還包括用于在所述寄存器中存儲求余的除數n的裝置;以及用于計算存儲在所述寄存器中的值的補數作為求余的除數n的負數的裝置。
根據第七方面的計算設備是根據第四方面的計算設備,其特征在于還包括用于將除數n存儲在所述寄存器中的裝置;用于使存儲在所述寄存器中的值取反的裝置;以及用于在存儲在所述寄存器中的值的最低有效位是1的情況下計算求余的除數n的負數的裝置。
根據第八方面的計算設備是根據第四方面到第七方面中的任一方面的計算設備,其特征在于所述移位處理是將存儲在寄存器中的值加到所述值的加法處理,并且在該移位處理中溢出所述寄存器的最高有效位被檢測為由該加法處理產生的進位值。
根據第九方面的計算機程序是一種用于使計算機計算與蒙哥馬利變換參數相關的值的計算機程序,該計算機包括具有至少m個字的寄存器,每1個字的位長是k,該蒙哥馬利變換參數用于蒙哥馬利乘法求余運算并且是與求余的除數n相關的余數值,該計算機程序的特征在于使得該計算機執行以下過程獲得n的負數作為2m*k關于除數n的等價值,并將該負數存儲在寄存器中;重復對存儲在該寄存器中的值在進位方向上進行一位移位并舍去溢出該寄存器的最高有效位的處理,直到要舍去的最高有效位變成0,以獲得2m*k+1關于除數n的等價值并將該等價值存儲在寄存器中;以及根據存儲在該寄存器中的值通過蒙哥馬利乘法求余運算計算出使得關于除數n的余數值與蒙哥馬利變換參數關于除數n的余數值相同的等價值。
在第一方面、第三方面、第四方面以及第九方面中,計算出得到關于除數n的相同余數值的等價值作為與蒙哥馬利變換參數相關的值,該蒙哥馬利變換參數用于蒙哥馬利乘法求余運算并且是與求余的除數n相關的余數值。盡管存在該余數值必須大于或等于0并且小于除數n的限制,但是對該等價值不存在限制。因此,通過計算等價值而非余數,放松了該限制并且基于該限制的各種處理都變得不必要了,從而可以提高計算處理的速度。此外,通過把等價值作為計算結果,除針對嚴格限制的余數值以外,還可以針對在計算處理中產生的中間數據使用放松限制的等價值,從而可以提高計算處理的速度。
例如,在進行計算的同時調整REG2的值以使其保持小于n’的以上常規方法1的步驟A1和常規方法2的步驟A2中,由于必須執行取決于q的次數的移位運算,所以存在問題1和問題3所指出的問題。此外,在進行計算的同時調節REG2的值以使其保持小于n的以上常規方法3的步驟A3中,存在問題5所指出的問題。問題1、問題3以及問題5所述的這些問題是由于要計算余數值大于或等于0并且小于除數n的值而產生的,本發明通過計算余數值的等價值而非該余數值,可以解決這些問題并提高計算處理的速度。
應當注意,在本發明中進行這樣的處理重復對存儲在寄存器中的值在進位方向上進行一位移位并舍去溢出該寄存器的最高有效位的處理,直到要舍去的最高有效位變成0。重復移位運算的處理和判斷要舍去的1位的值的處理比常規方法1的步驟S104、常規方法2的步驟S204以及常規方法3的步驟S302中進行的重復移位運算和比較運算的方法具有更高的運算效率。這是因為對1位的值的進行判斷(僅包括1位的運算)可以比多位運算要快,而對于通過公鑰密碼系統進行的運算中使用具有160-2048位的極長的位長的數據,移位運算和比較運算執行了多位運算。由于本發明通過不把計算目標限制于余數值而是將余數值擴展到等價值,打破了各種限制,所以能夠實現只使用1位判斷的高效處理。
此外,在本發明中,由于不存在(m×k)/v必須是2的冪值的限制,所以可以解決常規方法1的問題2所指出的問題。
此外,在本發明中,由于重復了p’-1次REDC運算并且不進行檢測(m×k)的第i位值的處理,所以可以解決常規方法2的問題4所指出的問題。
在第二方面中,由于還可以利用等價值執行取冪求余運算,所以通過執行使用等價值的處理(如上所述,其得到高處理效率)可以提高總處理速度。
在第五到第八方面中,由于可以使用現有算法,所以很容易實現。
一種用于使用寄存器計算與蒙哥馬利變換參數相關的值的計算方法、計算設備以及計算機程序,該蒙哥馬利變換參數用于蒙哥馬利乘法求余運算并且是與求余的除數n相關的余數值,該寄存器至少具有m個字,每1個字的位長是k,該計算方法、計算設備以及計算機程序執行以下處理獲得n的負數作為2m*k關于除數n的等價值,并將該負數存儲在寄存器中;重復對存儲在該寄存器中的值在進位方向上進行一位移位并舍去溢出該寄存器的最高有效位的處理,直到要舍去的最高有效位變成0,以獲得2m*k+1關于除數n的等價值并將該等價值存儲在寄存器中;以及根據存儲在該寄存器中的值通過蒙哥馬利乘法求余運算計算出使得關于除數n的余數值與蒙哥馬利變換參數關于除數n的余數值相同的等價值。
盡管常規方法中使用的余數值存在必須大于或等于0并且小于除數n的限制,但是本發明中使用的等價值不存在限制。因此,由于通過計算等價值而非余數值放松了限制,所以變得不必執行基于該限制的各種處理,并可以提供更優良的效果,如提高了計算處理的速度。此外,通過把等價值作為計算結果,由于除針對嚴格限制的余數值以外,還可以針對在計算處理中產生的中間數據使用寬松限制的等價值,所以可以提供更優良的效果,如提高了計算處理的速度。
此外,在本發明中,由于可以使用如上所述的具有高處理效率的等價值來執行取冪求余運算,所以可以提供更優良的效果,如提高了總處理速度。此外,由于本發明可以應用于使用諸如RSA密碼技術或橢圓曲線密碼技術的公鑰密碼系統,所以可以提供更優良的效果,如提供用于實現快速和高度保密通信的信息安全技術。
根據參照附圖進行的以下詳細描述,本發明的以上和其它目的和特征將更加全面地顯見。
圖1是示出蒙哥馬利乘法求余運算的算法的說明圖;圖2是示出利用蒙哥馬利乘法求余運算的取冪求余運算的算法的說明圖;圖3是示出蒙哥馬利變換參數的計算方法的算法的說明圖;圖4是示出常規方法1中的蒙哥馬利變換參數的計算方法的流程圖;圖5是示出常規方法1中的蒙哥馬利變換參數的計算方法所需的運算次數的圖表;圖6是示出常規方法2中的蒙哥馬利變換參數的計算方法的流程圖;圖7是示出常規方法2中的蒙哥馬利變換參數的計算方法所需的運算次數的圖表;圖8是示出常規方法3中的蒙哥馬利變換參數的計算方法的流程圖;圖9是示出常規方法3中的蒙哥馬利變換參數的計算方法所需的運算次數的圖表;圖10是示出常規方法中的蒙哥馬利變換參數的計算方法所需的運算次數的圖表;圖11是示出本發明的計算設備的結構示例的框圖;圖12是示出與本發明的計算方法相關的蒙哥馬利乘法求余運算的算法的說明圖;圖13是示出使用與本發明的計算方法相關的蒙哥馬利乘法求余運算的取冪求余運算的算法的說明圖;圖14是示出本發明的計算設備的處理流程圖;圖15是示意性地示出要存儲于包括在本發明的計算設備中的第一寄存器和第二寄存器中的值的說明圖;
圖16是示意性地示出要存儲于包括在本發明的計算設備中的第一寄存器和第二寄存器中的值的說明圖;圖17A到17D是示意性地示出要存儲于包括在本發明的計算設備中的第二寄存器中的值的說明圖;圖18A和18B是示意性地示出要存儲于包括在本發明的計算設備中的第二寄存器中的值的說明圖;圖19A和19B是示意性地示出要存儲于包括在本發明的計算設備中的第二寄存器中的值的說明圖;圖20是示出本發明的蒙哥馬利變換參數的計算方法所需的運算次數的圖表;圖21是示出本發明的計算方法和常規方法中的蒙哥馬利變換參數的計算方法所需的運算次數的圖表;以及圖22是示出本發明的計算方法和常規方法中的蒙哥馬利變換參數的計算方法所需的運算次數的圖表。
具體實施例方式
以下說明將參照例示了本發明實施例的附圖對本發明進行詳細闡述。圖11是示出本發明的計算設備的結構示例的框圖。圖11的1處表示本發明的計算設備,如用作微計算機的運算卡等,并且計算設備1被并入諸如個人計算機或服務器計算機的通信設備2中。計算設備1包括控制裝置11,如用于控制整個設備的MPU;記錄裝置12,如記錄諸如本發明的計算機程序3等的各種計算機程序和數據的ROM或RAM;用于進行計算的第一寄存器13a和第二寄存器13b;運算裝置14,如用于進行REDC運算的協處理器;以及連接裝置15,用作與通信設備2的接口。通過由控制裝置11執行記錄裝置12中所記錄的本發明的計算機程序3,用作微計算機的運算卡執行作為本發明的計算設備的各種過程。應當注意,第一寄存器13a是能夠存儲m位二進制數據并具有m個字的寄存器,第二寄存器13b是具有m個或更多個字的寄存器。
本發明的計算設備1在如通信等的使用諸如公鑰密碼系統等的密碼技術的處理中執行各種處理。具體來說,本發明的計算設備1利用預先記錄的公鑰對經由連接裝置15從通信設備2接受的明文(plain text)信息進行加密以生成密文,并將所生成的密文經由連接裝置15輸出到通信設備2。此外,當通信設備2從另一設備接收到以公鑰進行了加密的密文時,本發明的計算設備1接受經由連接裝置15從通信設備2接收到的密文,利用預先記錄的秘鑰對該密文進行解密以生成明文,并將所生成的明文經由連接裝置15輸出到通信設備2。應當注意,本發明的計算設備1可以利用相同的技術通過秘鑰對明文進行加密,并且可以執行數字簽名所涉及的處理以利用公鑰對密文進行解密。
對于公鑰密碼系統的密碼技術,使用諸如RSA密碼技術或橢圓曲線密碼技術的密碼系統。例如,在RSA密碼技術中,使用求余的除數n,將利用公鑰e對明文m進行加密而獲得的密文c表示成c=me(mod n)。此外,使用求余的除數n,將利用秘鑰d對密文c進行解密而獲得的明文m表示成m=cd(mod n)。如上所述,在RSA密碼技術中進行被表示成y=ax(mod n)的取冪求余運算。此外,在橢圓曲線密碼技術中也使用乘法求余運算處理。
本發明的計算設備1利用如下運算方法代替乘法求余運算處理來進行加密處理和解密處理,該方法稱為蒙哥馬利乘法求余、使用整數a、b和n并且由以下表達式表示Y=a×b×R-1(mod n)其中n對求余的除數進行表示的整數a,b滿足0≤a,b<n的整數R由2m*k表示的常數k每1個字的位長m表示n所需的最少字數圖12是示出與本發明的計算方法相關的蒙哥馬利乘法求余運算的算法的說明圖。應當注意,圖12所示的算法中的x=(xm-1,...,x1,x0)表示用于把整數x表示成m個字值xi(i=m-1,...,1,0,0≤xi<2k)的格式。此外,在包括圖12的以下附圖和以下說明中,符號“=”表示將右手側的數值或表達式賦予左手側。根據如圖12所示的由m個字值分別表示的a、b以及n,在以下說明中,將計算由m個字表示的值y的情況下的蒙哥馬利乘法求余運算y=a×b×R-1(mod n)表達成y=REDC(a,b)n或僅僅寫成REDC。如上所述定義的REDC包括下述三個性質(性質1)將除數n限定為奇數。
(性質2)當a和b的值都可以由m個字值表示并且滿足a×b≤R×n的條件時,進行y=a×b×R-1(mod n)的計算。其中,滿足0≤y<n。
(性質3)當a和b的值都可以由m個字值表示并且不滿足a×b≤R×n的條件時,進行y≡a×b×R-1(mod n)的計算。其中,并不總是滿足0≤y<n 。
以下說明將對性質2中所述的計算y=a×b×R-1(mod n)與性質3中所述的計算y≡a×b×R-1(mod n)之間的差別進行闡述。性質2中所述的計算與性質3中所述的計算之間的差別在于以下事實性質2中所述的計算獲得了關于除數n的“余數值”,而性質3中所述的計算獲得了關于除數n的“等價值(equivalence)”。
將整數x關于除數n(其為自然數)的除法中計算出的余數y稱為“余數(關于除數n)”,并表示為y=x(mod n)。由于在余數值計算中余數y取大于或等于0并小于n的值,所以在上述性質2的計算中滿足0≤y<n。
另一方面,將并不總是大于等于0并且并不總是小于n、得到相同余數值的多個值x和x’稱為“等價值(關于除數n)”,并表示為x’≡x(modn)。即,當x的余數值y、除數n以及整數s具有x’=y+s×n的關系時,每個x’都成為x的等價值。例如,在n=5并且x=13的情況下,x關于除數n的余數值y成為y=3。此外,在同樣的條件下,一系列值x’=3、8、13、18、23、……都是關于除數n的等價值并且其余數值為3。如上所述,等價值是這樣的一系列數其得到相同的關于除數n的余數,并且不限于大于或等于0并且小于n的值。因此,在以上性質3的計算中并不總是滿足0≤y<n。
如上所述,蒙哥馬利乘法求余運算是a×b×R-1(mod n)并且進行與常規乘法求余運算a×b(mod n)不同的運算。因此,為了正確地執行取冪求余運算,必須把要賦給蒙哥馬利乘法求余的輸入數據變換成稱為蒙哥馬利系統的數據。當將要賦給常規乘法求余運算的任意輸入數據表示成x時,將通過把x變換成蒙哥馬利系統而獲得的數據表示成x’,將從x到x’的變換(蒙哥馬利變換)表示成x’=Mont(x),而把從x’到x的變換(蒙哥馬利反變換)表示成x=Mont-1(x’),以下表達式給出了這些變換蒙哥馬利變換x’=Mont(x)=x×R(mod n)蒙哥馬利反變換x=Mont-1(x’)=x’×R-1(mod n)可以由使用REDC的以下表達式表示由上述表達式表示的蒙哥馬利變換和蒙哥馬利反變換。其中,H是表示成H=R2(mod n)的、稱為蒙哥馬利變換參數的值,并通過預先計算而獲得。
蒙哥馬利變換x’=REDC(x,H)n=x×R2×R-1=x×R(mod n)其中,H≡R2(mod n)蒙哥馬利反變換x=REDC(x’,1)n=x’×1×R-1=x’×R-1(mod n)以下說明將根據以上表達式對使用蒙哥馬利乘法求余的取冪求余運算的算法進行闡述。圖13是示出使用與本發明的計算方法相關的蒙哥馬利乘法求余運算的取冪求余運算的算法的說明圖。圖13示出了基于被稱為二進制方法的取冪求余運算的蒙哥馬利乘法求余運算的算法,并根據輸入值a、d和n計算出取冪求余運算結果y=ad(mod n)的算法。圖13的第一行中的處理表示將1賦為y的初始值。第二行中的處理表示計算蒙哥馬利變換參數H’≡R2(mod n)。第三行中的處理表示對y和a進行蒙哥馬利變換以獲得y’和a’。第四行到第七行中的循環表示從d的最低有效位到最高有效位,根據d的位值將進行蒙哥馬利乘法求余的處理重復一次或兩次。第八行中的處理表示對在第四行到第七行的循環中計算出的y’進行蒙哥馬利反變換以獲得最終運算結果y。
以下說明將對圖13所示的算法的第二行中進行的蒙哥馬利變換參數H≡R2(mod n)的計算處理進行闡述。圖14是示出本發明的計算設備1的處理的流程圖。圖14示出了由本發明的計算設備1進行的以下處理接受求余的除數n的輸入、執行本發明的計算處理并輸出H≡R2(mod n)(其為R2(mod n)的等價值)。應當注意,在以下闡述中k表示每1個字的位長,n是由m個字值表示的值。此外,R=2m*k。應當注意,在以下附圖和以下闡述中的符號“*”表示乘法符號“×”。
本發明的蒙哥馬利變換參數的變換方法主要由步驟A、步驟B以及步驟C組成。步驟A是計算2m*k+1關于除數n的等價值H0≡2m*k+1(mod n)的步驟。步驟B是通過REDC運算根據H0計算2E(p,m,k)(mod n)的等價值H≡2E(p,m,k)(mod n)的步驟。其中,p是整數,其滿足2p-1<m×k≤2p,并且E(p,m,k)=m×k+2p。步驟C是當2p>m×k時,對于g=2k*G(p,m,k)通過H=REDC(H,G)n進行校正運算的步驟。其中,G被表示成G(p,m,k)=2×m-2p/k并且是滿足1≤G(p,m,k)≤m-1的范圍的整數。
作為步驟A中的步驟S1的處理,本發明的計算設備1進行將“n”和“0”作為初始值分別賦予第一寄存器13a和第二寄存器13b的初始化。其中,n的有效字長是m。
圖15是示意性地示出要存儲于包括在本發明的計算設備1中的第一寄存器13a和第二寄存器13b中的值的說明圖。圖15中,REG1表示存儲在第一寄存器13a中的值,REG2表示存儲在第二寄存器13b中的值。在示出已執行了步驟A中的步驟S1的處理的狀態的圖15中,將n作為初始值存儲在第一寄存器13a中,將0作為初始值存儲在第二寄存器13b中。
回到圖14的流程圖,作為步驟A中的步驟S2的處理,本發明的計算設備1計算與2m*k和除數n相關的等價值REG2≡2m*k(mod n)。通過以下處理進行步驟A中的步驟S2的處理從存儲在第二寄存器13b中的值中減去存儲在第一寄存器13a中的值,并將得到的結果,即除數n的負數存儲在第二寄存器13b中。
通過從存儲在第二寄存器13b中的值中減去存儲在第一寄存器13a中的值而得到的結果(即,REG2-REG1=0-n)(可以使用整數s將其表示成2m*k+s×n的形式)是與2m*k和除數n相關的等價值,并且是可由m個字表示的值。
應當注意,可以通過獲得與存儲在第一寄存器13a中的值n相關的2的補數值、并把獲得的2的補數值存儲在第二寄存器13b中,來進行步驟A中的步驟S2的處理,而不是進行所述運算處理(REG2=REG2-REG1)。可以通過對存儲在第一寄存器13a中的n的所有位取反然后將1設置給其最低有效位,來獲得與值n相關的2的補數值。
圖16是示意性地示出要存儲于包括在本發明的計算設備1中的第一寄存器13a和第二寄存器13b中的值的說明圖。在示出已執行了步驟A中的步驟S2的處理的狀態的圖16中,將n作為初始值存儲在第一寄存器13a中,并且將2m*k關于除數n的等價值(已被計算為0-n)存儲在第二寄存器13b中。
回到圖14所示的流程圖,作為步驟A中的步驟S3的處理,本發明的計算設備1計算出與2m*k+1和除數n相關的等價值REG2=2m*k+1(modn)。具體來說,步驟A中的步驟S3的處理包括對存儲在第二寄存器13b中的值進行左移一位運算的處理(步驟S3-1);和對由于左移一位運算而溢出的值(即,運算前的最高有效位值)進行判斷的處理(步驟S3-2)。步驟S3-1的進行左移一位運算的處理是使第二寄存器13b的各數位中的值進位的處理,即,使存儲在第二寄存器13b中的值2倍的處理、并舍去作為溢出的值的最高有效數位的位值。然后,在步驟S3-2中,當判定溢出的值為“1”時,判定存儲在第二寄存器13b中的值是與除數n和2m*k相關的等價值,并且處理返回到步驟S3-1以重復下面的處理。另一方面,當判定溢出的值為“0”時,判定存儲在第二寄存器13b中的值是與除數n和2m*k+1相關的等價值,并且步驟S3的處理結束。
應當注意,步驟A中的步驟S3的步驟S3-1的處理可以由以下處理代替將存儲在第二寄存器13b中的值加到存儲在第二寄存器13b中的值,即,進行運算處理(REG2=REG2+REG2)的處理。此外,步驟S3-2的處理可以由以下處理代替判斷是否存在由于步驟S3-1的處理而產生的進位值。在此情況下,當判定已產生進位值時處理返回到步驟S3-1,而當判定未產生進位值時步驟S3的處理結束。
圖17A到17D是示意性地示出要存儲于包括在本發明的計算設備1中的第二寄存器13b中的值的說明圖。應當注意,圖17B到17D中的虛線所示的四邊形中示出的數值表示由于左移一位運算而溢出的值。圖17A示出了在執行步驟A中的步驟S3的處理之前的狀態,并且REG2≡2m*k(mod n)。圖17B示出了在圖17A的狀態之后在步驟S3-1中執行了一次左移一位運算處理的狀態,并且REG2≡2m*k(mod n)。如圖17B所示,溢出的值為“1”,處理返回到步驟S3-1并再次執行左移一位運算。圖17C示出了執行了第二次左移一位運算的狀態,并且REG2≡2m*k(mod n)。如圖17C所示,由于溢出的值為“1”,所以處理返回到步驟S3-1并再次執行左移一位運算。圖17D示出了執行了第三次左移一位運算的狀態。如圖17D所示,由于溢出的值為“0”,所以判定REG2≡2m*k+1(mod n)并且步驟S3的處理結束。如上所述,在步驟A的步驟S3中,通過重復左移一位運算同時舍去溢出的位值,可以在步驟S3結束時計算出2m*k+1的等價值同時將結果保持在m個字的范圍內。
以下說明將對通過步驟A中的步驟S3的處理可以計算出2m*k+1的等價值的原因進行闡述。圖18A、18B、19A以及19B是示意性地示出要存儲于包括在本發明的計算設備1中的第二寄存器13b中的值的說明圖。圖18A和18B示出了由于執行步驟A的步驟S3的處理而溢出的值為“0”的情況,圖18A示出了在執行左移一位運算處理之前的狀態,而圖18B示出了在執行左移一位運算處理之后的狀態。圖19A和19B示出了由于執行步驟A中的步驟S3的處理而溢出的值為“1”的情況,圖19A示出了在執行左移一位運算處理之前的狀態,而圖19B示出了在執行左移一位運算處理之后的狀態。
如圖18B和19B所示,包括執行左移一位運算處理之后即溢出的那1位的m×k+1位的值(其為通過對圖18A和19A所示的、為2m*k(mod n)的等價值的值取2倍而獲得的值)是2m*k+1(mod n)的等價值。當如圖18B所示,溢出的最高有效位的值為“0”時,由于沒有因舍去溢出的最高有效位而改變實際數,所以存儲在第二寄存器13b中的值是通過對2m*k(mod n)取2倍而獲得的2m*k+1(mod n)的等價值。當如圖19B所示,溢出的最高有效位的值為“1”時,舍去最高有效位就是從通過對2m*k(mod n)取2倍而獲得的2m*k+1(mod n)中減去2m*k,并且其結果是2m*k(mod n)的等價值。即,REG2≡2×2m*k(mod n)-2m*k(mod n)≡2m*k(mod n)。
如上所述,在本發明的計算設備1的步驟A中,可以在步驟S3中通過重復左移一位運算處理和對溢出的位值進行判斷的處理,計算出H0≡2m*k+1(mod n)的值,其為與除數n和2m*k+1相關的等價值。
回到圖14所示的流程圖,作為步驟B中的步驟S4的處理,本發明的計算設備1對于i=1,2,...,p重復p次如下處理由運算裝置14執行REDC運算(由REDC(REG2,REG2)n表示)并將其結果存儲在第二寄存器13b中,以計算REG2=2E(p,m,k)(mod n)。其中,p是滿足2p-1<m×k≤2p的整數,E(p,m,k)=m×k+2p,并且REDC(A,B)n表示蒙哥馬利乘法求余運算REDC(A,B)n=2-m*k×A×B(mod n)。
作為步驟C中的步驟S5的處理,本發明的計算設備1判斷2p>m×k的真/假;進行校正運算,即由運算裝置14執行被表示成REDC(REG2,g)n的REDC運算;并且在判定2p>m×k為真時將其結果存儲在第二寄存器13b中。應當注意,當判定2p>m×k為假時不執行由運算裝置14執行REDC運算的校正運算。其中,g=2k*G(p,m,k)并且G(p,m,k)=2×m-2p/k。
作為步驟S6的處理,本發明的計算設備1輸出存儲在第二寄存器13b中的計算結果,即,REG2=R2(mod n),并結束處理。隨后,本發明的計算設備1使用作為輸出結果的R2(mod n)執行取冪求余運算,進而進行加密和/或解密。
圖20是示出本發明的蒙哥馬利變換參數的計算方法所需的運算次數的圖表。圖20按運算的類型和步驟示出了利用圖14而示出的本發明的蒙哥馬利變換參數的計算方法所需的運算次數。應當注意,圖20中,SFT表示進行一位移位的移位運算,SUB表示減法,CPL表示2的補數計算,BITCHK表示對一個位值的計算的檢測,REDC表示蒙哥馬利乘法求余運算。此外,圖20中,q表示從n的最高有效數字起連續的“0”的個數。
以下說明將參照圖20所示的圖表對本發明的計算方法的運算次數示例進行闡述。
應用于1024位的RSA密碼技術(1個字是32位k=32)的計算以下說明將闡述將n=21023+1作為1024位的除數n的情況的示例。用于RSA密碼技術的值受到n必須是兩個質數p與q的積的條件的限制,而示例1中的n不滿足該條件。然而,在本發明的計算方法(其為當除數n是任意奇數值時計算22*m*k關于除數n的等價值H≡22*m*k(mod n)的方法)中,n不限于質數的積。因此,即使該示例中的n不滿足RSA密碼技術的條件,也認為容易理解本發明的示例1,因為n的值滿足根據本發明的計算方法的條件、并可由極簡單的形式表示。根據以上說明,以下說明將闡述將n=21023+1作為1024位的n的情況的示例。
由于如標題中的條件所述,1個字是32位,所以由32個字表示1024位,因此m=32。從圖20可見,計算H0≡22*m*k(mod n)≡22048(mod n)所需的計算量是1次SFT、1次SUB(CPL)、1次BITCHK以及10次REDC。以下將描述該具體計算。
步驟A中的步驟S1REG1=n=(100...01)2,1024REG2=0對第一寄存器13a和第二寄存器13b進行初始化。其中,a=(b)2,c表示按c位二進制數表示值a的結果是b。
步驟A中的步驟S2REG2=0-n=(0111...11)2,1024應當注意,對于REG2=(REG1的2的補數)也可以獲得相同的結果。此外,可以對REG1的所有位取反,進而可以將1設置在其最低有效位中。
步驟A中的步驟S3對于REG2=(0111...11)2,1024進行左移一位運算處理以使得REG2=(111...110)2,1024。然后,判定溢出的值是“0”,處理進行到步驟S4。應當注意,此處通過REG2(mod n)=(111...110)2,1024(mod n)=(011...1100)2, 1024和21025(mod n)=(011...1100)2,1024證實運算結果的正確性。
步驟B中的步驟S4REG2=REDC(REG2,REG2)重復p=10次以上處理,該次數是根據29<m×k=1024≤210確定的。
第一次REG2=REDC(REG2,REG2)≡21024+1×21024+1×2-1024≡21024+2(mod n)第二次REG2=REDC(REG2,REG2)≡21024+2×21024+2×2-1024≡21024+4(mod n)第三次REG2=REDC(REG2,REG2)≡21024+4×21024+4×2-1024≡21024+8(mod n)第九次REG2=REDC(REG2,REG2)≡21024+256×21024+256×2-1024≡21024+512(mod n)第十次REG2=REDC(REG2,REG2)≡21024+512×21024+512×2-1024≡21024+1024(mod n)根據以上計算得到REG2≡22048(mod n)。
步驟C中的步驟S5由于2p(=210)>m×k(=1024)為假,所以不執行校正運算。
步驟S6輸出REG2≡H0≡22048(mod n)并且處理結束。
應用于163位的橢圓曲線密碼技術(1個字是8位k=8)的計算以下說明將闡述將n=0x7、0263d95a、880adfbc、e3c1648d、44ce22fa、813980fb作為163位的除數n的情況的示例。其中,以上0x...表示由16進制數表示的數值。由于1個字是8位,由21個字表示163位,因此m=21。從圖20可見,計算H0≡22*m*k(mod n)≡2326(mod n)所需的計算量是6次SFT、1次SUB(CPL)、6次BITCHK以及8次REDC。下面將描述該具體計算。
步驟A中的步驟S1REG1=n=0x7、0263d95a、880adfbc、e3c1648d、44ce22fa、813980fbREG2=0步驟A中的步驟S2REG2=0-n=0xf8、fd9c26a5、77f52043、1c3e9b72、bb31dd05、7ec67f05
應當注意,對于REG2=(REG1的2的補數)也可以獲得相同的結果。
步驟A中的步驟S3對于REG2=0xf8、fd9c26a5、77f52043、1c3e9b72、bb31dd05、7ec67f05進行左移一位運算,使得REG2=0xf1、fb384d4a、efea4086、387d36e5、7663ba0a、fd8cfe0a。此處,應當注意,判定溢出的值是“1”并重復相同的處理。即,對于第二個處理對于REG2=0xf1、fb384d4a、efea4086、387d36e5、7663ba0a、fd8cfe0a進行左移一位運算,以使得REG2=0xe3、f6709a95、dfd4810c、70fa6dca、ecc77415、fb19fc14。此處,判定溢出的值是“1”并重復相同的處理。即,對于第三個處理對于REG2=0xe3、f6709a95、dfd4810c、70fa6dca、ecc77415、fb19fc14進行左移一位運算,以使得REG2=0xc7、ece1352b、bfa90218、e1f4db95、d98ee82b、f633f828。此處,判定溢出的值是“1”并重復相同的處理。即,對于第四個處理對于REG2=0xc7、ece1352b、bfa90218、e1f4db95、d98ee82b、f633f828進行左移一位運算,以使得REG2=0x8f、d9c26a57、7f520431、c3e9b72b、b31dd057、ec67f050。此處,判定溢出的值是“1”并重復相同的處理。即,對于第五個處理對于REG2=0x8f、d9c26a57、7f520431、c3e9b72b、b31dd057、ec67f050進行左移一位運算,以使得REG2=0x1f、b384d4ae、fea40863、87d36e57、663ba0af、d8cfe0a0。此處,判定溢出的值是“1”并重復相同的處理。即,對于第六個處理對于REG2=0x1f、b384d4ae、fea40863、87d36e57、663ba0af、d8cfe0a0進行左移一位運算,以使得REG2=0x3f、6709a95d、fd4810c7、0fa6dcae、cc77415f、b19fc140。此處,判定溢出的值是“0”并且處理進行到S4。應當注意,此處通過REG2(mod n)=2169(mod n)=0x5187052f、34e63323、0dda53b7、61380691、269a386d證實該運算結果的正確性。
步驟B中的步驟S4REG2=REDC(REG2,REG2)
重復p=8次以上處理,該次數是由27<m×k=1024≤28確定的。
第一次REG2=REDC(REG2,REG2)≡2168+1×2168+1×2-168≡2168+2(mod n)第二次REG2=REDC(REG2,REG2)≡2168+2×2168+2×2-168≡2168+4(mod n)第三次REG2=REDC(REG2,REG2)≡2168+4×2168+4×2-168≡2168+8(mod n)第七次REG2=REDC(REG2,REG2)≡2168+64×2168+64×2-168≡2168+128(mod n)第八次REG2=REDC(REG2,REG2)≡2168+128×2168+128×2-168≡2168+256(mod n)根據以上計算得到REG2≡2424(mod n)。
步驟C中的步驟S5由于2p(=28)>m×k(=168)為真,所以執行校正運算。
校正運算REG2=REDC(REG2,g)≡2424×280×2-168≡2336應當注意,在以上計算中G(p,m,k)=2×m-(2p/k)G(8,21,8)=2×21-(28/8)=10此外,g=2k*G(p,m,k)=28*10=280利用如上所述而確定的g=280進行校正運算。
步驟S6輸出REG2≡H≡2336(mod n)并且處理結束。
應用于160位的橢圓曲線密碼技術(1個字是32位k=32)的計算以下說明將闡述將n=0x89381a5a、0ff02e5e、42d13b94、b6e022e6、96f53721作為160位的除數n的情況的示例。此處,以上0x...表示由16進制數表示的數值。由于1個字是32位,由5個字表示160位,因此m=5。如從圖20看到的,計算H≡22*m*k(mod n)≡2320(mod n)所需的計算量是1次SFT、1次SUB(CPL)以及8次REDC。以下將描述具體計算。
步驟A中的步驟S1REG1=n=0x89381a5a、0ff02e5e、42d13b94、b6e022e6、96f53721REG2=0步驟A中的步驟S2REG2=0-n=0x76c7e5a5、f00fd1a1、bd2ec46b、491fdd19、690ac8df應當注意,對于REG2=(REG1的2的補數)也可以獲得相同的結果。
步驟A中的步驟S3對于REG2=0x76c7e5a5、f00fd1a1、bd2ec46b、491fdd19、690ac8df進行左移一位運算,以使得REG2=0xed8fcb4b、e01fa343、7a5d88d6、923fba32、d21591be。此處,判定溢出的值是“0”并且處理進行到步驟S4。應當注意,此處通過REG2(mod n)=2161(mod n)=0x6457b0f1、d02f74e5、378c4d41、db5f974c、3b205a9d證實運算結果的正確性。
步驟B中的步驟S4REG2=REDC(REG2,REG2)重復p=8次以上處理,該次數是由27<m×k=1024≤28確定的。
第一次REG2=REDC(REG2,REG2)≡2160+1×2160+1×2-160≡2160+2(mod n)第二次REG2=REDC(REG2,REG2)≡2160+2×2160+2×2-160≡2160+4(mod n)第三次REG2=REDC(REG2,REG2)≡2160+4×2160+4×2-160≡2160+8(mod n)第七次REG2=REDC(REG2,REG2)≡2160+64×2160+64×2-160≡2160+128(mod n)第八次REG2=REDC(REG2,REG2)≡2160+128×2160+128×2-160≡2160+256(mod n)
根據以上計算得到REG2≡2416(mod n)。
步驟C中的步驟S5由于2p(=28)>m×k(=160)為真,所以執行校正運算。
校正運算REG2=REDC(REG2,g)≡2416×264×2-160≡2320應當注意,在以上計算中G(p,m,k)=2×m-(2p/k)G(8,5,32)=2×5-(28/32)=2此外,g=2k*G(p,m,k)=232*2=264使用如上所述確定的g=264執行校正運算。
步驟S6輸出REG2≡H≡2320(mod n)并且處理結束。
接下來,對本發明的計算方法與上述常規方法1到常規方法3的運算次數進行比較。圖21是示出本發明的計算方法以及常規方法中的蒙哥馬利變換參數的計算方法所需的運算次數的圖表。圖21示出了圖20所示的本發明的計算方法的步驟A、步驟B和步驟C的計算量、圖5所示的常規方法1的步驟A1和步驟B1的計算量、圖7所示的常規方法2的步驟A2和步驟B2的計算量,以及圖9所示的常規方法3的步驟A3、步驟B3和步驟C3的計算量。應當注意,認為移位運算SFT、減法SUB、2的補數計算CPL以及比較運算CMP的運算(它們是多位運算)所需的處理負荷是相同的,以便于對各計算方法中的處理負荷進行比較,以常數LC代替來表示這些運算所需的處理負荷。此外,將一位值的檢測計算BITCHK的計算量表示成常數SC,將蒙哥馬利乘法求余運算REDC的計算量表示成常數REDC。應當注意,由于一位運算BITCHK比多位運算的計算量要小,所以認為滿足BITCHK<LC、REDC。圖21中的LC和SC所示的列示出了常規方法1的步驟A1、常規方法2的步驟A2、常規方法3的步驟A3以及本發明的計算方法中的步驟A中所涉及的計算量。此外,REDC所示的列示出了常規方法1的步驟B1、常規方法2的步驟B2、常規方法3的步驟B3和C3以及本發明的計算方法的步驟B和步驟C中所涉及的計算量。
首先,對常規方法1的步驟A1、常規方法2的步驟A2以及常規方法3的步驟A3中所涉及的計算量與本發明的計算方法的步驟A中所涉及的計算量進行比較。下面計算常規方法1中的步驟A1或常規方法2中的步驟A2的計算量與本發明的計算方法中的步驟A的計算量之差。
(常規方法1或常規方法2的計算量)-(本發明的計算方法中的計算量)=(5.5q+2.5v+1)×LC-((q+2)×LC+(q+1)×SC)=(4.5q+2.5v-1)×LC-(q+1)×SC=(3.5q+2.5v-2)×LC+(q+1)×(LC-SC)在以上計算中,由于q≥0、v≥1并且LC>SC,所以計算結果是正值。因此,這證明本發明的計算方法中的計算量比常規方法1或常規方法2的計算量要小。
下面計算常規方法3的步驟A3的計算量與本發明的計算方法中的步驟A的計算量之差。
(常規方法3的計算量)-(本發明的計算方法中的計算量)=(2.5k+2.5v)×LC-((q+2)×LC+(q+1)×SC)=(2.5k+2.5v-q-2)×LC-(q+1)×SC=(2.5k+2.5v-2q-3)×LC+(q+1)×(LC-SC)在以上計算結果中,由于q≥0并且LC>SC,所以第二項取正值。此外,由于v≥1,所以可以如下來表示以上計算結果中的第一項的LC的系數2.5k+2.5v-2q-3≥2.5×(k-q)+0.5q-0.5在以上不等式中,顯然從最高有效數字起連續“0”的個數比每1個字的位長要小,所以滿足q≥0和q<k。因此,可以如下表示以上不等式并且該第一項取正值2.5k+2.5v-2q-3≥2.5×(k-q)+0.5q-0.5>0根據以上計算結果證明了本發明的計算方法中的計算量小于常規方法3的計算量。因此,當對常規方法1的步驟A1、常規方法2的步驟A2以及常規方法3的步驟A3與本發明的計算方法中的步驟A中所涉及的計算量進行比較時,證明出本發明的計算方法中的步驟A所涉及的計算量具有最小值,并且本發明的計算方法更具優勢。
接下來,考慮常規方法1的步驟B1、常規方法2的步驟B2以及常規方法3的步驟B3和C3與本發明的計算方法中的步驟B和步驟C所涉及的計算量,利用示例對總計算量進行比較。REDC的計算量根據情況而以各種方式變化。如上所述,本發明的計算設備1通過由協處理器構成的運算裝置14進行REDC運算,其實現了快速計算。因此,此處基于REDC的計算量等于LC的計算量的假設對計算量進行比較。此外,假設在各示例和計算方法中選擇盡可能小的值作為v的值。對于v選擇最小值的原因是LC的次數和SC的次數與v成比例地增加,而REDC的次數與log2(1/v)成比例地降低。例如,當v的值加倍時,LC的次數和SC的次數也加倍,而REDC只減少一次。此外,在LC=REDC的情況下,還考慮到LC次數、SC次數以及REDC次數的總和直接給出了總計算量,所以認為當選擇v的最小值時總計算量具有最小值。應當注意,對于下述示例,示例4對應于以上示例1,示例5對應于以上示例2,示例6對應于以上示例3。
應用于1024位的RSA密碼技術(1個字是32位k=32)的計算當1個字是32位時,由32個字表示1024位。因此,k=32并且m=32。此外,從最高有效數字起連續“0”的個數q=0。
常規方法1由于m×k=1024,并且使(m×k)/v具有2的冪值的v的最小值是1,所以選擇v=1。
步驟A1(5.5q+2.5v+1)×LC=3.5×LC步驟B1p×REDC=log2((m×k)/v)×REDC=10×REDC
總和3.5×LC+10×REDC=13.5×LC常規方法2由于(m×k)/v不必是2的冪值,所以選擇v=1。
步驟A2(5.5q+2.5v+1)×LC=3.5×LC步驟B2p’-1+W((m×k)/v)×REDC=(11-1+W((10000000000)2,11))×REDC=10×REDC總和3.5×LC+10×REDC=13.5×LC常規方法3由于(m×k)/v不必是2的冪值,所以選擇v=1。
步驟A3(2.5k+2.5v)×LC=82.5×LC步驟B3和步驟C3p”×REDC=log2((m×k)/v)×REDC=10×REDC應當注意,由于(m×k)/v取2的冪值,所以不進行校正運算。
總和82.5×LC+10×REDC=92.5×LC本發明的計算方法步驟A(q+1)×LC+(q+1)×SC=LC+SC步驟B和步驟Cp×REDC=log2(m×k)×REDC=10×REDC應當注意,由于(m×k)/v取2的冪值,所以不進行校正運算。
總和LC+SC+10×REDC=11×LC+SC[示例5]
應用于163位的橢圓曲線密碼技術(1個字是8位k=8)的計算當1個字是8位時,由21個字表示163位。因此,k=8并且m=21。此外,從最高有效數字起連續的“0”的個數q=5。
常規方法1由于m×k=168,并且使(m×k)/v具有2的冪值的v的最小值是21,所以選擇v=21。
步驟A1(5.5q+2.5v+1)×LC=(27.5+52.5+1)×LC=81×LC步驟B1p×REDC=log2((m×k)/v)×REDC=3×REDC總和81×LC+3×REDC=84×LC常規方法2由于(m×k)/v不必是2的冪值,所以選擇v=1。
步驟A2(5.5q+2.5v+1)×LC=(27.5+2.5+1)×LC=31×LC步驟B2p’-1+W((m×k)/v)×REDC=(8-1+W((10101000)2,8))×REDC=9×REDC總和31×LC+9×REDC=40×LC常規方法3由于(m×k)/v不必是2的冪值,所以選擇v=1。
步驟A3(2.5k+2.5v)×LC=22.5×LC步驟B3和步驟C3(p”+1)×REDC=(log2((m×k)/v)+1)×REDC=(8+1)×REDC=9×REDC應當注意,由于(m×k)/v不是2的冪值,所以進行校正運算。
總和23.5×LC+9×REDC=32.5×LC
本發明的計算方法步驟A(q+1)×LC+(q+1)×SC=6×LC+6×SC步驟B和步驟C(p+1)×REDC=(log2(m×k)+1)×REDC=(8+1)×REDC=9×REDC應當注意,由于(m×k)/v不是2的冪值,所以進行校正運算。
總和6×LC+6×SC+9×REDC=15×LC+6×SC[示例6]應用于160位的橢圓曲線密碼技術(1個字是32位k=32)的計算當1個字是32位時,由5個字表示160位。因此,k=32并且m=5。此外,從最高有效數字起連續“0”的個數q=0。
常規方法1由于m×k=160,并且使(m×k)/v具有2的冪值的v的最小值是5,所以選擇v=5。
步驟A1(5.5q+2.5v+1)×LC=(12.5+1)×LC=13.5×LC步驟B1p×REDC=log2((m×k)/v)×REDC=5×REDC總和13.5×LC+5×REDC=18.5×LC常規方法2由于(m×k)/v不必是2的冪值,所以選擇v=1。
步驟A2(5.5q+2.5v+1)×LC=(2.5+1)×LC=3.5×LC步驟B2p’-1+W((m×k)/v)×REDC=(8-1+W((10100000)2,8))×REDC=8×REDC總和3.5×LC+8×REDC=11.5×LC
常規方法3由于(m×k)/v不必是2的冪值,所以選擇v=1。
步驟A3(2.5k+2.5v)×LC=82.5×LC步驟B3和步驟C3(p”+1)×REDC=(log2((m×k)/v)+1)×REDC=(8+1)×REDC=9×REDC應當注意,由于(m×k)/v不是2的冪值,所以進行校正運算。
總和82.5×LC+9×REDC=91.5×LC本發明的計算方法步驟A(q+1)×LC+(q+1)×SC=LC+SC步驟B和步驟C(p+1)×REDC=(log2(m×k)+1)×REDC=(8+1)×REDC=9×REDC應當注意,由于(m×k)/v不是2的冪值,所以進行校正運算。
總和LC+SC+9×REDC=10×LC+SC圖22是示出本發明的計算方法以及常規方法中的蒙哥馬利變換參數的計算方法所需的運算次數的圖表。圖22是一起示出了示例4到示例6所示的結果的圖表。從圖22顯見,在示例4到示例6所示的任何條件下,本發明的計算方法都比常規方法1到常規方法3更具優勢。
盡管在以上實施例中闡述了將計算設備應用于運算卡的形式,但是本發明并不限于此,而是可以應用于各種形式,如將計算設備應用于諸如個人計算機或服務器計算機的計算本體的形式。
此外,盡管在以上實施例中對實現用于執行REDC運算的協處理器的形式進行了描述,但是本發明并限于此,而是可以應用于各種形式,如通過軟件處理執行REDC運算。
權利要求
1.一種用于使用寄存器計算與蒙哥馬利變換參數相關的值的計算方法,該蒙哥馬利變換參數用于蒙哥馬利乘法求余運算并且是與求余的除數n相關的余數值,該寄存器具有至少m個字,每1個字的位長是k,該計算方法包括以下步驟獲得n的負數作為2m*k關于除數n的等價值,并將該負數存儲在該寄存器中;重復對存儲在該寄存器中的值在進位方向上進行一位移位、并舍去溢出該寄存器的最高有效位的處理,直到要舍去的最高有效位變成0,以獲得2m*k+1關于除數n的等價值并將該等價值存儲在該寄存器中;以及根據存儲在該寄存器中的值,通過蒙哥馬利乘法求余運算計算出使得關于除數n的余數值與蒙哥馬利變換參數關于除數n的余數值相同的等價值。
2.根據權利要求1所述的計算方法,其中使用所計算出的等價值執行取冪求余運算。
3.一種用于使用寄存器和運算單元計算與蒙哥馬利變換參數相關的值的計算方法,該蒙哥馬利變換參數用于蒙哥馬利乘法求余運算并且是與求余的除數n相關的余數值,該寄存器具有至少m個字,每1個字的位長是k,該運算單元用于對于值A和B以及有效字長為m的求余的除數n執行定義為2-m*k×A×B(mod n)的蒙哥馬利乘法求余運算REDC(A,B)n,該計算方法包括以下步驟將求余的除數n的負數存儲在寄存器中;重復對存儲在該寄存器中的值在進位方向上進行一位移位的移位處理,直到溢出該寄存器的最高有效位變成0;重復p次以下處理通過運算單元對存儲在該寄存器中的值REG執行蒙哥馬利乘法求余運算REDC(REG,REG)n并將其結果存儲在該寄存器中,其中p是滿足2p-1<m×k≤2p的整數;當2p>m×k時,通過運算單元對存儲在該寄存器中的值REG執行蒙哥馬利乘法求余運算REDC(REG,g)n并將其結果存儲在該寄存器中,其中,g=2k*G(p,m,k)并且G(p,m,k)=2×m-2p/k;以及輸出存儲在該寄存器中的值,作為使得關于除數n的余數值與蒙哥馬利變換參數關于除數n的余數值相同的等價值。
4.一種用于計算與蒙哥馬利變換參數相關的值的計算設備,該蒙哥馬利變換參數用于蒙哥馬利乘法求余運算并且是與求余的除數n相關的余數值,該計算設備包括寄存器;以及控制器,其能夠進行以下操作將求余的除數n的負數存儲在該寄存器中;重復對存儲在該寄存器中的值在進位方向上進行一位移位的處理,直到溢出該寄存器的最高有效位變成0;以及根據存儲在該寄存器中的值,通過蒙哥馬利乘法求余運算計算出使得關于除數n的余數值與蒙哥馬利變換參數關于除數n的余數值相同的等價值。
5.一種用于計算與蒙哥馬利變換參數相關的值的計算設備,該蒙哥馬利變換參數用于蒙哥馬利乘法求余運算并且是與求余的除數n相關的余數值,該計算設備包括寄存器,具有至少m個字,每個字的位長是k;運算單元,用于對值A和B以及有效字長為m的求余的除數n執行定義為2-m*k×A×B(mod n)的蒙哥馬利乘法求余運算REDC(A,B)n;以及控制器,其能夠進行以下操作將求余的除數n的負數存儲在該寄存器中;重復對存儲在該寄存器中存儲的值在進位方向上進行一位移位的移位處理,直到溢出該寄存器的最高有效位變成0;重復p次以下處理通過運算單元對存儲在寄存器中的值REG執行蒙哥馬利乘法求余運算REDC(REG,REG)n并將其結果存儲在該寄存器中,其中p是滿足2p-1<m×k≤2p的整數;當2p>m×k時,通過運算單元對存儲在寄存器中的值REG執行蒙哥馬利乘法求余運算REDC(REG,g)n并將其結果存儲在該寄存器中,其中,g=2k*G(p,m,k)并且G(p,m,k)=2×m-2p/k;以及輸出存儲在該寄存器中的值,作為使得關于除數n的余數值與蒙哥馬利變換參數關于除數n的余數值相同的等價值。
6.根據權利要求5所述的計算設備,其中設有另一寄存器,并且控制器還能夠進行以下操作在具有m個字的第一寄存器中存儲n并在具有m個或更多個字的第二寄存器中存儲0;以及從存儲在第二寄存器中的值中減去存儲在第一寄存器中的值以計算求余的除數n的負數。
7.根據權利要求5所述的計算設備,其中控制器還能夠進行以下操作將求余的除數n存儲在寄存器中;以及計算出存儲在寄存器中的值的補數作為求余的除數n的負數。
8.根據權利要求5所述的計算設備,其中所述控制器還能夠進行以下操作將求余的除數n存儲在寄存器中;對存儲在寄存器中的值取反;以及在存儲在寄存器中的值的最低有效位是1的情況下計算求余的除數n的負數。
9.根據權利要求5到8中的任何一項所述的計算設備,其中所述移位處理是將存儲在寄存器中的值加到所述值中的加法處理,并且檢測出在該移位處理中溢出寄存器的最高有效位,作為由該加法處理產生的進位值。
10.一種用于使計算機計算與蒙哥馬利變換參數相關的值的計算機程序,該計算機包括寄存器,該寄存器具有至少m個字,每1個字的位長是k,該蒙哥馬利變換參數用于蒙哥馬利乘法求余運算并且是與求余的除數n相關的余數值,該計算機程序包括以下步驟使該計算機獲得n的負數作為2m*k關于除數n的等價值并將該負數存儲在寄存器中;使該計算機重復對存儲在該寄存器中的值在進位方向上進行一位移位并舍去溢出該寄存器的最高有效位的處理,直到要舍去的最高有效位變成0,以獲得2m*k+1關于除數n的等價值并在寄存器中存儲該等價值;以及使該計算機根據存儲在該寄存器中的值,通過蒙哥馬利乘法求余運算計算出使得關于除數n的余數值與蒙哥馬利變換參數關于除數n的余數值相同的等價值。
11.一種用于使計算機計算與蒙哥馬利變換參數相關的值的計算機程序,該蒙哥馬利變換參數用于蒙哥馬利乘法求余運算并且是與求余的除數n相關的余數值,該計算機包括寄存器和運算單元,該寄存器具有至少m個字,每1個字的位長是k,該運算單元用于對于值A和B以及有效字長為m的求余的除數n執行定義為2-m*k×A×B(mod n)的蒙哥馬利乘法求余運算REDC(A,B)n,所述計算機程序包括以下步驟使該計算機將求余的除數n的負數存儲在該寄存器中;使該計算機重復對存儲在該寄存器中的值在進位方向上執行一位移位的移位處理,直到溢出該寄存器的最高有效位變成0;使該計算機重復p次以下處理通過所述運算單元對存儲在該寄存器中的值REG執行蒙哥馬利乘法求余運算REDC(REG,REG)n并將其結果存儲在該寄存器中,其中p是滿足2p-1<m×k≤2p的整數;當2p>m×k時,使該計算機通過運算單元對存儲在寄存器中的值REG執行蒙哥馬利乘法求余運算REDC(REG,g)n并將其結果存儲在該寄存器中,其中,g=2k*G(p,m,k)并且G(p,m,k)=2×m-2p/k;以及使該計算機輸出存儲在該寄存器中的值,作為使得關于除數n的余數值與蒙哥馬利變換參數關于除數n的余數值相同的等價值。
全文摘要
計算方法、計算設備以及計算機程序。計算設備計算文檔編號G06F7/72GK1841443SQ20051008904
公開日2006年10月4日 申請日期2005年8月3日 優先權日2005年3月30日
發明者伊藤孝一, 向田健二 申請人:富士通株式會社