專利名稱:基于蒙哥馬利模乘運(yùn)算的數(shù)據(jù)加解密處理方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種基于蒙哥馬利模乘運(yùn)算的數(shù)據(jù)加解密處理方法及裝置。
背景技術(shù):
隨著無線網(wǎng)絡(luò)通信技術(shù)的迅速發(fā)展,人們對(duì)信息安全的要求不斷提高,相關(guān)的網(wǎng)絡(luò)安全協(xié)議不斷產(chǎn)生,如國(guó)家無線局域網(wǎng)委員會(huì)提出的WAPI(WireleSS LAN Authentication and Privacy hfrastructure,無線局域網(wǎng)鑒別和保密基礎(chǔ)結(jié)構(gòu))網(wǎng)絡(luò)安全協(xié)議;網(wǎng)絡(luò)安全方面的產(chǎn)品也不斷推出;因此,開發(fā)一種高效而安全的加密算法是勢(shì)在必行的。目前所流行的加密算法有對(duì)稱加密算法和非對(duì)稱加密算法,而在非對(duì)稱加密算法當(dāng)中,RSA和ECC加密算法的應(yīng)用普及率最高。在WAPI無線局域網(wǎng)技術(shù)文件里面就有提到, WAPI的安全協(xié)議采用的就是ECC (橢圓曲線密碼算法)加密算法。ECC加密算法中的底層運(yùn)算基本上是依靠模乘來完成的,而模乘的運(yùn)算速度和效率也決定了整個(gè)ECC加密算法的效率和速度。在目前的大整數(shù)模乘算法的硬件實(shí)現(xiàn)中,蒙哥馬利(Montgomery)模乘算法被認(rèn)為是最高效的,也是最適合用硬件實(shí)現(xiàn)的一種算法。Montgomery算法設(shè)計(jì)了一個(gè)剩余類系統(tǒng),將普通模乘的計(jì)算過程轉(zhuǎn)換到Montgomery剩余類(余數(shù)域)里面進(jìn)行,在這個(gè)剩余類里面,所有的數(shù)的計(jì)算過程中產(chǎn)生的大數(shù)都會(huì)被規(guī)約到剩余類里,它的計(jì)算會(huì)顯得更加簡(jiǎn)潔,特別是在硬件實(shí)現(xiàn)上面,能夠提供更加迅速的計(jì)算速度和更簡(jiǎn)單的硬件結(jié)構(gòu)。 Montgomery算法理論的基礎(chǔ)是下面的定理1。定理1 假設(shè)N和R是互素的兩個(gè)整數(shù),N' = -N"1 modR,則對(duì)于所有的整數(shù)T,當(dāng)
T M M -V AIT + M X N ^r, ι ι、Γ
M = TXN' modR時(shí)/ X 是一個(gè)整數(shù),而且滿足—— ~三TR1 mod N其中N'
Rκ,
是N的逆,T是乘數(shù)A和被乘數(shù)B的乘積。為了讓Montgomery模乘算法在實(shí)際應(yīng)用中(軟件、硬件)能更方便地使用,可以根據(jù)計(jì)算機(jī)或者芯片精度的要求,把每個(gè)大數(shù)分解成為2n為基底的數(shù),按照字節(jié)的處理方式來實(shí)現(xiàn)Montgomery算法。設(shè)q是2為基底的數(shù),利用q來表示多精度的大數(shù)A如下A = a^iq^'+a^q^^+aiq+ao根據(jù)上述定理1所推導(dǎo)的Montgomery模乘算法轉(zhuǎn)換成代碼在 FPGA(Field-Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)上實(shí)現(xiàn)時(shí),不具備并行運(yùn)算的可能性,幾個(gè)乘法的實(shí)現(xiàn)形式是串行進(jìn)行的,它們的運(yùn)算結(jié)果都需要依賴前面計(jì)算所得的值,因此在FPGA上實(shí)現(xiàn)起來的運(yùn)算速度慢,導(dǎo)致整個(gè)ECC加密算法的效率低,速度低
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是,提供一種高效的蒙哥馬利模乘算法,以達(dá)到降低系統(tǒng)運(yùn)行的周期、提高整體模乘效率的效果,使其應(yīng)用于數(shù)據(jù)加密算法中時(shí),能夠提高數(shù)據(jù)加解密的效率和速度。為解決以上技術(shù)問題,本發(fā)明實(shí)施例提供一種基于蒙哥馬利模乘運(yùn)算的數(shù)據(jù)加解密處理方法,包括獲取由待處理的數(shù)據(jù)構(gòu)成的模冪運(yùn)算;將所述模冪運(yùn)算轉(zhuǎn)換為模乘運(yùn)算,根據(jù)所述模乘運(yùn)算的結(jié)果獲取所述模冪運(yùn)算的
結(jié)果;根據(jù)所述模冪運(yùn)算的結(jié)果獲得處理后的數(shù)據(jù);所述待處理的數(shù)據(jù)為待加密的明文,所述處理后的數(shù)據(jù)為密文;或者所述待處理的數(shù)據(jù)為待解密的密文,所述處理后的數(shù)據(jù)為明文;所述模乘運(yùn)算的實(shí)現(xiàn)方法如下輸入被乘數(shù)A、乘數(shù)B、模數(shù)P和模數(shù)P的逆q,按照蒙哥馬利模乘算法進(jìn)行運(yùn)算,輸出模乘結(jié)果C ;其中,C = AB2_nm0dP ;以基底2k來表示整數(shù),按照從數(shù)據(jù)的低位開始、每k位為一段的拆分方式, 分別將 A、B、P 和 q 轉(zhuǎn)換為 m 維數(shù)組,則
權(quán)利要求
1.一種基于蒙哥馬利模乘運(yùn)算的數(shù)據(jù)加解密處理方法,其特征在于,包括 獲取由待處理的數(shù)據(jù)構(gòu)成的模冪運(yùn)算;將所述模冪運(yùn)算轉(zhuǎn)換為模乘運(yùn)算,根據(jù)所述模乘運(yùn)算的結(jié)果獲取所述模冪運(yùn)算的結(jié)果;根據(jù)所述模冪運(yùn)算的結(jié)果獲得處理后的數(shù)據(jù);所述待處理的數(shù)據(jù)為待加密的明文,所述處理后的數(shù)據(jù)為密文;或者所述待處理的數(shù)據(jù)為待解密的密文,所述處理后的數(shù)據(jù)為明文; 所述模乘運(yùn)算的實(shí)現(xiàn)方法如下輸入被乘數(shù)A、乘數(shù)B、模數(shù)P和模數(shù)P的逆q,按照蒙哥馬利模乘算法進(jìn)行運(yùn)算,輸出模乘結(jié)果C ;其中,C = AB2_nm0dP ;以基底2k來表示整數(shù),按照從數(shù)據(jù)的低位開始、每k位為一段的拆分方式,分別將A、B、P和q轉(zhuǎn)換為m維數(shù)組,則J = (^小…,巧…。)? , B 二 d,···,認(rèn)、, P 二(PmVU0)2lc \q = -p~l mod2k =-ρ'1 mod2^ ;C = {cm_x,···,C1,C0)2,;其中,k 是處理器的運(yùn)算字長(zhǎng);設(shè)置外循環(huán)變量i、內(nèi)循環(huán)變量j、中間變量z、ti和S,所述蒙哥馬利模乘運(yùn)算的步驟如下501、令C 為 0 ;502、令外循環(huán)變量i為0,開始外循環(huán);503、令ζ 為 0 ;504、將Ctl加上 與IDci的乘積,再與q相乘后,求其對(duì)模2k的余數(shù),將結(jié)果賦給、;505、令內(nèi)循環(huán)變量j為0,開始內(nèi)循環(huán);506、將Cj加上 與bj的乘積,再加上、與Pj的乘積,再加上z,將結(jié)果賦給s;507、若內(nèi)循環(huán)變量j不等于0,則求s對(duì)模2k的余數(shù),將結(jié)果賦給(^1;508、令內(nèi)循環(huán)變量j加1,重復(fù)內(nèi)循環(huán)直到j(luò)等于m,退出內(nèi)循環(huán);509、將s除以2k,將結(jié)果賦給z,再將ζ的值賦給(V1;510、令外循環(huán)變量i加1,重復(fù)外循環(huán)直到i等于m,退出外循環(huán);511、若C大于P,則將C與P的差值賦給C,否則C值不變;512、返回C。
2.一種蒙哥馬利模乘運(yùn)算裝置,其特征在于,所述裝置的運(yùn)算字長(zhǎng)為k,包括輸入控制器,用于輸入被乘數(shù)A、乘數(shù)B、模數(shù)P和模數(shù)P的逆q ;按照從數(shù)據(jù)的低位開始、每k位為一段的拆分方式,將A、B、P和q轉(zhuǎn)換為4個(gè)m維數(shù)組; 數(shù)據(jù)存儲(chǔ)器,用于存儲(chǔ)已轉(zhuǎn)換成m維數(shù)組的A、B、P和q ; 時(shí)序控制器,用于控制所述數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)輸入和輸出;數(shù)據(jù)通路,用于從所述數(shù)據(jù)存儲(chǔ)器中輸入A、B、P和q,按照蒙哥馬利模乘算法進(jìn)行運(yùn)算,輸出模乘結(jié)果C ;其中,C = AB2、odP ;輸出單元,用于對(duì)所述數(shù)據(jù)通路的輸出波形進(jìn)行整形,并作為最終模乘輸入的接口 ; 以基底2k來表示整數(shù),按照從數(shù)據(jù)的低位開始、每k位為一段的拆分方式,分別將 A、B、P 和 q 轉(zhuǎn)換為 m 維數(shù)組,則乂 = (α.ν,Α,α。)? , B = (J)m^,---,bM,P = (Pm-I ,---,PuPo)^ ^q = -P'1 mod Ik =- mod 2k ;C = (Cm^,…,C1, )2i ;設(shè)置夕卜循環(huán)變量i、內(nèi)循環(huán)變量j、中間變量ζ、、和s,則所述數(shù)據(jù)通路實(shí)現(xiàn)蒙哥馬利模乘運(yùn)算的步驟如下(501、令C 為 0 ;(502、令外循環(huán)變量i為0,開始外循環(huán);(503、令ζ 為 0 ;(504、將Ctl加上 與IDci的乘積,再與q相乘后,求其對(duì)模2k的余數(shù),將結(jié)果賦給、;(505、令內(nèi)循環(huán)變量j為0,開始內(nèi)循環(huán);(506、將Cj加上 與bj的乘積,再加上、與Pj的乘積,再加上z,將結(jié)果賦給s;(507、若內(nèi)循環(huán)變量j不等于0,則求s對(duì)模2k的余數(shù),將結(jié)果賦給(^1;(508、令內(nèi)循環(huán)變量j加1,重復(fù)內(nèi)循環(huán)直到j(luò)等于m,退出內(nèi)循環(huán);(509、將s除以2k,將結(jié)果賦給z,再將ζ的值賦給(V1;(510、令外循環(huán)變量i加1,重復(fù)外循環(huán)直到i等于m,退出外循環(huán);(511、若C大于P,則將C與P的差值賦給C,否則C值不變;(512、返回C。
3.如權(quán)利要求2所述的蒙哥馬利模乘運(yùn)算裝置,其特征在于,所述數(shù)據(jù)存儲(chǔ)器包括 A寄存器,用于存儲(chǔ)被乘數(shù)A ;B寄存器,用于存儲(chǔ)乘數(shù)B; P寄存器,用于存儲(chǔ)模數(shù)P; Q寄存器,用于存儲(chǔ)模數(shù)P的逆,即數(shù)據(jù)q ;其中,B寄存器和P寄存器采用串入并出的模式,A寄存器和Q寄存器采用串進(jìn)串出的模式,由所述時(shí)序控制器控制四個(gè)寄存器的數(shù)據(jù)輸入和輸出。
4.如權(quán)利要求3所述的蒙哥馬利模乘運(yùn)算裝置,其特征在于,所述數(shù)據(jù)通路包括1個(gè) PU_A運(yùn)算單元、m-1個(gè)PU_B運(yùn)算單元和1個(gè)約減運(yùn)算單元;所述PU_A運(yùn)算單元用于實(shí)現(xiàn)蒙哥馬利模乘運(yùn)算外循環(huán)部分中的、=(c0+aib0)qmod2k 的運(yùn)算;并且,當(dāng)內(nèi)循環(huán)變量j等于0時(shí),實(shí)現(xiàn)蒙哥馬利模乘運(yùn)算內(nèi)循環(huán)部分中的s = (co+a^o+tiPo+z)的運(yùn)算;所述PU_B運(yùn)算單元用于實(shí)現(xiàn)蒙哥馬利模乘運(yùn)算內(nèi)循環(huán)部分中的當(dāng)j = 1到j(luò) = m-1 時(shí),S = (Cj+Bibj+tiPj+z)的運(yùn)算;所述約減運(yùn)算單元用于蒙哥馬利模乘運(yùn)算的內(nèi)外循環(huán)全部結(jié)束后,對(duì)循環(huán)運(yùn)算結(jié)果進(jìn)行判斷,若所述運(yùn)算結(jié)果大于模數(shù)P,則將所述運(yùn)算結(jié)果歸約到小于P的范圍內(nèi),否則直接輸出所述運(yùn)算結(jié)果。
5.如權(quán)利要求4所述的蒙哥馬利模乘運(yùn)算裝置,其特征在于,所述PU_A運(yùn)算單元包括AI_IN輸入端,用于從所述A寄存器中讀入被乘數(shù)A ; B_IN輸入端,用于從所述B寄存器中讀入乘數(shù)B ; Q_IN輸入端,用于從所述Q寄存器中讀入數(shù)據(jù)q ; P_IN輸入端,用于從所述P寄存器中讀入模數(shù)P ; CJ.IN輸入端,用于輸入從PU_B運(yùn)算單元反饋的中間數(shù)據(jù);“0”輸入端,用于輸入0;當(dāng)外循環(huán)變量i = 0時(shí),所述?口_々運(yùn)算單元從所述“0”輸入端輸入0,計(jì)算獲得Ctl =.0 ;當(dāng)外循環(huán)變量i > 0時(shí),所述PU_A運(yùn)算單元從所述CJ_IN輸入端輸入從PU_B運(yùn)算單元反饋的中間數(shù)據(jù),作為后續(xù)計(jì)算的輸入;所述PU_A運(yùn)算單元還包括TI_0UT輸出端、Z_0UT輸出端和AI_0UT輸出端,分別輸出中間變量、、ζ和 ,作為下一級(jí)PU_B運(yùn)算單元的輸入。
6.如權(quán)利要求5所述的蒙哥馬利模乘運(yùn)算裝置,其特征在于,所述m-1個(gè)PU_B運(yùn)算單元依次連接成運(yùn)算鏈,且第1個(gè)PU_B運(yùn)算單元與所述PU_A運(yùn)算單元相連接;所述PU_B運(yùn)算單元包括TI.IN輸入端,用于輸入所述PU_A運(yùn)算單元輸出的中間變量、; Z_IN輸入端,用于輸入所述PU_A運(yùn)算單元輸出的中間變量ζ ; AI_IN輸入端,用于輸入上一級(jí)運(yùn)算單元輸出的中間變量叫;CJ_IN輸入端,用于輸入上一級(jí)PU_B運(yùn)算單元輸出的中間變量Cj ;當(dāng)j = 1時(shí),C = 0 ; 當(dāng)j > 1時(shí),C等于所述CJ_IN輸入端輸入的數(shù)值;所述PU_B運(yùn)算單元還包括TI_0UT輸出端、Z_0UT輸出端、AI_0UT輸出端和CJ_0UT輸出端,分別輸出中間變量、、ζ、 和…,作為下一級(jí)PU_B運(yùn)算單元的輸入。
7.如權(quán)利要求6所述的蒙哥馬利模乘運(yùn)算裝置,其特征在于,所述約減運(yùn)算單元包括比較模塊和減法模塊;所述比較模塊用于將所述PU_A運(yùn)算單元、PU_B運(yùn)算單元的運(yùn)算結(jié)果 C和模數(shù)P作比較,并輸出比較結(jié)果,作為減法模塊的控制信號(hào);當(dāng)所述運(yùn)算結(jié)果C大于模數(shù)P時(shí),控制所述減法模塊進(jìn)行C減P的操作。
8.一種基于蒙哥馬利模乘運(yùn)算的數(shù)據(jù)加解密處理裝置,其特征在于,包括 數(shù)據(jù)輸入模塊,用于獲取由待處理的數(shù)據(jù)構(gòu)成的模冪運(yùn)算;模乘處理模塊,將所述模冪運(yùn)算轉(zhuǎn)換為模乘運(yùn)算,根據(jù)所述模乘運(yùn)算的結(jié)果獲取所述模冪運(yùn)算的結(jié)果;數(shù)據(jù)輸出模塊,根據(jù)所述模冪運(yùn)算的結(jié)果獲得處理后的數(shù)據(jù);所述待處理的數(shù)據(jù)為待加密的明文,所述處理后的數(shù)據(jù)為密文;或者所述待處理的數(shù)據(jù)為待解密的密文,所述處理后的數(shù)據(jù)為明文;所述模乘處理模塊包括如權(quán)利要求2 7任一項(xiàng)所述的蒙哥馬利模乘運(yùn)算裝置,用于實(shí)現(xiàn)蒙哥馬利模乘運(yùn)算。
全文摘要
本發(fā)明公開了一種基于蒙哥馬利模乘運(yùn)算的數(shù)據(jù)加解密處理方法及裝置,在對(duì)數(shù)據(jù)加密或解密時(shí),將模冪運(yùn)算轉(zhuǎn)換為蒙哥馬利模乘運(yùn)算。所述蒙哥馬利模乘運(yùn)算分解成為外循環(huán)和內(nèi)循環(huán)兩部分,其中內(nèi)循環(huán)主要做乘法的處理工作,而外循環(huán)主要做約減部分工作;在外循環(huán)和內(nèi)循環(huán)運(yùn)算結(jié)束后,對(duì)運(yùn)算結(jié)果進(jìn)行判斷,若運(yùn)算結(jié)果大于模數(shù)P,則將所述運(yùn)算結(jié)果歸約到小于P的范圍內(nèi),否則直接輸出所述運(yùn)算結(jié)果。在硬件實(shí)現(xiàn)上,將內(nèi)外循環(huán)設(shè)計(jì)成并行處理流水線架構(gòu),能夠降低一次模乘運(yùn)算所使用的時(shí)鐘周期,提高整體模乘效率的效果,從而提高數(shù)據(jù)加解密的效率和速度。
文檔編號(hào)G06F7/72GK102207847SQ201110116480
公開日2011年10月5日 申請(qǐng)日期2011年5月6日 優(yōu)先權(quán)日2011年5月6日
發(fā)明者張永強(qiáng), 梁鵬飛 申請(qǐng)人:廣州杰賽科技股份有限公司