計算方法、計算設備以及計算機程序的制作方法

            文檔序號:6634942閱讀:219來源:國知局
            專利名稱:計算方法、計算設備以及計算機程序的制作方法
            技術領域
            本發明涉及一種用于計算與蒙哥馬利乘法求余運算(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日
            發明者伊藤孝一, 向田健二 申請人:富士通株式會社
            網友詢問留言 已有0條留言
            • 還沒有人留言評論。精彩留言會獲得點贊!
            1
            婷婷六月激情在线综合激情,亚洲国产大片,久久中文字幕综合婷婷,精品久久久久久中文字幕,亚洲一区二区三区高清不卡,99国产精品热久久久久久夜夜嗨 ,欧美日韩亚洲综合在线一区二区,99国产精品电影,伊人精品线视天天综合,精品伊人久久久大香线蕉欧美
            亚洲精品1区 国产成人一级 91精品国产欧美一区二区 亚洲精品乱码久久久久久下载 国产精品久久久久久久伊一 九色国产 国产精品九九视频 伊人久久成人爱综合网 欧美日韩亚洲区久久综合 欧美日本一道免费一区三区 夜夜爽一区二区三区精品 欧美日韩高清一区二区三区 国产成人av在线 国产精品对白交换绿帽视频 国产视频亚洲 国产在线欧美精品 国产精品综合网 国产日韩精品欧美一区色 国产日韩精品欧美一区喷 欧美日韩在线观看区一二 国产区精品 欧美视频日韩视频 中文字幕天天躁日日躁狠狠躁97 视频一二三区 欧美高清在线精品一区二区不卡 国产精品揄拍一区二区久久 99久久综合狠狠综合久久aⅴ 亚洲乱码视频在线观看 日韩在线第二页 亚洲精品无码专区在线播放 成人亚洲网站www在线观看 欧美三级一区二区 99久久精品免费看国产高清 91麻豆国产在线观看 最新日韩欧美不卡一二三区 成人在线观看不卡 日韩国产在线 在线亚洲精品 亚洲午夜久久久久中文字幕 国产精品成人久久久久久久 精品国产一区二区在线观看 欧美精品国产一区二区三区 中文在线播放 亚洲第一页在线视频 国产午夜精品福利久久 九色国产 精品国产九九 国产永久视频 久久精品人人做人人综合试看 国产一区二区三区免费观看 亚洲精品国产电影 9999热视频 国产精品资源在线 麻豆久久婷婷国产综合五月 国产精品免费一级在线观看 亚洲国产一区二区三区青草影视 中文在线播放 国产成人综合在线 国产在线观看色 国产亚洲三级 国产片一区二区三区 久久99精品久久久久久牛牛影视 亚洲欧美日韩国产 四虎永久免费网站 国产一毛片 国产精品视频在 九九热在线精品 99精品福利视频 色婷婷色99国产综合精品 97成人精品视频在线播放 精品久久久久久中文字幕 亚洲欧美一区二区三区孕妇 亚洲欧美成人网 日韩高清在线二区 国产尤物在线观看 在线不卡一区二区 91网站在线看 韩国精品福利一区二区 欧美日韩国产成人精品 99热精品久久 国产精品免费视频一区 高清视频一区 精品九九久久 欧美日韩在线观看免费 91欧美激情一区二区三区成人 99福利视频 亚洲国产精品91 久热国产在线 精品久久久久久中文字幕女 国产精品久久久久久久久99热 成人自拍视频网 国产精品视频久久久久久 久久影院国产 国产玖玖在线观看 99精品在线免费 亚洲欧美一区二区三区导航 久久久久久久综合 国产欧美日韩精品高清二区综合区 国产精品视频自拍 亚洲一级片免费 久久久久久九九 国产欧美自拍视频 视频一区二区在线观看 欧美日韩一区二区三区久久 中文在线亚洲 伊人热人久久中文字幕 日韩欧美亚洲国产一区二区三区 欧美亚洲国产成人高清在线 欧美日韩国产码高清综合人成 国产性大片免费播放网站 亚洲午夜综合网 91精品久久一区二区三区 国产无套在线播放 国产精品视频网站 国产成人亚洲精品老王 91在线网站 国产视频97 欧美黑人欧美精品刺激 国产一区二区三区免费在线视频 久久久国产精品免费看 99re6久精品国产首页 久久精品91 国产成人一级 国产成人精品曰本亚洲 日本福利在线观看 伊人成综合网 久久综合一本 国产综合久久久久久 久久精品成人免费看 久久福利 91精品国产91久久久久久麻豆 亚洲精品成人在线 亚洲伊人久久精品 欧美日本二区 国产永久视频 国产一区二 一区二区福利 国产一毛片 亚洲精品1区 毛片一区二区三区 伊人久久大香线蕉综合影 国产欧美在线观看一区 亚洲国产欧洲综合997久久 国产一区二区免费视频 国产91精品对白露脸全集观看 久久亚洲国产伦理 欧美成人伊人久久综合网 亚洲性久久久影院 久久99国产精一区二区三区! 91精品国产欧美一区二区 欧美日韩亚洲区久久综合 日韩精品一二三区 久久久夜色精品国产噜噜 国产在线精品福利91香蕉 久久久久久久亚洲精品 97se色综合一区二区二区 91国语精品自产拍在线观看性色 91久久国产综合精品女同我 日韩中文字幕a 国产成人亚洲日本精品 久久国产精品-国产精品 久久国产经典视频 久久国产精品伦理 亚洲第一页在线视频 国产精品久久久久三级 日韩毛片网 久久免费高清视频 麻豆国产在线观看一区二区 91麻豆国产福利在线观看 国产成人精品男人的天堂538 一区二区三区中文字幕 免费在线视频一区 欧美日韩国产成人精品 国产综合网站 国产资源免费观看 亚洲精品亚洲人成在线播放 精品久久久久久中文字幕专区 亚洲人成人毛片无遮挡 国产一起色一起爱 国产香蕉精品视频在 九九热免费观看 日韩亚洲欧美一区 九九热精品在线观看 精品久久久久久中文字幕专区 亚洲欧美自拍偷拍 国产精品每日更新 久久久久国产一级毛片高清板 久久天天躁狠狠躁夜夜中文字幕 久久精品片 日韩在线毛片 国产成人精品本亚洲 国产成人精品一区二区三区 九九热在线观看 国产r级在线观看 国产欧美日韩精品高清二区综合区 韩国电影一区二区 国产精品毛片va一区二区三区 五月婷婷伊人网 久久一区二区三区免费 一本色道久久综合狠狠躁篇 亚洲综合色站 国产尤物在线观看 亚洲一区亚洲二区 免费在线视频一区 欧洲精品视频在线观看 日韩中文字幕a 中文字幕日本在线mv视频精品 91精品在线免费视频 精品国产免费人成在线观看 精品a级片 中文字幕日本在线mv视频精品 日韩在线精品视频 婷婷丁香色 91精品国产高清久久久久 国产成人精品日本亚洲直接 五月综合视频 欧美日韩在线亚洲国产人 精液呈暗黄色 亚洲乱码一区 久久精品中文字幕不卡一二区 亚洲天堂精品在线 激情婷婷综合 国产免费久久精品久久久 国产精品亚洲二区在线 久久免费播放视频 五月婷婷丁香综合 在线亚洲欧美日韩 久久免费精品高清麻豆 精品久久久久久中文字幕 亚洲一区网站 国产精品福利社 日韩中文字幕免费 亚洲综合丝袜 91精品在线播放 国产精品18 亚洲日日夜夜 伊人久久大香线蕉综合影 亚洲精品中文字幕乱码影院 亚洲一区二区黄色 亚洲第一页在线视频 一区二区在线观看视频 国产成人福利精品视频 亚洲高清二区 国内成人免费视频 精品亚洲性xxx久久久 国产精品合集一区二区三区 97av免费视频 国产一起色一起爱 国产区久久 国产资源免费观看 99精品视频免费 国产成人一级 国产精品九九免费视频 欧美91精品久久久久网免费 99热国产免费 久久精品色 98精品国产综合久久 久久精品播放 中文字幕视频免费 国产欧美日韩一区二区三区在线 精品久久蜜桃 国产小视频精品 一本色道久久综合狠狠躁篇 91在线免费观看 亚洲精品区 伊人成综合网 伊人热人久久中文字幕 伊人黄色片 99国产精品热久久久久久夜夜嗨 久久免费精品视频 亚洲一区二区三区高清不卡 久久久久国产一级毛片高清板 国产片一区二区三区 久久狠狠干 99久久婷婷国产综合精品电影 国产99区 国产精品成人久久久久 久久狠狠干 青青国产在线观看 亚洲高清国产拍精品影院 国产精品一区二区av 九九热在线免费视频 伊人久久国产 国产精品久久久久久久久久一区 在线观看免费视频一区 国产精品自在在线午夜区app 国产精品综合色区在线观看 国产毛片久久久久久国产毛片 97国产免费全部免费观看 国产精品每日更新 国产尤物视频在线 九九视频这里只有精品99 一本一道久久a久久精品综合 久久综合给会久久狠狠狠 国产成人精品男人的天堂538 欧美一区二区高清 毛片一区二区三区 国产欧美日韩在线观看一区二区三区 在线国产二区 欧美不卡网 91在线精品中文字幕 在线国产福利 国内精品91久久久久 91亚洲福利 日韩欧美国产中文字幕 91久久精品国产性色也91久久 亚洲性久久久影院 欧美精品1区 国产热re99久久6国产精品 九九热免费观看 国产精品欧美日韩 久久久久国产一级毛片高清板 久久国产经典视频 日韩欧美亚洲国产一区二区三区 欧美亚洲综合另类在线观看 国产精品自在在线午夜区app 97中文字幕在线观看 视频一二三区 精品国产一区在线观看 国产欧美日韩在线一区二区不卡 欧美一区二三区 伊人成人在线观看 国内精品91久久久久 97在线亚洲 国产在线不卡一区 久久久全免费全集一级全黄片 国产精品v欧美精品∨日韩 亚洲毛片网站 在线不卡一区二区 99re热在线视频 久久激情网 国产毛片一区二区三区精品 久久亚洲综合色 中文字幕视频免费 国产视频亚洲 婷婷伊人久久 国产一区二区免费播放 久久99国产精品成人欧美 99国产在线视频 国产成人免费视频精品一区二区 国产不卡一区二区三区免费视 国产码欧美日韩高清综合一区 久久精品国产主播一区二区 国产一区电影 久久精品国产夜色 国产精品国产三级国产 日韩一区二区三区在线 久久97久久97精品免视看 久久国产免费一区二区三区 伊人久久大香线蕉综合电影网 99re6久精品国产首页 久久激情网 亚洲成人高清在线 国产精品网址 国产成人精品男人的天堂538 香蕉国产综合久久猫咪 国产专区中文字幕 91麻豆精品国产高清在线 久久国产经典视频 国产精品成人va在线观看 国产精品爱啪在线线免费观看 日本精品久久久久久久久免费 亚洲综合一区二区三区 久久五月网 精品国产网红福利在线观看 久久综合亚洲伊人色 亚洲国产精品久久久久久网站 在线日韩国产 99国产精品热久久久久久夜夜嗨 国产综合精品在线 国产区福利 精品亚洲综合久久中文字幕 国产制服丝袜在线 毛片在线播放网站 在线观看免费视频一区 国产精品久久久精品三级 亚洲国产电影在线观看 最新日韩欧美不卡一二三区 狠狠综合久久综合鬼色 日本精品1在线区 国产日韩一区二区三区在线播放 欧美日韩精品在线播放 亚洲欧美日韩国产一区二区三区精品 久久综合久久网 婷婷六月激情在线综合激情 亚洲乱码一区 国产专区91 97av视频在线观看 精品久久久久久中文字幕 久久五月视频 国产成人福利精品视频 国产精品网址 中文字幕视频在线 精品一区二区三区免费视频 伊人手机在线视频 亚洲精品中文字幕乱码 国产在线视频www色 色噜噜国产精品视频一区二区 精品亚洲成a人在线观看 国产香蕉尹人综合在线 成人免费一区二区三区在线观看 国产不卡一区二区三区免费视 欧美精品久久天天躁 国产专区中文字幕 久久精品国产免费中文 久久精品国产免费一区 久久无码精品一区二区三区 国产欧美另类久久久精品免费 欧美精品久久天天躁 亚洲精品在线视频 国产视频91在线 91精品福利一区二区三区野战 日韩中文字幕免费 国产精品99一区二区三区 欧美成人高清性色生活 国产精品系列在线观看 亚洲国产福利精品一区二区 国产成人在线小视频 国产精品久久久久免费 99re热在线视频 久久久久久久综合 一区二区国产在线播放 成人国产在线视频 亚洲精品乱码久久久久 欧美日韩一区二区综合 精品久久久久免费极品大片 中文字幕视频二区 激情粉嫩精品国产尤物 国产成人精品一区二区视频 久久精品中文字幕首页 亚洲高清在线 国产精品亚洲一区二区三区 伊人久久艹 中文在线亚洲 国产精品一区二区在线播放 国产精品九九免费视频 亚洲二区在线播放 亚洲狠狠婷婷综合久久久久网站 亚洲欧美日韩网站 日韩成人精品 亚洲国产一区二区三区青草影视 91精品国产福利在线观看 国产精品久久久久久久久99热 国产一区二区精品尤物 久碰香蕉精品视频在线观看 亚洲日日夜夜 在线不卡一区二区 国产午夜亚洲精品 九九热在线视频观看这里只有精品 伊人手机在线视频 91免费国产精品 日韩欧美中字 91精品国产91久久久久 国产全黄三级播放 视频一区二区三区免费观看 国产开裆丝袜高跟在线观看 国产成人欧美 激情综合丝袜美女一区二区 国产成人亚洲综合无 欧美精品一区二区三区免费观看 欧美亚洲国产日韩 日韩亚州 国产欧美日韩精品高清二区综合区 亚洲午夜国产片在线观看 精品久久久久久中文字幕 欧美精品1区 久久伊人久久亚洲综合 亚洲欧美日韩精品 国产成人精品久久亚洲高清不卡 久久福利影视 国产精品99精品久久免费 久久久久免费精品视频 国产日产亚洲精品 亚洲国产午夜电影在线入口 精品无码一区在线观看 午夜国产精品视频 亚洲一级片免费 伊人久久大香线蕉综合影 国产精品久久影院 久碰香蕉精品视频在线观看 www.欧美精品 在线小视频国产 亚洲国产天堂久久综合图区 欧美一区二区三区不卡 日韩美女福利视频 九九精品免视频国产成人 不卡国产00高中生在线视频 亚洲第一页在线视频 欧美日韩在线播放成人 99re视频这里只有精品 国产精品91在线 精品乱码一区二区三区在线 国产区久久 91麻豆精品国产自产在线观看一区 日韩精品成人在线 九九热在线观看 国产精品久久不卡日韩美女 欧美一区二区三区综合色视频 欧美精品免费一区欧美久久优播 国产精品网址 国产专区中文字幕 国产精品欧美亚洲韩国日本久久 日韩美香港a一级毛片 久久精品123 欧美一区二区三区免费看 99r在线视频 亚洲精品国产字幕久久vr 国产综合激情在线亚洲第一页 91免费国产精品 日韩免费小视频 亚洲国产精品综合一区在线 国产亚洲第一伦理第一区 在线亚洲精品 国产精品一区二区制服丝袜 国产在线成人精品 九九精品免视频国产成人 亚洲国产网 欧美日韩亚洲一区二区三区在线观看 在线亚洲精品 欧美一区二区三区高清视频 国产成人精品男人的天堂538 欧美日韩在线观看区一二 亚洲欧美一区二区久久 久久精品中文字幕首页 日本高清www午夜视频 久久精品国产免费 久久999精品 亚洲国产精品欧美综合 88国产精品视频一区二区三区 91久久偷偷做嫩草影院免费看 国产精品夜色视频一区二区 欧美日韩导航 国产成人啪精品午夜在线播放 一区二区视频在线免费观看 99久久精品国产自免费 精液呈暗黄色 久久99国产精品 日本精品久久久久久久久免费 精品国产97在线观看 99re视频这里只有精品 国产视频91在线 999av视频 亚洲美女视频一区二区三区 久久97久久97精品免视看 亚洲国产成人久久三区 99久久亚洲国产高清观看 日韩毛片在线视频 综合激情在线 91福利一区二区在线观看 一区二区视频在线免费观看 激情粉嫩精品国产尤物 国产成人精品曰本亚洲78 国产成人精品本亚洲 国产精品成人免费视频 国产成人啪精品视频免费软件 久久精品国产亚洲妲己影院 国产精品成人久久久久久久 久久大香线蕉综合爱 欧美一区二区三区高清视频 99热国产免费 在线观看欧美国产 91精品视频在线播放 国产精品福利社 欧美精品一区二区三区免费观看 国产一区二区免费视频 国产午夜精品一区二区 精品视频在线观看97 91精品福利久久久 国产一区福利 国产综合激情在线亚洲第一页 国产精品久久久久久久久久久不卡 九色国产 在线日韩国产 黄网在线观看 亚洲一区小说区中文字幕 中文字幕丝袜 日本二区在线观看 日本国产一区在线观看 欧美日韩一区二区三区久久 欧美精品亚洲精品日韩专 国产日产亚洲精品 久久综合九色综合欧美播 亚洲国产欧美无圣光一区 欧美视频区 亚洲乱码视频在线观看 久久无码精品一区二区三区 九九热精品免费视频 久久99精品久久久久久牛牛影视 国产精品成久久久久三级 国产一区福利 午夜国产精品视频 日本二区在线观看 99久久网站 国产亚洲天堂 精品国产一区二区三区不卡 亚洲国产日韩在线一区 国产成人综合在线观看网站 久久免费高清视频 欧美在线导航 午夜精品久久久久久99热7777 欧美久久综合网 国产小视频精品 国产尤物在线观看 亚洲国产精品综合一区在线 欧美一区二区三区不卡视频 欧美黑人欧美精品刺激 日本福利在线观看 久久国产偷 国产手机精品一区二区 国产热re99久久6国产精品 国产高清啪啪 欧美亚洲国产成人高清在线 国产在线第三页 亚洲综合一区二区三区 99r在线视频 99精品久久久久久久婷婷 国产精品乱码免费一区二区 国产在线精品福利91香蕉 国产尤物视频在线 五月婷婷亚洲 中文字幕久久综合伊人 亚洲精品一级毛片 99国产精品电影 在线视频第一页 久久99国产精品成人欧美 国产白白视频在线观看2 成人精品一区二区www 亚洲成人网在线观看 麻豆91在线视频 色综合合久久天天综合绕视看 久久精品国产免费高清 国产不卡一区二区三区免费视 欧美国产中文 99精品欧美 九九在线精品 国产中文字幕在线免费观看 国产一区中文字幕在线观看 国产成人一级 国产精品一区二区制服丝袜 国产一起色一起爱 亚洲精品成人在线 亚洲欧美精品在线 国产欧美自拍视频 99精品久久久久久久婷婷 久99视频 国产热re99久久6国产精品 视频一区亚洲 国产精品视频分类 国产精品成在线观看 99re6久精品国产首页 亚洲在成人网在线看 亚洲国产日韩在线一区 久久国产三级 日韩国产欧美 欧美在线一区二区三区 国产精品美女一级在线观看 成人午夜免费福利视频 亚洲天堂精品在线 91精品国产手机 欧美日韩视频在线播放 狠狠综合久久综合鬼色 九一色视频 青青视频国产 亚洲欧美自拍一区 中文字幕天天躁日日躁狠狠躁97 日韩免费大片 996热视频 伊人成综合网 亚洲天堂欧美 日韩精品亚洲人成在线观看 久久综合给会久久狠狠狠 日韩精品亚洲人成在线观看 日韩国产欧美 亚洲成aⅴ人片在线影院八 亚洲精品1区 99久久精品免费 国产精品高清在线观看 国产精品久久久免费视频 在线亚洲欧美日韩 91在线看视频 国产精品96久久久久久久 欧美日韩国产成人精品 91在线亚洲 热久久亚洲 国产精品美女免费视频观看 日韩在线毛片 亚洲永久免费视频 九九免费在线视频 亚洲一区网站 日本高清二区视频久二区 精品国产美女福利在线 伊人久久艹 国产精品久久久久三级 欧美成人精品第一区二区三区 99久久精品国产自免费 在线观看日韩一区 国产中文字幕一区 成人免费午夜视频 欧美日韩另类在线 久久99国产精品成人欧美 色婷婷中文网 久久天天躁夜夜躁狠狠躁2020 欧美成人伊人久久综合网 国产精品福利资源在线 国产伦精品一区二区三区高清 国产精品亚洲综合色区韩国 亚洲一区欧美日韩 色综合视频 国语自产精品视频在线区 国产高清a 成人国内精品久久久久影 国产在线精品香蕉综合网一区 国产不卡在线看 国产成人精品精品欧美 国产欧美日韩综合精品一区二区三区 韩国电影一区二区 国产在线视频www色 91中文字幕在线一区 国产人成午夜免视频网站 亚洲综合一区二区三区 色综合视频一区二区观看 久久五月网 九九热精品在线观看 国产一区二区三区国产精品 99久热re在线精品996热视频 亚洲国产网 在线视频亚洲一区 日韩字幕一中文在线综合 国产高清一级毛片在线不卡 精品国产色在线 国产高清视频一区二区 精品日本久久久久久久久久 亚洲国产午夜精品乱码 成人免费国产gav视频在线 日韩欧美一区二区在线观看 欧美曰批人成在线观看 韩国电影一区二区 99re这里只有精品6 日韩精品一区二区三区视频 99re6久精品国产首页 亚洲欧美一区二区三区导航 欧美色图一区二区三区 午夜精品视频在线观看 欧美激情在线观看一区二区三区 亚洲热在线 成人国产精品一区二区网站 亚洲一级毛片在线播放 亚洲一区小说区中文字幕 亚洲午夜久久久久影院 国产自产v一区二区三区c 国产精品视频免费 久久调教视频 国产成人91激情在线播放 国产精品欧美亚洲韩国日本久久 久久亚洲日本不卡一区二区 91中文字幕网 成人国产在线视频 国产视频91在线 欧美成人精品第一区二区三区 国产精品福利在线 久久综合九色综合精品 欧美一区二区三区精品 久久国产综合尤物免费观看 久久99青青久久99久久 日韩精品免费 久久国产精品999 91亚洲视频在线观看 国产精品igao视频 色综合区 在线亚洲欧国产精品专区 国产一区二区三区在线观看视频 亚洲精品成人在线 一区二区国产在线播放 中文在线亚洲 亚洲精品第一国产综合野 国产一区二区精品久久 一区二区三区四区精品视频 99热精品久久 中文字幕视频二区 国产成人精品男人的天堂538 99精品影视 美女福利视频一区二区 久久午夜夜伦伦鲁鲁片 综合久久久久久久综合网 国产精品国产欧美综合一区 国产99视频在线观看 国产亚洲女在线精品 婷婷影院在线综合免费视频 国产亚洲3p一区二区三区 91成人爽a毛片一区二区 亚洲一区二区高清 国产欧美亚洲精品第二区首页 欧美日韩导航 亚洲高清二区 欧美激情观看一区二区久久 日韩毛片在线播放 亚洲欧美日韩高清中文在线 亚洲日本在线播放 国产精品一区二区制服丝袜 精品国产一区二区三区不卡 国产不卡在线看 国产欧美网站 四虎永久在线观看视频精品 国产黄色片在线观看 夜夜综合 一本色道久久综合狠狠躁篇 欧美亚洲综合另类在线观看 国产91在线看 伊人久久国产 欧美一区二区在线观看免费网站 国产精品久久久久三级 久久福利 日韩中文字幕a 亚洲午夜久久久久影院 91在线高清视频 国产亚洲一区二区三区啪 久久人精品 国产精品亚洲午夜一区二区三区 综合久久久久久 久久伊人一区二区三区四区 国产综合久久久久久 日韩一区精品视频在线看 国产精品日韩欧美制服 日本精品1在线区 99re视频 无码av免费一区二区三区试看 国产视频1区 日韩欧美中文字幕一区 日本高清中文字幕一区二区三区a 亚洲国产欧美无圣光一区 国产在线视频一区二区三区 欧美国产第一页 在线亚洲欧美日韩 日韩中文字幕第一页 在线不卡一区二区 伊人久久青青 国产精品一区二区在线播放 www.五月婷婷 麻豆久久婷婷国产综合五月 亚洲精品区 久久国产欧美另类久久久 99在线视频免费 伊人久久中文字幕久久cm 久久精品成人免费看 久久这里只有精品首页 88国产精品视频一区二区三区 中文字幕日本在线mv视频精品 国产在线精品成人一区二区三区 伊人精品线视天天综合 亚洲一区二区黄色 国产尤物视频在线 亚洲精品99久久久久中文字幕 国产一区二区三区免费观看 伊人久久大香线蕉综合电影网 国产成人精品区在线观看 日本精品一区二区三区视频 日韩高清在线二区 久久免费播放视频 一区二区成人国产精品 国产精品免费精品自在线观看 亚洲精品视频二区 麻豆国产精品有码在线观看 精品日本一区二区 亚洲欧洲久久 久久中文字幕综合婷婷 中文字幕视频在线 国产成人精品综合在线观看 91精品国产91久久久久福利 精液呈暗黄色 香蕉国产综合久久猫咪 国产专区精品 亚洲精品无码不卡 国产永久视频 亚洲成a人片在线播放观看国产 一区二区国产在线播放 亚洲一区二区黄色 欧美日韩在线观看视频 亚洲精品另类 久久国产综合尤物免费观看 国产一区二区三区国产精品 高清视频一区 国产精品igao视频 国产精品资源在线 久久综合精品国产一区二区三区 www.五月婷婷 精品色综合 99热国产免费 麻豆福利影院 亚洲伊人久久大香线蕉苏妲己 久久电影院久久国产 久久精品伊人 在线日韩理论午夜中文电影 亚洲国产欧洲综合997久久 伊人国产精品 久草国产精品 欧美一区精品二区三区 亚洲成人高清在线 91免费国产精品 日韩精品福利在线 国产一线在线观看 国产不卡在线看 久久99青青久久99久久 亚洲精品亚洲人成在线播放 99久久免费看国产精品 国产日本在线观看 青草国产在线视频 麻豆久久婷婷国产综合五月 国产中文字幕一区 91久久精品国产性色也91久久 国产一区a 国产欧美日韩成人 国产亚洲女在线精品 一区二区美女 中文字幕在线2021一区 在线小视频国产 久久这里只有精品首页 国产在线第三页 欧美日韩中文字幕 在线亚洲+欧美+日本专区 精品国产一区二区三区不卡 久久这里精品 欧美在线va在线播放 精液呈暗黄色 91精品国产手机 91在线免费播放 欧美视频亚洲色图 欧美国产日韩精品 日韩高清不卡在线 精品视频免费观看 欧美日韩一区二区三区四区 国产欧美亚洲精品第二区首页 亚洲韩精品欧美一区二区三区 国产精品视频免费 在线精品小视频 久久午夜夜伦伦鲁鲁片 国产无套在线播放 久热这里只精品99re8久 欧美久久久久 久久香蕉国产线看观看精品蕉 国产成人精品男人的天堂538 亚洲人成网站色7799在线观看 日韩在线第二页 一本色道久久综合狠狠躁篇 国产一区二区三区不卡在线观看 亚洲乱码在线 在线观看欧美国产 久久福利青草精品资源站免费 国产玖玖在线观看 在线亚洲精品 亚洲成aⅴ人在线观看 精品91在线 欧美一区二三区 日韩中文字幕视频在线 日本成人一区二区 日韩免费专区 国内精品在线观看视频 久久国产综合尤物免费观看 国产精品系列在线观看 一本一道久久a久久精品综合 亚洲免费播放 久久精品国产免费 久久人精品 亚洲毛片网站 亚洲成a人一区二区三区 韩国福利一区二区三区高清视频 亚洲精品天堂在线 一区二区三区中文字幕 亚洲国产色婷婷精品综合在线观看 亚洲国产成人久久笫一页 999国产视频 国产精品香港三级在线电影 欧美日韩一区二区三区四区 日韩国产欧美 国产精品99一区二区三区 午夜国产精品理论片久久影院 亚洲精品中文字幕麻豆 亚洲国产高清视频 久久免费手机视频 日韩a在线观看 五月婷婷亚洲 亚洲精品中文字幕麻豆 中文字幕丝袜 www国产精品 亚洲天堂精品在线 亚洲乱码一区 国产日韩欧美三级 久久999精品 伊人热人久久中文字幕 久热国产在线视频 国产欧美日韩在线观看一区二区三区 国产一二三区在线 日韩国产欧美 91精品国产91久久久久 亚洲一区小说区中文字幕 精品一区二区免费视频 国产精品视频免费 国产精品亚洲综合色区韩国 亚洲国产精品成人午夜在线观看 欧美国产日韩精品 中文字幕精品一区二区精品