專利名稱:Vlsi用的智能卡模乘器結構的制作方法
技術領域:
VLSI用的智能卡模乘器結構屬于智能卡加/解密技術領域。
現(xiàn)代密碼學用密鑰解決了加密問題,密鑰用K表示。K可以是很多數(shù)值。密鑰K的可能值的范圍叫做密鑰空間(keyspace)。加密和解密運算都使用這個密鑰(即運算都依賴于密鑰,并用K作為下標表示),這樣,加解密函數(shù)變?yōu)镋k1(M)=CDk2(C)=M其中,Ek1是依賴于密鑰k1的加密函數(shù),M(Message)是被加密的明文Dk2是依賴于密鑰k2的解密函數(shù),C(Crypto)是加密后的密文其加密過程,具有如
圖1所示的特性實現(xiàn)公鑰密碼體制的算法很多,比較典型的是RSA算法和橢圓曲線算法。RSA算法是1978年2月,由美國麻省里工學院(MIT)的研究小組成員Riverst,Shamir和Adleman三位專家提出,并用他們名字的頭字母命名為RSA算法。它既能用于加密也能用于數(shù)字簽名。RSA的安全是基于大素數(shù)分解的難度,其公開密鑰和私人密鑰是一對大素數(shù)(100到200個大素數(shù)或更大)的函數(shù)。關于RSA硬件實現(xiàn)目前已經(jīng)制造出了許多RSA加密的芯片,RSA算法的正確性已被實踐和理論所證明。
在公鑰加/解密體制中,存在著一個大數(shù)模冪乘運算Pemod N,這個運算造成了公鑰加解密運算的巨大運算量。大數(shù)模冪乘運算速度決定了公鑰加解密的應用性能。從國內(nèi)外的研究現(xiàn)狀來看,由于公鑰加解密的安全性強,使得大數(shù)模冪乘運算應用非常廣泛。
2大數(shù)模冪乘Pemod N的分解公鑰密碼體制加解密就是進行大數(shù)模冪乘運算,大數(shù)模冪乘運算(Pemod N)速度決定公鑰加密的可用性。大數(shù)模冪乘運算(Pemod N)可分解為大數(shù)模乘運算AB mod N,它的分解形式為beginC=1;//C先賦值常數(shù)1for i=0 to u-1 do{if(ei=1) C=X·C(mod N)//第一個AB mod N的形式X=X·X(mod N)//第二個AB mod N的形式}return Cend其中,e=(enen-1...ei.....e0),從求Xemod N分解的算法中,可以看出存在著一種基本的運算形式AB mod N。因為AB的運算是一種普通兩數(shù)相乘運算。有關相乘算法的研究較為成熟和普遍,這樣在獲得AB之積X時,求模運算X mod N就變成基本的操作。通常,在已知X值時,通過X-N的循環(huán)遞減運算,而最終獲得X mod N。這種運算通常稱為模減運算。一般實際應用中,令X=AB,所以在進行模減運算前,先進行乘運算AB,再進行減運算,這種模運算稱之為模乘運算。因此,模乘運算AB mod N就成為一個值的研究的問題。
Montgomery的模乘算法RSA加密算法是目前在理論和實際應用中較為成功的一種公鑰密碼體制,它的安全性是基于數(shù)論中大整數(shù)分解為素數(shù)因子的困難性上。它有一對密鑰,即公鑰或加密密鑰(e,N)和私鑰或解密密鑰(d,N)。
對明文m,其加密過程c≡E(m)=memod N式中c表示密文而解密過程m≡D(c)=cdmod N m表示明文由Euler定理可以證明加/解密過程的一致性。RSA算法加密/解密過程實質(zhì)上就是一個計算模冪memod N或cdmod N的過程。但是由于m,e,c,d,N等操作數(shù)大于1024比特,直接的模冪運算已不可能,必須先將其分解為基本的大數(shù)模乘運算AB mod N。Montgomery算法正是為解決大數(shù)模乘運算AB mod N而提出的。
原始的Montgomey模乘算法設N為模數(shù)且N>1,R是與N互素的一個基,通常,R=2u,u是N的位數(shù);R-1和N滿足0<R-1<N,0<N′<R,R R-1-N N′=1,即RR-1(mod N)=1或N N′(mod R)=-1;對給定大整數(shù)T,且0≤T<RNMontgomery算法如下function REDC(T)m←(T mod R)N′mod Rt←(T+mN)/Rif t≥N then t-N else return t上述算法從表面上看僅有兩次大數(shù)乘法TN′和mN,但由于模乘運算時T=AB,0≤A<N,0≤B<N,所以算法共進行三次大數(shù)乘法運算。當A,B和N都為1024位以上的大整數(shù)時,大數(shù)相乘給硬件實現(xiàn)帶來了困難,因此必須對大數(shù)進行分解。另外,由于算法的返回結果是Montgomery積ABR-1mod N,而不是模乘積AB mod N,所以使用時還應消除Montgomery積的常數(shù)項R-1而變?yōu)槟3朔e。
目前,申請大數(shù)模乘的專利國外較多,國內(nèi)較少。國內(nèi)有關大數(shù)模乘的專利有兩項。這兩項專利分別是“高速模乘方法及裝置(96109838.4)”,“模乘法的電路及裝置(99808871.4)”。這兩項專利與我們要申請專利相比,我們的專利先進于這兩項專利,并且適合于大規(guī)模集成電路VLSI實現(xiàn)。
隨著智能卡的日益普及,智能卡交易中的數(shù)據(jù)安全變得越來越重要。由于公鑰密碼體制RSA(Rivest,Shamir,Adleman)解決了數(shù)字簽名、信息驗證和身份認證,因此智能卡采用公鑰密碼體制的RSA實施數(shù)據(jù)加密越來越必要。但是,智能卡采用公鑰密碼體制RSA進行加密目前存在兩個主要問題1)RSA密碼協(xié)處理器的VLSI(Very Large Scale Integration)實現(xiàn)面積過大2)RSA密碼協(xié)處理器的模冪乘運算速度較低。本申請分析和改進大數(shù)模乘的Montgomery算法,提出了一種新的高基模乘器結構。這種結構不僅降低了芯片面積,而且還減少了模冪乘運算的時鐘周期數(shù),適合于智能卡應用。
本實用新型所用的Montgomery模乘算法是一種
適合于VLSI實現(xiàn)的高并行度算法,其實質(zhì)在于把原始的三次大數(shù)乘法運算分解為2s2+s次小整數(shù)乘,它依次含有以下步驟設A,B分別為s位r進制整數(shù);A=(as-1as-2…a1a0),B=(bs-1bs-2…b1b0)模N也為s位r進制整數(shù),N=(ns-1ns-2…n1n0),且R=rs則有N<R,n0n0′mod r=-1,并使A<N,B<N,S=0,n′[0]=-n[0]-1mod r //求n0的模逆有(A)用s2-s次乘法計算乘積結果的低位S個,可用中間結果m[i]表示A.1i=0. ...... s-1A.2j=0.......i-1A.2. S=S+a[j]b[i-j]+m[j]n[i-j]A.3S=S+a[i]b[0]A.4m[i]=S n′[0]mod rA.5S=S+m[i]n[0]A.6S=S/r //右移一個r進制位(B)用s2-s次乘法計算乘積結果的高S位,用存儲變量m表示B.1i=s,...,2s -1B.2j=i-s+1,...,s-1B.2.1 S=S+a[j]b[i-j]+m[j]n[i-j]B.3m[i-s]=S mod rB.4S=S/r //右移一個r進制位(C)用s次加法把蒙格瑪麗(Montgomery)模乘積由[0,2N]調(diào)整到[0,N]C.1 r進制位t0=S mod r//t0是一個r進制位C.2 進位Cy=1C.3 j=0,...,s-1C.3.1 (Cy,b[j])=m[j]+not(n[j])+Cy//Cy為進位位,隨進位而變t0=t0+not[0]+CyC.4 若t0=0則 返回(b[s-1]b[s-2]…b[1]b[0])
否則返回(m[s-1]m[s-2]…m[1]m[0])本實用新型所提出的智能卡模乘器的VLSI結構,其特征在于它是一種用32位乘法器來實現(xiàn)1024位模乘運算且數(shù)據(jù)通路采用三級流水結構的高基模乘器,其第一級由兩個輸入分別為a,b和m,n的32位乘法器,以及輸入端分別與上述兩個乘法器的輸出端相連的兩個64位寄存器組成;第二級由累加兩個64位的積并產(chǎn)生一個進位Cy的64位加法器和與該64位加法器輸出端相連的65位寄存器構成。第三級由輸入端與上述65位寄存器的輸出端相連以求總的累加和的76位加法器以及與該76位加法器交互相連而輸出端輸出乘積結果的76位寄存器構成。
使用證明它已達到了預期的目的圖2,s=3時改進的FIPS模乘方法。
圖3~圖5,本實用新型提出的VLSI目的Montgomery模乘算法的計算機流程框圖。
圖6,RSA模乘器Monpro的結構示意圖圖7,R=rs=2ks下模冪Memod N的計算機流程框圖圖8,RSA加密處理器的結構示意圖上述算法的計算瓶頸是乘法的次數(shù)。A需要進行s2+2s次乘法,B需要進行s2-s次乘法,共進行2s2+s次乘法。C需要進行s次加法以調(diào)整模乘積由[0,2N]到[0,N]。
改進FIPS算法的實質(zhì)是把原始的Montgomery算法的3次大數(shù)乘分解為2s2+s次小整數(shù)乘,以利于VLSI實現(xiàn)。圖3~圖5是其計算機實現(xiàn)時的流程框圖。
模乘器是RSA密碼協(xié)處理器核心運算部件。模乘運算AB mod N速度取決于模乘運算的時鐘周期數(shù),所以模乘器設計目標應在規(guī)定的面積下盡可能降低模乘運算的時鐘周期數(shù)。在VLSI實現(xiàn)算法中,由于A,B,N都是r進制整數(shù),因此稱r為基,而通常取r=2k。若r=2k且k≥16,則稱r為高基。基于高基的模乘器就為高基模乘器。在本設計中,大數(shù)A,B,N各為u個二進制位,從數(shù)據(jù)的安全考慮,我們確定取u=1024比特。這樣A,B,N就可以表示成由s=u/k個字組成的多精度數(shù),A=(as-1,as-2,...ai...a1a0)r,而ai=(āk-1,āk-2,...,ā1ā0).即每個ai(0≤i<s)可表示k個二進制位。k值越大,硬件的VLSI實現(xiàn)規(guī)模也就越大。
在VLSI實現(xiàn)算法中,當s=u/k時,總乘法次數(shù)2s2+s就變?yōu)?(u/k)2+u/k。當u固定時,乘法次數(shù)2(u/k)2+u/k將隨著k的增大而減少,相應的運算時間也就越少,這是我們所希望的。但是,由于k值與VLSI的硬件實現(xiàn)規(guī)模成正比,k值過大會導致VLSI的實現(xiàn)面積和時延較大。因此,k的取值應在面積的約束下盡可能的降低運算的時鐘數(shù)。
選取 那么2(u/k)2+u/k就變?yōu)?取u的平方根的理由是在忽略 時(當u≥1024時, 與u相比很小),乘法次數(shù)就從非線性的u2變?yōu)榫€性的u,這種變化對降低運算時鐘數(shù)很有利。當 時,基于TSMC的0.35μm的標準單元庫進行綜合,結果表明密碼協(xié)處理器硬件面積約為38K門。若再增加k的取值,在相同的實驗條件下進行綜合,密碼協(xié)處理器模乘器硬件面積將變得更大。因此,設計中我們確定 由于確定了u=1024比特, 那么基r=2k=232,所以用32位的乘法器來實現(xiàn)1024位的模乘運算。在VLSI實現(xiàn)算法中,Part A和Part B各含有共同的乘積項a[j]b[i-j]和m[j]n[i-j],由于這兩個乘積項無數(shù)據(jù)相關,因此,可用兩個32位乘法器同時并行地進行乘法運算如圖6所示,于是在一個時鐘周期內(nèi)可完成兩次乘法運算。
在VLSI實現(xiàn)算法Part A中,由于a[j]b[i-j]和m[j]n[i-j]兩項可并行執(zhí)行,這樣,完成a[j]b[i-j]和m[j]n[i-j]的s2-s次乘僅需(s2-s)/2個時鐘周期。而其它三個乘積項a[i]b[0]、Sn′[0]和m[i]n[0]之間存在兩次數(shù)據(jù)相關,即a[i]b[0]相關Sn′[0]和Sn′[0]相關m[i]n[0],依據(jù)圖6的三級流水結構,每次相關需要等待3個時鐘周期,故兩次相關共需6個時鐘周期。又由于a[i]b[0]、Sn′[0]和m[i]n[0]需要循環(huán)s次,所以完成這三個乘積項的累加需要6s個時鐘周期。簡言之,Part A的乘加運算需要6s+(s2-s)/2個時鐘周期,即(s2+11s)/2個時鐘周期。
在VLSI實現(xiàn)算法Part B中,僅存在可并行執(zhí)行的乘積項a[j]b[i-j]和m[j]n[i-j],所以,(s2-s)次乘僅需(s2-s)/2個時鐘周期。而在Part C中,將模乘積調(diào)整到[0,N)應進行s次加法,還需s個時鐘周期。因此,算法中的Part A,B,C三項所耗的時鐘數(shù)之和為s2+6s或者 個時鐘周期。(將s=u/k, 代入式s2+6s得 )在VLSI實現(xiàn)算法Part A中,由于Sn′[0]這s次乘積并沒有計入累加和S中,累加和應為2s2+s-s=2s2次乘積之和,因此,用作累加的加法器位寬至少應大于log2(2s2264),而 所以,log2(2s2264)=75,于是選擇用于累加的加法器位寬為76位。見圖6。
模乘器的數(shù)據(jù)通路采用三級流水結構,以增強模乘器的并行性。即mul32=>adder64=>adder76,第一級為兩個32乘法器并行執(zhí)行,第二級一個64位的加法器累加兩個64位的積并產(chǎn)生一位進位Cy,第三級一個76位的加法器求總的累加和。模乘器的控制通路采用狀態(tài)機模型控制循環(huán)疊代以及模乘器與存儲器之間的數(shù)據(jù)交換??傊?,模乘器完成一次模乘運算需要 個時鐘周期。
當u=1024比特時,一次模乘運算需要1216個時鐘周期。
根據(jù)本實用新型提出的RSA模乘器Monpro,基于此模乘器實現(xiàn)的模冪Memod N硬件實現(xiàn)算法如下;R=re=2ksfunction MonExp(M,e,N,R) /*N是奇數(shù)*/步驟1M=M·R mod N步驟2x=1·R mod N步驟3for i=u-1 downto 0步驟4x=MonPro(x,x)步驟5if(ei=1)then x=MonPro(M,x)步驟6x=MonPro(x,1)步驟7return x相應的計算機實現(xiàn)的程序流程圖見圖7,而其RSA加冪處理器的結構示意圖見圖8。
圖8中的mux表示2選1的多路器,Monpro表示圖6的模乘器結構。(e,N)為加密密鑰。模冪算法從左到右掃描e=(eu-1…ei…e0)來調(diào)用圖6中的RSA模乘器MonPro,由于Montgomery積不是模乘積,因此步驟1、2、6用來消去Montgomery積中的R-1乘積項使之變?yōu)槟3朔e。模冪算法的VLSI實現(xiàn)就是RSA密碼協(xié)處理器,如圖8所示。模冪算法中的ei和圖8中的ei′關系是當ei=0時,ei′=0,即只進行一次模乘運算,當ei=1時,ei′=01,進行兩次模乘運算。
在平均的情況下,對任意的i,ei=1或ei=0的概率各半,所以平均需進行1.5次模乘運算,則完成模冪運算所需的時鐘周期數(shù)1.5u(s2+6s)=1.5u2+9uu]]>在最壞的情況下,對任意的i,所有的ei=1,全都進行2次模乘運算,則完成模冪運算所需的時鐘周期數(shù)2u(s2+6s)=2u2+12uu(s=u/k,k=u)]]>。
基于5MHz的工作時鐘,加密u=1024位,平均執(zhí)行時間為1.5×1024×(s2+6s)/(5×106)=1.5×1024×(u+6u)/(5×106)=374ms]]>最壞執(zhí)行時間為2×1024×(s2+6s)/(5×106)=2×1024×(u+6u)/(5×106)=498ms]]>1024位RSA密碼協(xié)處理器,用Cadence工具Verilog-XL進行仿真,驗證了加/解密M≡MedmodN的一致性和正確性?;?.35μm TSMC標準單元庫,用Synopsys工具進行綜合,實驗結果表明RSA密碼協(xié)處理器共用38K門,它完成一次1024位模乘運算需要1216個時鐘周期。它的最大時延為32位乘法器的組合邏輯時延,其值為15ns,所以RSA密碼協(xié)處理器最高可允許65MHz,滿足智能卡20MHz的工作頻率。在基于外部5MHz的工作時鐘下,RSA密碼協(xié)處理器加密1024位的明文平均需要374ms。
權利要求1.VLSI用的智能卡模乘器結構,其特征在于它是一種用32位乘法器來實現(xiàn)1024位模乘運算且數(shù)據(jù)通路采用三級流水結構的高基模乘器,其第一級由兩個輸入分別為a,b和m,n的32位乘法器,以及輸入端分別與上述兩個乘法器的輸出端相連的兩個64位寄存器組成;第二級由累加兩個64位的積并產(chǎn)生一個進位Cy的64位加法器和與該64位加法器輸出端相連的65位寄存器構成。第三級由輸入端與上述65位寄存器的輸出端相連以求總的累加和的76位加法器以及與該76位加法器交互相連而輸出端輸出乘積結果的76位寄存器構成。
專利摘要VLSI用的智能卡模乘器結構屬于智能卡加、解密技術領域。其特征在于它用了一種適合于VLSI實現(xiàn)的高并性度算法,它把原始的Montgomery模乘算法的3次大數(shù)乘分解為2s
文檔編號H04L9/28GK2566363SQ0224392
公開日2003年8月13日 申請日期2002年7月31日 優(yōu)先權日2002年7月31日
發(fā)明者李樹國, 周潤德, 孫義和 申請人:清華大學