專利名稱:Rsa加密算法的實(shí)現(xiàn)電路及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算方法的硬件實(shí)現(xiàn)領(lǐng)域,尤其涉及RSA加密算法中大數(shù)模乘、模冪運(yùn)算的硬件實(shí)現(xiàn),具體的說是涉及通過集成電路實(shí)現(xiàn)采用蒙哥馬利模乘法完成大數(shù)模冪運(yùn)算的硬件電路。
隨著通訊技術(shù)的發(fā)展,信息的傳輸量越來越大,信息的安全問題也越來越重要,尤其在商業(yè)領(lǐng)域,信息傳輸?shù)陌踩浴⑼暾院筒豢傻仲囆灾苯佑绊懙缴碳业倪\(yùn)作模式和經(jīng)濟(jì)利益。在信息時(shí)代,高速計(jì)算機(jī)和全球化的INTERNET網(wǎng)絡(luò)的發(fā)展,使世界不同地區(qū)的人們可以相互交換信息,信息訪問的合法性顯得日益重要。日益發(fā)展的各種信息加密、解密技術(shù)適應(yīng)了時(shí)代的要求,良好的加密算法使信息傳輸更可靠、更安全,其中公鑰加密算法能更好的滿足用戶的要求。到目前為止,RSA加密算法是最流行的公開密鑰算法,可用作加密和數(shù)字簽名。
RSA加密算法是由R.L.Riverst,A.Shamir,and L.Adleman提出、用三個(gè)人名命名的算法。在使用該加密算法的系統(tǒng)中,對于每個(gè)用戶而言對應(yīng)著三個(gè)很大的二進(jìn)制整數(shù)M、e和d,一般為512位或1024位,數(shù)越大所加密的信息越難破解。這三個(gè)二進(jìn)制整數(shù)之間有著特殊的關(guān)系,其中M和e是公開的,d是保密的,并由用戶保存,M是模數(shù),e是加密密鑰,d是解密密鑰。當(dāng)向某用戶發(fā)送信息C時(shí),利用對應(yīng)該用戶的加密密鑰e,對信息C加密再發(fā)向該用戶,這里C為明文,E為密文,加密過程可表示為E=CemodM;當(dāng)用戶接到密文信息E后,用對應(yīng)該用戶的解密密鑰d對其解密可恢復(fù)明文信息CC=EdmodM。
可見采用RSA算法對信息加密和解密都必須進(jìn)行大數(shù)模冪運(yùn)算,眾所周知模冪運(yùn)算可分解為多次模乘運(yùn)算,設(shè)加解密涉及的大數(shù)為C、A、e,模為M,即C=AemodM=(A×A×…×A)modM模乘運(yùn)算可采用蒙哥馬利模乘運(yùn)算法硬件實(shí)現(xiàn),其完成的計(jì)算記作Mont(A,A,M)。
若模M的二進(jìn)制數(shù)的長度為n位,蒙哥馬利模乘就需要經(jīng)過n+1輪迭代運(yùn)算,設(shè)其完成的運(yùn)算結(jié)果為P,則P=Mont(A,A,M)=A×A×2-(n+1)modM可知經(jīng)過n+1輪蒙哥馬利模乘運(yùn)算后,所得結(jié)果比模乘多一個(gè)因子2-(n+1),由此需構(gòu)造蒙哥馬利模乘運(yùn)算TT=Mont(P,PP,M)=A×AmodM其中 PP=22n+2modM如此完成了加解密所需的大數(shù)模冪運(yùn)算。其中PP的運(yùn)算即為采用蒙哥馬利模乘算法時(shí)的初始預(yù)計(jì)算。美國專利US 6,061,706公開了一種蒙哥馬利模乘硬件電路,在該電路中它的初始預(yù)計(jì)算PP=22n+2modM由用戶完成,給用戶帶來了不便,而且由用戶采用軟件實(shí)現(xiàn)該運(yùn)算,速度沒有硬件實(shí)現(xiàn)快。
在模乘計(jì)算完成后,其結(jié)果可能比模大,因此必須再做一次取模運(yùn)算,實(shí)現(xiàn)結(jié)果的歸一化處理。
本發(fā)明的目的在于提出一種RSA加密算法中采用蒙哥馬利模乘法實(shí)現(xiàn)大數(shù)模冪、模乘運(yùn)算時(shí)初始預(yù)計(jì)算和結(jié)果歸一化處理的實(shí)現(xiàn)電路及方法。
實(shí)現(xiàn)本發(fā)明目的的一種大數(shù)模冪運(yùn)算的蒙哥馬利模乘法實(shí)現(xiàn)電路,由多級基本處理單元連接而成,模的二進(jìn)制數(shù)長度為n,其初始預(yù)計(jì)算電路由n+1個(gè)預(yù)計(jì)算單元連接而成,處于預(yù)計(jì)算鏈最高位n的預(yù)計(jì)算單元包括觸發(fā)器D和全加器FA,低一位預(yù)計(jì)算單元的計(jì)算結(jié)果R[n-1]輸入觸發(fā)器D,經(jīng)過一個(gè)時(shí)鐘后寫入,觸發(fā)器D的輸出和數(shù)值1以及低一位預(yù)計(jì)算單元的進(jìn)位輸出Br[n-1]作為操作數(shù)輸入全加器FA,產(chǎn)生本級進(jìn)位輸出Br[n];處于預(yù)計(jì)算鏈的非最高位i(i等于0,1,…,n-1)的預(yù)計(jì)算單元包括觸發(fā)器D、全加器FA、反相器N,以及前后兩個(gè)多路器(101和102),低一位預(yù)計(jì)算單元的計(jì)算結(jié)果R[i-1]和模乘結(jié)果PV[i]輸入前一級多路器(101);模M的二進(jìn)制數(shù)第i位的值M[i]經(jīng)反相器N后和前一級多路器(101)的輸出以及低一位預(yù)計(jì)算單元的進(jìn)位輸出Br[i-1]分別同時(shí)輸入全加器FA,全加器FA產(chǎn)生本級進(jìn)位輸出Br[i],前一級多路器(101)和全加器FA的輸出輸入后一級多路器(102),后一級多路器(102)輸出預(yù)計(jì)算結(jié)果R[i];上述預(yù)計(jì)算單元組成預(yù)計(jì)算鏈,低一位預(yù)計(jì)算單元的計(jì)算結(jié)果R[i]輸入上一位預(yù)計(jì)算單元的觸發(fā)器D,低一位預(yù)計(jì)算單元的進(jìn)位輸出Br[i]輸入上一位預(yù)計(jì)算單元的全加器FA,最底位預(yù)計(jì)算單元的觸發(fā)器D的輸入為0、全加器FA的輸入為1,用于選擇預(yù)計(jì)算和模乘運(yùn)算的前一級多路器(101)組的使能信號為En,用于信號輸出選擇的后一級多路器(102)組的使能信號Sel為根據(jù)進(jìn)位產(chǎn)生的控制信號。
實(shí)現(xiàn)本發(fā)明目的的一種大數(shù)模冪運(yùn)算的蒙哥馬利模乘法實(shí)現(xiàn)方法,在多級基本處理單元連接而成的鏈路中實(shí)現(xiàn)迭代運(yùn)算,模的二進(jìn)制數(shù)長度為n,其在初始預(yù)計(jì)算電路中實(shí)現(xiàn)的初始預(yù)計(jì)算包括以下步驟①計(jì)算2nmodM;②左移一位寫入寄存器,再做取模運(yùn)算;③重復(fù)步驟②共n+2次。
本發(fā)明有以下優(yōu)點(diǎn)將預(yù)計(jì)算和結(jié)果歸一化處理電路集成在芯片內(nèi),無需用戶輸入預(yù)計(jì)算數(shù)據(jù),方便用戶,提高運(yùn)算速度;預(yù)計(jì)算和結(jié)果歸一化處理采用同一電路,減少電路面積,降低設(shè)計(jì)復(fù)雜度,降低成本。
下面結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)說明
圖1A是處于預(yù)計(jì)算鏈最高位的預(yù)計(jì)算單元電路示意圖;圖1B是非預(yù)計(jì)算鏈最高位的預(yù)計(jì)算單元電路示意圖;圖2是產(chǎn)生選擇信號Sel的電路示意圖3是預(yù)計(jì)算鏈電路結(jié)構(gòu)示意圖;圖4是鏈長為4的預(yù)計(jì)算電路示意圖。
在預(yù)計(jì)算PP=22n+2modM中指數(shù)2n+2是兩次蒙哥馬利模乘的迭代次數(shù),將上式寫成如下形式PP=(2n×2×…×2)modM=(…((2nmodM)×2modM)…×2)modM其中…代表n次(×2modM)運(yùn)算。
所以PP的運(yùn)算過程可分解為1.計(jì)算2nmodM;2.左移一位寫入寄存器,再做取模運(yùn)算;3.重復(fù)步驟2共n+2次。
因?yàn)槎M(jìn)制數(shù)2n長度為n+1位,且最高位為1,其它位為0;模M取為奇數(shù),長度為n位,即M的最高位和最低位是1;則2M的長度是n+1位,且至少最高位和次低位兩位為1,所以有2M>2n>M則 2nmodM=2n-M該二進(jìn)制運(yùn)算可以通過零與減數(shù)的補(bǔ)數(shù)相加得到0+M補(bǔ)其中 M補(bǔ)=M+1將該結(jié)果左移一位即完成乘以2的運(yùn)算,寫入寄存器后再求模輸出,即完成運(yùn)算2n+1modM然后再左移一位寫入寄存器,接著再求模輸出,即運(yùn)算2n+2modM…………這樣再經(jīng)過n次運(yùn)算后完成22n+2modM
圖1A和圖1B的兩種電路是預(yù)計(jì)算鏈中的兩種處理單元。圖1A所示的電路用于預(yù)計(jì)算鏈的最高位,圖中的D代表D觸發(fā)器,F(xiàn)A代表全加器,Br是全加器的進(jìn)位輸出,R是處理單元的計(jì)算結(jié)果。該電路的運(yùn)作過程是這樣的下一級的計(jì)算結(jié)果R[n-1]輸入D觸發(fā)器,經(jīng)過一個(gè)時(shí)鐘后寫入D觸發(fā)器;D觸發(fā)器的輸出和數(shù)值1以及下一級全加器的進(jìn)位輸出Br[n-1]作為操作數(shù)輸入全加器FA,Br[n]是本級產(chǎn)生的進(jìn)位輸出,用于產(chǎn)生選擇預(yù)計(jì)算鏈輸出結(jié)果的控制信號。圖1B所示的電路用于預(yù)計(jì)算鏈的非最高位i位,其電路比圖1A多兩個(gè)多路器101和102,PV是模乘結(jié)果,M[i]是模M的二進(jìn)制數(shù)第i位的值,前一級多路器101用于信號輸入選擇,選擇預(yù)計(jì)算和模乘運(yùn)算;后一級多路器102用于信號輸出選擇,該多路器102的使能信號根據(jù)進(jìn)位產(chǎn)生,若進(jìn)位位為1,說明結(jié)果數(shù)據(jù)(在寄存器D中)大于模值M,這時(shí)輸出數(shù)據(jù)要減掉模M;若進(jìn)位位為0,說明結(jié)果數(shù)據(jù)小于模值M,輸出數(shù)據(jù)可以直接輸出。圖1B的運(yùn)作過程與圖1A相同。
圖2所示是一多路器,用于選擇計(jì)算結(jié)果。該多路器的使能是模長ML,ML的值是模的二進(jìn)制數(shù)據(jù)長度減1,如模為1011,則ML為3。預(yù)計(jì)算鏈中各全加器的輸出進(jìn)位Br[i]輸入多路器,多路器的輸出同Ctrl信號相或得到控制信號Sel,Ctrl信號來自運(yùn)算核的控制電路,在第一次時(shí)鐘脈沖寫入時(shí)為1(即第一次左移一位時(shí)),以后為0。
圖3是預(yù)計(jì)算鏈電路結(jié)構(gòu)示意圖,由如圖1A和圖1B所示的兩種預(yù)計(jì)算單元組成。預(yù)計(jì)算鏈的長度根據(jù)模M的長度決定若模M的長度為n,則需要n+1個(gè)預(yù)計(jì)算單元,模M[i]經(jīng)過一組反向器后,它的每一位分別輸向?qū)?yīng)計(jì)算鏈單元全加器的一個(gè)操作數(shù)輸入端,在最高位輸入“1”;D觸發(fā)器組Di的輸出數(shù)據(jù)和模乘結(jié)果數(shù)據(jù)PV[i]共同輸入各多路器Si,多路器Sn-1…S1S0的選通信號En,選擇模乘結(jié)果PV[n-1]、PV[n-2]、……、PV[1]、PV
和最低位的“0”分別輸入相應(yīng)全加器。多路器組Seln-1…Sel1Sel0的輸出分別輸入上一位預(yù)計(jì)算單元的D觸發(fā)器,這樣每次寫入D觸發(fā)器時(shí),預(yù)計(jì)算結(jié)果值左移一位。在模乘運(yùn)算完成后,信號En為高,模乘結(jié)果PV[n-1]、PV[n-2]、……、PV[1]、PV
經(jīng)過多路器組Sn-1…S1S0輸?shù)饺悠?,其結(jié)果小于2M,但可能大于M,若大于M要對模乘結(jié)果求模后輸出,若小于M則直接輸出,如此完成結(jié)果歸一化過程。
圖4是模乘為3位的預(yù)計(jì)算鏈電路示意圖,圖中最低位的預(yù)計(jì)算單元,因在右移過程中,最低位為0,所以D觸發(fā)器可以省掉。根據(jù)前面的推導(dǎo)過程,該預(yù)計(jì)算鏈有4個(gè)預(yù)計(jì)算單元,每一位的輸出連向上一位的D觸發(fā)器的輸入,數(shù)據(jù)PV[2]、PV[1]、PV
是模乘結(jié)果的輸出,模M以補(bǔ)數(shù)形式輸入,在全加器中完成與數(shù)據(jù)R[2]、R[1]、R
的減法運(yùn)算。假設(shè)模M等于5,則n為3,即計(jì)算22×3+2mod5首先計(jì)算第一步(23mod5)×2將D觸發(fā)器清零,運(yùn)算0+M補(bǔ),這時(shí)要取全加器的輸出結(jié)果,控制信號Ctrl使Sel為1,經(jīng)過一個(gè)時(shí)鐘后,預(yù)計(jì)算鏈的輸出結(jié)果分別左移一位并寫入D觸發(fā)器組D2D1D0。接下來計(jì)算(((23mod5)×2)mod5)×2這時(shí)Ctrl為0,不參與控制,信號Sel與Br[3]等價(jià),計(jì)算mod5,再經(jīng)過一個(gè)時(shí)鐘后,使結(jié)果左移一位寫入D觸發(fā)器組D2D1D0。如此反復(fù),3個(gè)時(shí)鐘后完成運(yùn)算。
R=22n+2modM在模乘運(yùn)算結(jié)束后,其二進(jìn)制結(jié)果的各位為PV[2]、PV[1]、PV
,該值可能大于M,且小于2M,這樣需要對該值取模,本電路的后處理功能就完成模乘結(jié)果的取模運(yùn)算。當(dāng)模乘結(jié)束后,輸入多路器使能信號EN為1,選通模乘結(jié)果PV[2]、PV[1]、PV
輸出并使PV<M。
權(quán)利要求
1.一種RSA加密算法的實(shí)現(xiàn)電路,其大數(shù)模冪運(yùn)算采用蒙哥馬利模乘法,由多級基本處理單元連接而成,模的二進(jìn)制數(shù)長度為n,其特征在于其初始預(yù)計(jì)算電路由n+1個(gè)預(yù)計(jì)算單元連接而成,處于預(yù)計(jì)算鏈最高位n的預(yù)計(jì)算單元包括觸發(fā)器D和全加器FA,低一位預(yù)計(jì)算單元的計(jì)算結(jié)果R[n-1]輸入觸發(fā)器D,經(jīng)過一個(gè)時(shí)鐘后寫入,觸發(fā)器D的輸出和數(shù)值1以及低一位預(yù)計(jì)算單元的進(jìn)位輸出Br[n-1]作為操作數(shù)輸入全加器FA,產(chǎn)生本級進(jìn)位輸出Br[n];處于預(yù)計(jì)算鏈的非最高位i(i等于0,1,…,n-1)的預(yù)計(jì)算單元包括觸發(fā)器D、全加器FA、反相器N,以及前后兩個(gè)多路器(101和102),低一位預(yù)計(jì)算單元的計(jì)算結(jié)果R[i-1]和模乘結(jié)果PV[i]輸入前一級多路器(101);模M的二進(jìn)制數(shù)第i位的值M[i]經(jīng)反相器N后和前一級多路器(101)的輸出以及低一位預(yù)計(jì)算單元的進(jìn)位輸出Br[i-1]分別同時(shí)輸入全加器FA,全加器FA產(chǎn)生本級進(jìn)位輸出Br[i],前一級多路器(101)和全加器FA的輸出輸入后一級多路器(102),后一級多路器(102)輸出預(yù)計(jì)算結(jié)果R[i];所述預(yù)計(jì)算單元組成所述預(yù)計(jì)算鏈,低一位預(yù)計(jì)算單元的計(jì)算結(jié)果R[i]輸入上一位預(yù)計(jì)算單元的觸發(fā)器D,低一位預(yù)計(jì)算單元的進(jìn)位輸出Br[i]輸入上一位預(yù)計(jì)算單元的全加器FA,最底位預(yù)計(jì)算單元的觸發(fā)器D的輸入為0、全加器FA的輸入為1,用于選擇模乘運(yùn)算和結(jié)果歸一化的前一級多路器(101)組的使能信號為En,用于信號輸出選擇的后一級多路器(102)組的使能信號Sel為根據(jù)進(jìn)位產(chǎn)生的控制信號。
2.根據(jù)權(quán)利要求1所述的RSA加密算法的實(shí)現(xiàn)電路,其特征在于所述后一級多路器(102)組的使能信號Sel的產(chǎn)生電路為一多路器(103),各預(yù)計(jì)算鏈模乘結(jié)果PV[n-1]、PV[n-2]、……、PV[1]、PV
和最低位的“0”輸入所述多路器(103),該多路器的輸出同來自運(yùn)算核控制電路的Ctrl信號相或產(chǎn)生控制信號Sel,所述Ctrl信號在第一次時(shí)鐘脈沖寫入時(shí)為1(即第一次左移一位時(shí)),以后為0;所述多路器(103)的使能信號ML的值是模的二進(jìn)制數(shù)據(jù)長度減1。
3.根據(jù)權(quán)利要求1所述的RSA加密算法的實(shí)現(xiàn)電路,其特征在于所述預(yù)計(jì)算鏈的最低位預(yù)計(jì)算單元的觸發(fā)器D可以不要。
4.根據(jù)權(quán)利要求1所述的RSA加密算法的實(shí)現(xiàn)電路,其特征在于所述預(yù)計(jì)算鏈可以在一個(gè)獨(dú)立的集成電路塊中實(shí)現(xiàn),也可以與多級基本處理單元連接而成的鏈路集成在同一集成電路塊中。
5.一種RSA加密算法的實(shí)現(xiàn)方法,其大數(shù)模冪運(yùn)算采用蒙哥馬利模乘法,在多級基本處理單元連接而成的鏈路中實(shí)現(xiàn)迭代運(yùn)算,模的二進(jìn)制數(shù)長度為n,其特征在于其初始預(yù)計(jì)算在多級預(yù)計(jì)算單元連接而成的鏈路中實(shí)現(xiàn),包括以下步驟①計(jì)算2nmodM;②左移一位寫入寄存器,再做取模運(yùn)算;③重復(fù)步驟②共n+2次。
6.根據(jù)權(quán)利要求4所述的RSA加密算法的實(shí)現(xiàn)方法,其特征在于其步驟①通過零與減數(shù)的補(bǔ)數(shù)相加實(shí)現(xiàn)。
7.根據(jù)權(quán)利要求4所述的RSA加密算法的實(shí)現(xiàn)方法,其特征在于在模乘運(yùn)算完成后,設(shè)置使能信號En為高,模乘結(jié)果PV[n-1]、PV[n-2]、……、PV[1]、PV
經(jīng)過多路器組Sn-1…S1S0輸?shù)饺悠?,若模乘結(jié)果大于M則對模乘結(jié)果求模后輸出,否則直接輸出。
全文摘要
一種RSA加密算法的實(shí)現(xiàn)電路及方法,模的二進(jìn)制數(shù)長度為n,其初始預(yù)計(jì)算電路由n+1個(gè)預(yù)計(jì)算單元連接而成,預(yù)計(jì)算單元包括觸發(fā)器D、全加器FA、反相器N,以及前后兩個(gè)多路器,用于選擇預(yù)計(jì)算和結(jié)果歸一化的前一級多路器組的使能信號為En,在模乘運(yùn)算完成后,信號En為高,完成結(jié)果歸一化過程。用于信號輸出選擇的后一級多路器組的使能信號Sel為根據(jù)進(jìn)位產(chǎn)生的控制信號。本發(fā)明將預(yù)計(jì)算和結(jié)果歸一化處理電路集成在芯片內(nèi),方便用戶,提高了運(yùn)算速度。
文檔編號G06F7/38GK1375764SQ0110765
公開日2002年10月23日 申請日期2001年3月19日 優(yōu)先權(quán)日2001年3月19日
發(fā)明者周玉潔, 金松, 劉英廣 申請人:深圳市中興集成電路設(shè)計(jì)有限責(zé)任公司