專利名稱:應(yīng)用蒙哥馬利算法的冪剩余運(yùn)算器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在信息通信網(wǎng)絡(luò)、交通、金融、醫(yī)療、流通等領(lǐng)域中使用的信息的加密技術(shù)和解密技術(shù)中使用的冪剩余運(yùn)算器,特別是涉及使用了蒙哥馬利(Montgomery)算法的冪剩余運(yùn)算器。
背景技術(shù):
伴隨信息通信技術(shù)的發(fā)展,越來越重視確保信息網(wǎng)絡(luò)上的安全性(防止數(shù)據(jù)的盜用或破壞)。因此,大多采用信息的加密技術(shù)和解密技術(shù),其應(yīng)用領(lǐng)域不單停留于信息通信領(lǐng)域,而是正在擴(kuò)展到交通、金融、醫(yī)療、流通等的身邊的領(lǐng)域。對(duì)于這種加密技術(shù)和解密技術(shù),要求能根據(jù)簡單的原理來實(shí)現(xiàn)高度的安全性。
為了使這種技術(shù)的理解變得容易,首先說明信息的加密、解密的概念。在密碼的世界中,“非對(duì)稱密碼算法”從本質(zhì)上來說,是優(yōu)良的。所謂非對(duì)稱密碼算法,是指用于加密密鑰與解密密鑰的算法不同、不能從其某一方“容易地計(jì)算”另一方的密碼。利用冪剩余運(yùn)算(對(duì)某個(gè)數(shù)X進(jìn)行幾次乘法運(yùn)算并用N除后的余數(shù)的計(jì)算)的RSA(Rivest-Shamir-Adleman方案)密碼是典型的非對(duì)稱密碼算法。
用冪剩余運(yùn)算基本上按下式(1)生成RSA密碼。式(1)意即XY除以N所得的余數(shù)。此外,在式(1)中,X是加密(解密)對(duì)象的明文,Y和N是加密(解密)用的密鑰。
XYmodN …(1)用該冪剩余運(yùn)算,使信息的加密和解密簡便,而且,只要加長運(yùn)算對(duì)象X、Y、N的位長,就可以使各密鑰的解讀變得困難。
但是,加長運(yùn)算對(duì)象的位長,冪剩余運(yùn)算需要的時(shí)間也長。因此,減少運(yùn)算對(duì)象的位長較長的冪剩余運(yùn)算的時(shí)間成為關(guān)鍵。
其次,以RSA密碼為例,說明用冪剩余運(yùn)算的加密和解密的步驟。(1)RSA密碼的加密用下式(2)
C=MemodN …(2)解密用下式(3)M=CdmodN …(3)以上式中,M是成為加密對(duì)象的明文,C是已被加密的明文即密碼文。此外,式(2)中的e和N是加密密鑰,式(3)中的d和N是解密密鑰。以下的式(4)和式(5)之間有預(yù)定的關(guān)系N=p·q…(4)1≡e·dmod{LCM(p-1,q-1)}…(5)式中,「≡」表示左邊與右邊互為同余,「 LCM 」是最小公倍數(shù),p和q是互為素?cái)?shù)的整數(shù),e和N是公開密鑰,d、p和q是秘密密鑰。
式(4)和式(5)都定義了密碼算法中的冪剩余運(yùn)算的數(shù)值的條件。式(4)表示N是互為素?cái)?shù)的大的素?cái)?shù)p和q的積,由于p和q都是奇數(shù),當(dāng)然,N就必須是奇數(shù)。式(5)表示用式(4)的p和q分別減1后的最小公倍數(shù)去除e和d的積e·d所得的余數(shù)為1。
在式(4)和式(5)的指定條件下,用式(2)對(duì)明文M進(jìn)行加密,用式(3)對(duì)已被加密的明文(密碼文C)進(jìn)行解密。其次,說明在加密、解密中使用的冪剩余運(yùn)算方法。使整數(shù)e的二進(jìn)制數(shù)展開為e=ek-1…e1e0,通過使用在以下的流程1中示出的迭代平方乘積法執(zhí)行A=MemodN的冪剩余運(yùn)算。
(流程1)
beginA=1for i=k-1 to 0beginA=A2modN…(6)If ei=1 then A=A·MmodN…(7)endend在A中存儲(chǔ)的值為打算求出的冪剩余運(yùn)算的解。
如上所述,如式(6)和式(7)中所示,其運(yùn)算是以乘法運(yùn)算和除法運(yùn)算(mod計(jì)算)為基礎(chǔ)。乘法運(yùn)算是對(duì)A×A或A×M的A賦以初始值為1。除法運(yùn)算是用各自的乘法運(yùn)算得到的值對(duì)modN(求出用N除所得的余數(shù)的運(yùn)算)賦值。將該“乘法運(yùn)算和除法運(yùn)算”(A×AmodN、A×MmodN)作為一對(duì)運(yùn)算,按照“e”的位值,進(jìn)行重復(fù)的運(yùn)算。即,從“e”的最高位開始到最低位的各位的內(nèi)容,進(jìn)行“乘法運(yùn)算和除法運(yùn)算”。
關(guān)于冪剩余運(yùn)算,如上所示,反復(fù)進(jìn)行基本的求余運(yùn)算(mod計(jì)算)可以得到解,但其反復(fù)運(yùn)算的次數(shù)多至幾百~幾千次,用軟件也能很好地進(jìn)行處理。但是,用硬件來實(shí)現(xiàn)該求余數(shù)運(yùn)算本身、即除法運(yùn)算,必須有大規(guī)模的運(yùn)算電路和復(fù)雜的處理程序。為此,希望有所改善。通常,由于e、d、M、N等使用了約1024位的大的整數(shù),故即使使用高速指數(shù)計(jì)算法,在1次的RSA運(yùn)算中,也必須進(jìn)行平均約1500次的多重精度乘法運(yùn)算和余數(shù)計(jì)算。特別是,關(guān)于求余計(jì)算,提出了近似法、余數(shù)表方式、蒙哥馬利算法等多種高速化方法。
為了高速地處理以這樣的RSA密碼為代表的多種公開密鑰密碼中利用的冪剩余運(yùn)算,要求每一次的求余計(jì)算的高速化。蒙哥馬利算法是高速地進(jìn)行求余計(jì)算的算法。特別是,在乘法余數(shù)運(yùn)算中,由于能用移位來簡化除法運(yùn)算,故具有能高速地處理在公開密鑰密碼(RSA密碼等)中使用的冪剩余數(shù)運(yùn)算的特征。
另一方面,根據(jù)中國剩余定理(又稱“孫子定理”),可以用復(fù)合數(shù)為模的求余運(yùn)算來計(jì)算出以該復(fù)合數(shù)的互為素?cái)?shù)的各素因數(shù)為模的余數(shù)。如果將其應(yīng)用于1024位長RSA密碼處理,則作為實(shí)際上必須的硬件,不是1024位長的模N的冪剩余運(yùn)算電路,而只是以512位長的整數(shù)(在此,相當(dāng)于p和q)為模的運(yùn)算電路。因此,可與硬件的小型化聯(lián)系在一起。
由于執(zhí)行作為冪剩余運(yùn)算的基礎(chǔ)的求余運(yùn)算(mod計(jì)算)的程序非常復(fù)雜,故如上所述,其運(yùn)算電路變得大規(guī)?;?。因此,蒙哥馬利提出了不用前面那樣的一般的方法來進(jìn)行求余運(yùn)算(mod計(jì)算)、而是通過進(jìn)行“乘法運(yùn)算”和簡單的位串處理來得到解的解決方案。以下,簡單地說明蒙哥馬利提出的方法。說明作為實(shí)現(xiàn)求余運(yùn)算高速化的一種方法的蒙哥馬利算法。
蒙哥馬利算法是基于這樣的事實(shí)模N(N>1)和與模N互素的基數(shù)R(R>N)的用法容許僅當(dāng)T為被除數(shù),基數(shù)R為除數(shù)時(shí)進(jìn)行TR-1modN的計(jì)算,其中,N、R、和T是整數(shù)。被除數(shù)T是滿足0≤T<R·N的數(shù)。R-1是基數(shù)R關(guān)于模N的倒數(shù)。還可以考慮滿足R·R-1-N·N’=1的整數(shù)N’(0≤R-1<N、0≤N’<R)。再者,對(duì)于基數(shù)R,若用2的冪,基數(shù)R的除法運(yùn)算就可以用移位操作代替。因此,可實(shí)現(xiàn)T→TR-1mod(在被除數(shù)為T的TR-1mod)的計(jì)算的高速處理。
T→TR-1mod的算法MR(T)由下面的算法1給出。注意在算法1中已證明(T+m·N)/R必定整除。
(算法1)T→TR-1modN的算法Y=MR(T)由以下的方程給出M=(TmodR)·N′modR…(8)Y=(T+m·N)/R …(9)if Y≥N then Y=Y(jié)-NY<N then return Y對(duì)于單一的MR,只進(jìn)行TR-1modN計(jì)算,而不求出余數(shù)TmodN。于是,為了求出余數(shù)TmodN,如以下所示那樣用MR(T)與預(yù)先求出的R2modN的積再次進(jìn)行MR運(yùn)算即可。
MR(MR(T)·(R2modN))=(TR-1modN)·(R2modN)·R-1modN=TR-1·R2·R-1modN=TmodN這樣,可求出余數(shù)TmodN。
按利用上述冪剩余運(yùn)算的迭代平方乘積法(迭代平方法)的蒙哥馬利算法執(zhí)行的乘法余數(shù)運(yùn)算方法,如下所示。從密鑰e高位開始進(jìn)行檢索,在密鑰位的值為1的情況下,進(jìn)行MR(X·Y)的蒙哥馬利乘法余數(shù)運(yùn)算。
Y=Rr(Rr=R2modN(R=2k+2))X=MX=MR(X,Y)…(10)Y=MR(1·Y)…(11)for j=k to 1if ej==1 then Y=MR(X·Y)…(12)if j>1 then Y=MR(X·Y)…(13)endY=MR(1·Y)…(14)Y=Y(jié)modN…(15)式中,MR(X·Y)與MR(Y·X)相等,ej表示密鑰e的第j位(比特)。在512位長的整數(shù)的情況下,k=512,512位的冪剩余運(yùn)算可利用514位的蒙哥馬利乘法余數(shù)運(yùn)算和512位余數(shù)運(yùn)算來實(shí)現(xiàn)。
用硬件實(shí)現(xiàn)的最佳基數(shù)W的逐次計(jì)算,可以求出蒙哥馬利乘法余數(shù)運(yùn)算的結(jié)果P=MR(B·A),其方法如下。
W=2dN0′=N′modWP=0for j=0 to kM=(PmodW)·N0′…(16)P=((P+(AmodW)·B·W+M·N)/W)mod2k…(17)A=A/W…(18)end式中,d是依賴于硬件的正數(shù)數(shù)。因此,可以求出蒙哥馬利乘法余數(shù)運(yùn)算結(jié)果P。用d=1的基數(shù)2的逐次計(jì)算來求出514位蒙哥馬利乘法余數(shù)運(yùn)算結(jié)果P=MR(B·A),其方法如下。
N0′=N′mod2P=0for j=0 to 514M=(P mod 2)·N0′ …(19)P=((P+(Amod2)·B·2+M·N)/2)mod2154…(20)A=A/2…(21)end如上所述,為了實(shí)現(xiàn)冪剩余運(yùn)算,以往采用了下述的方法在硬件方面,對(duì)于512位長的冪剩余運(yùn)算使用蒙哥馬利法;在軟件方面,用中國剩余定理處理,用硬件實(shí)現(xiàn)的方法很多,實(shí)際上采用了各種各樣的方式。
但是,在現(xiàn)有的電路中,用圖8中示出的那樣的程序進(jìn)行了處理。即,采用安裝了在512位長的冪剩余運(yùn)算中使用蒙哥馬利法的電路的硬件,按原樣執(zhí)行了式(10)~(18)。例如,在ej==0時(shí),跳過式(12)。另一方面,在式(17)中執(zhí)行了每次全部的計(jì)算。因此,需要復(fù)雜的處理程序,期望實(shí)現(xiàn)進(jìn)一步的高速化。此外,由于希望有可減小電路規(guī)模、適合于LSI(大規(guī)模集成)化的電路,故必須盡可能簡化運(yùn)算處理、削減整體的計(jì)算量,可謀求提高處理速度。
發(fā)明內(nèi)容本發(fā)明是為了解決上述的課題而進(jìn)行的,其目的在于提供能實(shí)現(xiàn)高速處理的冪剩余運(yùn)算器。
按照本發(fā)明的某個(gè)方面的冪剩余運(yùn)算器包含寄存器,保持對(duì)使進(jìn)行蒙哥馬利乘法余數(shù)運(yùn)算時(shí)的一方的自變量為2倍的值與余數(shù)的模進(jìn)行了加法運(yùn)算的值;蒙哥馬利乘法余數(shù)運(yùn)算執(zhí)行部,與寄存器連接,參照在寄存器中已被保持的值,執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算;以及冪剩余運(yùn)算執(zhí)行部,與蒙哥馬利乘法余數(shù)運(yùn)算執(zhí)行部連接,在與蒙哥馬利乘法余數(shù)運(yùn)算執(zhí)行部之間進(jìn)行數(shù)據(jù)的輸入輸出,執(zhí)行冪剩余運(yùn)算。
通過在寄存器中保持在蒙哥馬利乘法余數(shù)運(yùn)算中頻繁地使用的值,可高速地執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算。
較為理想的是,冪剩余運(yùn)算執(zhí)行部與用二進(jìn)制數(shù)表示的冪指數(shù)的各位的值無關(guān)地在蒙哥馬利乘法余數(shù)運(yùn)算執(zhí)行部中執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算并執(zhí)行冪剩余運(yùn)算。
與冪指數(shù)的各位的值無關(guān)地始終執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算。因此,即使在將冪剩余運(yùn)算器用于加密裝置和解密裝置的情況下,可確保抗時(shí)序攻擊的性能。
更為理想的是,冪剩余運(yùn)算器還包含保持冪剩余運(yùn)算執(zhí)行部中的運(yùn)算模式的模式寄存器,冪剩余運(yùn)算執(zhí)行部根據(jù)在模式寄存器中已被保持的值,判斷是否執(zhí)行基于用二進(jìn)制數(shù)表示的冪指數(shù)的各位的值的蒙哥馬利乘法余數(shù)運(yùn)算,并執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算。
根據(jù)在模式寄存器中已被保持的值,判斷是否執(zhí)行基于用二進(jìn)制數(shù)表示的冪指數(shù)的各位的值的蒙哥馬利乘法余數(shù)運(yùn)算。因此,如果在測試時(shí)執(zhí)行基于用二進(jìn)制數(shù)表示的冪指數(shù)的各位的值的蒙哥馬利乘法余數(shù)運(yùn)算,在實(shí)際使用時(shí)與冪指數(shù)的各位的值無關(guān)地始終執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算,則可縮短測試時(shí)間,而且可確??箷r(shí)序攻擊的性能。
更為理想的是,冪剩余運(yùn)算執(zhí)行部根據(jù)用二進(jìn)制數(shù)表示的冪指數(shù)的各位的值,判斷是否執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算,并執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算。
根據(jù)用二進(jìn)制數(shù)表示的冪指數(shù)的各位的值,判斷是否執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算,并執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算。因此,有在出現(xiàn)1作為位的值之前的期間中預(yù)先知道蒙哥馬利乘法余數(shù)運(yùn)算的結(jié)果的情況。通過在這樣的情況下跳過處理,可高速地進(jìn)行處理。
更為理想的是,冪剩余運(yùn)算執(zhí)行部包含對(duì)二進(jìn)制數(shù)的位串進(jìn)行加法運(yùn)算的加法運(yùn)算器,加法運(yùn)算器包含將二進(jìn)制數(shù)的位串分割為各個(gè)規(guī)定的位、在分割后的位串相互間進(jìn)行加法運(yùn)算的多個(gè)子加法運(yùn)算器。
通過將加法運(yùn)算器分割為子加法運(yùn)算器來執(zhí)行流水線處理,可高速地進(jìn)行加法運(yùn)算。因此,可高速地執(zhí)行冪剩余運(yùn)算。
更為理想的是,冪剩余運(yùn)算器還包含與蒙哥馬利乘法余數(shù)運(yùn)算執(zhí)行部和冪剩余運(yùn)算執(zhí)行部連接的、供取出運(yùn)算的一部分并執(zhí)行的電路。
通過取出在冪剩余運(yùn)算時(shí)進(jìn)行的各種運(yùn)算并執(zhí)行,可實(shí)現(xiàn)多種加密處理。
通過參照附圖的后述的本發(fā)明的詳細(xì)的說明,本發(fā)明的上述和其它的目的、特征、方面和優(yōu)點(diǎn)會(huì)變得更加明白。
(四)附圖的簡單說明
圖1是示出冪剩余運(yùn)算電路的硬件結(jié)構(gòu)的框圖。
圖2是示出執(zhí)行在運(yùn)算電路內(nèi)設(shè)置的流水線處理的加法運(yùn)算器的硬件結(jié)構(gòu)的框圖。
圖3是冪剩余運(yùn)算處理的流程圖。
圖4~圖7是示出信號(hào)的時(shí)序的時(shí)序圖。
圖8是現(xiàn)有的冪剩余運(yùn)算處理的流程圖。
具體實(shí)施例方式參照?qǐng)D1,本發(fā)明的第1實(shí)施例的冪剩余運(yùn)算電路包含作為與外部總線的接口的I/F(接口)電路101;保持密鑰e的e寄存器102;保持進(jìn)行蒙哥馬利變換的乘數(shù)Y的Y寄存器103;保持密鑰N的N寄存器104;保持蒙哥馬利變換運(yùn)算時(shí)進(jìn)行的2B+N的值的B2N寄存器105;保持明文X的X寄存器106;進(jìn)行加密和解密用的運(yùn)算電路107;保持運(yùn)算結(jié)果P的P寄存器108;以及起到作為冪剩余運(yùn)算執(zhí)行時(shí)的狀態(tài)機(jī)作用的冪剩余控制電路109。
冪剩余運(yùn)算電路還包含起到作為蒙哥馬利乘法余數(shù)運(yùn)算和余數(shù)運(yùn)算的執(zhí)行時(shí)的狀態(tài)機(jī)作用的蒙哥馬利乘法余數(shù)、余數(shù)控制電路110;進(jìn)行加法運(yùn)算和減法運(yùn)算的運(yùn)算控制的加法運(yùn)算、減法運(yùn)算控制電路111;保持各種模式的模式寄存器112;保持指令的指令寄存器113;保持狀態(tài)的狀態(tài)寄存器114;用來進(jìn)行各種寄存器與運(yùn)算電路107之間的數(shù)據(jù)輸入輸出的內(nèi)部總線115。
在進(jìn)行冪剩余運(yùn)算時(shí),為了實(shí)現(xiàn)高速化,使用了蒙哥馬利法的乘法余數(shù)運(yùn)算,但在進(jìn)行該蒙哥馬利法的運(yùn)算[P=MR(B·A)]之前,進(jìn)行[2B+N]的計(jì)算,將其結(jié)果存儲(chǔ)在B2N寄存器105中。
說明蒙哥馬利法的MR(B·A)的運(yùn)算操作。在此,考慮B=X、A=Y(jié)的情況。首先,求[2B+N]。進(jìn)行[2B+N]的計(jì)算如下所述。運(yùn)算電路107將0與在N寄存器104中已被保持的值進(jìn)行加法運(yùn)算,存儲(chǔ)在P寄存器108中。運(yùn)算電路107使X寄存器106中保持的值為2倍,將該值與在P寄存器108中已被保持的值進(jìn)行加法運(yùn)算,寫入到P寄存器108中。蒙哥馬利乘法余數(shù)、余數(shù)控制電路110將P寄存器108中已被保持的值寫入到B2N寄存器105中。其次,按式(19)、(20)和(21)的運(yùn)算重復(fù)執(zhí)行515次。
在計(jì)算蒙哥馬利乘法余數(shù)運(yùn)算中的式(20)時(shí),在Amod2==1和M==1的情況下,從B2N寄存器105讀出數(shù)據(jù),用運(yùn)算電路107對(duì)經(jīng)內(nèi)部總線115讀出的數(shù)據(jù)與在P寄存器108中已被存儲(chǔ)的值進(jìn)行加法運(yùn)算。此外,在Amod2==0和M==1的情況下,從N寄存器104讀出數(shù)據(jù),用運(yùn)算電路107與在P寄存器108中已被存儲(chǔ)的值進(jìn)行加法運(yùn)算。在Amod2==0和M==0的情況下,執(zhí)行
的加法運(yùn)算。通過使在內(nèi)部總線115中流過的數(shù)據(jù)為0等來生成0。e寄存器102是保持密鑰e的寄存器,Y寄存器103是保持密鑰Y的寄存器,N寄存器104是保持模N的寄存器,X寄存器106是保持模X的寄存器,P寄存器108是保持在蒙哥馬利乘法余數(shù)運(yùn)算的式(19)和(20)中出來的值P的寄存器。
參照?qǐng)D2,說明在運(yùn)算電路107中設(shè)置的執(zhí)行流水線處理的加法運(yùn)算器。
該加法運(yùn)算器中,將進(jìn)行蒙哥馬利乘法余數(shù)運(yùn)算的加法運(yùn)算器的結(jié)構(gòu)分割為多個(gè)子加法運(yùn)算器,作成了減少加法運(yùn)算器的進(jìn)位的級(jí)數(shù)的結(jié)構(gòu)。加法運(yùn)算器包含子加法運(yùn)算器內(nèi)的進(jìn)位電路(SubC電路)727~741;在子加法運(yùn)算器內(nèi)表示發(fā)生進(jìn)位的可能性的進(jìn)位電路(LookC電路)742~752;用來在子加法運(yùn)算器間使進(jìn)位傳輸?shù)倪M(jìn)位電路(MainC電路)720和726;用來得到加法運(yùn)算結(jié)果的進(jìn)位電路(SlaveC電路)716~719和721~725;以及實(shí)際上進(jìn)行加法運(yùn)算處理的加法電路(adder)701~715。
進(jìn)位電路(LookC電路)742~752,假定在低位的子加法運(yùn)算器中發(fā)生了進(jìn)位,進(jìn)行位相互間的加法運(yùn)算,判斷發(fā)生進(jìn)位的可能性。
作為一例,說明執(zhí)行15位的流水線處理的加法運(yùn)算器。
在15位的情況下,從低位開始,定為4+5+6=15的級(jí)的數(shù)目是適當(dāng)?shù)摹J紫?,?級(jí)的子加法運(yùn)算器內(nèi)以普通的方式進(jìn)行加法運(yùn)算,檢測出進(jìn)位,可得到加法運(yùn)算結(jié)果。在5級(jí)的子加法運(yùn)算器中,利用SlaveC電路和加法電路可得到包含來自4級(jí)的子加法運(yùn)算器的進(jìn)位在內(nèi)的5級(jí)的加法運(yùn)算結(jié)果。此外,以另外的方式同時(shí)在SubC電路中檢測出只在5級(jí)內(nèi)的進(jìn)位。此外,在LookC電路中,假定從低位開始發(fā)生了進(jìn)位,檢測出進(jìn)位信號(hào)。
然后,MainC電路720根據(jù)來自4級(jí)的子加法運(yùn)算器的進(jìn)位信號(hào)選擇來自SubC電路735和LookC電路745的信號(hào)的哪一個(gè)信號(hào)進(jìn)位到下一個(gè)6級(jí)的子加法運(yùn)算器上。同樣地在6級(jí)的子加法運(yùn)算器中也得到加法運(yùn)算結(jié)果。
例如,設(shè)想在4級(jí)的子加法運(yùn)算器中進(jìn)行[1111+1110]的加法運(yùn)算的情況。在各位中的運(yùn)算如下所述。
0位0+1=1 沒有進(jìn)位1位1+1=0 有進(jìn)位2位1+1+1(來自1位的進(jìn)位)=1有進(jìn)位3位1+1+1(來自2位的進(jìn)位)=1有進(jìn)位此時(shí),從SubC電路730將「有進(jìn)位」的信號(hào)供給MainC電路720。于是,此時(shí)MainC電路720將從低位的子加法運(yùn)算器開始作為有進(jìn)位而進(jìn)行了加法運(yùn)算的LookC電路742~746的進(jìn)位作為5級(jí)的子加法運(yùn)算器的進(jìn)位輸出給6級(jí)的子加法運(yùn)算器。相反,如果從SubC電路730將「沒有進(jìn)位」的信號(hào)供給MainC電路720,則MainC電路720輸出SubC電路735的進(jìn)位。
在沒有以這種方式作為子加法運(yùn)算器來分割的情況下,由于14位的加法運(yùn)算必須有來自0位的進(jìn)位來進(jìn)行加法運(yùn)算,故需要14級(jí)的電路部分的時(shí)間,但如果分割為多個(gè)子加法運(yùn)算器,則來自0位的進(jìn)位用SubC電路727~730、MainC電路720、SlaveC電路721~725的10級(jí)部分的處理時(shí)間就可以。
例如,說明對(duì)
與
進(jìn)行加法運(yùn)算的情況。SubC電路727進(jìn)行第0位相互間的加法運(yùn)算(1+0)。將加法運(yùn)算結(jié)果(1)供給加法電路701。此外,將進(jìn)位(0)供給SubC電路728和加法電路702。加法電路701將從SubC電路727接受的值作為第0位的加法運(yùn)算結(jié)果來輸出。
SubC電路728進(jìn)行第1位的值(0和1)與來自第0位的進(jìn)位(0)的加法運(yùn)算(0+1+0)。將加法運(yùn)算結(jié)果供給加法電路702。此外,將進(jìn)位(0)供給SubC電路729和加法電路703。加法電路702對(duì)第0位的進(jìn)位(0)與第2位的加法運(yùn)算結(jié)果(1)進(jìn)行加法運(yùn)算,輸出第1位的加法運(yùn)算結(jié)果(1)。同樣,在加法電路703~715中,進(jìn)行著眼于與前面的位的進(jìn)位的位的加法運(yùn)算結(jié)果的加法運(yùn)算。
LookC電路742假定在4級(jí)的子加法運(yùn)算器中發(fā)生了進(jìn)位,進(jìn)行第4位的進(jìn)位的計(jì)算。即,執(zhí)行第4位的值相互間的加法運(yùn)算和與進(jìn)位(1)的加法運(yùn)算(0+1+1)。將運(yùn)算的結(jié)果的進(jìn)位供給LookC電路743。在LookC電路747中也進(jìn)行同樣的處理。
LookC電路743執(zhí)行第5位的值與來自LookC電路742的進(jìn)位的加法運(yùn)算(0+1+1),將運(yùn)算的結(jié)果的進(jìn)位(1)供給LookC電路744。在LookC電路744~746和748~752中也進(jìn)行同樣的處理。將LookC電路746的輸出供給MainC電路720。將LookC電路752的輸出供給MainC電路726。
SubC電路731進(jìn)行第5位相互間的加法運(yùn)算(0+1)。將加法運(yùn)算結(jié)果(1)供給加法電路705和SlaveC電路716。此外,將進(jìn)位(0)供給SubC電路732。在SubC電路736中也進(jìn)行同樣的處理。
SubC電路732進(jìn)行第6位相互間的加法運(yùn)算和與第5位的進(jìn)位(0)的加法運(yùn)算(0+1+0)。將加法運(yùn)算結(jié)果(1)供給加法電路706和SlaveC電路717。將進(jìn)位(0)供給SubC電路733。同樣,在SubC電路733~735中,進(jìn)行著眼于與前面的位的進(jìn)位的位的值的加法運(yùn)算。再有,將SubC電路735中的加法運(yùn)算結(jié)果只供給加法電路709。將SubC電路735中的進(jìn)位供給MainC電路720。在SubC電路736~741中也進(jìn)行同樣的處理。
SlaveC電路716對(duì)第3位的進(jìn)位(0)與第4位的加法運(yùn)算結(jié)果(1)進(jìn)行加法運(yùn)算,將進(jìn)位供給加法電路706和SlaveC電路717。在SlaveC電路717~719和721~725中也進(jìn)行同樣的處理。
MainC電路720在SubC電路730輸出的前級(jí)的子加法運(yùn)算器的進(jìn)位為1的情況下,將LookC電路的輸出供給SlaveC電路721,在進(jìn)位為0的情況下,將SubC電路735輸出的進(jìn)位供給SlaveC電路721。在MainC電路726中也進(jìn)行同樣的處理。
如以上已說明的那樣,進(jìn)行15位的數(shù)據(jù)相互間的加法運(yùn)算。即,在用SubC電路、LookC電路和MainC電路進(jìn)行了計(jì)算后,用SlaveC電路和加法電路進(jìn)行計(jì)算。這樣,經(jīng)過二階段來執(zhí)行加法運(yùn)算處理。
在上例所舉的15位中,沒有發(fā)生太大的級(jí)數(shù)目的差,但在更大的位的加法運(yùn)算器、例如130位中,在不分割的情況下,花費(fèi)129級(jí)部分的處理時(shí)間,而在分割了的情況下,用30級(jí)部分的處理時(shí)間即可。此外,將用來求出來自到達(dá)6級(jí)的子加法運(yùn)算器的進(jìn)位的0位的進(jìn)位的電路的級(jí)數(shù)定為5級(jí)(SubC電路727~730、MainC電路720的5級(jí)),將用來求出6級(jí)的子加法運(yùn)算器內(nèi)的進(jìn)位的電路的級(jí)數(shù)定為6級(jí)(SubC電路736~741和LookC電路747~752這兩者都有6級(jí))。通過做成這樣的結(jié)構(gòu),可做成即使在更大的位的加法運(yùn)算器中也幾乎沒有級(jí)數(shù)目差別的結(jié)構(gòu)。由此,對(duì)于時(shí)序等的電路設(shè)計(jì)變得容易,具有也可減小電路規(guī)模的效果。
再有,在130位的流水線的加法運(yùn)算器中,利用4級(jí)、5級(jí)、6級(jí)、7級(jí)、8級(jí)、9級(jí)、10級(jí)、11級(jí)、12級(jí)、13級(jí)、14級(jí)、15級(jí)和16級(jí)的子加法運(yùn)算器來構(gòu)成加法運(yùn)算器是適當(dāng)?shù)摹?br>
圖3是冪剩余運(yùn)算處理的流程圖。圖4是示出信號(hào)的時(shí)序的時(shí)序圖。
以往,在使用蒙哥馬利法的乘法余數(shù)運(yùn)算進(jìn)行冪剩余運(yùn)算的情況下,在檢索密鑰e的位且ej==1的情況下,執(zhí)行式(12)的[Y=MR(X·Y)],在ej==0的情況下,跳過即不執(zhí)行式(12)[Y=MR(X·Y)]。在本實(shí)施例中,與ej的值無關(guān)地始終執(zhí)行式(12)的[MR(X·Y)]。在使式(12)的運(yùn)算結(jié)果存儲(chǔ)在Y寄存器103中時(shí),檢驗(yàn)ej的值301,在ej==1的情況下,輸出Y寄存器寫入信號(hào)304,將運(yùn)算結(jié)果寫入到Y(jié)寄存器103中,在ej==0的情況下,不輸出Y寄存器寫入信號(hào)304,不將運(yùn)算結(jié)果寫入到Y(jié)寄存器103中。這樣,通過始終執(zhí)行式(12),可使冪剩余運(yùn)算時(shí)間為恒定。MR(X·Y)運(yùn)算信號(hào)302表示“H”時(shí)在運(yùn)算中。Y寄存器寫入信號(hào)303表示“H”時(shí)將數(shù)據(jù)寫入到Y(jié)寄存器103中。
如上所述,由于始終執(zhí)行式(12)的運(yùn)算,故運(yùn)算時(shí)間與密鑰的值無關(guān),是恒定的。因此,具有可確??箷r(shí)序攻擊的性能的效果。再有,所謂抗時(shí)序攻擊的性能,是指著眼于處理時(shí)間隨密碼文、密鑰的長度而變化的情況來進(jìn)行密碼的解讀。
在冪剩余運(yùn)算器中包含冪剩余控制電路109、蒙哥馬利乘法余數(shù)、余數(shù)控制電路110和加法運(yùn)算、減法運(yùn)算控制電路111。因此,通過單獨(dú)或組合起來使用這些控制電路,可獨(dú)立地執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算、余數(shù)運(yùn)算、存儲(chǔ)運(yùn)算、加法運(yùn)算、減法運(yùn)算、附加條件的加法運(yùn)算、附加條件的減法運(yùn)算等各種運(yùn)算。
這樣,通過能獨(dú)立地執(zhí)行構(gòu)成冪剩余運(yùn)算的各種運(yùn)算,可進(jìn)行RSA密碼以外的各種密碼的運(yùn)算。此外,在冪剩余運(yùn)算器因某種原因不工作的情況下,通過獨(dú)立地執(zhí)行各種運(yùn)算,可查明不工作的原因。
如以上所說明的那樣,在本實(shí)施例中,通過設(shè)置保持頻繁地使用的[2B+N]的結(jié)果的B2N寄存器105,可謀求蒙哥馬利乘法余數(shù)運(yùn)算的高速化和運(yùn)算電路的簡化。
本發(fā)明的第2實(shí)施例的冪剩余運(yùn)算器具有與第1實(shí)施例的冪剩余運(yùn)算器同樣的硬件結(jié)構(gòu)。因此,在此不重復(fù)進(jìn)行其詳細(xì)的說明。
圖5是示出第2實(shí)施例中的信號(hào)的時(shí)序的時(shí)序圖。在本實(shí)施例中,通過在模式寄存器112中設(shè)定規(guī)定的值,可使冪剩余運(yùn)算的執(zhí)行方法不同。
在跳過模式信號(hào)401為“H”的情況下,在ej==0時(shí),不運(yùn)算式(12),只運(yùn)算式(13)[Y=MR(Y·Y)]。在跳過模式信號(hào)401為“L”的情況下,進(jìn)行與第1實(shí)施例同樣的工作。
如上所述,由于能設(shè)定跳過式(12)的運(yùn)算的模式,故可謀求縮短測試時(shí)間。
本發(fā)明的第3實(shí)施例的冪剩余運(yùn)算器具有與第1實(shí)施例的冪剩余運(yùn)算器同樣的硬件結(jié)構(gòu)。因此,在此不重復(fù)進(jìn)行其詳細(xì)的說明。
圖6是示出第3實(shí)施例中的信號(hào)的時(shí)序的時(shí)序圖。
如果用通常的方法進(jìn)行冪剩余運(yùn)算,則式(11)的運(yùn)算結(jié)果為下式,Y=MR(1·Y)=1·R2·R-1modN=RmodN從最初的j=k開始到ej==0之間,如條件式那樣,在式(12)中Y的值不變化。因此,如果只考慮式(13)的運(yùn)算,則成為下式,Y=MR(Y·Y)=RmodN·RmodN·R-1modN=R·R·R-1modN=RmodN運(yùn)算結(jié)果是相同的。如上所述,在ej==1下,對(duì)式(12)[Y=MR(X·Y)]進(jìn)行運(yùn)算,在Y的值發(fā)生變化之前,即使對(duì)式(13)[Y=MR(Y·Y)]進(jìn)行運(yùn)算,Y的值也不變化。于是可知,在ej==1之前,即使不執(zhí)行式(12)和式(13)的運(yùn)算也沒有關(guān)系。
通常,為了使運(yùn)算時(shí)間為恒定,執(zhí)行了全部的運(yùn)算。但通過在模式寄存器112中設(shè)定值,使搜索模式信號(hào)501為“H”,在重復(fù)運(yùn)算(式(12)和式(13))中,在ej==1之前,可不執(zhí)行式(12)和式(13)的運(yùn)算而只執(zhí)行[j-1]的運(yùn)算。這樣,設(shè)置了檢驗(yàn)ej是否==1的模式。
如上所述,由于可設(shè)定跳過式(12)和式(13)的運(yùn)算的模式,故具有可謀求根據(jù)密鑰e的值而大幅度地縮短測試時(shí)間的效果。
本發(fā)明的第4實(shí)施例的冪剩余運(yùn)算器具有與第1實(shí)施例的冪剩余運(yùn)算器同樣的硬件結(jié)構(gòu)。因此,在此不重復(fù)進(jìn)行其詳細(xì)的說明。
圖7是示出第4實(shí)施例中的信號(hào)時(shí)序的時(shí)序圖。
在本實(shí)施例中,可在模式寄存器112中設(shè)定在第2實(shí)施例中已說明的跳過模式和在第3實(shí)施例中已說明的搜索模式這兩者的模式。
例如,在設(shè)定了兩者的模式的情況下,在ej==1之前,不執(zhí)行式(12)和式(13)的運(yùn)算。在一旦ej==1之后,對(duì)式(12)和式(13)都進(jìn)行運(yùn)算。其后,故根據(jù)ej的值,在ej==0時(shí),跳過式(12),只執(zhí)行式(13)。此外,在ej==1時(shí),執(zhí)行式(12)和式(13)兩者的運(yùn)算。
如以上所說明的那樣,通過在模式寄存器112中設(shè)定跳過模式和搜索模式這兩者的模式,可謀求比第2實(shí)施例或第3實(shí)施例更加縮短測試時(shí)間。
按照本發(fā)明,通過在寄存器中保持在蒙哥馬利乘法余數(shù)運(yùn)算中頻繁地使用的值,可高速地執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算。
以上,參照附圖詳細(xì)地說明了本發(fā)明,但這些說明始終是例示性的,而不是在任何意義上來限定本發(fā)明,本發(fā)明的要旨和范圍只由后附的權(quán)利要求書來限定,包含與權(quán)利要求的范圍均等的意義和范圍內(nèi)的全部的變更。
權(quán)利要求
1.一種冪剩余運(yùn)算器,其特征在于,包含寄存器,保持對(duì)使進(jìn)行蒙哥馬利乘法余數(shù)運(yùn)算時(shí)的一方的自變量為2倍的值與余數(shù)的模進(jìn)行了加法運(yùn)算的值;蒙哥馬利乘法余數(shù)運(yùn)算執(zhí)行部,與上述寄存器連接,參照在上述寄存器中已被保持的值,執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算;以及冪剩余運(yùn)算執(zhí)行部,與上述蒙哥馬利乘法余數(shù)運(yùn)算執(zhí)行部連接,在與上述蒙哥馬利乘法余數(shù)運(yùn)算執(zhí)行部之間進(jìn)行數(shù)據(jù)的輸入輸出,執(zhí)行冪剩余運(yùn)算。
2.如權(quán)利要求1中所述的冪剩余運(yùn)算器,其特征在于上述冪剩余運(yùn)算執(zhí)行部與用二進(jìn)制數(shù)表示的冪指數(shù)的各位的值無關(guān)地在蒙哥馬利乘法余數(shù)運(yùn)算執(zhí)行部中執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算并執(zhí)行冪剩余運(yùn)算。
3.如權(quán)利要求2中所述的冪剩余運(yùn)算器,其特征在于還包含保持冪剩余運(yùn)算執(zhí)行部中的運(yùn)算模式的模式寄存器,上述冪剩余運(yùn)算執(zhí)行部根據(jù)在上述模式寄存器中已被保持的值,判斷是否執(zhí)行基于用二進(jìn)制數(shù)表示的冪指數(shù)的各位的值的蒙哥馬利乘法余數(shù)運(yùn)算,并執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算。
4.如權(quán)利要求2中所述的冪剩余運(yùn)算器,其特征在于上述冪剩余運(yùn)算執(zhí)行部根據(jù)用二進(jìn)制數(shù)表示的冪指數(shù)的各位的值,判斷是否執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算,并執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算。
5.如權(quán)利要求2中所述的冪剩余運(yùn)算器,其特征在于上述冪剩余運(yùn)算執(zhí)行部包含對(duì)二進(jìn)制數(shù)的位串進(jìn)行加法運(yùn)算的加法運(yùn)算器,上述加法運(yùn)算器包含將二進(jìn)制數(shù)的位串分割為各個(gè)規(guī)定的位、在分割后的位串相互間進(jìn)行加法運(yùn)算的多個(gè)子加法運(yùn)算器。
6.如權(quán)利要求1中所述的冪剩余運(yùn)算器,其特征在于還包含保持冪剩余運(yùn)算執(zhí)行部中的運(yùn)算模式的模式寄存器,上述冪剩余運(yùn)算執(zhí)行部根據(jù)在上述模式寄存器中已被保持的值,判斷是否執(zhí)行基于用二進(jìn)制數(shù)表示的冪指數(shù)的各位的值的蒙哥馬利乘法余數(shù)運(yùn)算,并執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算。
7.如權(quán)利要求6中所述的冪剩余運(yùn)算器,其特征在于上述冪剩余運(yùn)算執(zhí)行部根據(jù)用二進(jìn)制數(shù)表示的冪指數(shù)的各位的值,判斷是否執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算,并執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算。
8.如權(quán)利要求6中所述的冪剩余運(yùn)算器,其特征在于上述冪剩余運(yùn)算執(zhí)行部包含對(duì)二進(jìn)制數(shù)的位串進(jìn)行加法運(yùn)算的加法運(yùn)算器,上述加法運(yùn)算器包含將二進(jìn)制數(shù)的位串分割為各個(gè)規(guī)定的位、在分割后的位串相互間進(jìn)行加法運(yùn)算的多個(gè)子加法運(yùn)算器。
9.如權(quán)利要求6中所述的冪剩余運(yùn)算器,其特征在于還包含與上述蒙哥馬利乘法余數(shù)運(yùn)算執(zhí)行部和上述冪剩余運(yùn)算執(zhí)行部連接的、取出運(yùn)算的一部分并執(zhí)行的電路。
10.如權(quán)利要求1中所述的冪剩余運(yùn)算器,其特征在于上述冪剩余運(yùn)算執(zhí)行部根據(jù)用二進(jìn)制數(shù)表示的冪指數(shù)的各位的值,判斷是否執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算,并執(zhí)行蒙哥馬利乘法余數(shù)運(yùn)算。
11.如權(quán)利要求10中所述的冪剩余運(yùn)算器,其特征在于上述冪剩余運(yùn)算執(zhí)行部包含對(duì)二進(jìn)制數(shù)的位串進(jìn)行加法運(yùn)算的加法運(yùn)算器,上述加法運(yùn)算器包含將二進(jìn)制數(shù)的位串分割為各個(gè)規(guī)定的位、在分割后的位串相互間進(jìn)行加法運(yùn)算的多個(gè)子加法運(yùn)算器。
12.如權(quán)利要求10中所述的冪剩余運(yùn)算器,其特征在于還包含與上述蒙哥馬利乘法余數(shù)運(yùn)算執(zhí)行部和上述冪剩余運(yùn)算執(zhí)行部連接的、取出運(yùn)算的一部分并執(zhí)行的電路。
13.如權(quán)利要求1中所述的冪剩余運(yùn)算器,其特征在于上述冪剩余運(yùn)算執(zhí)行部包含對(duì)二進(jìn)制數(shù)的位串進(jìn)行加法運(yùn)算的加法運(yùn)算器,上述加法運(yùn)算器包含將二進(jìn)制數(shù)的位串分割為各個(gè)規(guī)定的位、在分割后的位串相互間進(jìn)行加法運(yùn)算的多個(gè)子加法運(yùn)算器。
14.如權(quán)利要求13中所述的冪剩余運(yùn)算器,其特征在于還包含與上述蒙哥馬利乘法余數(shù)運(yùn)算執(zhí)行部和上述冪剩余運(yùn)算執(zhí)行部連接的、取出運(yùn)算的一部分并執(zhí)行的電路。
15.如權(quán)利要求1中所述的冪剩余運(yùn)算器,其特征在于還包含與上述蒙哥馬利乘法余數(shù)運(yùn)算執(zhí)行部和上述冪剩余運(yùn)算執(zhí)行部連接的、取出運(yùn)算的一部分并執(zhí)行的電路。
全文摘要
本發(fā)明的課題是一種冪剩余運(yùn)算電路,它包含:作為與外部總線的接口的I/F(接口)電路101;保持密鑰e的e寄存器102;保持進(jìn)行蒙哥馬利變換的乘數(shù)Y的Y寄存器103;保持密鑰N的N寄存器104;保持蒙哥馬利變換的運(yùn)算時(shí)進(jìn)行的2B+N的值的B2N寄存器105;保持明文X的X寄存器106;進(jìn)行加密和解密運(yùn)算的運(yùn)算電路107;保持運(yùn)算結(jié)果P的P寄存器108;起到作為冪剩余運(yùn)算執(zhí)行時(shí)的狀態(tài)機(jī)的作用的冪剩余控制電路109;起到作為蒙哥馬利乘法余數(shù)運(yùn)算和余數(shù)運(yùn)算的執(zhí)行時(shí)的狀態(tài)機(jī)的作用的蒙哥馬利乘法余數(shù)、余數(shù)控制電路110;以及進(jìn)行加法運(yùn)算和減法運(yùn)算的運(yùn)算控制的加法運(yùn)算、減法運(yùn)算控制電路111。
文檔編號(hào)G06F7/60GK1368674SQ0114085
公開日2002年9月11日 申請(qǐng)日期2001年9月21日 優(yōu)先權(quán)日2001年1月30日
發(fā)明者朝見和生 申請(qǐng)人:三菱電機(jī)株式會(huì)社, 三菱電機(jī)系統(tǒng)Lsi設(shè)計(jì)株式會(huì)社