陳冬云,李元金
(1.貴陽學(xué)院電子與通信工程學(xué)院,貴陽 550005;2.安全互聯(lián)實(shí)驗(yàn)室,江蘇 蘇州 215000)
一種高吞吐率國密SM3硬件IP核的設(shè)計(jì)與實(shí)現(xiàn)*
陳冬云1*,李元金2
(1.貴陽學(xué)院電子與通信工程學(xué)院,貴陽 550005;2.安全互聯(lián)實(shí)驗(yàn)室,江蘇 蘇州 215000)
為滿足網(wǎng)絡(luò)安全認(rèn)證的需求,提出了一種高吞吐率的國密SM3的硬件IP核的設(shè)計(jì)方法。該方法用3級流水線縮短了每輪運(yùn)算的關(guān)鍵路徑,提升了系統(tǒng)時(shí)鐘,并將64輪運(yùn)算全部展開,實(shí)現(xiàn)輪間64級流水線,總共192級的全流水線設(shè)計(jì),能夠同時(shí)實(shí)現(xiàn)192組消息的SM3運(yùn)算?;赟MIC 0.18 μm的工藝,實(shí)現(xiàn)了該IP核,時(shí)鐘頻率達(dá)到了200 MHz,吞吐率達(dá)到了102.4 Gbit/s,比現(xiàn)有的研究成果提升39.3%。
信息安全;國密SM3;流水線;吞吐率;IP核
網(wǎng)絡(luò)安全認(rèn)證的問題越來越突出,Hash算法能夠?qū)⒁淮當(dāng)?shù)據(jù)計(jì)算出一個(gè)固定長度的值與之對應(yīng),從而根據(jù)該值實(shí)現(xiàn)這串?dāng)?shù)據(jù)的完整性驗(yàn)證,因而廣泛應(yīng)用于網(wǎng)絡(luò)安全認(rèn)證。為了適應(yīng)互聯(lián)網(wǎng)的快速發(fā)展,國家密碼管理局于2010年發(fā)布了中國自己的Hash算法—國密SM3[1]。近些年來,圍繞如何實(shí)現(xiàn)SM3的快速運(yùn)算,文獻(xiàn)[2-5]從不同側(cè)面分別加以研究和實(shí)現(xiàn)。文獻(xiàn)[2]通過采用CSA加法器優(yōu)化關(guān)鍵路徑,并提出了雙路并行結(jié)構(gòu)的加法器,實(shí)現(xiàn)了比較高的吞吐率;文獻(xiàn)[3]強(qiáng)調(diào)與ARM處理器的系統(tǒng)結(jié)合方面提升吞吐率;文獻(xiàn)[4]展開了64輪計(jì)算以使吞吐率獲得一個(gè)較大的提升;文獻(xiàn)[5]通過輪計(jì)算的合并和CSA加法器的優(yōu)化來實(shí)現(xiàn)整體吞吐率的提升。從已取得的吞吐率來看,還有繼續(xù)提升的空間,以滿足日益復(fù)雜的網(wǎng)絡(luò)安全需求。
本文在參考文獻(xiàn)[6-7]的基礎(chǔ)上,提出了一種高吞吐率的SM3硬件IP核的設(shè)計(jì)方案。通過分析輪內(nèi)計(jì)算的關(guān)鍵路徑,本文采用3級流水線,極大的縮短了關(guān)鍵路徑,提升了系統(tǒng)主頻,同時(shí)展開64輪計(jì)算過程,從而獲得一個(gè)192級流水線結(jié)構(gòu)的IP。并基于SMIC 0.18 μm工藝實(shí)現(xiàn)了系統(tǒng)主頻達(dá)200 MHz,總吞吐率高達(dá)102.4 Gbit/s。
國密SM3能夠?qū)θ魏我粋€(gè)比特長度小于264的消息生成唯一對應(yīng)的256 bit長度的雜湊值,其算法流程圖如圖1所示。首先進(jìn)行消息填充,以滿足512 bit為一塊的分塊要求,其實(shí)現(xiàn)方式為:按式(消息的長度l+1 bit的’1’+kbit的’0’)%512=448填充數(shù)據(jù),然后將取模余下的448 bit數(shù)據(jù)加上最后64 bit的消息,剛好湊成N個(gè)512 bit大小的塊。接著對填充后的消息進(jìn)行分組、擴(kuò)展和64輪的迭代壓縮;在每一塊壓縮結(jié)束后,和上一塊的結(jié)果做異或,作為下一塊迭代壓縮的輸入。所有塊都依次做完運(yùn)算之后,就得到最終的雜湊值。
圖1 國密SM3算法流程圖
圖2 輪內(nèi)三級流水線計(jì)算架構(gòu)圖
圖1中,消息填充和消息分組常采用軟件方式實(shí)現(xiàn)[8],消息擴(kuò)展和迭代壓縮是SM3算法的核心運(yùn)算部分,其運(yùn)算耗時(shí)費(fèi)力,需要設(shè)計(jì)專門的加速硬件。本文工作的重點(diǎn)就是進(jìn)行64輪迭代壓縮的設(shè)計(jì)以提速SM3算法。
2.1 輪內(nèi)3級流水線設(shè)計(jì)
國家密碼管理局給出的國密SM3壓縮函數(shù)的計(jì)算過程如式(1)所示,其關(guān)鍵路徑在于計(jì)算下一輪A和E的過程。計(jì)算下一輪的A,首先得先計(jì)算SS1,而SS1需要計(jì)算2次加法獲得,由SS1到TT1的求解過程,又有3次加法計(jì)算,所以計(jì)算下一輪的A需要有5次加法,及與或非和移位等運(yùn)算。同樣,計(jì)算下一輪E的過程也需要5次的加法。由于加法是整個(gè)鏈路中延時(shí)最關(guān)鍵的部分,所以如何化分加法的層次就成為關(guān)鍵路徑優(yōu)化的關(guān)鍵。
基于文獻(xiàn)[7]MD5的高速計(jì)算模型,本文提出了三級流水線的方式來優(yōu)化關(guān)鍵路徑,如圖2所示。首先將Ej+Tj、Dj+W1j和Hj+Wj放到第一層加法運(yùn)算中,在這一層中,同時(shí)計(jì)算FFj和GGj函數(shù),其次在第二層中計(jì)算SS1、SS2、FFj0+Dj0和GGj0+Hj0,最后在第三層計(jì)算TT1、TT2和下一輪的輸出。
通過以上三個(gè)層級的劃分,使得每一層只有一次加法運(yùn)算延時(shí),這樣大大減少了關(guān)鍵路徑的延時(shí),使系統(tǒng)的時(shí)鐘頻率能夠得到極大的提高。最終的關(guān)鍵路徑如圖2所標(biāo)示,從SS11到Ej+1的計(jì)算過程,其延時(shí)由一個(gè)加法器延時(shí)和2級異或邏輯延時(shí)構(gòu)成。
在圖2中Aj~Hj、W1j、Wj、Tj代表第j輪的輸入,Aj+1~Hj+1代表第j輪的輸出和第j+1輪的輸入。Aj0~Hj0表示第一個(gè)層級的輸出結(jié)果,Aj1~Hj1表示第二個(gè)層級的輸出結(jié)果。其中,除了Aj+1和Ej+1的計(jì)算過程復(fù)雜之外,Bj+1~Dj+1、Fj+1~Gj+1僅僅是寄存器賦值或寄存器移位賦值,移位過程在實(shí)現(xiàn)過程中其實(shí)是連線的順序問題,其路徑延時(shí)只是線延時(shí),能夠快速實(shí)現(xiàn)。
由此實(shí)現(xiàn)了每一輪運(yùn)算的三級流水線處理,依次先后處理三組消息的同一輪運(yùn)算。
ABCDEFGH←V(i)
FORj=0 TO 63
SS1←[(A<<<12)+E+(Tj<< SS2←SS1⊕(A<<<12) TT2←GGj(E,F,G)+H+SS1+Wj D←C C←B<<<9 B←A A←TT1 H←G G←F<<<19 F←E E←P0(TT2) ENDFOR V(i+1)←ABCDEFGH⊕V(i) 式中:X,Y,Z為字。 式(1) 國密SM3迭代壓縮函數(shù)[1] 2.2 輪間64級流水線設(shè)計(jì) 為了進(jìn)一步提高SM3的吞吐率,借鑒文獻(xiàn)[4]的64輪全展開和文獻(xiàn)[6]中對MD5的高速實(shí)現(xiàn)方法,本文提出了基于3級流水線的64輪全展開的實(shí)現(xiàn)方法,如圖3所示。每一輪都由上面介紹的三級流水線處理結(jié)構(gòu)組成,在每一輪能同時(shí)處理3組消息的3塊數(shù)據(jù)。其中,M1~M192代表192個(gè)消息的編號(hào),[1]和[2]分別代表消息的第[1]個(gè)512 bit塊和第[2]個(gè)512 bit塊。 由圖3可見,該結(jié)構(gòu)能夠同時(shí)處理192個(gè)消息的1塊數(shù)據(jù),每個(gè)消息塊的處理延時(shí)為192個(gè)系統(tǒng)時(shí)鐘周期。以192級的流水線方式處理,相當(dāng)于每個(gè)系統(tǒng)時(shí)鐘周期處理一塊512 bit的數(shù)據(jù),因此其吞吐率為: 吞吐率=512×Fclk bit/s 式中:Fclk是系統(tǒng)時(shí)鐘頻率。采用該結(jié)構(gòu)的不足是需要緩存每一級的數(shù)據(jù),使存儲(chǔ)的空間比較大。 圖3 輪間64級流水線架構(gòu)圖 基于SMIC 0.18 μm的工藝,采用verilog語言對圖4的64輪共192級流水線數(shù)據(jù)處理架構(gòu)進(jìn)行描述,并設(shè)計(jì)成一個(gè)獨(dú)立的IP核。然后采用NC-verilog進(jìn)行仿真驗(yàn)證,數(shù)據(jù)來源于文獻(xiàn)[1]給出的示例和大量隨機(jī)數(shù)據(jù)。仿真結(jié)果與以C語言描述的SM3算法結(jié)果進(jìn)行比對,比對結(jié)果全部通過,驗(yàn)證了該IP核的正確性。最后采用Design Compiler進(jìn)行綜合,IC compiler進(jìn)行布局布線和prime time進(jìn)行靜態(tài)時(shí)序分析,得到的數(shù)據(jù)如表1所示。 表1 本文設(shè)計(jì)IP核數(shù)據(jù)表 該IP核的布局布線并且時(shí)序收斂后的版圖如圖4所示,由圖可見該IP核采用正方形布局,長寬均約為3 mm,最終得到9 mm2的面積,而標(biāo)準(zhǔn)單元的面積為6.6 mm2,利用率大約為73.3%。此版圖只是一種示例,具體可根據(jù)實(shí)際應(yīng)用需求,集成到SoC芯片里面,并且根據(jù)工藝節(jié)點(diǎn)的不同,所需面積可進(jìn)一步的縮小。 圖4 布局布線后的版圖 本文研究成果與已經(jīng)發(fā)表的研究成果進(jìn)行對比,如表2所示。 表2 結(jié)果對比 由此可以看出本文的研究成果在吞吐率方面具有明顯的優(yōu)勢。如果采用更加先進(jìn)的工藝,可以進(jìn)一步的提高時(shí)鐘頻率,提升吞吐率,同時(shí)縮小面積。 本文提出了一種國密SM3高吞吐率實(shí)現(xiàn)的方法,采用verilog語言設(shè)計(jì)了一個(gè)獨(dú)立的IP核,并基于SMIC 0.18 μm的工藝進(jìn)行了實(shí)現(xiàn)。該方法通過三級流水線的方式縮短了每輪運(yùn)算的關(guān)鍵路徑,并對64輪運(yùn)算全展開,以192級流水線的方式實(shí)現(xiàn)了192組消息同時(shí)進(jìn)行SM3計(jì)算,實(shí)現(xiàn)高吞吐率的目標(biāo)。最終的靜態(tài)時(shí)序分析表明該IP的時(shí)鐘可達(dá)200 MHz,從而整體實(shí)現(xiàn)102.4 Gbit/s的吞吐率,比現(xiàn)有的最佳成果高出39.3%,將極大的滿足大數(shù)據(jù)時(shí)代網(wǎng)絡(luò)安全認(rèn)證的需求。 [1] 國家密碼管理局. SM3密碼雜湊算法[S]. 北京:國家密碼管理局,2010. [2] 于永鵬,嚴(yán)迎建,李偉. SM3算法高速ASIC設(shè)計(jì)及實(shí)現(xiàn)[J]. 微電子學(xué)與計(jì)算機(jī),2016,33(4):21-26. [3] 周威,王博,張衛(wèi)東. SM3算法硬件實(shí)現(xiàn)研究與應(yīng)用[J]. 電子測量技術(shù),2015,38(12):67-71. [4] 蔡冰清,白國強(qiáng). SM3雜湊算法的流水線結(jié)構(gòu)硬件實(shí)現(xiàn)[J]. 微電子學(xué)與計(jì)算機(jī),2015,32(1):16-18. [5] 張倩,李樹國. SM3雜湊算法的ASIC設(shè)計(jì)和實(shí)現(xiàn)[J]. 微電子學(xué)與計(jì)算機(jī),2014,31(9):143-146. [6] 韓津生,林家俊,葉建武. 基于FPGA的MD5高速處理模型設(shè)計(jì)[J]. 北京理工大學(xué)學(xué)報(bào),2012,32(12):1258-1261. [7] 王臣,袁焱. 超高吞吐量MD5算法的FPGA實(shí)現(xiàn)[J]. 信息技術(shù),2011(9):55-58. [8] 楊先偉,康紅娟. SM3雜湊算法的軟件快速實(shí)現(xiàn)研究[J]. 智能系統(tǒng)學(xué)報(bào),2015,10(6):954-959. A High Throughput Rate SM3 IP Design and Implementation* CHENDongyun1*,LIYuanjin2 (1.School of Electronic and Communication Engineering,Guiyang Colleage,Guiyang 550005,China;2.SSI-LAB,Suzhou Jiangsu 215000,China) In order to meet the need of internet security authentication,a high throughput rate SM3 IP design method is proposed. This method adopts 3-stage pipeline in the SM3 round calculation and shorts the critical path and thus increases the system clock frequency,and expands the 64 rounds calculation with 64-stage inter-round pipeline,which gets a total 192-stage pipeline,and makes it possible for 192 messages do the SM3 at the same time. This IP has been implemented on the SMIC 0.18 μm process,and got the result with a 102.4 Gbit/s throughput rate when the clock is 200 MHz,which is 39.3% faster than other research result. information security;SM3;pipe-line;throughput rate;IP 項(xiàng)目來源:國家自然科學(xué)基金青年項(xiàng)目(11605030);貴州省聯(lián)合基金項(xiàng)目(黔科合J字LKG[2013]40號(hào));貴州省聯(lián)合基金項(xiàng)目(黔科合J字LKG[2013]41號(hào)) 2016-11-17 修改日期:2017-01-05 TP309.7 A 1005-9490(2017)03-0622-04 C:6150P 10.3969/j.issn.1005-9490.2017.03.0213 SM3硬件IP核的實(shí)現(xiàn)
4 結(jié)論