專利名稱:高速模乘法方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種高速的模乘法裝置及方法,適用于公開(kāi)密鑰體制如RSA、DSS等對(duì)數(shù)據(jù)加密、解密、數(shù)字簽名的密碼技術(shù)。
形如Y≡Xdmod M稱為模指數(shù)運(yùn)算,廣泛用于密碼學(xué)—特別是公開(kāi)密鑰密碼體制中。例如,Deffie和Hellman協(xié)議,RSA算法及專用于數(shù)字簽名的DSA(或稱DSS)算法都建立在這種運(yùn)算上。隨著信息技術(shù)的發(fā)展,對(duì)信息加密和數(shù)字簽名越來(lái)越重要。但是這些算法的計(jì)算量太大,因此,高速模指數(shù)運(yùn)算是上述算法能夠?qū)嶋H應(yīng)用的關(guān)鍵。根據(jù)目前數(shù)據(jù)加密的要求,模M及X都必須是巨大整數(shù),通常認(rèn)為500—1000比特。計(jì)算模指數(shù)本質(zhì)上是重復(fù)計(jì)算形如A×B mod M的模乘法,即要求快速模乘法計(jì)算。
計(jì)算R≡A×B modM,已存在多種算法,著名的如Montgomery算法(見(jiàn)"Mudular Multiplication without Trial Division",Math.Computation,Vol.44,1985,pp.519-521)。本質(zhì)上與紙和筆計(jì)算的方法相似。就是從被乘數(shù)A的高位開(kāi)始,每取次一位與乘數(shù)B相乘(B的倍數(shù)),與上次殘余數(shù)R相加,進(jìn)行一次向左(向上)的移位。再減去M的某個(gè)整數(shù)倍,直到每一位都處理完,就得到最終殘余數(shù)RR=A×B-Q×M。圍繞這個(gè)計(jì)算過(guò)程。由于通用的短字長(zhǎng)CPU不能滿足這種高密度計(jì)算,只有設(shè)計(jì)專門(mén)模乘法電路?,F(xiàn)已經(jīng)實(shí)用中的512位模指數(shù)運(yùn)算器的效率是十幾秒,遠(yuǎn)遠(yuǎn)滿足不了信息加密或數(shù)字簽名的要求。在研究中的方案提出許多脈動(dòng)陣列的技術(shù),(見(jiàn),"Systolic Mudular Multiplication",Colin.D.Walter,IEEE Transaction on Computers,Vol.42,No.6,June 1993,pp.693-699;美國(guó)專利5,101,431"Systolic array for modularmultiplication".(1992),采用n×n個(gè)單元按位處理每次的殘數(shù)R,即連續(xù)兩次乘法,可能是目前最快的之一。但是在實(shí)現(xiàn)上有一定的困難,因?yàn)閷?duì)于103/2的數(shù)據(jù)長(zhǎng)度需要4×106個(gè)門(mén),顯然難于集成到單一芯片上。美國(guó)專利5,313,530"Caculatingapparatus and method of encrypting/decrypting communication data by using the same"(1994),是一種脈動(dòng)加流水的的技術(shù)方案,運(yùn)用高階基數(shù)(多比特表示一位),一個(gè)操作數(shù)按位流水與另一操作數(shù)處理每個(gè)殘數(shù)R,流水級(jí)數(shù)是另一操作數(shù)的位數(shù),仍然相當(dāng)多的,是一種在電路復(fù)雜度和速度間作了一定折衷的方案。
現(xiàn)代密碼運(yùn)算上面對(duì)巨大的數(shù)據(jù),而且隨著破譯技術(shù)的發(fā)展,數(shù)據(jù)長(zhǎng)度還會(huì)增加。而迄今為止的模乘法器,本質(zhì)上都在順序執(zhí)行n×n和n+/-n的操作,就是說(shuō)一個(gè)操作數(shù)的每一比特(位)順序地與另一操作數(shù)的每一比特(位)相乘、或相加或相減。由于n很大,這種順序地積累單步延遲造成總效率降低,而且每一步都涉及A×B、確定Q、Q×M的計(jì)算,每個(gè)處理單元都相當(dāng)?shù)膹?fù)雜。因此,不解決這本質(zhì)上的障礙,就不會(huì)有高效的模乘法器滿足密碼運(yùn)算的需要。
因此,本發(fā)明的目的在于提供一種方法及裝置,克服傳統(tǒng)長(zhǎng)數(shù)據(jù)操作的低效。使乘法和加法每步不是按一操作數(shù)的一比特(位)對(duì)另一操作數(shù)的一比特(位)順序處理,變?yōu)橐徊僮鲾?shù)的一位(k比特)對(duì)另一操作數(shù)的全部位(n比特)的并行處理,提高模乘法速度。
本發(fā)明的另一目的還在于提供一種方法和裝置,使乘法和加法的上述一位(k比特)對(duì)n比特的處理,變?yōu)閗+1比特的乘/加處理,提高每步的效率。
本發(fā)明的又一目的還在于提供一種方法和裝置,使用最少的元件構(gòu)成實(shí)用的模乘法器,滿足要求面積第一的應(yīng)用要求。
本發(fā)明的又一目的還在于提供一種方法和裝置,采用并行流水的電路構(gòu)成一種實(shí)用模乘法器,滿足要求速度第一的應(yīng)用要求,但復(fù)雜度少于陣列結(jié)構(gòu)。
本發(fā)明的這些目的可以通過(guò)以下的措施來(lái)達(dá)到本發(fā)明的方法及裝置有三個(gè)輸入寄存器,分別存放被乘數(shù)A、乘數(shù)B和模數(shù)M。采用基數(shù)r=2k(k>2)的高階基數(shù),將被乘數(shù)A表示為A=Σj=1mAjrj-1,]]>其中m=n/k,是位數(shù),n是數(shù)據(jù)長(zhǎng)度,通常要求500-1000比特,為方便起見(jiàn),假設(shè)A、B、M有同樣的數(shù)據(jù)長(zhǎng)度,并不失其一般性。其余的如乘數(shù)B、商Q、模M都采用同樣的記號(hào)。一個(gè)輸出寄存器存放同樣表示的殘數(shù)R。另有一個(gè)高速(k+1)×n乘法器,執(zhí)行A×B。采用A的每一位每次與B的所有m位相乘。令Dt(t=1,2,…,m)為第t次求的Am-t+1、B的乘積,即D1=Σj=1mAmBj·rj,]]>D2=r·D1+Σj=1mAm-1Bj·rj]]>Dt=r·Dt-1+Σj=1mAm-t+1Bj·rj,]]>Dt為m+1位。另一高速乘法器執(zhí)行M與它的某個(gè)倍數(shù)Q相乘,即M×Q。同理,采用Q的每一位每次與M的所有m位相乘,第t次所求得的Qm-t+1、M的乘積為Zt,即Zt=r·Zt-1+Σj=1mQm-t+1Mj.]]>運(yùn)用一種并行方法和電路,使所說(shuō)的兩個(gè)(k+1)×n乘法器,并行執(zhí)行一次m個(gè)(k+1)×k和兩次m個(gè)的(k+1)+(k+1),完成一次的(k+1)×n的運(yùn)算,即k+1比特的乘法和加法完成
采用兩次相加的中間結(jié)果提前預(yù)置高位進(jìn)位的方法和電路,做到在后一次相加中,m+1個(gè)部分積之間的無(wú)進(jìn)位。雖然這會(huì)引起一定的延時(shí)(大約一次k比特加法),相比順序的按位加法,效率有很大的提高。
根據(jù)模乘法的特點(diǎn),通常做法是每次的A、B乘積都減去一個(gè)M的倍數(shù),并不影響最終結(jié)果,另一方面減少中間結(jié)果的存儲(chǔ)空間。由一個(gè)加法器把每次A×B的部分積與前次所求得的殘余數(shù)Rt-1向左(向上)移位k比特后相加,再由一個(gè)減法器完成減去M的Q倍,得到當(dāng)前的殘數(shù)Rt,每次循環(huán)完成Rt=Dt-Zt=r·Rt-1+Σj=1m(Am-t+1Bj-Qm-t+1Mj)·rj.]]>采用一個(gè)單獨(dú)的計(jì)算模塊,通過(guò)執(zhí)行如下的運(yùn)算,得出每次循環(huán)中要求的一位商Qm-t+1的估計(jì)值Rte=Dte-Qm-t+1Mm,]]>式中Dte為第t次所求得A×B的乘積與已求余數(shù)Rt移位后相加之和取頭兩位,作為它的估值,用以計(jì)算下一位商的估值。Rte是基于商估值,并非真正的殘余數(shù)Rt。如果0≤Rte<Mm(除數(shù)M的最高m位),則可以認(rèn)為對(duì)Qm-t+1的猜測(cè)正確。否則Rte應(yīng)作適當(dāng)調(diào)整。
判斷Rte的符號(hào),可以決定是否執(zhí)行Rt=Rte+M,由于計(jì)算商Qm-t+1的估值的總是大于或等于真正的商,Rt<=Rte。由此除去了每次都進(jìn)行Rt<M的比較過(guò)程,簡(jiǎn)化電路并嬴得時(shí)間。
如此,經(jīng)過(guò)t=m步的循環(huán),完成整個(gè)計(jì)算,求得最終的殘余數(shù)Rm。
本發(fā)明達(dá)到如下的效果
在此前的模乘法對(duì)A、B和M都是相當(dāng)大的整數(shù)時(shí)效率很低,根本一點(diǎn)在于乘法或加法中存在很長(zhǎng)進(jìn)位,這是傳統(tǒng)上不可避免的。本發(fā)明用“短”的乘法、加法取代傳統(tǒng)的“長(zhǎng)”乘法、加法,技術(shù)上用(k+1)×k和三次(k+1)比特加法達(dá)到k×n的結(jié)果,避免了部分積相加中n比特長(zhǎng)的進(jìn)位鏈,進(jìn)位傳遞限制在k比特。使無(wú)論速度,還是器件數(shù)量有較優(yōu)結(jié)果。此外,求商也僅是一次(k+1)×k的乘法和(k+1)比特減法的快速計(jì)算?;仡櫿麄€(gè)運(yùn)算,全是k+1比特運(yùn)算延時(shí)3次乘法、21次加/減法可完成500比特的數(shù)據(jù)長(zhǎng)度。本發(fā)明可根據(jù)的實(shí)際需要,循環(huán)地一次一位,亦可流水地一次m位完成計(jì)算,更存在二極端間各種一次多位的平衡。
根據(jù)以上對(duì)處理一位數(shù)據(jù)的思想描述,充分展現(xiàn)了本發(fā)明并行流水計(jì)算特點(diǎn),而且可有1位到m位的多種靈活裝置。因此,下面的實(shí)施例僅在于強(qiáng)調(diào)發(fā)明的具體應(yīng)用,而不是限制發(fā)明的精神。
附圖的圖例說(shuō)明
圖1模乘法順序結(jié)構(gòu);圖2最簡(jiǎn)單的模乘法器;圖3乘法電路結(jié)構(gòu);圖4加法電路結(jié)構(gòu);圖5計(jì)算一位商的器件;圖6一種并行流水的模乘法器。
下面結(jié)合附圖的實(shí)施例進(jìn)一步闡述本發(fā)明。
如圖1,整個(gè)運(yùn)算由一系列的乘法或加、減法的順序計(jì)算構(gòu)成A×B的乘法電路4、部分積加法電路5、殘余數(shù)與A×B乘積相加的加法電路6、計(jì)算一位商Q的電路7、Q×M的乘法電路8、部分積相加的加法電路9、減去M倍數(shù)得到一個(gè)殘余數(shù)的減法電路10及兩個(gè)加法電路11,12。其中乘法電路4每次從第一輸入寄存器1接受一位第一操作數(shù)Ai(i=1,2,....m),由高往低的順序,第一次接受Am,第二次Am-1,....,第m次A1,從第二輸入寄存器2接受m位第二操作數(shù)Bm,Bm-1,.......,B1,計(jì)算At-m+1×B。部分積相加的加法電路5將m個(gè)部分積相加,計(jì)算出D=Σj=1mAm-t+1Bj]]>殘余數(shù)與A×B乘積相加的加法電路6計(jì)算前一次的殘余數(shù)r.Rt-1+D,并把和放到中間寄存器RD19(圖2)。求一位商Q的計(jì)算電路7輸入RD19中的高兩位和模M的高一位,計(jì)算出商的估值Qm-t+1。另一個(gè)乘法電路8每次輸入得到的一位商的估值Qm-t+1從第三寄存器3接受m位第三操作數(shù)Mm,Mm-1,......,M1,計(jì)算Qt-m+1×M。另一個(gè)部分積相加的加法電路9將m個(gè)部分積相加,計(jì)算出Z=Σj=1mQm-t+1Mj.]]>減法電路10計(jì)算RtD-Z,結(jié)果就是殘余數(shù)R,存放到輸出寄存器RR13。判斷Rt的符號(hào)位,如果R<0,則將Rt與M于另二加法電路11,12中相加,和仍然存放到輸出寄存器RR13。如果R>0,則完成一次循環(huán)。重復(fù)輸入下一個(gè)A,直到A1,完成Rm的計(jì)算。圖1是基本的按位流水的方法和結(jié)構(gòu)。
如圖2,把所說(shuō)的兩個(gè)乘法電路4,8,合二為一個(gè)乘法電路16,增加兩個(gè)數(shù)據(jù)選擇電路14,15,選擇乘法電路16的輸入,使乘法電路16先后執(zhí)行A×B和Q×M時(shí)輸入相應(yīng)的數(shù)據(jù)A、B或Q、M,把所說(shuō)的加法電路5,6,9,11,12、減法電路10合為一個(gè)加減法電路17,用操作控制信號(hào)選擇加減電路17的運(yùn)算。其余的輸入寄存器1,2,3、輸出寄存器13仍然保留。增加兩個(gè)中間寄存器RD19,RZ20。采用總線的三態(tài)電路作寄存器和運(yùn)算單元間的數(shù)據(jù)通道。這樣得到由一個(gè)(k+1)×n的乘法電路16、一個(gè)n+n的加減法電路17、兩個(gè)n比特的中間寄存器19,20及所說(shuō)的輸入、輸出寄存器組成的最小電路的快速模乘法器。這是按位循環(huán)結(jié)構(gòu)。
如圖3為乘法電路16的構(gòu)成,21-25是m個(gè)(k+1)×k的乘法單元按順序由左到右排列。第一操作數(shù)A由高到低每次取k比特輸入,或每次輸入k+1比特的Q的估值輸入,第二操作數(shù)B由高到低取k比特按左到右的順序輸入到每個(gè)乘法單元21-25,同時(shí)計(jì)算(k+1)×k。其輸出的2k+1比特乘積中的高k+1比特和它的左鄰單元的低k比特,作為一對(duì)操作數(shù)同時(shí)輸入到加減法電路17中對(duì)應(yīng)的一個(gè)k+1比特加法單元26-31,加減法電路17輸出m+1位的乘積。
如圖4為加減法電路17的構(gòu)成,是m個(gè)k+1比特帶加、減控制和符號(hào)位的加法單元26-31按順序由左到右排列。輸入的兩個(gè)n比特的操作數(shù)按k比特分成m段,由高到低每段各取k比特按左到右的順序輸入到每個(gè)加法單元26-31,同時(shí)相加一次,各段的最高比特作為進(jìn)位輸出到進(jìn)位鎖存器36-40,其余k比特輸出到和鎖存器32-35。和鎖存器32-35的輸出和其右鄰單元進(jìn)位鎖存器36-40的輸出,再輸出到一個(gè)k+1端的與門(mén)41-44,與門(mén)輸出如果是“1”,則對(duì)其左鄰單元的進(jìn)位鎖存器36-40進(jìn)行置“1”的操作。經(jīng)過(guò)適當(dāng)?shù)难舆t,再將和鎖存器32-35和其右鄰的進(jìn)位鎖存器36-40的值于對(duì)應(yīng)的另一組加法單元45-48中相加。得到最后的和。
如圖5為計(jì)算一位商的電路,輸入Dt+r.Rt的高的2k比特和M的最高k比特(Mm)Mm分別與0,1,2,---2(r-1)于2r-1個(gè)(k+1)×k乘法單元50-54中相乘,同時(shí)產(chǎn)生2r-1個(gè)乘積送入對(duì)應(yīng)減法單元55-59的“B”端(減數(shù)端),Dt+r.Rt的最高2k比特輸入其“A”端(被減數(shù)端),相減得出2r-1個(gè)差,由一個(gè)輸出電路判斷符號(hào)位,若對(duì)應(yīng)的電路60-64的輸入符號(hào)不同,則觸發(fā)對(duì)應(yīng)的鎖存單元65-69,內(nèi)中分別鎖存有0,1,2,---,2r-2,從而輸出對(duì)應(yīng)值為合適的Q。
如圖6為高速的流水模乘法器,70-74是多個(gè)如圖1的單一模乘法器,78-80,83-84,86是多個(gè)計(jì)算電路,每個(gè)電路由如圖1的單一模乘法器去掉了A×B的乘法電路4及A×B的部分積相加的加法電路5組成,75-77,81-82,85是多個(gè)加法電路。將第一操作數(shù)A由高到低按位輸入對(duì)應(yīng)的模乘法器70-74的第一操作數(shù)寄存器1,同時(shí)第二操作數(shù)寄存器2存放第二操作數(shù)。并行計(jì)算多個(gè)模乘法,輸出多個(gè)殘余數(shù)R。這些R兩兩對(duì)應(yīng),其左邊的R×r(相當(dāng)于圖1中前一次的R)與右邊的R(相當(dāng)于圖1中的D)于多個(gè)加法電路75-77相加,加法電路75-77的數(shù)目等于單一模乘法電路70-74的一半,將多個(gè)和各取最高兩位,與模M的最高位輸入到多個(gè)計(jì)算電路78-80,其輸出多個(gè)殘余數(shù)R,按前述的多個(gè)R相加的方法處理,每一次R的數(shù)目減半,……,直到只剩下一個(gè)R,便是最終的殘余數(shù)。這是多位流水的方法和結(jié)構(gòu)。
此外,根據(jù)圖1的基本方法和電路,還存在多種流水加循環(huán)的結(jié)構(gòu)變化,使本發(fā)明適應(yīng)多種用途。
權(quán)利要求
1.一種模乘法裝置,由三個(gè)輸入寄存器,一個(gè)輸出寄存器,乘法電路,加法電路組成,其特征在于第一個(gè)輸入寄存器存放k比特一位的數(shù)據(jù)A;第二個(gè)輸入寄存器存放k比特一位的m位數(shù)據(jù)B;第三個(gè)輸入寄存器存放k比特一位的m位數(shù)據(jù)M;一個(gè)輸出寄存器存放計(jì)算出的殘余數(shù)R;第一個(gè)乘法電路把所說(shuō)的第一個(gè)輸入寄存器的數(shù)據(jù)A與第二個(gè)輸入寄存器的數(shù)據(jù)B相乘;第一個(gè)加法電路把所說(shuō)的第一個(gè)乘法電路的多個(gè)部分積相加;第二個(gè)加法電路把所說(shuō)殘余數(shù)R乘以基數(shù)r后再與的所說(shuō)的乘法電路的積相加,結(jié)果放入一個(gè)中間寄存器RD;一個(gè)計(jì)算電路,輸入所說(shuō)加法電路輸出的高2K比特及第三個(gè)輸入寄存器存放的數(shù)據(jù)M的最高一位,計(jì)算并輸出k+1比特的商;第二個(gè)乘法電路把所說(shuō)計(jì)算電路輸出的k+1比特的商與第三個(gè)寄存器的數(shù)據(jù)M相乘,結(jié)果放到另一個(gè)中間寄存器RZ;第三個(gè)加法電路把所說(shuō)的第二個(gè)乘法電路的多個(gè)部分積相加;一個(gè)減法電路把所說(shuō)的兩個(gè)中間寄存器RD和RZ的值相減,結(jié)果放到殘余數(shù)寄存器;另外的加法電路,當(dāng)殘余數(shù)R小于零時(shí),把殘余數(shù)R和數(shù)據(jù)M相加至少一次,結(jié)果放到殘余數(shù)寄存器RR。
2.根據(jù)權(quán)利1所說(shuō)的模乘法裝置,其特征在于其中的二個(gè)乘法電路由m個(gè)k+1的小乘法單元組成,每個(gè)單元輸入相同的k比特?cái)?shù)據(jù)A與不同的k比特?cái)?shù)據(jù)B。
3.根據(jù)權(quán)利1所說(shuō)的模乘法裝置,其特征在于其中的所有的加法電路由兩組m個(gè)k+1的小加法單元組成,第一組每個(gè)單元輸出的進(jìn)位存放到進(jìn)位鎖存器及輸出的和存放到和鎖存器,每個(gè)進(jìn)位鎖存器輸出與其左鄰,即高一位的和鎖存器的輸出經(jīng)一個(gè)k+1端的與門(mén)檢測(cè),根據(jù)所說(shuō)的與門(mén)的輸出決定其左鄰,即高一位的進(jìn)位鎖存器的值,每個(gè)進(jìn)位鎖存器輸出與其左鄰,即高一位的和鎖存器的輸出于另一組中對(duì)應(yīng)的加法單元相加,輸出最后的和。
4.根據(jù)權(quán)利1所說(shuō)的模乘法裝置,其特征在于其中的計(jì)算電路由多個(gè)乘法單元、減法單元、一個(gè)輸出電路組成,輸入所說(shuō)第一個(gè)中間寄存器的高二位和第三輸入寄存器存放的數(shù)據(jù)M的最高一位,將數(shù)據(jù)M的最高一位和0,1,2……,2r-2分別輸入到所說(shuō)的乘法單元相乘,得到的2r-1個(gè)數(shù),與第一個(gè)中間寄存器高二位相減,經(jīng)輸出電路輸出k+1比特的商。
5.根據(jù)權(quán)利1所說(shuō)的模乘法裝置,其特征在于可以把兩個(gè)乘法電路單元合為一個(gè)乘法電路,把所有加法、減法電路合為一個(gè)加減法電路,根據(jù)一個(gè)控制信號(hào)決定加減法電路的操作,增加二個(gè)輸入數(shù)據(jù)的選擇器,輸入乘法電路所需數(shù)據(jù),保留計(jì)算k+1比特商的計(jì)算電路、所有輸入寄存器、輸出寄存器和中間寄存器,構(gòu)成一種最簡(jiǎn)單的高效模乘法裝置。
6.根據(jù)權(quán)利1所說(shuō)的模乘法裝置,其特征在于可以把多個(gè)這樣的模乘法裝置并行設(shè)置,增加多個(gè)加法電路,增加多個(gè)缺少了第一乘法電路和第一加法電路的模乘法裝置的剩余部分組成的計(jì)算電路,將第一操作數(shù)A由高到低按位輸入對(duì)應(yīng)的模乘法器的第一操作數(shù)寄存器,同時(shí)第二操作數(shù)寄存器存放第二操作數(shù),并行計(jì)算多個(gè)模乘法,輸出多個(gè)殘余數(shù)R,這些R兩兩對(duì)應(yīng),其左邊的R×r與右邊的R于多個(gè)加法電路相加,加法電路的數(shù)目等于單一模乘法裝置的一半,將多個(gè)和取最高兩位,與第三個(gè)輸入寄存器最高位輸入到下級(jí)多個(gè)計(jì)算電路,其輸出多個(gè)殘余數(shù)R,再兩兩送對(duì)應(yīng)單元處理,輸出殘余數(shù)R的數(shù)目減半,直到最終剩一個(gè)殘余數(shù)R,構(gòu)成一種流水處理的最高速模乘法器。
全文摘要
本發(fā)明涉及一種高速的模乘法裝置及計(jì)算方法,適用于密碼技術(shù),特別是公開(kāi)密鑰體制如RSA、DSS等對(duì)數(shù)據(jù)加密、解密和數(shù)字簽名的運(yùn)算。針對(duì)密碼學(xué)的模乘法數(shù)據(jù)長(zhǎng)度大的特點(diǎn),采用幾個(gè)比特并行的短乘法、加法、達(dá)到整個(gè)數(shù)據(jù)長(zhǎng)度的乘、加運(yùn)算的結(jié)果,避免長(zhǎng)的進(jìn)位延遲,大大提高計(jì)算的效率。計(jì)算可循環(huán)地一次一位、流水一次全部位,或者一次若干位,滿足實(shí)用對(duì)速度-電路面積的各種要求。
文檔編號(hào)G06F7/48GK1152746SQ96109838
公開(kāi)日1997年6月25日 申請(qǐng)日期1996年9月20日 優(yōu)先權(quán)日1996年9月20日
發(fā)明者張胤微 申請(qǐng)人:張胤微