專利名稱:模冪運(yùn)算電路和系統(tǒng)及模冪運(yùn)算方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于諸如信息網(wǎng)、交通、銀行、醫(yī)療、銷售等領(lǐng)域的加密和解密系統(tǒng),尤其涉及用于實(shí)現(xiàn)信息加密、解密的一種模冪運(yùn)算電路、系統(tǒng)和模冪運(yùn)算方法。
隨著信息交流技術(shù)的發(fā)展,人們?cè)絹碓阶⒅卮_保信息網(wǎng)的安全(防止竊取數(shù)據(jù)和破壞數(shù)據(jù))。為此,信息加、解密技術(shù)不僅用于通信領(lǐng)域,而且還用于諸如交通、銀行、醫(yī)療、銷售等方面。因而,要求此類加、解密技術(shù)能以簡(jiǎn)便的原理實(shí)現(xiàn)高度的安全。
為了便于了解此技術(shù),現(xiàn)簡(jiǎn)要講述信息的加密和解密。
在密碼技術(shù)中,“非對(duì)稱密碼算法”品質(zhì)優(yōu)越。該算法內(nèi),加密鑰和解密鑰各不相同,不能輕易地從他算出某一鑰。
非對(duì)稱密碼算法的代表包括采用模冪運(yùn)算的RSA密碼、Elgamal密碼、Rabin密碼和Williams密碼。在密碼算法的應(yīng)用方面,有“數(shù)字標(biāo)記”系統(tǒng),而且有將該系統(tǒng)標(biāo)準(zhǔn)化的趨勢(shì)。待標(biāo)記化數(shù)字和系統(tǒng)的代表包括RSA標(biāo)記法、Elgamal標(biāo)記法、Schnorr標(biāo)記法和DSA(數(shù)字標(biāo)記算法),這些方法都用位長(zhǎng)較長(zhǎng)的模冪運(yùn)算。因此,為了實(shí)現(xiàn)數(shù)字標(biāo)記系統(tǒng),必不可少的是開發(fā)能在短時(shí)間內(nèi)完成位長(zhǎng)較長(zhǎng)的模冪運(yùn)算的運(yùn)算單元。
RSA、Egamal、Rabin和Willams等密碼基本上都用式(1)所示模冪運(yùn)算、該式意為XY被N除后的余數(shù)。
XYmodN (1)而且,式中X代表要加密(解密)的明語文本(明文),Y和N代表加密(解密)用的密鑰。
可用模冪運(yùn)算方便地完成信息的加、解密,并通過加長(zhǎng)操作數(shù)X、Y和N的位長(zhǎng),使密碼分析困難。
然而,操作數(shù)位長(zhǎng)加長(zhǎng),則完成模冪運(yùn)算費(fèi)時(shí)。關(guān)鍵在于如何用短時(shí)間完成位長(zhǎng)不短的模冪運(yùn)算。
以RSA密碼為例介紹采用模冪運(yùn)算的實(shí)際加、解密及其用法。
(1)RSA密碼加密、解密概要加密采用下式
C=Memodn (2)解密采用下式M=Cdmodn (3)式中M代表要加密的明文,C代表已加密的明文,即密文。式(2)中,e和n代表加密鑰;式(3)中,d和n代表解密鑰。這些鑰預(yù)先賦予下列條件n=p×q (4)1==e×dmod{LCM(p-1,q-1)} (5)式中,“==”意為式的左右兩端相似,LCM意為最小公倍數(shù)。外,p和q互為素整數(shù)。e和n為公開鑰,d、n和q為保密鑰。
上述式(4)和(5)均定義加密算法模冪運(yùn)算數(shù)值狀態(tài)。式(4)定義大素?cái)?shù)p和q(互為素?cái)?shù))的乘積。素?cái)?shù)p和q均為奇數(shù),因而其乘積必然為奇數(shù)。式(5)表示c和d的乘積(c×d)被式(4)所示p、q減1所得值的最小公倍數(shù)除后,余數(shù)為1。
根據(jù)式(4)、(5),明文M用式(2)加密,加密后的明文M(密文C)用式(3)解密。
(2)加、解密例參閱圖2,講述發(fā)送者A和接收者B完成的處理方法。作為限定例,設(shè)“發(fā)送者A將明文M加密為密文C后發(fā)出,接收者B將C解密為M”(用數(shù)字標(biāo)記)。
發(fā)送者A完成的處理A所備明文MA借助A本人的保密鑰dA加密,以制成標(biāo)記文本CA(標(biāo)記)。
CA=MAdAmodnA(6)
用B的公開鍵eB制備加密標(biāo)記文本cA(加密)cA=CAeBmodnB (7)將cA發(fā)給B。
借助接收者自己的保密鑰dB將B收到的加密標(biāo)記文本cA解密(解密)cAdBmodB==(CAeBmodnB)dBmodnB (8)若CAeB=X,則式(8)可變?yōu)?CAeBmodnB)dBmodnB=(XmodnB)dBmodnB(9)式(9)中,若XmodnB=Y(jié),即X被nB除的余數(shù)為Y且其商為k時(shí),則該式可表為X=k×nB+YY=X-k×nB(10)因此,將式(10)替換式(9)右邊相應(yīng)部分時(shí),式(9)表為(XmodnB)dBmodnB=Y(jié)dBmodnB=(X-k×nB)dBmodnB (11)當(dāng)用常數(shù)ai(i=1、2…)擴(kuò)展式(11)的(X-k×nB)dB時(shí),(X-k×nB)dB可表為(X-k×nB)dB=(XdB-a1×XdB-1×nB+a2×XdB-2…-ai×nBdB)(12)當(dāng)將式(12)替換式(11)相應(yīng)部分時(shí),可得
(XmodnB)dBmodnB=Y(jié)dBmodnB=(X-k×nB)dBmodnB=(XdB-a1×XdB-1×nB+a2×XdB-2×nB2…-ai×nBdB)modnB=XdBmodnB-a1×XdB-1×nBmodnB+a2×XdB-2×nB2modnB-…ai×nBdBmodnB此式的第2及其后各式均可除以nB,因而可略。故此式表為=XdBmodnB (13)上文設(shè)CAeB=X,因而X還原為CAeB時(shí),可得=(CAeB)dBmodnB(14)歸納上述過程,則上式如下CAdBmodnB==(CAeBmodnB)dBmodnB=(CAeB)dBmodnB因eB和dB滿足式(5),利用某整數(shù)h,可將eB和dB表為下式eB×dB=h(pB-1)+1若用Fermat小定理(即對(duì)素?cái)?shù)p和與p互為素?cái)?shù)的任意整數(shù)X,Xp-1modp=1成立),上式表為CAeB×dBmodpB=CAh(p-1)=1modpB=CA×CAh(p-1)modpB=CAmodpB (15)因?yàn)镃A即便為pB的倍數(shù),上式也滿足,所以對(duì)所有的CA,CAeB×dB-CA都能被pB除。同樣,CAeB×dB-CA可被qB除。又因pB和qB為不同素?cái)?shù),CAeB×dB-CA可被nB=pB×qB除。因此。下式成立
CAdBmodnB==CAeB×dBmodnB==CAmodnB(=CA)用發(fā)送者的公開鍵eA制成明文(標(biāo)記認(rèn)證)。
CAeAmdnA==(MAdA)eAmodnA==(MAeA)dAmodnA用與上述解密過程相同的加法計(jì)算,則可得=MA如上所述,在式(4)、(5)的條件下確定e、d和n的值,并基本上采用式(1)所示模冪運(yùn)算方式,從而明文可加密,加密的明文可解密。
例如,若n=15,e=3,p=5,q=3,d=11(n=p×q=5×3=15,e×dmod(p-1)×(q-1)=3×11mod 4×2=33mod 8=1),明文M=13,則加密和解密分別進(jìn)行如下C=Memodn=133mod 15=2197mod 15=7M=Cdmodn=711mod 15=1977326743mod 15=13證實(shí)將明文M=12解密。
(3)模冪運(yùn)算方法現(xiàn)講述加、解密用的模冪運(yùn)算方法。
用下列1“流程1”所示迭代平方積法(整數(shù)e二進(jìn)制擴(kuò)展為e=ek-1…e1e0),執(zhí)行模冪運(yùn)算A=MemodN。bdginA=1for I=k-1 down to 0 dobeginA=A2modN (16)
if ei=1 then A=A×MmodN (17)endend圖3的流程圖表示迭代平方積法。
首先,初始值1載入寄存器A。該寄存器所存的值自乘的積A×A除以N,求余數(shù)。該余數(shù)存入寄存器a。然后,將寄存器a所存值載入寄存器A。此時(shí),若指數(shù)e為1,則寄存器A所存值乘以明文M,其積除以N,求余數(shù),存入寄存器a。再將寄存器a的內(nèi)容存入寄存器A。若指數(shù)e為0,則不進(jìn)行上述計(jì)算,寄存器A所存值保留不作任何運(yùn)算。從e的最高有效位到最低有效位,重復(fù)進(jìn)行上述計(jì)算,從而最后存入寄存器A的值為模冪運(yùn)算的解。
如上所述,此運(yùn)算的基礎(chǔ)是乘和除(模運(yùn)算),如式(16)和(17)所示。乘法對(duì)初始值為1的A完成A×A或A×M,除法對(duì)每次乘法所得值進(jìn)行modN。按照“e”的二進(jìn)位值反復(fù)進(jìn)行一對(duì)乘和除的運(yùn)算(A×AmodN或A×MmodN)。即按“e”的最高和最低有效位的內(nèi)容進(jìn)行乘和除。
上文已述的模冪運(yùn)算可由反復(fù)進(jìn)行基本的余數(shù)運(yùn)算(或模運(yùn)算)可求解,其重復(fù)的次數(shù)最多達(dá)幾百至幾千,因而即使用軟件也能處理這種重復(fù)。然而,模運(yùn)算本身需要大規(guī)模的運(yùn)算電路和復(fù)雜的處理過程以完成除法,所以需要加以改進(jìn)。
因此,本發(fā)明的目的是提供較簡(jiǎn)單且有效地進(jìn)行模運(yùn)算的方法和裝置。
按照本發(fā)明的一個(gè)方面,模乘運(yùn)算用的方法和裝置對(duì)應(yīng)于第1公式f(A,B)=A×BmodN,采用Montgomery替換運(yùn)算的第2公式f(A,B)=A×B×R′modN執(zhí)行第1公式的模乘運(yùn)算(“mod”指模運(yùn)算)(R′表示對(duì)2的冪且略大于模N的R,滿足R×R′modn=1的值),以計(jì)算整數(shù)A和B的乘積除以整數(shù)N后的余數(shù),此方法和裝置包括執(zhí)行第1替換算法f′1(RSmodn×AT,BU)的步驟或手段(S指0、1、2中之一,T指0或1,U指0或1)。以及執(zhí)行第2替換運(yùn)算f′2{R2-SmodN×AT×f′1(RSmodN×AT,BU),RSmodN×A1-T×B1-U)}的步驟或手段。
按照本發(fā)明的另一方面,進(jìn)行模冪運(yùn)算的方法和裝置在模冪運(yùn)算的迭代平方積方法中,對(duì)應(yīng)于第1公式f(A,B)=A×BmodN,采用Montgomery替換運(yùn)算的第2公式f′(A,B)=A×B×R′modN執(zhí)行第1公式的模積運(yùn)算,求得整數(shù)A和B的乘積除以N后的余數(shù),從而執(zhí)行模冪運(yùn)算一般方程式F(M,E)=MEmodN(“mod”指模運(yùn)算)(R′表示對(duì)2的冪且略大于模N的R,滿足R×R′modN=1的值),計(jì)算整數(shù)M的E(整數(shù))次方除以整數(shù)N后的余數(shù),此方法和裝置包括執(zhí)行第1替換運(yùn)算f′1(f′1,f′2)的步驟和手段(初始f′1=f′1(RmodN,RmodN)),執(zhí)行第2替換運(yùn)算f′2(f′1,M×RmodN)的步驟和手段,以及執(zhí)行第3替換運(yùn)算f′3(f′2,1)的步驟和手段,其中第3步驟安排在第1和第2執(zhí)行步驟按整數(shù)E規(guī)定的次數(shù)進(jìn)行重復(fù)之后。
按照本發(fā)明的又一方面,加密裝置制備以加密鑰K和E對(duì)明文進(jìn)行加密而得的密碼,其中采用執(zhí)行模冪運(yùn)算的迭代平方積法中,對(duì)應(yīng)于公式f(A,B)=A×BmodN的Montgmery替換運(yùn)算公式f′(A,B)=A×B×R′modN,此加密裝置(設(shè)X×RmodN和Y×RmodN已知)執(zhí)行第1替換運(yùn)算f′1(X×RmodN,X×RmodN)=X2RmodN的手段、執(zhí)行第2替換運(yùn)算f′2(X×RmodN,Y×RmodN)=X×Y×RmodN的手段,以及執(zhí)行第3替換運(yùn)算f3(X×Rmodn,1)=XmodN的手段。
圖1為本發(fā)明的流程圖。
圖2為密文處理限定例說明框圖。
圖3為模冪運(yùn)算流程圖。
圖4為本發(fā)明硬件示意框圖。
圖5為本發(fā)明第1實(shí)施例示意框圖。
圖6為乘法和加法的解釋單元。
圖7為本發(fā)明第1實(shí)施例解釋操作的硬件映像。
圖8為本發(fā)明第2實(shí)施例示意框圖。
圖9為本發(fā)明第3實(shí)施例示意框圖。
圖10為本發(fā)明第4實(shí)施例示意框圖。
圖11為本發(fā)明第4實(shí)施例解釋操作的硬件映像。
圖12為本發(fā)明第4實(shí)施例解釋操作的運(yùn)算例。
圖13為本發(fā)明第5實(shí)施例示意框圖。
圖14和圖15為本發(fā)明第5實(shí)施例解釋操作的硬件映像。
圖16為本發(fā)明第5實(shí)施例解釋操作的運(yùn)算例。
圖17為本發(fā)明第6實(shí)施例示意框圖。
圖18為本發(fā)明第7實(shí)施例示意框圖。
圖19為本發(fā)明第8實(shí)施例示意框圖。
圖20為本發(fā)明第9實(shí)施例示意框圖。
圖21為計(jì)算N′的流程圖。
圖22為計(jì)算N′和R′的流程圖。
如上文所述,在模冪運(yùn)算中,進(jìn)行基本模運(yùn)算的過程非常復(fù)雜,因而運(yùn)算電路規(guī)模大。為此,Montgomery提出一種方案,通過進(jìn)行乘法和簡(jiǎn)單的二進(jìn)制位串處理求得模運(yùn)算的解,而不用上述一般方法進(jìn)行模運(yùn)算。本發(fā)明基本上利用Montgomery建議的方案,因而現(xiàn)簡(jiǎn)述該方案。然而,本發(fā)明的特征在于一些縮短各運(yùn)算操作時(shí)間的措施。
模運(yùn)算中,R定義為2的冪且略大于模N,而且“modN乘”(意為計(jì)算(一值×一值)/(值N)的余數(shù))中R的反值定義為R′(R×R′modN=1成立)。還定義滿足R×R′-N×N′=1和0<N′<R的關(guān)系的N′(N′為Montgomery方案中N的反值)。此時(shí),例如進(jìn)行M(X)=XmodN形式的模運(yùn)算,則該形式由下式替換M′(X)=X×R′modN(18)因此,進(jìn)行流程2所示函數(shù)REDC(X)的計(jì)算方法,則不必依靠一般方法(只作乘和除),就能求得模運(yùn)算的解。然而,流程2計(jì)算模運(yùn)算的解,而非計(jì)算模冪運(yùn)算的解。由上述函數(shù)獲得式(18)的解為t或t-N。函數(shù)REDC(X)函數(shù)REDC(X)m=(XmodR)×N′modR (19)t=(X+m×N)/R (20)if t<Nreturn t(t結(jié)果) (21)else retirn t-N(t-N結(jié)果)(22)
上述函數(shù)包含采用運(yùn)算要素N和N′的乘法和采用運(yùn)算要素R的除法。由于已定義R=2n,用R的除法,其商的值大于被除數(shù)2n,其余數(shù)則小于2n。因此,式(19)的模運(yùn)算只要審查小于2n的值即可,式(20)的除法僅審查等于或大于2n的值即可。也就是說,僅用乘法和加法即能求得模運(yùn)算的解,不必實(shí)質(zhì)上進(jìn)行除運(yùn)算(模運(yùn)算)。
為了參考,現(xiàn)以式(19)和(20)講述m、R和N的關(guān)系。
在式(19)中,m×N=((XmodR)×N′modR)×N==X×N×N′modR==X×(R×R-1)modR==X×R×R′modR-XmodR==-XmodRX+m×N==X+(-XmodR)==0modR此方程式含意為X+m×N除以R時(shí),余數(shù)為0。即,X+m×N可被R除盡。
因?yàn)閄+m×N為“X”與“N的倍數(shù)”的和,即,(X+m×N)modN==Xmod N+m×NmodN==XmodN,所以從式(20)得t×RmodN==XmodN。若兩邊乘R′,則t×R×R′mod N==tmod N==X×R′mod N。
若上式X×R′modN中的X為計(jì)算modN或modR(后文講述)的乘積值,則X<N×N<R×N<R×R。(因?yàn)閙是modR的執(zhí)行結(jié)果,故m<R。于是,m×N<R×N。
又因?yàn)閄<R<N,X+m×N<R×N+R×N=2R×N,所以下式成立t=(X+m×N)/R<2Nt<2N
若t大于N,則以上式兩邊減N,得下式t-N<N由此式可知,t-N是受modN后的值。
現(xiàn)補(bǔ)充說明式(20)t=(X+m×N)/R的計(jì)算和t計(jì)算的完成。
X+m×N必須為R的倍數(shù),因而例如在R=2576時(shí),X+m×N中小于576位的值均為0。于是,式(20)中t的計(jì)算分為下列兩種。
(i)X不是R的倍數(shù)此時(shí)X+m×N和R的位串作為映像表示如下R=1000…0000X=????????…????m×N=????????…????X+m×N=??????000…0000在式(20)的計(jì)算中,因?yàn)閠必然作為整數(shù)值求得,故X+m×N成為R的倍數(shù)。因此,X+m×N為上述位串映像。有下劃線的部分為t的解。其原因是X+m×N為R的倍數(shù),小于R的X與m×N相加結(jié)果必然為0,而用?表示的值原本非0,故在加法過程中會(huì)產(chǎn)生任何大于R的進(jìn)位。于是,忽略小于R的X值和m×N值,計(jì)算下式以求解t=(大于R的X值)+(大于R的m×N值)+1(ii)X是R的倍數(shù)這種情況下,X和R的位串作為映像表示如下R=1000…0000X=?????000…0000此時(shí),式(19)的XmodR為0,故m=0。若m=0,式(20)的計(jì)算為t=X/R。t必然求得整數(shù)值,可由下式得其解t=(大于R的X值)可根據(jù)小于R的X的值是否為0,判斷X是否為R的倍數(shù)。這意味著t的計(jì)算不需要對(duì)X的全部位長(zhǎng)進(jìn)行計(jì)算,可減少計(jì)算量和計(jì)算時(shí)間。
在t計(jì)算完成方面,函數(shù)REDC(X)計(jì)算結(jié)果為0<t<2n范圍的值,因而N<t時(shí),必須再計(jì)算t-N,如流程2所示。然而,模冪運(yùn)算過程完成的函數(shù)REDC(X)中t的計(jì)算結(jié)果,在t<R范圍中即使存在N<t的關(guān)系,也仍舊要進(jìn)行后續(xù)的計(jì)算。其原因是后面進(jìn)行的模運(yùn)算消去此過程殘留的N值。
設(shè)模冪運(yùn)算過程的計(jì)算結(jié)果為MmodN=S,則下列關(guān)系成立M=k1×N+S=(k1-1)×N+N+S因此,考慮此時(shí)模運(yùn)算中殘留N+S,則在下一模運(yùn)算(例如模冪運(yùn)算的A2modN,參閱圖3)中進(jìn)行下列過程,再次作模運(yùn)算M1=A×A=(N+S)×(N+S)=N2+2×N×S×S2于是,M1modn=(N2+2×N×S×S2)modN==S2mod N上式的含義是消去先前模運(yùn)算遺留的N值。即使在A×MmodN的模運(yùn)算中計(jì)算M1,也獲得相同的結(jié)果。甚至在Montgomery方法中,也是這樣。
為了簡(jiǎn)便,用短位長(zhǎng)的實(shí)際數(shù)值為例進(jìn)行講述。
設(shè)N=13(11010),R=(1000),上次計(jì)算函數(shù)REDC(X)所得t=15(1111),且其間關(guān)系為N≤t<R<2N。雖然此時(shí)t的第4位為“0”,但t本身的值還未獲得模運(yùn)算的純解。然而,t未超過位長(zhǎng)N,適合作為下一模冪運(yùn)算A×A×R′modN或A×M×R′modN的替換值。即,由于下面進(jìn)行的A×A和A×M乘法所得值不超過規(guī)定位長(zhǎng)(上述數(shù)值例中,為4位×2=8位),能繼續(xù)進(jìn)行具有規(guī)定位長(zhǎng)的“R′modN乘”的計(jì)算。
t可表為t=15=13+2=N+2。其含意為modN計(jì)算中,上次函數(shù)REDC(X)所得t的值為“尚留N的值”。將t值原樣代入A,則計(jì)算A×A×R′modN如下A×A×R′modN=(N+2)×(N+2)×R′modN=(N2+4N+4)×R′modN==N2×R′modN+4N×R′modN+4×R′modN==4×R′modN此計(jì)算與不用上次函數(shù)REDC(X)所得t值(t=N+2),而用modN運(yùn)算純解t=2計(jì)算A×A×R′N時(shí),具有相同結(jié)果。
(實(shí)例)對(duì)X=44123,R=28和N=199計(jì)算M′(X)=X×R′modN。
從關(guān)系式R×R′modN=1和R×R′-N×N′=1,得R′=7,N′=9。因此,M′(X)=44123×7mod 199=13=0Dh成立、用函數(shù)REDC=(X)求得上述解。
由X=44123=AC5Bh,R=100h,N=199=C7h和N′=9h,得(函數(shù)REDC(X))m=(XmodR)×N′modR=5Bh×9hmodR=333hmodR=33ht=(X+m×N)/R=(AC5Bh+33h×C7h)/R=D400h/R=D4h純解為t-N=D4h-C7h=0Dh,但t×t×R′modH仍舊執(zhí)行(下式1)。
1.對(duì)t=D4ht×t=D4h×D4h=AF90hm=(XmodR)×N′modR=90h×9hmodR=510h mod R=10h
t=(X+m×N)/R=(AF90h+10h×C7h)/R=BC00h/R=BCh2.對(duì)t=0Dht×t=0Dh×0Dh=00A90hm=(XmodR)×N′modR=A9h×9hmodR=5F1h mod R=F1ht=(X+m×N)/R=(00AF9h+10h×C7h)/R=BC00h/R=BCh上述式1和2的計(jì)算結(jié)果如下劃線所示,具有相同的值。
以上結(jié)果時(shí)減少操作時(shí)間是重要的。即,N的最高有效位為第(n-1)時(shí),可對(duì)所得t的第n位為1時(shí)進(jìn)行t-N的運(yùn)算,對(duì)第n位為0時(shí)進(jìn)行后續(xù)的運(yùn)算。
通常,對(duì)操作數(shù)長(zhǎng)576位的模冪運(yùn)算,R=2576。此時(shí),若式(20)的計(jì)算結(jié)果地超過576位(576位的數(shù)字出現(xiàn)溢出),則t≥R。而且,此時(shí)t-N的計(jì)算由下列公式進(jìn)行t-N=(576位低端的t值)+(N的反值)+1由于密碼算法中N的值為奇數(shù),通過對(duì)N求“反”。并將其最低有效位改為1,可得N的反值與1之和。
流程2所示執(zhí)行Montgmery算法用的函數(shù)REDC僅求得該算法的解。即,如式(18)所示,采用一特殊數(shù)值以方便計(jì)算。為了求得采用modN乘以無R′的方程的解,需要借助某種運(yùn)算將流程2所示Montgomery算法的解變回?zé)oR′的數(shù)值。
本發(fā)明中,利用下列特性消去Motgomery算法的特殊值R′。
M′(X)=X×R′modN中,當(dāng)X為(X×R)時(shí),
M′(X×R)=(X×R)R′modN=XmodN當(dāng)X為(X×RmodN)時(shí),M′(X×RmodN)=(X×RmodN)R′modN=XmodN換句話說,通過將Montgomery算法用于?×R或?×RmodN類型的方程中,消去算法的特殊值R′,變成?modN型方程。
因此,該特性用于流程1所示采用迭代平方積法的模冪運(yùn)算中,則如流程3所示,求得模冪運(yùn)算的解。確切地說,通過在流程3所示式(24)、(25)和(26)中各modN運(yùn)算中進(jìn)行流程2,方便地求得式(24)、(25)和(26)的解,因而不難獲得采用流程3的模冪運(yùn)算的解。
(流程3)beginA=1×RmodN=RmodN (23)fori=k-1 down to 0 dobeginA=A2×R′modN(24)if ei=1 then A=A×(M×RmodN)×R′modN(25)endA=A×R′modN (26)end流程1與流程3的最大區(qū)別在于存入寄存器A的式(23)初始值不是1,并考慮后面的Montgomery運(yùn)算來存入RmodN(1×RmodN);式(25)采用M×RmodN的值,而不是式(17)的M;新執(zhí)行式(26)。通過預(yù)先在寄存器A存入RmodN,消去式(24)、(25)和(26)中的R′。由圖1所示流程圖表達(dá)流程3的迭代平方積法。
執(zhí)行運(yùn)算之前,必須先求出圖1預(yù)先需要的RmodN、M×RmodN和N′。RSA密碼等用的模冪運(yùn)算中,“N”的最高有效位bn-1和最低有效位b0為0。因此,這時(shí)R選為2n。于是,RmodN=R-N。通過對(duì)N求“反”,并將其最低有效位改為1,可方便地算出R-N。根據(jù)關(guān)系式R×R′modN=1,R×R′-N×N′=1,0<R和N′<R,可得下列關(guān)系式R′<N′,N′-R<R-N[關(guān)于M×RmodN]借助先前求得的R2modN,用Montgomery算法,由下列計(jì)算可得M×RmodN。
M×(R2modN)×R′modN=M×R2×R′modn=M×RmodN例如,設(shè)R=2512,則2512N=2×2512modN==2×(RmodN)modN=A用上述A作為初始值執(zhí)行下列流程4時(shí),可得R2modB的解。beginfori=1 to 9begin M(A,A)=A×A×R′modNendend流程4的計(jì)算過程如下i=1A=2513modN M(A,A)=2513×2513×2-512modN==2514modNi=2A=2514modN M(A,A)=2514×2514×2-512modN==2516modNi=3A=2516modN M(A,A)=2516×2516×2-512modN==2520modN
1=4A=2520modN M(A,A)=2520×2520×2-512modN==2528modNi=5A=2528modN M(A,A)=2528×2528×2-512modN==2544modNi=6A=2544modN M(A,A)=2544×2544×2-512modN==2576modNi=7A=2576modN M(A,A)=2576×2676×2-512modN==2640modNi=8A=2640modN M(A,A)=2640×2640×2-512modN==2769modNi=9A=2768modN M(A,A)=2768×2768×2-512modN==21024modN最后結(jié)果就是待求的R2moeN的解。
在此計(jì)算中求得的R′modN乘以M后,用相乘所得的積作為流程2的X,求得M×RmodN。
如上所述,流程2的計(jì)算包括用N和N′的乘法和用R的除法。因此,可僅用乘法和加法求得其解,不必實(shí)質(zhì)上執(zhí)行除法(模運(yùn)算)。
如上所述,可制備圖1流程圖預(yù)先需要的RnodN、M×RmodNt和N′的制。
現(xiàn)執(zhí)行圖1的流程圖。
首先,將預(yù)先求得的RmodN存入寄存器A(查為存儲(chǔ)器,下同)。作為初始值。把預(yù)先求得的M×RmodN存入寄存器B。M×RmodN存入寄存器B的原因是確保后面的處理所用式(25)的M×RmodN。
其次,執(zhí)行式(24)。即,執(zhí)行Montgomery算法。通過執(zhí)行上述流程2,求得式(24)。計(jì)算寄存器A所存值平方后得到的值作為式(19)的X,求m。如上所述,由采用乘法和R的模運(yùn)算完成此計(jì)算。因?yàn)槎xR=2n,采用R的模運(yùn)算僅審查被除數(shù)中小于或等于2n的值即可。于是,用所得的m執(zhí)行式(20)。計(jì)算寄存器A所存值平方后得到的值作為式(20)的X,求t。如上所述,由乘法、加法和采用R的除法完成此計(jì)算。因?yàn)槎xR=2n,采用R的除法僅審查被除數(shù)中大于或等于2n的值即可。此計(jì)算的結(jié)果存入寄存器A。
然后,將寄存器a所存的值存入寄存A。
判斷冪e所含的二進(jìn)制位。若為1,則執(zhí)行式(25)。即執(zhí)行Montgomery算法A×B×R′modN。如上所述,通過執(zhí)行流程2,求得式(25)。計(jì)算寄存器A所存值和寄存器B所存值的乘積作為式(19)的X,求m。用得到的m執(zhí)行式(20)。計(jì)算寄存器A所存值和寄存器B所存值的乘積作為式(20)的X,求t。計(jì)算結(jié)果存入寄存器a。寄存器a所存計(jì)算結(jié)果存入寄存器A。
若冪e所含位為0,則不進(jìn)行式(25)的計(jì)算,處理進(jìn)入下一步驟。
判斷是否冪e所有的位進(jìn)行上述算術(shù)運(yùn)算(執(zhí)行式(24)和(25))。若否,則處理返回執(zhí)行式(24)的步驟;若是,則執(zhí)行式(26)。如上所述,由執(zhí)行流程2求得式(26)。用存于寄存器A的值作為式(19)的X進(jìn)行計(jì)算,求m。然后,用得到的m執(zhí)行式(20)。用存于寄存器A的值作為式(20)的X,求t。
于是,完成上述一的的操作。
將上述模冪運(yùn)算的解法歸納如下(1)模冪運(yùn)算(MemodN)。
(2)運(yùn)用迭代平方積法(A×AmodN和A×MmodN的迭代)。
(3)由于除法復(fù)雜,用montgomery法(M′(X)=X×Rmodn)取代A×AmodN和A×MmodN的計(jì)算。
(4)可用函數(shù)REDC(X)實(shí)現(xiàn)M′(X)=X×RmodN。(函數(shù)REDC可將modN的運(yùn)算轉(zhuǎn)換為modR的形式,避免除法復(fù)雜)。
現(xiàn)參照附圖講述實(shí)際實(shí)現(xiàn)本發(fā)明的硬件。
圖4為說明一種實(shí)際硬件的示意框圖。
圖4中,數(shù)字401、403、405、407、409、411、413和415表示存儲(chǔ)器或寄存器、各方框所描述的值存于寄存器401、403、405、407、409、411和413、寄存器405對(duì)應(yīng)于圖1所述寄存器A,寄存器415對(duì)應(yīng)于寄存器a。選擇器417用來按照存放冪e的1位左移寄存器409的指示,將寄存器405或寄存器407的輸出傳給運(yùn)算單元419。選擇器417對(duì)應(yīng)于圖1中“e移位和進(jìn)位”的執(zhí)行部分。即,冪e部分為1時(shí),將M×Rmod N傳送給運(yùn)算單元,而e為0時(shí),不傳送。在圖1所示流程圖的初始階段,求得A2時(shí),將寄存器405的輸出傳送給運(yùn)算單元。
運(yùn)算單元419包含乘法器單元和除法器單元,并執(zhí)行乘法和函數(shù)REDC(X)。
現(xiàn)參照?qǐng)D,詳述實(shí)現(xiàn)本發(fā)明的硬件。
實(shí)施例1結(jié)構(gòu)模冪運(yùn)算MemodN的計(jì)算方法按照冪e位值的內(nèi)容,根據(jù)規(guī)定的程序,用上述Montgomery算法反復(fù)進(jìn)行A2×R′mod N……(24)和A×B×R′mod N……(25)兩種運(yùn)算(B相當(dāng)于式(25)中“M×Rmod N”所處部分),并且為圖1和流程3所述,最后執(zhí)行式(26)如下A×1×R′mod N (26)因此,通過提供完成所述三種模運(yùn)算的運(yùn)算單元(后文稱為協(xié)同處理機(jī)),可用此協(xié)同處理機(jī)求得模冪運(yùn)算的解(可用任一軟件或硬件控制方法實(shí)現(xiàn)運(yùn)算的重復(fù)進(jìn)程)。
本發(fā)明涉及具有三種模運(yùn)算(或三種運(yùn)算模式)的協(xié)同處理機(jī)。
圖5為說明本發(fā)明第1實(shí)施例的模運(yùn)算協(xié)同處理機(jī)的示意框圖。該圖中,連接各方框?qū)捈^線代表傳送數(shù)據(jù)的總線。
本發(fā)明的模運(yùn)算協(xié)同處理機(jī)包含定時(shí)/控制電路T/C,用于供給整個(gè)協(xié)同處理機(jī)的操作定時(shí),并對(duì)運(yùn)算單元的各電路提供對(duì)應(yīng)于三種運(yùn)算操作中的一種的控制信號(hào)。此外,還包含存放Montgomery法運(yùn)算值的多個(gè)運(yùn)算值存儲(chǔ)器Smem、N′mem、Nmem、Mmem、A′mem、WImem、Whmem。本發(fā)明的模運(yùn)算協(xié)同處理機(jī)又包含作乘法和加法用的高速乘法器/加法器Mul/Add、作加法用的高速加法器Add、存儲(chǔ)乘數(shù)值用的乘數(shù)存儲(chǔ)寄存器Xi-reg、存儲(chǔ)被乘數(shù)用的被乘數(shù)存儲(chǔ)寄存器Yi-reg,以及存儲(chǔ)高速加法器Add所生成高端數(shù)位值寄存器RH。
高速加法器Add、乘數(shù)存儲(chǔ)寄存器Xi-reg、被乘數(shù)存儲(chǔ)寄存器Yi-reg和被加數(shù)存儲(chǔ)寄存器Au-reg具有暫時(shí)存放運(yùn)算儲(chǔ)存儲(chǔ)器讀出值的功能,并與高速乘法器/加法器Mul/add的輸入位長(zhǎng)對(duì)應(yīng)。
高速乘法器/加法器mul/Add是一種特定位長(zhǎng)的乘法器/加法器,乘法運(yùn)算時(shí),向其提供寄存器Xi-reg和Yi-reg各自的輸出值作為輸入值,加法運(yùn)冪時(shí),向其提供寄存器Au-reg的輸出值作為輸入值。高速乘法器/加法器的輸出饋入下一級(jí)的高速加法器Add作為加法輸入值。
高速加法器Add是一種特定位長(zhǎng)的加法器,對(duì)Mul/Add的輸出值與寄存器RH的輸出值求和。高速加法器Add的高端數(shù)位提供給寄存器RH或運(yùn)算值存儲(chǔ)器,低端數(shù)位提供給運(yùn)算值存儲(chǔ)器。
操作現(xiàn)講述圖5所示電路的操作。
(式(24)A2×R′mod N的實(shí)現(xiàn)方法)A的值存于運(yùn)算值存儲(chǔ)器A′mem和WImem雙方,N′的值存于N′mem,N的值存于Nmem。因?yàn)镹和N′的值為加密/解密鑰,其值由密碼系統(tǒng)運(yùn)營(yíng)者對(duì)數(shù)據(jù)發(fā)送者/接收者決定。R的值根據(jù)N的值決定。A的值由執(zhí)行上述Rmod N決定。
將模式1信號(hào)提供給定時(shí)/控制電路T/C,從而執(zhí)行式(24)A2×R′mod N如下。
首先,進(jìn)行A×A的計(jì)算。
從存儲(chǔ)器A′mem將對(duì)應(yīng)于Mul/Add輸入位長(zhǎng)的值取入寄存器Xi-reg。同樣,將對(duì)應(yīng)于Mul/Add輸入位長(zhǎng)的值從存儲(chǔ)器WImen取入寄存器Yi-reg。
如圖6所示,對(duì)于乘法運(yùn)算,在運(yùn)算值的位長(zhǎng)(例如16位)超過Mul/Add的乘法輸入處理位長(zhǎng)(例如4位)時(shí),重復(fù)進(jìn)行一單元的乘法和加法運(yùn)算,其次數(shù)(4×4=16次)對(duì)應(yīng)于運(yùn)算值的位長(zhǎng)。
圖7所示硬件映像詳細(xì)表達(dá)上述操作。
此運(yùn)算操作意味著存儲(chǔ)器A′men中地址A′3、A′2、A′1和A′0所存的值后得到的值存入存儲(chǔ)器Whmem和WIeme的地址Wh3、Wh2、Wh1、Wh0、WI3、WI2、WI1、和WI0上。
(乘加單元1)將存于存儲(chǔ)器WImen中地址WI0處的值(被乘數(shù))取入寄存器Yi-reg,將存儲(chǔ)器A′men中地址A′0處的值(乘數(shù))取入寄存器Xi-reg。然后,Mul/Add使乘數(shù)和被乘數(shù)相乘,并將乘積提供給高速加法器Add。此乘加單元1中不需要數(shù)字定位,所以假設(shè)從寄存器Ai-reg提供給Mul/Add的被加數(shù)為0(使寄存器Ai-reg的值為0,或調(diào)整Ai-reg所存的儲(chǔ),使之不提供給Mul/Add)。此外,將高電平信號(hào)提供給高速加法器Add的通過端,使寄存器RH的內(nèi)容不被加。在存儲(chǔ)器A′mem的值和存儲(chǔ)器WImem的值相乘時(shí),因?yàn)槌思訂卧?運(yùn)算結(jié)果的低端數(shù)位為此乘法最后運(yùn)算結(jié)果的最低有效位,所以該低端數(shù)位存入存儲(chǔ)器WImem的最低有效址WI0,作為此乘法的最后運(yùn)算結(jié)果。(圖7中,此結(jié)果存于加底線的地址處。)乘加單元1的運(yùn)算結(jié)果的高端數(shù)位存入寄存器RH,以及下一乘加單元作數(shù)字定位。
(乘加單元2)寄存器Yi-reg保持已存值(被乘數(shù)),寄存器Xi-reg取入存于存儲(chǔ)器A′mem中地址A′1處的值(乘數(shù))。然后,Mul/Add將乘數(shù)乘以被乘數(shù),并提供該乘積給高速加法器Add。此乘加單元2中,從寄存器Ai-reg提供給Mul/Add的被加數(shù)為0(使Ai-reg的值為0,或調(diào)整Ai-reg所存值,使之不提供給Mul/Add)。將低電平信號(hào)提供給高速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元1運(yùn)算結(jié)果的高端數(shù)位)加到Mul/Add的輸出上。乘加單元2運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)點(diǎn)Whmen的地址Wh0處,而其高端數(shù)位存入寄存器RH,以便在下一乘加單元作數(shù)字定位。
(乘加單元3)寄存器Yi-reg保持已存值(被乘數(shù)),寄存器Xi-reg取入存儲(chǔ)器A′mem中地址A′2處所存值(乘數(shù))。然后,Mul/Add將乘數(shù)乘以被乘數(shù),并提供該乘積給高速加法器Add。此乘加單元3中,設(shè)從寄存器Ai-reg提供給Mul/Add的被加數(shù)為0(使Ai-reg)的值為0,或調(diào)整A-i-reg所存值,使之不提供給Mul/Add)。將低電平信號(hào)提供給高速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元1運(yùn)算結(jié)果的高端數(shù)位)與Mul/Add的輸出相加。乘加單元3運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)器Whmem的地址Wh1處,而其高端數(shù)位存入寄存器RH,以便下一乘加單元作數(shù)字定位。
(乘法單元4)寄存器Yi-reg保持已存值(被乘數(shù)),寄存器Xi-reg取入存儲(chǔ)器A’men中地址A’3處所存值(乘數(shù))。然后,Mul/ADD將乘數(shù)乘以被乘數(shù),并提供該乘積給定高速加法器Add。此乘加單元4中,設(shè)從寄存器Ai-reg提供給Mul/Add的被加數(shù)為0(使Ai-reg的值為0,或調(diào)整Ai-reg所存值,使之不提供給Mal/Add)。將低電平信號(hào)提供給高速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元1運(yùn)算結(jié)果的高端數(shù)位)與Mul/Add的輸出相加。乘加單元4運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)器Whmem的地址Wh1處,而其高端數(shù)位存入寄存器RH,以便下一乘加單元作數(shù)字定位。
(乘法單元5)寄存器Yi-reg取入存儲(chǔ)器WI men中地址WI1處所存值(被乘數(shù)),寄存器Xi-reg取入存儲(chǔ)器A’men中地址A’0處所存值(乘數(shù)),寄存器Ar-reg取入存儲(chǔ)器Whmem中地址WH0處的值(被加數(shù))。然后,Mul/ADD將乘數(shù)乘以被乘數(shù),并提供該乘積給高速加法器Add。此乘加單元5中,將低電平信號(hào)提供給高速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元4運(yùn)算結(jié)果的高端數(shù)位)不被加。乘加單元5運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)器WImem的地址WI1處,而其高端數(shù)位存入寄存器RH,以便下一乘加單元作數(shù)字定位。
(乘法單元6)寄存器Yi-reg保持已存值(被乘數(shù)),寄存器Xi-reg取入存儲(chǔ)器A’men中地址A’1處所存值(乘數(shù)),寄存器Ai-reg取入存儲(chǔ)器Whmem中Wh1處存值(被加數(shù))。然后,Mnl/ADD將乘數(shù)乘以被乘數(shù),并提供該乘積給定高速加法器Add。此乘加單元6中,將低電平信號(hào)提供給高速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元5運(yùn)算結(jié)果的高端數(shù)位)與Mul/Add的輸出相加。乘加單元6運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)器Whmem的地址Wh0處,而其高端數(shù)位存入寄存器RH,以便下一乘加單元作數(shù)字定位。
(乘法單元7)寄存器Yi-reg保持已存值(被乘數(shù)),寄存器Xi-reg取入存儲(chǔ)器A’men中地址A’1處所存值(乘數(shù)),寄存器Ai-reg取入存儲(chǔ)器Whmem中Wh2處所存值(被加數(shù))。然后,Mul/ADD將乘數(shù)乘以被乘數(shù),并提供該乘積給定高速加法器Add。此乘加單元7中,將低電平信號(hào)提供給高速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元6運(yùn)算結(jié)果的高端數(shù)位)與Mul/Add的輸出相加。乘加單元7運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)器Whmem的地址Wh1處,而其高端數(shù)位存入寄存器RH,以便下一乘加單元作數(shù)字定位。
(乘法單元8)寄存器Yi-reg保持已存值(被乘數(shù)),寄存器Xi-reg取入存儲(chǔ)器A’men中地址A’3處所存值(乘數(shù)),寄存器Ai-reg取入存儲(chǔ)器Whmem中Wh3所處存值(被加數(shù))。然后,Mul/ADD將乘數(shù)乘以被乘數(shù),并提供該乘積給定高速加法器Add。此乘加單元8中,將低電平信號(hào)提供給ym速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元1運(yùn)算結(jié)果的高端數(shù)位)與Mul/Add的輸出相加。乘加單元8運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)器Whmem的地址Wh1處,而其高端數(shù)位存入寄存器RH,以便下一乘加單元作數(shù)字定位。
如圖7所示,按照上述單元執(zhí)行乘加9至16。于是,存儲(chǔ)器A’mem所存儲(chǔ)與存儲(chǔ)器WImem所存值相乘所得的值(即A×A)以Whmem-WImem的形式存入(“-”不是減號(hào))。
例如,在計(jì)算8位×8位時(shí),64h×F5h的計(jì)算結(jié)果為6572h的情況下,其高端數(shù)位65h存于存儲(chǔ)器Whmem,低端數(shù)位72h存于存儲(chǔ)器WImem。
然后,用函數(shù)REDC以Montgomery法進(jìn)行模運(yùn)算。如上所述,Montgomery法中,若進(jìn)行操作數(shù)位長(zhǎng)為n位的模冪運(yùn)算,則R=2n。存在具有這種關(guān)系且位長(zhǎng)為n的R’和N’的值。由于A×A的值以Whmem-WImem的形式存儲(chǔ),m的計(jì)算如下m=(XmodR)×N’modR=(Whmem-WImem)modR×N’modR式中,(XmodR)為X除R后的余數(shù),所以審查小于R的值,從而上式為
m=(WImem)×(N’mem)modR上式表示(WImem)×(N’mem)除以R后的余數(shù),因而作(WImem)×(N’mem)后的結(jié)果低端n位的值等于m。
較具體地說,在按照A×A的計(jì)算進(jìn)行(WImem)×(N’mem)的計(jì)算,并將其結(jié)果以A’mem×Mmem的形式存入A’mem和Mmem兩個(gè)存儲(chǔ)器時(shí),存儲(chǔ)器Mmem所存的值為m。
此外,t的計(jì)算如下t=(X+m×N)/R=[(Whmem-WImem)+(Mmen)×(Nmem)]/R為了求得上述的解,按照A×A進(jìn)行(Mmem)×(Nmem)的計(jì)算,并將其結(jié)果以A’mem-Mmem的形式存入A’men和Mmem兩個(gè)存儲(chǔ)器。隨后進(jìn)行以下計(jì)算。
Mmem’1+WImen(低端數(shù)位加法) (27)A’mem’1+Whmen+式(27)溢出值(高端數(shù)位加法) (28)此時(shí),式(28)要求出t。
再看,由于等于或小于R的值必然為0,而且式(27)的計(jì)算結(jié)果為0,所以不必存入存儲(chǔ)器。在式(27)的計(jì)算中,雖然考慮出現(xiàn)數(shù)字溢出的情況,但這時(shí),在式(28)的運(yùn)算中,將1提供給圖5所示Mul/Add的+1端。顯然,借助本發(fā)明的協(xié)同處理機(jī),能方便地進(jìn)行計(jì)算。
式(28)所得值存入A’mem和Mmem二存儲(chǔ)器。出現(xiàn)數(shù)字溢出時(shí),在進(jìn)位標(biāo)起CF寫入1。
CF為1時(shí),表明t>N,因而需要計(jì)算t-N。由下列計(jì)算求得t-N。+WImem (29)“反Nmem”意為對(duì)Nmem所存值求“反”的結(jié)果。
在密碼算法器,Nmem所存N的值為奇數(shù),通過計(jì)算Nmem取補(bǔ)數(shù)1,并將最低有效位改為1,求得式(29)中的反Nmem+1)。借助提供1給圖5所示寄存器Xi-reg的Inv端(計(jì)算Xi-reg所存值取補(bǔ)數(shù)1),實(shí)現(xiàn)上述運(yùn)算。值A(chǔ)存于存儲(chǔ)器WImem,值B存于存儲(chǔ)器Smem,Montgmory法的值N’存于存儲(chǔ)器N’mem,值N存于存儲(chǔ)器Nmem。
將模式2信號(hào)提供給定時(shí)/控制電路T/C,執(zhí)行式(25)A×B×R’modN如下。
首先,進(jìn)行A×B的計(jì)算。
將與Mul/Add輸入位長(zhǎng)對(duì)應(yīng)的值從Smem取入寄存器Xi-reg。同樣,將與Mul/Add輸入位長(zhǎng)對(duì)應(yīng)的值從WImem取入寄存器Yi-reg。
除了提供給Xi-reg的值取自存儲(chǔ)器Smem外,A×B的計(jì)算與A×A的相同。
然后,用函數(shù)REDC,以Montgomery法進(jìn)行模運(yùn)算。其計(jì)算方法與A×A時(shí)相同,所得結(jié)果存于A’mem和WImem的存儲(chǔ)器。
進(jìn)行模冪運(yùn)算時(shí),反復(fù)計(jì)算式(24)和(25)。然而,通過采用上述計(jì)算實(shí)現(xiàn)方法,式(24)和(25)的計(jì)算結(jié)果存于A’mem和WImem二存儲(chǔ)器。因此,各式計(jì)算開始時(shí),運(yùn)算值不需要初始化,可順暢地反復(fù)計(jì)算。A值存于存儲(chǔ)器WImem,Montgomery法的N’值存于存儲(chǔ)器N’mem,N值存于存儲(chǔ)器Nmem。
將模式3信號(hào)提供給定時(shí)/控制電路T/C,執(zhí)行式(26)A×R’modN如下。
此次的式(26)中,不必質(zhì)行A×?。因此,僅完成采用Montgomery法的模運(yùn)算。
模運(yùn)算中m的計(jì)算方法實(shí)質(zhì)上與A×A時(shí)相同。在計(jì)算結(jié)果以A’mem-WImem的形式存入存入A’mem和WImem二存儲(chǔ)器時(shí),WImem的值就是m的值。
進(jìn)而,計(jì)算t如下。
t=(X+m×N)/R=[(WImem)×(Nmem)所得R以上的值]+1 (30)式(26)的計(jì)算中,上述X為A,無R以上的值(認(rèn)為是0)。因此,不必如式(24)實(shí)現(xiàn)方法所述完成R以上的值(Whmem)的加法運(yùn)算。又因(X+m×N)必然為R的倍數(shù),不必加上式(30)右邊所示X的值,而代之以用“[(WImem)×(Nmem)所得R以上的值1+1”求得其解。這是因?yàn)槊艽a算法采用模運(yùn)算時(shí),本計(jì)算中A的值不為0。
因此,式(30)中,先計(jì)算(WImen)×(Nmen),其結(jié)果可用A’men-WImen的形式存入A’men和WImen二存儲(chǔ)器。該結(jié)果在A’mem中得到的值為所求的解。(本運(yùn)算操作的執(zhí)行,使模冪運(yùn)算的全部終止,因而可省略WImen的存儲(chǔ))。在將此時(shí)所得最終結(jié)果存入A’men中最低有效位的定時(shí)點(diǎn),將1提供給圖5所示+1端,執(zhí)行式(30)中的加1運(yùn)算。
如上所述,按照第一實(shí)施例,配備具有規(guī)定位長(zhǎng)的乘法器/加法器(乘法器和加法器可分開配備)作為運(yùn)算單元的核心,而且由定時(shí)/控制信號(hào)發(fā)生電路對(duì)布置在其外圍的電路提供控制信號(hào),從而能用Montgomery法或模冪運(yùn)算實(shí)現(xiàn)位長(zhǎng)不短的模運(yùn)算。根據(jù)這樣的系統(tǒng),能用具有規(guī)定位長(zhǎng)的運(yùn)算器構(gòu)成其核心,可減小電路規(guī),適合LSI。
(實(shí)施例2)(結(jié)構(gòu))圖8為本發(fā)明實(shí)施例的模運(yùn)算協(xié)同處理機(jī)的示意框圖。
除實(shí)施例1的組成部分(圖5)外,實(shí)施例2還包含一種檢測(cè)運(yùn)算值為0的狀態(tài),并控制下面的運(yùn)算操序列的電路。
具體地說,圖8的“ZeroC”(“0控”)部分代表此控制電路。該電路檢測(cè)0運(yùn)算值,以控制后續(xù)運(yùn)算操作序列,具有饋入高速加法器Add輸出信號(hào)的輸入端,還有一輸出端。由該輸出端產(chǎn)生信號(hào),對(duì)T/C部分生成的定時(shí)/控制信號(hào)和協(xié)同處理機(jī)中各電路的工作信號(hào)施加預(yù)定的控制。
(操作)實(shí)施例1在式(24)和(25)實(shí)現(xiàn)方法中所述的函數(shù)REDC的計(jì)算中,先前乘法運(yùn)算結(jié)果所得的X值可分為以下2種情況(a)是R的倍數(shù)此時(shí)先前計(jì)算所得值(WImen)為0。
(b)不是R的倍數(shù)此時(shí)先前計(jì)算所得值(WImen)不為0。
此實(shí)施例中,控制電路ZeroC檢測(cè)R以下的X值(A×B的值)是否為0,并按該檢測(cè)結(jié)果執(zhí)行后續(xù)運(yùn)算操作序列如下。
在(a)的情況下,顯然,XmodR=0,故m=0。因而,此時(shí)不必計(jì)算m。
t的計(jì)算如下t=(X+m×N)/R=X/R=Whmem (31)這表示A×A和A×B計(jì)算結(jié)果的高端數(shù)位本身就是t的值。因而,這種情況下的硬件處理中,將存儲(chǔ)Whmen所存的值原樣存入A’men和Whmen二存儲(chǔ)器中,為下一重復(fù)運(yùn)算操作做準(zhǔn)備。即,R以上的X值(由先前的計(jì)算求得)為0,則不必計(jì)算t。這意味著計(jì)算t時(shí),不必計(jì)算全部位長(zhǎng)。
在(b)的情況下,用和實(shí)施例1相同的方式進(jìn)行求m的計(jì)算,其結(jié)果以A’men-Whmen的形式存入A’men和WImen二存儲(chǔ)器。將WImen所存的值取為m的值。
t的計(jì)算如下。
t=(X+m+N)/R=WHmen+[(WImem)×(Nmem)所得R以上的值]+1(32)通過計(jì)算(WImen)×(Nmen)求得式(32)的解,所得結(jié)果以A’men-WImen的形式存入A’men和WImen二存儲(chǔ)器后,計(jì)算下式
(A’men)×1+(Whmen)+1 (33)其原因是X+m×N的值必然為R的倍數(shù),不必特意計(jì)算R以下的值。式(33)中,在最低有效位的計(jì)算定時(shí)點(diǎn),提供1給圖5所示+1端,以執(zhí)行式(33)的加1運(yùn)算。
式(33)所得計(jì)算結(jié)果存入A’men和WImen二存儲(chǔ)器,當(dāng)出現(xiàn)數(shù)字溢出時(shí),進(jìn)行標(biāo)志CF寫入1。后面的處理與實(shí)施例1相同。
如上所述,根據(jù)實(shí)施例2,增添檢測(cè)運(yùn)算值為0的狀態(tài),并控制后續(xù)運(yùn)算操作序列的控制電路(能用與乘法器/加法器位長(zhǎng)相當(dāng)?shù)碾娐芬?guī)模構(gòu)成,屬小規(guī)模電路),可謀求省去實(shí)施例1所述協(xié)同處理機(jī)中的存儲(chǔ)器Mmen,免掉一些運(yùn)算操作。因此,可獲得硬件減少且操作時(shí)間縮短的效果。
(實(shí)施例3)(結(jié)果)圖9為本發(fā)明實(shí)施例3的模運(yùn)算協(xié)同處理機(jī)示意框圖。
除實(shí)施例1(圖5)或?qū)嵤├?(圖8)的組成部分外,實(shí)施例3還包含選擇操作數(shù)位長(zhǎng),以變換定時(shí)/控制信號(hào)的位長(zhǎng)選擇控制電路。
具體地說,圖9的LenCon部分為該電路。此電路的工作是按照輸入信號(hào)Sel-len,對(duì)T/C部分產(chǎn)生的操作定時(shí)信號(hào)和提供給協(xié)同處理機(jī)中各的控制信號(hào)進(jìn)行控制。
(操作)協(xié)同處理機(jī)的操作中,按照操作數(shù)位長(zhǎng)的變化,R值、取決于R值的R’值、N’值的位長(zhǎng),以及規(guī)定位長(zhǎng)乘、加運(yùn)算的重復(fù)過程(次數(shù))都發(fā)生變化。
例如,當(dāng)Mul/Add為16位,并進(jìn)行操作數(shù)長(zhǎng)512位的A×A運(yùn)算時(shí),Mul/Add的乘、加重復(fù)次數(shù)為(512/16)×(512/16)=1024次。
另外,對(duì)于長(zhǎng)768位的操作數(shù),則為(768/16)×(768/16)=2304次。
這些計(jì)算的序列也各不相同。此外,如上文所述,R值按照操作數(shù)位長(zhǎng)唯一地確定,因而R’和N’值的位長(zhǎng)也相應(yīng)變化。
位長(zhǎng)選擇控制電路LenCon按照所選位長(zhǎng),控制操作定時(shí)信號(hào)的產(chǎn)生和T/C部分所生成控制信號(hào)的輸出。
該電路一般可用PLA或邏輯電路之類較小規(guī)模電路配置來實(shí)現(xiàn)。
如上所述,實(shí)施例3的協(xié)同處理機(jī)中,增添位長(zhǎng)選擇控制電路LenCon,能執(zhí)行不同位長(zhǎng)的模運(yùn)算或模冪運(yùn)算。
(實(shí)施例4)
(結(jié)構(gòu))以上實(shí)施例所述協(xié)同處理機(jī)運(yùn)算操作的基礎(chǔ)是規(guī)定位長(zhǎng)的乘法和加法。實(shí)現(xiàn)模運(yùn)算或模冪運(yùn)算的基本乘、加重復(fù)方法為以上實(shí)施例所述。
然而,以上實(shí)施例協(xié)同處理機(jī)僅進(jìn)行模運(yùn)算式操作,盡管運(yùn)算操作的基礎(chǔ)為乘和加,其應(yīng)用仍限于模運(yùn)算。
因此,增加各種運(yùn)算操作的基礎(chǔ)的長(zhǎng)位長(zhǎng)乘、加模式,以改善協(xié)同處理機(jī)的通用性。
圖10為本發(fā)明實(shí)施例4的模運(yùn)算協(xié)同處理機(jī)示意框圖。
實(shí)施例4中,對(duì)上述各實(shí)施例增添乘、加模式。為了執(zhí)行此模式,將模式信號(hào)4提供給定時(shí)/控制電路T/C。
(操作)現(xiàn)講述下面所示乘、加運(yùn)算執(zhí)行例。
A×B+C (34)首先,式(34)中,將值A(chǔ)、B和C存入存儲(chǔ)器WImen、Smen和Whmen。將模式信號(hào)4提供給定時(shí)/控制電路T/C,使運(yùn)算操作類型為執(zhí)行乘、加的模式。
圖11所示硬件映像詳細(xì)表達(dá)上述操作。
此運(yùn)算的含意是存于地址Wh3、Wh2、Wh1、Wh0的值加上存于地址S3、S2、S1和S0數(shù)值乘以存于存儲(chǔ)器WImen中地址WI3、WI2、WI1和WI0處的值所得乘積后得到的值存入存儲(chǔ)器Whmem和WImen的地址Wh3、Wh2、Wh1、Wh0、WI3、WI2、WI1和WI0。
(乘法單元1)首先,將存于存儲(chǔ)器WImen中址址WI0處數(shù)值(被乘數(shù))提供給寄存器Yi-reg,將存儲(chǔ)器Smen中地址S0處所存值(乘數(shù))提供給寄存器Xi-reg,將存儲(chǔ)器Whmen中地址Wh0處所存值(被加數(shù))提供給存儲(chǔ)器Ai-reg。然后,Mu1/Add將乘數(shù)乘以被乘數(shù),并將所得乘積與被加數(shù)相加,所得結(jié)果提供給高速加法器Add。此乘加單元1中將高電平信號(hào)提供給高速加法器Add的通過端,使寄存器RH的內(nèi)容不被加。
由于此乘加單元運(yùn)算結(jié)果的低端數(shù)位為本乘加運(yùn)算最終運(yùn)算結(jié)果的最低有效位,所以乘加單元運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)器WImen中地址WI0處,處為此乘法的最終運(yùn)算結(jié)果。(圖11中,此最終運(yùn)算結(jié)果存于加底線的地址處。)乘加單元1運(yùn)算結(jié)果的高端數(shù)位存入RH,以以便用于下一乘加單元。
(乘法單元2)寄存器Yi-reg保持已存值(被乘數(shù)),寄存器Xi-reg取入存儲(chǔ)器Smen中地址S1處所存值(乘數(shù)),寄存器Ai-reg取入存儲(chǔ)器Whmem中地址Wh1所存值(被加數(shù))。然后,Mul/Add將乘數(shù)乘以被乘數(shù),并將該乘積與被加數(shù)相加后提供給高速加法器Add。此乘加單元2中,提供低電平信號(hào)給高速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元1運(yùn)算結(jié)果的高端數(shù)位)與Mul/Add的輸出相加。乘加單元2運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)器Whmem的最低有效地址Wh0處,而其高端數(shù)位存入寄存器RH,以便下一乘加單元作數(shù)字定位。
(乘法單元3)寄存器Yi-reg保持已存值(被乘數(shù)),寄存器Xi-reg取入存儲(chǔ)器Smen中地址S2處所存值(乘數(shù)),寄存器Ai-reg取入存儲(chǔ)器Whmem中地址Wh2所存值(被加數(shù))。然后,Mul/Add將乘數(shù)乘以被乘數(shù),并將該乘積與被加數(shù)相加后提供給高速加法器Add。此乘加單元3中,提供低電平信號(hào)給高速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元2運(yùn)算結(jié)果的高端數(shù)位)與Mul/Add的輸出相加。乘加單元3運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)器Whmem的最低有效地址Wh1處,而其高端數(shù)位存入寄存器RH,以便下一乘加單元作數(shù)字定位。
(乘法單元4)寄存器Yi-reg保持已存值(被乘數(shù)),寄存器Xi-reg取入存儲(chǔ)器Smen中地址S3處所存值(乘數(shù)),寄存器Ai-reg取入存儲(chǔ)器Whmem中地址Wh3所存值(被加數(shù))。然后,Mul/Add將乘數(shù)乘以被乘數(shù),并將該乘積與被加數(shù)相加后提供給高速加法器Add。此乘加單元4中,提供低電平信號(hào)給高速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元3運(yùn)算結(jié)果的高端數(shù)位)與Mul/Add的輸出相加。乘加單元4運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)器Whmem的最低有效地址Wh2處,而其高端數(shù)位存入Whmen的Wh3地址,以便下一乘加單元作數(shù)字定位。
(乘法單元5)向寄存器Yi-reg提供存儲(chǔ)器WImem中地址WI1所存值(被乘數(shù)),寄存器Xi-reg取入存儲(chǔ)器Smen中地址S0處所存值(乘數(shù)),寄存器Ai-reg取入存儲(chǔ)器Whmem中地址Wh0所存值(被加數(shù))。然后,Mul/Add將乘數(shù)乘以被乘數(shù),并將該乘積與被加數(shù)相加后提供給高速加法器Add。此乘加單元5中,提供高電平信號(hào)給高速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元4運(yùn)算結(jié)果的高端數(shù)位)不被加。乘加單元5運(yùn)算結(jié)果的最低有效位存入存儲(chǔ)器WImem的I1處,而其最高有效位存入寄存器RH,以便下一乘加單元作數(shù)字定位。
(乘法單元6)寄存器Yi-reg保持已存值(被乘數(shù)),寄存器Xi-reg取入存儲(chǔ)器Smen中地址S1處所存值(乘數(shù)),寄存器Ai-reg取入存儲(chǔ)器Whmem中地址Wh1所存值(被加數(shù))。然后,Mul/Add將乘數(shù)乘以被乘數(shù),并將該乘積與被加數(shù)相加后提供給高速加法器Add。此乘加單元6中,提供低電平信給高速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元5運(yùn)算結(jié)果的高端數(shù)位)與Mul/Add的輸出相加。乘加單元6運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)器Whmem的最低有效地址Wh0處,而其高端數(shù)位存入寄存器RH,以便下一乘加單元作數(shù)字定位。
(乘法單元7)寄存器Yi-reg保持已存值(被乘數(shù)),寄存器Xi-reg取入存儲(chǔ)器Smen中地址S2處所存值(乘數(shù)),寄存器Ai-reg取入存儲(chǔ)器Whmem中地址Wh2所存值(被加數(shù))。然后,Mul/Add將乘數(shù)乘以被乘數(shù),并將該乘積與被加數(shù)相加后提供給高速加法器Add。此乘加單元7中,提供低電平信號(hào)給高速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元6運(yùn)算結(jié)果的高端數(shù)位)與Mul/Add的輸出相加。乘加單元7運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)器Whmem的最低有效地址Wh1處,而其共高端數(shù)位存入寄存器RH,以便下一乘加單元作數(shù)字定位。
(乘加單元8)寄存器Yi-reg保持已存值(被乘數(shù)),Xi-reg了取入存儲(chǔ)器Smen中地址S3處所存值(乘數(shù)),寄存器Ai-reg取入存儲(chǔ)器Whmen中地址Wh3所存值(被加數(shù))。然后,Mul/Add將乘數(shù)乘以被乘數(shù),并將該乘積與被加數(shù)相后提供給高速加法器Add。此乘加單元8中,提供低電平信號(hào)給高速加法器Add的通過端,使寄存器RH的內(nèi)容(乘加單元7運(yùn)算結(jié)果的高端數(shù)位)與Mul/Add的輸出相加。乘加單元8運(yùn)算結(jié)果的低端數(shù)位存入存儲(chǔ)器Whmem的最低有效地址Wh2處,而其高端數(shù)位存入Whmen的Wh3地址處,以便下一乘加單元作數(shù)字定位。
按照上述乘加單元,執(zhí)行乘加單元9~16,如圖11所示。于是,將最終運(yùn)算結(jié)果用Whmen-WImen(“-”不是減號(hào))的形式加于存儲(chǔ)。
圖12表示上述硬件執(zhí)行8591×4673+2069=40147872時(shí)數(shù)乘加單元。圖12的操作和圖11相同,省略其說明。
如上所述,根據(jù)實(shí)施例4,可實(shí)現(xiàn)各種運(yùn)算操作的基礎(chǔ)的長(zhǎng)位長(zhǎng)乘加模式,可極大地改善協(xié)同處理機(jī)的通用性。
(N’的計(jì)算)此外,下面將對(duì)乘加運(yùn)算講述N’的計(jì)算。如上文所述,各值如下(1)R×R’-N×N’=1(R×RmodN=1)(2)R定義為2的冪且略大于模N(3)N為奇數(shù)(4)0<N’<R
于是,R×R’=XXX…XXX000…000N×N’=Y(jié)YY…YYY111…111(35)(“0”和“1”的數(shù)為n)XXX…XXX=Y(jié)YY-YYY+1=R’(36)為了求得以N為基礎(chǔ)的N’,必須使上述(35)所有N×N’的低端數(shù)位都等于1。
圖21為計(jì)算N’的流程圖。該圖中符號(hào)n表示N的位長(zhǎng),i表示位置指針,A為工作寄存器,B為N’結(jié)果寄存器,a為2iN存儲(chǔ)寄存器,Ai為i位置的A,Bi為i位置數(shù)B,其中,工作寄存器A和2iN存儲(chǔ)寄存器a數(shù)位長(zhǎng)為2n,B的位長(zhǎng)為n。
首先,將代表N的位長(zhǎng)的數(shù)據(jù)設(shè)為n,N的值置入工作寄存器A,同時(shí)位置指計(jì)i和N’結(jié)果寄存器B都清零。其次,2iN存儲(chǔ)寄存器設(shè)為2iN(初始值為20N)。此外,檢查Ai位置的值是否為1。若是,則位置指針i遞增。否若,則Bi中的i置1,并將工作寄存器A的新值與2iN存儲(chǔ)寄存器的值(初始值為20N)相加后,置入工作寄存器A,同時(shí),位置指針i也遞增。再者,檢查位置指針i是否等于N的位長(zhǎng)加1。若是,則繼續(xù)相同的過程,并重復(fù)進(jìn)行到等于N的位長(zhǎng)加1。若否,則再計(jì)算N’。用這種方法,使N’結(jié)果寄存器B的最終值為N’。
下面講述N’和R’的計(jì)算實(shí)例。圖22示出該例,N’和R’包含較少的數(shù)字。
首先,對(duì)于給定的N(=11010111),重復(fù)N的左移位,直到其LSB(最低有效位)遇到第一“0”(23)出現(xiàn)在20N中,即作3次左移位,得23×N。其次,20N與23N相加,給出圖中所示第1個(gè)和1111000111。與求得23×N的方法相同,此和也反復(fù)作N的左移位,直到其LSB遇到第1“0”位(24)出現(xiàn)在該器件中,即作4次左移位,得24N。接著,該和數(shù)與24N相加,形成第2和(=1010011111111)。最后,將20N、23N和24N相加,即2i的總和,得N’(=25)。另,R(=100000000)的位數(shù)為9。處在等于或高于第9位的數(shù)為R’-1,因而得R’(=21)。
(實(shí)施例5)(結(jié)構(gòu))上述實(shí)施例中的協(xié)同處理機(jī),在由Mul/ADD和高速加法器Add輸入位長(zhǎng)決定的每一乘加單元,都要訪問存儲(chǔ)器,因而存在縮短操作時(shí)間的改善余f。其原因在于整個(gè)電路(包括存儲(chǔ)器)的操作速度受存儲(chǔ)器訪問時(shí)間限制。
本實(shí)施例中,減少相對(duì)于乘加單元運(yùn)算次數(shù)的存儲(chǔ)訪問次數(shù),從而縮短最終操作時(shí)間。
圖13為本發(fā)明實(shí)施例5的模運(yùn)算協(xié)同處理機(jī)示意框圖。
實(shí)施例5中,與上述實(shí)施例相比,存放被乘數(shù)的寄存器Yi-reg增多,并配有選擇這些寄存器輸出的電路。而且,相應(yīng)于這些寄存器的數(shù)目,提供存放高速加法器Add輸出值高、低端數(shù)位的多個(gè)寄存器,并配有適當(dāng)選擇這些輸出值的電路。
具體地說,寄存器Yi-reg
、Yi-reg[1]、Yi-reg[2]和Yi-reg[3]為位長(zhǎng)與Mul/Add輸入位長(zhǎng)對(duì)應(yīng)的被乘數(shù)寄存器,其各輸出端連接被乘數(shù)選擇電路Yi-sel。該選擇電路選擇上述4個(gè)寄存器所存值中的一個(gè)提供給后續(xù)的Mul/Add。
寄存器RA用于暫時(shí)存放高速加法器Add輸出的高端數(shù)位R-高,其輸出連接選擇電路SelA、SelB用ENSel。Add輸出的低端數(shù)位R-低接至選擇電路SelB和使能緩存器En。
寄存器Ai-reg的輸出接至選擇電路SelA。SelA選擇寄存器Ai-reg和RA的內(nèi)容,并連接高速加法器Add,為其提供所選擇的信號(hào)。
選擇電路SelB選擇R-低的內(nèi)容和寄存器RA,并連接RB,為其提供所選結(jié)果。
RB為暫時(shí)存放選擇電路SelB的輸出的寄存器,其輸出接至RC和Ensel。
RC為暫時(shí)存放寄存器RB的輸出的寄存器,其輸出連接RD和Ensel。
RD為暫時(shí)存放寄存器RC的輸出的寄存器,其輸出連接Ensel和Mul/Add。
Ensel是用于選擇RA、RB、RC和和RD的內(nèi)容的選擇電路,所選結(jié)果提供給運(yùn)算值存儲(chǔ)器。
其他電路與上述實(shí)施例的相同,省略其說明。
(操作)現(xiàn)參照?qǐng)D14進(jìn)述基本運(yùn)算(A3A2A1A0)×B0+C0的計(jì)算方法。講述中使用下列硬件映像(WI3,WI2,WI1,WI0)×S0=(RA,RB,RC,RD,WI0)加底線的地址意為該處存放最終運(yùn)算結(jié)果。
(初始化)首先,如圖14所示,進(jìn)行初始化。
(步驟1)在寄存器Xi-reg的值、Yi-sel所選寄存器Yi-reg
的值、寄存器RD的值和電路SelA所選寄存器Ai-reg的值之間進(jìn)行運(yùn)行操作。在此運(yùn)算臨結(jié)束前,將運(yùn)算結(jié)果的高端和低端數(shù)位R-高和R-低分別存入RA和存儲(chǔ)器Whmen。與此同時(shí),寄存器RC和和RB的值分別存入寄存器RD和RC,寄存器RA的值存入電路SelB所選的RB。
(步驟2)在寄存器Xi-reg的值、Yi-reg所選寄存器Yi-reg[1]的值、寄存器RD的值和Sel所選寄存器RA的值之間進(jìn)行運(yùn)算操作。在此操作臨近結(jié)束之前,運(yùn)算結(jié)果的高、低端數(shù)位R-高和R-低分別存入寄存器RA和SelB所選的RB。與此同時(shí),寄存器RC和RB的值分別存入寄存器RD和RC。
(步驟3)在寄存器Xi-reg的值、Yi-sel所選寄存器Yi-reg[2]的值、寄存器RD的值和SelA所選寄存器RA的值之間進(jìn)行運(yùn)算操作。在此操作臨近結(jié)束之前,運(yùn)算結(jié)果的高、低端數(shù)位R-高和R-低分別存入寄存器RA和和Sel所選的RB。與此同時(shí),寄存器RC和和RB的值分別存入寄存器RD和RC。
(步驟4)在寄存器Xi-reg的值、Yi-Sel所選寄存器Yi-reg[3]的值、寄存器RD的值和SelA所選寄存器RA的值之間進(jìn)行運(yùn)算操作。在此操作臨近結(jié)束之前運(yùn)算結(jié)果的高、低端數(shù)位R-高和R-低分別存入RA和和SelB所選的RB。與此同時(shí),寄存器RC和RB數(shù)值分別存入寄存器RD和RC。
上述從步驟1到步驟4的處理中,只在步驟1進(jìn)行一次訪問運(yùn)算值存儲(chǔ)器。因此,從步驟2到步驟4的剩余時(shí)間段中,可改變運(yùn)算值存儲(chǔ)器地址和進(jìn)行預(yù)存,以獲得訪問存儲(chǔ)器的時(shí)間。在步驟2到步驟4的期間,所進(jìn)行的操作基本相同,因而該運(yùn)算操作并不復(fù)雜。
作為一另一個(gè)運(yùn)算例,圖15和16示出下式的計(jì)算方法。
(A3,A2,A1,A0)×(B3,B2,B1,B0)+(C3,C2,C1,C0)該計(jì)算中采用下列硬件映像(WI3,WI2,WI1,WI0)×(S3,S2,S1,S0)+(Wh3,Wh2,Wh1,WH0)=(RA,RB,RC,RD,WI3,WI2,WI1,WI0)作為實(shí)際計(jì)算例,圖16示出8591×4673+2069=40147812的時(shí)間1到時(shí)間4的運(yùn)算過程。
畫底線的值為最終運(yùn)算結(jié)果。
由圖16可知,最終結(jié)果的高端數(shù)位是時(shí)間4中步驟4所得存于RA、RB、RC和RD的值,其低端數(shù)位是步驟1所得存于存儲(chǔ)器WImen的值。
如上所述,根據(jù)實(shí)施例5,無需改變乘法器/加法器等運(yùn)算處理部件的規(guī)模,可實(shí)現(xiàn)整個(gè)模運(yùn)算協(xié)同處理機(jī)用小規(guī)模電路構(gòu)成。而且操作時(shí)間短。
(實(shí)施例6)(結(jié)構(gòu))
圖17為本發(fā)明實(shí)施例6的示意框圖。此實(shí)施例包含設(shè)置在上述協(xié)同處理機(jī)和外部裝置之間的運(yùn)算值存儲(chǔ)器接口電路和運(yùn)算控制電路。
(運(yùn)算值存儲(chǔ)器接口電路MemIF)MemIF用于在MCU與協(xié)同處理機(jī)的運(yùn)算值存儲(chǔ)器之間收、發(fā)數(shù)據(jù)。
運(yùn)算值存儲(chǔ)器在運(yùn)算操作前從協(xié)同處理機(jī)外部存入運(yùn)算數(shù)據(jù),在運(yùn)算操作完成后將運(yùn)算結(jié)果送到協(xié)同處理機(jī)外部。同時(shí),該存儲(chǔ)器反復(fù)動(dòng)態(tài)訪問運(yùn)算單元,與協(xié)同處理機(jī)外部無關(guān)。即,存儲(chǔ)器有兩種通信規(guī)約。接MemIF構(gòu)成實(shí)現(xiàn)該規(guī)約的電路。
將MCU產(chǎn)生的地址信號(hào)ads和存儲(chǔ)器控制信號(hào)Memcon輸入到接口MemIF,并在MemIF為協(xié)同處機(jī)各運(yùn)算值存儲(chǔ)器和制備地址信號(hào)Comend和存儲(chǔ)器控制信號(hào)Comcon,提供給協(xié)同處理機(jī)。MDbus為MCU的數(shù)據(jù)總線,CoDbus為協(xié)同處理機(jī)外部接口的數(shù)據(jù)總線。
運(yùn)算值存儲(chǔ)位于MCU內(nèi)某一個(gè)存儲(chǔ)空間時(shí),將一種adr信號(hào)和Memcon信號(hào)輸入到MemIF,并提供DMbus。在運(yùn)算存儲(chǔ)器位于MCU內(nèi)多個(gè)存儲(chǔ)空間時(shí),需多種輸入信號(hào)。MDbus和CODbus通常直接接入,但例如在協(xié)同處理機(jī)內(nèi)處理的運(yùn)算值存儲(chǔ)器的數(shù)據(jù)長(zhǎng)度和MCU的數(shù)據(jù)長(zhǎng)度不同時(shí),通過MemIF進(jìn)行數(shù)據(jù)變換。
協(xié)同處理機(jī)執(zhí)行運(yùn)算時(shí),運(yùn)算值存儲(chǔ)器動(dòng)態(tài)工作,以執(zhí)行運(yùn)算,因而控制成禁止MCU來訪問。這樣,就實(shí)現(xiàn)協(xié)同處理機(jī)的運(yùn)算值存儲(chǔ)器與外部裝置間的第一種通信規(guī)約。
執(zhí)行運(yùn)算時(shí),協(xié)同處理機(jī)中定時(shí)/控制電路T/C產(chǎn)生的存儲(chǔ)器控制信號(hào)輸入到MemIF。收到該信號(hào)后,MemIF就對(duì)協(xié)同處理機(jī)提供Comemad信號(hào)和Comcon信號(hào),處理使運(yùn)算值存儲(chǔ)器對(duì)運(yùn)算單元收、發(fā)數(shù)據(jù)。這樣,就實(shí)現(xiàn)協(xié)同機(jī)內(nèi)執(zhí)行運(yùn)算時(shí),運(yùn)算單元與運(yùn)算值存儲(chǔ)間的第二種通信規(guī)約。
(運(yùn)算控制電路CopCon)CopCon用來接收MCU產(chǎn)生的協(xié)同處理機(jī)控制信號(hào)Excon,并對(duì)協(xié)同處理機(jī)提供運(yùn)算控制信號(hào)Sevex(上述實(shí)施例中的運(yùn)算模式信號(hào),位長(zhǎng)選擇信號(hào)等)。由提供運(yùn)算模式信號(hào)和協(xié)同處理的鐘信號(hào)COPCLK,起動(dòng)協(xié)同處理機(jī)的運(yùn)算操作。
為了從MCU端證實(shí)地運(yùn)算操作完成,CopCon接收協(xié)同處理機(jī)中T/C部分產(chǎn)生的運(yùn)算完成定時(shí)信號(hào)Coend,并把鎖存電路等處理的運(yùn)算完成監(jiān)視信號(hào)Endmoni提供給MCU。
運(yùn)算控制電路CopCon一般可做成分布于本機(jī)存儲(chǔ)區(qū),作為MCU的外圍電路,用MCU的命令直接訪問,因而能以較簡(jiǎn)單的電路來實(shí)現(xiàn)。
圖17中,MCUCLK為MCU的鐘信號(hào),COPCLK為協(xié)同處理機(jī)的鐘信號(hào)。
如上所述,根據(jù)實(shí)施例6,能用較小規(guī)模電路實(shí)現(xiàn)外部接口(例如MCU)與協(xié)同處理機(jī)之間的接口,因而能用LSI實(shí)現(xiàn)帶外部裝置的模運(yùn)算協(xié)同處理機(jī)或者內(nèi)含模運(yùn)算協(xié)同處理機(jī)的MCU。
(實(shí)施例7)實(shí)施例7從協(xié)同處理機(jī)外部證實(shí)運(yùn)算完成的措施僅審查運(yùn)算完成監(jiān)視信號(hào)Endmoni。然而,此方法中協(xié)同處理機(jī)處理長(zhǎng)位長(zhǎng)模運(yùn)算操作的工作量增多,因而,在例如外部裝置為MCU的情況下,經(jīng)常在MCV端監(jiān)視Endmoni信號(hào)的時(shí)間較長(zhǎng),MCU操作性能變差。
為了解決這個(gè)問題,本實(shí)施例設(shè)置專用運(yùn)算完成時(shí)間中斷控制電路。
圖18為本發(fā)明實(shí)施例7的示意框圖。
圖18中,IntCon為運(yùn)算完成中斷控制電路,由預(yù)先從MCU輸出的中斷設(shè)定信號(hào)Intset進(jìn)行中斷準(zhǔn)備。當(dāng)協(xié)同處理機(jī)輸入運(yùn)算完成定時(shí)信號(hào)Coend時(shí),對(duì)CopCon設(shè)定的每種運(yùn)算模式,在MCU和IntCon之間收、發(fā)中斷處理請(qǐng)求信號(hào)、確認(rèn)信號(hào)和中斷矢量控制信號(hào),作為Intsig。最后,消除中斷準(zhǔn)備,停止中斷處理。
可對(duì)運(yùn)算完成固定設(shè)置一個(gè)中斷因素,但因?yàn)閰f(xié)同處理機(jī)有多種運(yùn)算模式,對(duì)每種運(yùn)算模式進(jìn)行中斷,可使外部裝置建立模冪運(yùn)算的方法簡(jiǎn)單,因而最好設(shè)置多個(gè)中斷因素。
和運(yùn)算控制電路CopCon一樣,Intcon可作成分布于本機(jī)存儲(chǔ)區(qū)作為MCU的外圍電路,并有MCU的命令直接訪問,因而能用比較簡(jiǎn)單的電路來實(shí)現(xiàn)。
如上所述,按照實(shí)施例7,能用較小規(guī)模電路作成帶外部接口模運(yùn)算協(xié)同處理機(jī)或內(nèi)含具有完成中斷功能的模運(yùn)算協(xié)同處理機(jī)的MCU,因而能用LSI實(shí)現(xiàn)。
(實(shí)施例8)本協(xié)同處理機(jī)中的模運(yùn)算從運(yùn)算開始到完畢動(dòng)態(tài)的執(zhí)行,為了抑制與外部裝置連接時(shí)整個(gè)系統(tǒng)執(zhí)行運(yùn)算中的電流消耗,最好具有使執(zhí)行運(yùn)算時(shí)外部裝置暫時(shí)停止(下文稱為休眠)的狀態(tài)。
本實(shí)施例含有外部裝置休眠控制電路和用來實(shí)現(xiàn)休眠操作的時(shí)鐘控制電路。
圖19示意實(shí)施例8,除實(shí)施例7的設(shè)備外,還有外部裝置休眠控制電路和時(shí)鐘控制電路。
圖19中Slpcon為MCU休眠控制電路,從MCU接收休眠設(shè)置信號(hào)Slpset,并產(chǎn)生休眠信號(hào)Slp提供給時(shí)鐘控制電路CLKCon。
CLKCon通常響應(yīng)外部輸出的系統(tǒng)時(shí)鐘CLK信號(hào),提供鐘信號(hào)MCUCLK給MCU,但一接收到Slp信號(hào),就停止提供MCUCLK給MCU。
在運(yùn)算操作完成時(shí),將運(yùn)算完成定時(shí)信號(hào)Coend提供給SlpCon,以停止供應(yīng)Slp信號(hào)給CLKCon,重新恢復(fù)從CLKCon提供MCUCLK給MCU。
通常由輸入一信號(hào)給外部裝置的某一端子來取消休眠功能。因此,在此情況下,休眠控制電路可做成具有這種功能。
和運(yùn)算控制電路CopCon一樣,SlpCon可做成分布于本機(jī)存儲(chǔ)區(qū)作為MCU的外圍電路,并由MCU的命令直接訪問,因而能用比較簡(jiǎn)單的電路來實(shí)現(xiàn)。
如上所述,根據(jù)實(shí)施例8,可用較小規(guī)模電路做成帶外部接口的模運(yùn)算協(xié)同處理機(jī)或內(nèi)含具有外部裝置休眠功能的模運(yùn)算協(xié)同處理機(jī)的MCU,因而能用LSI來實(shí)現(xiàn)。
(實(shí)施例9)本協(xié)同處理機(jī)可用于進(jìn)行大規(guī)模且復(fù)雜的模運(yùn)算的密碼算法來探究處理時(shí)間高速性的場(chǎng)合。因此,即便提供給系統(tǒng)輸入時(shí)鐘為任何頻率,也要求操作時(shí)間短。
本實(shí)施例含有倍頻時(shí)鐘控制電路,以提高操作速度。
圖20為實(shí)施例9的示意框圖,其中實(shí)施例8的時(shí)鐘控制電路改為做成倍頻時(shí)鐘控制電路。
圖20中,CLKCon2為包含倍頻控制電路的時(shí)鐘控制電路,對(duì)該電路提供來自MCU的信號(hào)Ckwset作為倍頻設(shè)定信號(hào),以啟動(dòng)倍頻功能。
響應(yīng)外部提供的時(shí)鐘信號(hào)CLK,使倍頻功能起作用,其電路做成產(chǎn)生備用倍頻時(shí)鐘信號(hào)作為MCU的時(shí)鐘MCUCLK,協(xié)同處理機(jī)的時(shí)鐘COPCLK或二者。因此,用戶可考慮電流消耗作折衷,在系統(tǒng)中作各種選擇。
和倍頻功能設(shè)定一樣,可通過輸入信號(hào)Ckwset作為消除信號(hào)取消該功能。
和運(yùn)算控制電路一樣,倍頻時(shí)鐘電路可做成分布于本機(jī)存儲(chǔ)區(qū)作為MCU的外圍電路,并用MCU的命令直接訪問,因而能用比較簡(jiǎn)單的電路來實(shí)現(xiàn)。
如上所述,根據(jù)實(shí)施例9,可用較小規(guī)模電路做成帶有外部接口的模運(yùn)算處理機(jī)或內(nèi)含系統(tǒng)中具有倍頻功能的模運(yùn)算協(xié)同處理機(jī)的MCU,因而能用SLI來實(shí)現(xiàn)。
第1至第5實(shí)施例中所示高速乘法器/加法器Mul/Add可由分立的加法器和乘法器構(gòu)成。
第1至第5實(shí)施例中所示的Mul/Add和高速加法器Add可集成為一體。
第1至第5實(shí)施例中所示的Mul/Add和高速加法器可用市售集成電路構(gòu)成。
第6至第9實(shí)施例所示的協(xié)同處理機(jī)根據(jù)第1至第5實(shí)施例所示協(xié)同處理機(jī)構(gòu)成,但也可用具有與第1至第5實(shí)施例所示協(xié)同處理機(jī)相同功能的其他協(xié)同處理機(jī)構(gòu)成。
一般介紹了第1至第5實(shí)施例所示長(zhǎng)位長(zhǎng)乘法算法,但也可由定時(shí)/控制電路構(gòu)成可用所述硬件結(jié)構(gòu)的其他算法如(BOOTH)等。
第2至第5實(shí)施例的講述中,采用“0”檢測(cè)電路ZeroC,以減少運(yùn)算值存儲(chǔ)器為主要目標(biāo)。然而,該電路可用于控制順序,例如乘法單元包含乘數(shù)和被乘數(shù)時(shí),省略運(yùn)算操作,將運(yùn)算操作中的值置0,進(jìn)行下一操作,從而節(jié)省操作時(shí)間。
實(shí)施例5中,增加被乘數(shù)存儲(chǔ)寄存器的數(shù)目,但可增長(zhǎng)該寄存器的位長(zhǎng),以增大容量。
如上所述,根據(jù)本發(fā)明的典型例,求得模冪運(yùn)算解時(shí),可僅提供先前準(zhǔn)備的模式信號(hào),執(zhí)行各種算法操作。
權(quán)利要求
1.進(jìn)行模乘運(yùn)算的方法,對(duì)應(yīng)于第1公式f(A,B)=A×BmodN,采用Montgomery替換運(yùn)算的第二公式f(A,B)=A×B×R’modN執(zhí)行第1公式的模乘運(yùn)算(“mod”指模運(yùn)算)(R’表示對(duì)2的冪且略大于模N的R,滿足R×R’modN=1的值),以計(jì)算整數(shù)A和B的乘積除以整數(shù)N后的余數(shù),其特征在于,該方法包括執(zhí)行第一替換運(yùn)算f1’(RSmodN×AT,BU)的第一步驟(S指0、1、2中之一,T指0或1,U指0或1);執(zhí)行第二替換運(yùn)算f2’{R2-SmodN×AT×f1’(RSmodN×AT,BU),RSmodN×A1-T×B1-U)}。
2.如權(quán)利要求1所述進(jìn)行模乘運(yùn)算的方法,其特征在于,第一第二執(zhí)行步驟分別包含執(zhí)行各第一和第二替換運(yùn)算的步驟,其方法是采用下列各步驟表示的函數(shù)REDC(m和t指變數(shù))(a)m=(A×BmodR)×N’modR(b)t=(A×B+M×N)/R(c)ift<Nreturnt(tresult)(d)else return t-N(t-Nresult)。
3.進(jìn)行模冪運(yùn)算的方法,在模冪運(yùn)算的迭代平方積的方法中,對(duì)應(yīng)于第一公式f(A,B)=A×BmodN,采用Montgomery替換運(yùn)算的第二公式f’(A,B)=A×B×R’modN執(zhí)行第一公式的模積運(yùn)算,求得整數(shù)A和整數(shù)B的乘數(shù)除以整數(shù)N后的余數(shù),執(zhí)行模冪運(yùn)算一般方程式F(M,E)=MEmodN(“mod”指模運(yùn)算)(R’表示對(duì)2的冪且略大于模N的R,滿足R×R’modN=1的值,計(jì)算整數(shù)M的E(整數(shù))次方除以整數(shù)N后的余數(shù),其特征在于,該方法包括執(zhí)行第一替換運(yùn)算f’1(f’2,f’2)(初始值f’1=f’1)(RmodN,RmodN)的第一步驟;執(zhí)行第二替換運(yùn)算f’2(f’1,M×RmodN)的第二步驟;執(zhí)行第三替換運(yùn)算f’3(f’2,1)的第三步驟;其中,第三步驟的執(zhí)行在第一步驟執(zhí)行之后,第二步驟相對(duì)于整數(shù)E規(guī)定的次數(shù)重復(fù)執(zhí)行。
4.如權(quán)利要求3所述的進(jìn)行模冪運(yùn)算的方法,其特征在于,第一、第二和第三執(zhí)行步驟分別包含執(zhí)行各第一、第二和第三替換運(yùn)算的步驟,其方法是采用下列各步驟表示的函數(shù)REDC(m和t指變數(shù))(a)m=(A×BmodR)×N’modR(b)t=(A×B+M×N)/R(c)ift<Nreturnt(tresult)(d)else return t-N(t-Nresult)。
5.如權(quán)利要求4所述進(jìn)行模冪運(yùn)算的方法,其特征在于,還包括下列步驟檢測(cè)整數(shù)A和B的乘積是否等于整數(shù)R的倍數(shù);在檢測(cè)到A和B的乘積等于R的倍數(shù)時(shí),(a)跳過m=(A×Bmod)×N’modR,將函數(shù)REDC中的變數(shù)m置“0”,(b)跳過T=(A×B+m×N)/R,將函數(shù)REDC中的變數(shù)t置為“A×B/R;將變數(shù)m的第一串?dāng)?shù)置于第二串?dāng)?shù)中最低有效位整數(shù)R之后,第二串?dāng)?shù)為第三串?dāng)?shù)和N’的乘積,第三串?dāng)?shù)置于整數(shù)A和整數(shù)B乘積中最低有效位R之后,同時(shí)將變數(shù)T置為下列三種數(shù)之和(1)位于整數(shù)A和整數(shù)B乘積中最高有效位整數(shù)R之前的第四串?dāng)?shù),(2)位于變換m和整數(shù)N的乘積中最高有效位整數(shù)R之前的第五串?dāng)?shù)(3)1。
6.如權(quán)利要求3所述的進(jìn)行模冪運(yùn)算的方法,其特征在于,還包括以下步驟輸入要計(jì)算模冪的數(shù)字長(zhǎng)度;對(duì)應(yīng)于輸入的數(shù)字長(zhǎng)度,設(shè)置Montgomery替換運(yùn)算f’的執(zhí)行條件。
7.進(jìn)行模乘運(yùn)算的裝置,對(duì)應(yīng)于第1公式f(A,B)=A×BmodN,采用Montgomery替換運(yùn)算的第二公式f(A,B)=A×B×R’modN執(zhí)行第1公式的模乘運(yùn)算(“mod”指模運(yùn)算)R’表示對(duì)2的冪且略大于模N的R,滿足R×R’modN=1的值),以計(jì)算整數(shù)A和B的乘積除以整數(shù)N后的余數(shù),其特征在于,該裝置包括執(zhí)行第一替換運(yùn)算f’1(RSmodN×AT,BU)的第一手段(S指0、1、2中之一,T指0或1,U指0或1);執(zhí)行第二替換運(yùn)算f2’{R2-SmodN×AT×f1’(RSmodN×AT,BU),RSmodN×A1-T×B1-U)}。
8.如權(quán)利要求7所述進(jìn)行模乘運(yùn)算的裝置,其特征在于,第一第二執(zhí)行手段分別包含執(zhí)行各第一和第二替換運(yùn)算的手段,其方法是采用下列各手段表示的函數(shù)REDC(m和t指變數(shù))(a)m=(A×BmodR)×N’modR(b)t=(A×B+M×N)/R(c)ift<Nreturnt(tresult)(d)else return t-N(t-Nresult)。
9.如權(quán)利要求8所述進(jìn)行模乘運(yùn)算的裝置,其特征在于,還包括根據(jù)N,通過加法和乘法計(jì)算N’的N’計(jì)算手段,以及存儲(chǔ)N’的手段。
10.進(jìn)行模冪運(yùn)算的方法,在模冪運(yùn)算的迭代平方積的方法中,對(duì)應(yīng)于第一公式f(A,B)=A×BmodN,采用Montgomery替換運(yùn)算的第二公式f’(A,B)=A×B×R’modN執(zhí)行第一公式的模積運(yùn)算,求得整數(shù)A和整數(shù)B的乘數(shù)除以整數(shù)N后的余數(shù),執(zhí)行模冪運(yùn)算一般方程式F(M,E)=MEmodN(“mod”指模運(yùn)算)(R’表示對(duì)2的冪且略大于模N的R,滿足R×R’modN=1的值,計(jì)算整數(shù)M的E(整數(shù))次方除以整數(shù)N后的余數(shù),其特征在于,該裝置包括執(zhí)行第一替換運(yùn)算f’1(f’2,f’2)(初始值f’1=f’1)(RmodN,RmodN)的第一手段;執(zhí)行第二替換運(yùn)算f’2(f’1,M×RmodN)的第二手段;執(zhí)行第三替換運(yùn)算f’3(f’2,1)的第三手段。
11.如權(quán)利要求10所述進(jìn)行模冪運(yùn)算的裝置,其特征在于,還包括第一預(yù)計(jì)算手段,用于第一手段計(jì)算第一替換運(yùn)算f’1(f’2,f’2之前,計(jì)算RmodN;第一存儲(chǔ)手段,用于存儲(chǔ)所計(jì)算的RmodN;第二預(yù)運(yùn)算手段,用于在計(jì)算第二替換運(yùn)算f’2(f’1,M×RmodN)之前,計(jì)算M×RmodN;第二存儲(chǔ)手段,用于存儲(chǔ)所計(jì)算的M×RmodN。
12.如權(quán)利要求10所述的進(jìn)行模冪運(yùn)算裝置,其特征在于,第一、第二和第三執(zhí)行手段分別包含執(zhí)行各第一、第二和第三替換運(yùn)算的手段,其方法是采用下列各手段表示的函數(shù)REDC(m和t指變數(shù))(a)m=(A×BmodR)×N’modR(b)t=(A×B+M×N)/R(c)ift<Nretumt(tresult)(d)else return t-N(t-Nresult)。
13.如權(quán)利要求12所述的進(jìn)行模冪運(yùn)算裝置,其特征在于,還包括根據(jù)N通過乘法和加法,計(jì)算N’的計(jì)算手段,以及存儲(chǔ)N’的手段。
14.如權(quán)利要求12所述進(jìn)行模冪運(yùn)算的裝置,其特征在于,還包括下列手段檢測(cè)整數(shù)A和B的乘積是否等于整數(shù)R的倍數(shù);在檢測(cè)到A和B的乘積等于R的倍數(shù)時(shí),(a)跳過m=(A×Bmod)×N’modR,將函數(shù)REDC中的變數(shù)m置“0”,(b)跳過T=(A×B+m×N)/R,將函數(shù)REDC中的變數(shù)t置為“A×B/R;將變數(shù)m的第一串?dāng)?shù)置于第二串?dāng)?shù)中最低有效位整數(shù)R之后,第二串?dāng)?shù)為第三串?dāng)?shù)和N’的乘積,第三串?dāng)?shù)置于整數(shù)A和整數(shù)B乘積中最低有效位R之后,同時(shí)將變數(shù)T置為下列三種數(shù)之和(1)位于整數(shù)A和整數(shù)B乘積中最高有效位整數(shù)R之前的第四串?dāng)?shù),(2)位于變換m和整數(shù)N的乘積中最高有效位整數(shù)R之前的第五串?dāng)?shù)(3)1。
15.如權(quán)利要求10所述的進(jìn)行模冪運(yùn)算裝置,其特征在于,還包括輸入要計(jì)算模冪的數(shù)字長(zhǎng)度的手段,以及相應(yīng)于該輸人數(shù)字長(zhǎng)度設(shè)置Montgomery替換運(yùn)算f’的執(zhí)行條件的手段。
16.如權(quán)利要求10所述的進(jìn)行模冪運(yùn)算裝置,其特征在于,還包括用于執(zhí)行第一運(yùn)算f’1、第二運(yùn)算f’2和第三運(yùn)算f’3的多個(gè)寄存器。
17.加密裝置,該裝置制備以加密E和N對(duì)明文M進(jìn)行加密而得的密碼,其中采用執(zhí)行模冪運(yùn)算的迭代平方積法中,相對(duì)應(yīng)于公式f(A,B)=A×BmodN的Montgomery替換運(yùn)算公式f’(A,B)=A×B×R’modN,其特征在于,該裝置包括對(duì)已知的X×RmodN和Y×RmodN,執(zhí)行第1替換運(yùn)算f1’(X×RmodN,X×RmodN)=X2RmodN的手段、執(zhí)行第2替換運(yùn)算f2’(X×RmodN,X×RmodN)=X×Y×RmodN的手段、以及執(zhí)行第3替換運(yùn)算f3’(X×RmodN,1)=XmodN的手段。
18.如權(quán)利要求17所述的加密裝置,其特征在于,第一第二執(zhí)行手段分別包含執(zhí)行各第一和第二替換運(yùn)算的手段,其方法是采用下列各手段表示的函數(shù)REDC(m和t指變數(shù))(a)m=(A×BmodR)×N’modR(b)t=(A×B+M×N)/R(c)ift<Nreturnt(tresult)(d)else retum t-N(t-Nresult)。
全文摘要
本發(fā)明揭示一種模運(yùn)算用的方法和裝置,對(duì)應(yīng)于第1公式f(A,B)=A×BmodN,采用Montgomery替換運(yùn)算f(A,B)=A×B×R’modN執(zhí)行第1公式的模乘運(yùn)算(R’表示對(duì)2的冪且略大于模N的R,滿足R×R’modN=1的值),以計(jì)算整數(shù)A和B的乘積除以整數(shù)N后的余數(shù),此方法和裝置包括執(zhí)行第1替換算法f’
文檔編號(hào)G06F7/48GK1172390SQ97110289
公開日1998年2月4日 申請(qǐng)日期1997年4月7日 優(yōu)先權(quán)日1996年4月5日
發(fā)明者海老原秀德, 川崎清人 申請(qǐng)人:沖電氣工業(yè)株式會(huì)社