一種基于AOP的多項(xiàng)式基GF(2<sup>227</sup>)高速模乘法器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)安全,數(shù)據(jù)信息加解密領(lǐng)域,及其涉及一種基于全一約減式AOP (all one polynomial,即約減式的每一個(gè)權(quán)重系數(shù)均為I)的多項(xiàng)式基GF(2227)高速模乘法器。
【背景技術(shù)】
[0002]隨著信息技術(shù)的飛速發(fā)展,隨著網(wǎng)絡(luò)的普及以及廣泛的應(yīng)用,網(wǎng)絡(luò)上流通的數(shù)據(jù)越來(lái)越多越來(lái)越大,并且人們對(duì)網(wǎng)絡(luò)上數(shù)據(jù)傳輸?shù)陌踩砸笤絹?lái)越高,這樣對(duì)于網(wǎng)絡(luò)安全的研宄帶來(lái)了很大的挑戰(zhàn),因此密碼學(xué)如今成為了信息安全的核心。密碼學(xué)中公鑰密碼體制得到了廣泛的研宄和使用,在對(duì)公鑰密碼學(xué)的研宄中,一種更加節(jié)省資源加解密效率更高的密碼體制被提出,即橢圓曲線密碼學(xué)。
[0003]1985年,Neal Koblitz和Victor Miller分別提出了橢圓曲線密碼系統(tǒng)(Elliptic Curve Cryptography-ECC),自從ECC誕生之后它的安全性和實(shí)現(xiàn)效率就被眾多的數(shù)學(xué)家和密碼學(xué)家所廣泛研宄,目前它被認(rèn)為是已知的公鑰密碼體制中每比特加密強(qiáng)度最高的一種,同RSA密碼算法相比,它具有更高的安全性能,計(jì)算速度快,存儲(chǔ)空間占用小。在ECC系統(tǒng)硬件實(shí)現(xiàn)中,基于二元域的多項(xiàng)式基的實(shí)現(xiàn)方式被廣泛的使用,而在ECC系統(tǒng)中,點(diǎn)乘模塊是影響處理速度等性能的關(guān)鍵,而點(diǎn)乘模塊中模乘模塊又是它的核心,所以對(duì)模乘的研宄更是關(guān)鍵所在。
[0004]因此為了提高整個(gè)系統(tǒng)的性能,減少資源消耗,尋求更好的模乘模塊的實(shí)現(xiàn)方式成為了研宄關(guān)注的焦點(diǎn),研宄機(jī)構(gòu)對(duì)于NIST推薦的幾種位寬已經(jīng)有了很廣泛和深入的研宄,所以有一些研宄機(jī)構(gòu)開(kāi)始著眼于一類具有特殊類型約減多項(xiàng)式的位寬,本發(fā)明就是針對(duì)這種特殊類型,即AOP類型,設(shè)計(jì)了一種新的模乘法器單元。
【發(fā)明內(nèi)容】
[0005]本發(fā)明是針對(duì)二元域多項(xiàng)式基下的基于AOP型約減多項(xiàng)式的模乘法器,它實(shí)現(xiàn)了兩個(gè)位寬為m的操作數(shù)的相乘取模操作,得到位寬為m的結(jié)果,在此發(fā)明中m = 227,即實(shí)現(xiàn)C(x) = (A(x) XB(x))modf(x),其中 f(x) =X1M0
[0006]本發(fā)明為了實(shí)現(xiàn)上述操作,采用串并結(jié)合的實(shí)現(xiàn)方式,每次處理操作數(shù)B (X)的字長(zhǎng)w = 57,在部分積疊加路徑中插入寄存器,流水執(zhí)行。本發(fā)明包括的操作單元:(1)主控狀態(tài)機(jī);(2)數(shù)據(jù)加載以及分配部分;(3) A(X) XBi(X)部分積產(chǎn)生以及部分積疊加部分;(4)部分積累加以及最終數(shù)據(jù)結(jié)果寄存以及模乘結(jié)束標(biāo)志信號(hào)給出。
[0007]本發(fā)明根據(jù)上述所述,在檢測(cè)到高電平使能信號(hào)的時(shí)候開(kāi)始執(zhí)行操作,啟動(dòng)主控狀態(tài)機(jī),狀態(tài)機(jī)控制各個(gè)模塊數(shù)據(jù)的給出,控制流水執(zhí)行并且寄存邏輯單元的運(yùn)算結(jié)果,實(shí)現(xiàn)整個(gè)流程的操作。
[0008]所述的數(shù)據(jù)加載以及分配部分是在狀態(tài)機(jī)控制下,寄存輸入的操作數(shù),并按照數(shù)字串行方式,分階段給出所需模乘運(yùn)算單元所需的操作數(shù)。
[0009]所述的部分積產(chǎn)生以及部分積疊加部分,部分積產(chǎn)生是采用模乘約減同時(shí)進(jìn)行的方式,在傳統(tǒng)乘法器基礎(chǔ)上實(shí)現(xiàn)227*57的模乘,產(chǎn)生57個(gè)227bit的部分積,部分積疊加是將上述57個(gè)部分積進(jìn)行模加得到227*57的最終結(jié)果。
[0010]所述的部分積累加,是將每一次執(zhí)行模乘單元得到的227*57結(jié)果累次相加,最終得到227*227的模乘結(jié)果,完成一次完整的模乘操作并給出一個(gè)周期的輸出允許信號(hào)。
[0011]本發(fā)明在部分積疊加部分中插入了寄存器,切斷了模乘操作的路徑,從而減小關(guān)鍵路徑長(zhǎng)度,通過(guò)狀態(tài)機(jī)控制使得整個(gè)操作流水執(zhí)行,是在多消耗寄存器資源的條件下提高時(shí)鐘頻率,提升模乘操作的效率。
【附圖說(shuō)明】
[0012]本發(fā)明提供了系統(tǒng)的模塊框圖以及子模塊的框圖,整個(gè)發(fā)明的相關(guān)圖示簡(jiǎn)述如下,便于更好的理解本發(fā)明。
[0013]圖1所示是本發(fā)明整體數(shù)據(jù)流圖。
[0014]圖2所示是控制數(shù)據(jù)流的主控狀態(tài)機(jī)。
[0015]圖3所示是模乘模塊部分結(jié)構(gòu)框圖。
[0016]圖4所示是模乘模塊中2級(jí)異或樹(shù)鏈。
[0017]圖5所示是模乘模塊中約減模塊結(jié)構(gòu)框圖。
[0018]圖6所示是流水執(zhí)行方式各個(gè)狀態(tài)進(jìn)行的操作。
[0019]圖7所示是本發(fā)明模乘整體設(shè)計(jì)框圖。
【具體實(shí)施方式】
[0020]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)表述更加清晰,下面對(duì)整個(gè)發(fā)明結(jié)合附圖對(duì)實(shí)施方式做更加詳細(xì)的描述。
[0021]圖1所示是本發(fā)明整體數(shù)據(jù)流圖,也就是整體模乘模塊的結(jié)構(gòu)框圖,整體模塊100包括了四個(gè)子部分,簡(jiǎn)述如下:
[0022]輸入數(shù)據(jù)加載以及分配寄存器堆102 ;
[0023]模乘整體模塊104 ;
[0024]模加模塊106 ;
[0025]部分積寄存器堆108。
[0026]在主控狀態(tài)機(jī)的控制下,分時(shí)給出各個(gè)邏輯單元的操作數(shù)據(jù),然后寄存相應(yīng)的計(jì)算結(jié)果,整體模乘采用數(shù)字串行的執(zhí)行方式,數(shù)字串行字長(zhǎng)w = 57,采用LSB的執(zhí)行方式,處理的操作數(shù)據(jù)位寬最大為227bit,一次模乘可得到227*57模乘運(yùn)算結(jié)果,為了提高執(zhí)行頻率以及吞吐率,采用流水執(zhí)行,經(jīng)過(guò)4次模乘模塊運(yùn)算可以得到最終模乘運(yùn)算結(jié)果。
[0027]輸入數(shù)據(jù)加載以及分配寄存器堆102是在主控狀態(tài)機(jī)的控制下,加載了輸入的兩個(gè)模乘操作數(shù)A,B,并且正確的分配并給出每一次計(jì)算227*57所需要的輸入數(shù)據(jù),如第一次 227*57 模乘,給出 A, BJB1= B[56:0]);第二次 227*57 模乘給出 A 57,B2(A57= AXx57, B2=B[113:57]);第三次 227*57 模乘給出 A114, B3(A114= AXx 114,B3= B[170:114]);第四次227*57 模乘給出 A171, B3(A171= AXx171,B4= {I ‘b0,B[226:171]})。
[0028]模乘整體模塊104的詳細(xì)結(jié)構(gòu)圖如圖3所示,在此不贅述,詳細(xì)內(nèi)容見(jiàn)圖3的詳細(xì)說(shuō)明。
[0029]模加模塊106完成兩個(gè)操作數(shù)相加并取模的操作,如果兩個(gè)操作數(shù)A,B,那么模加的結(jié)果即為(A+B)mod(2),也就是兩個(gè)操作數(shù)按位相加而沒(méi)有進(jìn)位,進(jìn)一步用硬件實(shí)現(xiàn)即兩個(gè)操作數(shù)按位異或A~B,通過(guò)異或陣列就能夠?qū)崿F(xiàn)此模塊。
[0030]部分積寄存器堆108寄存了每一次227*57模乘的運(yùn)算累加結(jié)果,并將之前的累加結(jié)果作為模加模塊106的一個(gè)輸入操作數(shù),此模塊分時(shí)寄存了C1, C^C2, CACfC3, Ci+CfQ+C;,其中Ci是每一次模乘的運(yùn)算結(jié)果,最后寄存了 227*227的模乘結(jié)果,并作為輸出數(shù)據(jù)。
[0031]圖2所示是模乘模塊的主控狀態(tài)機(jī),狀態(tài)機(jī)200包含了9個(gè)狀態(tài),分別為IDLE, LOAD, PARTIAL REGFILE1, PARTIAL REGFILE2, PARTIAL REGFILE3, RESULTI, RESULT2,RESULT3, FINAL RESULT。外部的控制狀態(tài)跳轉(zhuǎn)的只有模乘使能信號(hào)Mul_en_i,當(dāng)它為高電平時(shí),啟動(dòng)狀態(tài)機(jī),跳轉(zhuǎn)到LOAD狀態(tài),順序執(zhí)行之后狀態(tài),如果過(guò)程中出現(xiàn)了未知狀態(tài),狀態(tài)機(jī)跳轉(zhuǎn)到IDLE狀態(tài)。下面分別描述各個(gè)狀態(tài)。
[0032]狀態(tài)IDLE,是空閑狀態(tài),此時(shí)所有寄存器值都是初始值0,這個(gè)狀態(tài)監(jiān)測(cè)使能信號(hào)是否為高,準(zhǔn)備啟動(dòng)狀態(tài)機(jī),此外此狀態(tài)將把模乘結(jié)果輸出標(biāo)志信號(hào)清零,當(dāng)從FINALRESULT跳轉(zhuǎn)到IDLE的時(shí)候,會(huì)拉高模乘結(jié)果輸出標(biāo)志信號(hào),為保證此信號(hào)只保持一個(gè)時(shí)鐘周期,在IDLE時(shí)將其清零。
[0033]狀態(tài)LOAD是將輸入的兩個(gè)操作數(shù)A,B寄存并將每一次227*57的輸入數(shù)據(jù)給出。
[0034]狀態(tài)PARTIAL REGFILE1是將第一次227*57生成的部分積部分疊加結(jié)果寄存,也就是將結(jié)果寄存在圖3中的寄存器堆304,并將第二次227*57的輸入數(shù)據(jù)給出,輸入數(shù)據(jù)已在詳述102的內(nèi)容中體現(xiàn)。
[0035]狀態(tài)PARTIAL REGFILE2是將寄存器堆304結(jié)果進(jìn)一步通過(guò)而異或樹(shù)鏈邏輯疊加之后的結(jié)果寄存,也就是將結(jié)果寄存在圖3中寄存器堆308,同時(shí)將第二次227*57生成的部分積部分疊加結(jié)果寄存,即將結(jié)果寄存在圖3中的寄存器堆304,并將第三次227*57的輸入數(shù)據(jù)給出。
[0036]狀態(tài)PARTIAL REGFILE3將寄存器堆308結(jié)果進(jìn)一步通過(guò)而異或樹(shù)鏈邏輯疊加之后的結(jié)果寄存,也就是將結(jié)果寄存在圖3中寄存器堆3012,并將寄存器堆304結(jié)果進(jìn)一步通過(guò)而異或樹(shù)鏈邏輯疊加之后的結(jié)果寄存在308,同時(shí)將第三次227*57生成的部分積部分疊加結(jié)果寄存在304,并將第四次227*57的輸入數(shù)據(jù)給出。
[0037]狀態(tài)RESULT1將3012的結(jié)果通過(guò)異或門(mén)陣列并通過(guò)106模塊與108內(nèi)容相加的結(jié)果寄存在108中,此時(shí)就得到了第一次模乘結(jié)果