《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于LUT的高速低硬件開(kāi)銷(xiāo)SHA-3算法設(shè)計(jì)
基于LUT的高速低硬件開(kāi)銷(xiāo)SHA-3算法設(shè)計(jì)
2017年電子技術(shù)應(yīng)用第4期
張躍軍,廖澴桓,丁代魯
寧波大學(xué) 電路與系統(tǒng)研究所,浙江 寧波315211
摘要: 通過(guò)對(duì)SHA-3算法和查找表(Look-Up-Table,LUT)方法的研究,提出一種高速低硬件開(kāi)銷(xiāo)SHA-3算法設(shè)計(jì)方案。首先,該方案利用狀態(tài)機(jī)實(shí)現(xiàn)SHA-3算法核心置換函數(shù)的輪運(yùn)算,并結(jié)合LUT方法處理每輪運(yùn)算的數(shù)據(jù)交換和數(shù)據(jù)存儲(chǔ);然后,采用硬件模塊并行處理和存儲(chǔ)單元共用的方式,提高SHA-3算法的速度、降低硬件開(kāi)銷(xiāo)。最后,在SMIC 65 nm CMOS工藝下設(shè)計(jì)SHA-3算法,DC綜合后電路面積為65 833 μm2,在1.2 V電壓下最高工作頻率可達(dá)到150 MHz,功耗為2.5 mW。
中圖分類(lèi)號(hào): TP331
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2017.04.011
中文引用格式: 張躍軍,廖澴桓,丁代魯. 基于LUT的高速低硬件開(kāi)銷(xiāo)SHA-3算法設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2017,43(4):43-46.
英文引用格式: Zhang Yuejun,Liao Huanhuan,Ding Dailu. A high speed and low hardware cost SHA-3 algorithm based on LUT method[J].Application of Electronic Technique,2017,43(4):43-46.
A high speed and low hardware cost SHA-3 algorithm based on LUT method
Zhang Yuejun,Liao Huanhuan,Ding Dailu
Institute of Circuits and Systems,Ningbo University,Ningbo 315211,China
Abstract: By studying the SHA-3 algorithm and Look-Up-Table(LUT) method, a high speed and low hardware cost circuit scheme has been proposed. Firstly, the state machine is used to implement the round operation, which is the core replacement function of SHA-3 algorithm. The data exchange and data storage of each round operation are processed by LUT method. Then, the hardware module parallel processing and storage unit sharing techniques are used to improve operation frequency and to reduce the hardware cost. Finally, the SHA-3 algorithm is designed using SMIC 65 nm CMOS process. DC synthesis shows that the area of circuit is 65 833 μm2. The maximum operating frequency is 150 MHz and power consumption is 2.5 mW at 1.2 V.
Key words : SHA-3;LUT method;high speed;low cost;CMOS circuit

0 引言

    集成電路和信息技術(shù)的日益發(fā)展,支付寶、淘寶、網(wǎng)銀以及微信等互聯(lián)網(wǎng)應(yīng)用的迅速普及,為人們?nèi)粘I?、學(xué)習(xí)和工作帶來(lái)極大便利。大量的信息共享帶來(lái)方便的同時(shí),也出現(xiàn)信息泄露與被篡改的威脅,如網(wǎng)上銀行賬戶(hù)被盜、個(gè)人隱私泄露以及棱鏡門(mén)事件等。因此如何保證數(shù)據(jù)信息的安全在密碼學(xué)中顯得尤為突出。Hash函數(shù)又稱(chēng)哈希函數(shù)或者雜湊函數(shù),是現(xiàn)代密碼學(xué)中最基本的模塊之一,以任意長(zhǎng)度的消息值作為輸入,生成固定長(zhǎng)度的輸出數(shù)據(jù)。Hash函數(shù)在數(shù)字簽名、文件校驗(yàn)、鑒權(quán)協(xié)議以及流密鑰產(chǎn)生、偽隨機(jī)序列生成、流密碼等方面有著廣泛的應(yīng)用。自從2004年密碼學(xué)家王小云教授宣布攻破常用的MD5雜湊算法以來(lái),網(wǎng)絡(luò)信息安全問(wèn)題進(jìn)一步凸顯。美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究所(NIST)于2007年宣布一項(xiàng)公開(kāi)征集雜湊函數(shù)新標(biāo)準(zhǔn)(SHA-3算法)的活動(dòng),于2012年10月2日Keccak雜湊算法憑借著其新穎的Sponge結(jié)構(gòu)迭代設(shè)計(jì)方法、較強(qiáng)的安全性能以及良好的實(shí)現(xiàn)方法成為新一代雜湊函數(shù)標(biāo)準(zhǔn)。

    作為當(dāng)前雜湊算法標(biāo)準(zhǔn)的SHA-3算法,與以往哈希算法相比呈現(xiàn)出良好的安全性和工作效率,但其物理實(shí)現(xiàn)還不太成熟。首先,算法的電路實(shí)現(xiàn)所占用的硬件資源仍相對(duì)較多;其次,算法實(shí)現(xiàn)所能達(dá)到的處理速度雖已較快,但實(shí)際應(yīng)用空間仍有限;最后,隨著攻擊方式的進(jìn)化,SHA-3算法被攻擊的輪數(shù)會(huì)越來(lái)越多,其安全性也可能隨之降低。因此,SHA-3算法本身存在一定的優(yōu)化空間。本文在研究查找表(Look-Up-Table,LUT)方法的基礎(chǔ)上,針對(duì)算法在實(shí)際應(yīng)用中速度慢與占用資源大的問(wèn)題進(jìn)行改進(jìn),提出一種基于LUT的高速低硬件開(kāi)銷(xiāo)SHA-3算法。將其運(yùn)行的中間結(jié)果先寫(xiě)入RAM中,每輪運(yùn)算只需輸入地址信息就能實(shí)現(xiàn)具體邏輯運(yùn)算,同時(shí)利用硬件共用的方式提高硬件利用率。改進(jìn)后的算法進(jìn)一步提高SHA-3算法的適用性,具有廣闊的應(yīng)用前景。

1 SHA-3算法

    2012年10月NIST宣布Keccak算法為SHA-3競(jìng)選的最終獲勝者,該算法方案的提供者主要包括Guido Bertoni,Joan Daemen(AES加密算法的發(fā)明者之一),Michael Peeters以及Gilles Van Assche。所提供標(biāo)準(zhǔn)的Keccak方案整體結(jié)構(gòu)采用海綿結(jié)構(gòu)(sponge construction)。海綿結(jié)構(gòu)的工作過(guò)程主要分成兩個(gè)階段:吸收階段和擠壓階段。在吸收階段,在保存內(nèi)部狀態(tài)不變的前提下將輸入信息與輸入狀態(tài)進(jìn)行異或操作,異或的結(jié)果作為吸收階段的輸入數(shù)據(jù);在擠壓階段,根據(jù)輸出數(shù)據(jù)位寬要求,從N輪置換運(yùn)算的結(jié)果中交替取出所需數(shù)據(jù),最后拼接成輸出數(shù)據(jù)。Keccak算法所采用的海綿結(jié)構(gòu)模型。其中,壓縮函數(shù)為Keccak-f[x],x是輪函數(shù)的置換寬度,長(zhǎng)度決定迭代函數(shù)的輪數(shù),具體根據(jù)公式x=25×2l進(jìn)行計(jì)算。即nr=12+2l,在壓縮函數(shù)處理時(shí),每一輪置換函數(shù)f作用在一個(gè)三維矩陣的五步迭代置換。

1.1 SHA-3算法的三維置換矩陣

    壓縮函數(shù)Keccak-f[x]的輸入數(shù)據(jù)按照坐標(biāo)軸m、n、p依次填充進(jìn)5×5×64的三維比特?cái)?shù)組a[m][n][p]中,稱(chēng)作狀態(tài)數(shù)組。最終提交時(shí),b=1 600,即m=5,n=5,p=64(l=6),基本塊置換函數(shù)由12+2l(l=6時(shí)為24)輪迭代5個(gè)子輪,每輪運(yùn)算都各自簡(jiǎn)單獨(dú)立。每輪迭代的輪函數(shù)由五步迭代的R運(yùn)算組成,通過(guò)對(duì)三維比特?cái)?shù)組進(jìn)行不同方向的變換達(dá)到擴(kuò)散和混淆的作用。其中,變換為非線(xiàn)性變換,下文將會(huì)具體分析SHA-3算法的五步迭代函數(shù)。

1.2 SHA-3算法的五步迭代函數(shù)

    目前SHA-3算法的三維矩陣主要采用l=6,即矩陣大小為5×5×64。在m、n軸進(jìn)行模5運(yùn)算,在p軸進(jìn)行模64運(yùn)算。

     wdz3-gs1.gif

    這一變換是將每比特附近的兩列(column)比特之和迭加到該比特上(m和n的坐標(biāo)都是模5的)具有良好的擴(kuò)散性。

wdz3-gs2.gif

    這一變換作用于z軸上,是針對(duì)每個(gè)p方向的lane的比特循環(huán)移位。

    wdz3-gs3.gif

    這一變換是針對(duì)每個(gè)m-n平面的slice的比特移位,達(dá)到長(zhǎng)期擴(kuò)散的效應(yīng)。

    wdz3-gs4.gif

    這是針對(duì)每個(gè)m方向的row的非線(xiàn)性運(yùn)算,等效為5×5的S盒。

    wdz3-gs5.gif

    這一變換是通過(guò)在每輪運(yùn)算最后加一個(gè)輪常數(shù)RC,逐比特進(jìn)行,且每輪ir的輪常數(shù)不同,達(dá)到破壞三維數(shù)組原有對(duì)稱(chēng)性的效應(yīng)。

2 SHA-3面積優(yōu)化算法的VLSI實(shí)現(xiàn)

    SHA-3算法的面積優(yōu)化的主要思路是通過(guò)使用LUT方法達(dá)到使用并行加速設(shè)計(jì)算法的效果,利用RAM寄存每次計(jì)算結(jié)果以及一些中間變量,實(shí)現(xiàn)同時(shí)對(duì)一個(gè)分組數(shù)據(jù)進(jìn)行運(yùn)算處理,從而加快SHA-3置換算法處理速度,降低算法執(zhí)行功耗。

2.1 LUT面積優(yōu)化策略

    由于在SHA-3算法中,分組數(shù)據(jù)位寬均為64位,因而若采用并行加速的方式來(lái)設(shè)計(jì)算法,開(kāi)銷(xiāo)太大不能實(shí)現(xiàn)同時(shí)對(duì)一個(gè)分組數(shù)據(jù)進(jìn)行運(yùn)算處理,在運(yùn)算過(guò)程中只能對(duì)某一部分?jǐn)?shù)據(jù)進(jìn)行運(yùn)算,其他數(shù)據(jù)資源處于閑置狀態(tài),極大影響利用率和算法執(zhí)行速度。而采用LUT方法,如圖1和圖2所示,暫存中間數(shù)據(jù)來(lái)實(shí)現(xiàn)算法,克服內(nèi)存開(kāi)銷(xiāo)過(guò)大的缺點(diǎn)。每次將計(jì)算好的結(jié)果放在RAM中,進(jìn)行加密運(yùn)算時(shí),直接從SRAM中取出運(yùn)算結(jié)果即可。不但加快SHA-3置換算法處理速度,而且極大降低算法設(shè)計(jì)復(fù)雜度,進(jìn)而減少實(shí)際電路資源開(kāi)銷(xiāo)。

wdz3-t1+t2.gif

2.2 面積優(yōu)化算法流程

    基于SHA-3標(biāo)準(zhǔn)算法和面積優(yōu)化策略,確定SHA-3面積優(yōu)化算法的具體實(shí)現(xiàn)方案,該算法的流程如圖3所示,該算法步驟如下:

wdz3-t3.gif

    步驟1:將算法中輸入的25位64進(jìn)制數(shù)據(jù)形式的輸入數(shù)據(jù)從0地址開(kāi)始存入64位64進(jìn)制的RAM表中。

    步驟2:通過(guò)狀態(tài)機(jī)對(duì)輸入數(shù)據(jù)依次實(shí)現(xiàn)線(xiàn)性變換以及非線(xiàn)性變換,每次運(yùn)算的結(jié)果都存儲(chǔ)在RAM表中,每個(gè)狀態(tài)都會(huì)產(chǎn)生一個(gè)0~63的地址addr、一個(gè)8位2進(jìn)制的命令字command、0~4的控制字counter_plane_to_pe和counter_sheet_to_pe、一個(gè)0~24的輪轉(zhuǎn)數(shù)nr_round以及2個(gè)一位二進(jìn)制讀寫(xiě)信號(hào)enR和enW,通過(guò)地址以及讀寫(xiě)信號(hào)對(duì)RAM表中對(duì)應(yīng)的數(shù)據(jù)進(jìn)行操作,讀取的數(shù)據(jù)存儲(chǔ)在64位的二進(jìn)制寄存器data_from_mem中,要寫(xiě)入RAM表中的數(shù)存儲(chǔ)在64位的二進(jìn)制寄存器data_to_mem中。

    每個(gè)狀態(tài)執(zhí)行的變換過(guò)程如圖4所示,變換進(jìn)行的運(yùn)算使用了9個(gè)64位的二進(jìn)制寄存器,分別是r1_in、r1_out、r2_in、r2_out、r3_in、r3_out、rho_out、chi_out、iota,初值均為0x0000。變換流程圖如圖3所示,主要分成以下兩個(gè)階段:

wdz3-t4.gif

    階段1:當(dāng)enW=1時(shí),在執(zhí)行線(xiàn)性變換階段,根據(jù)command命令字各個(gè)位的值選擇data_from_mem、r1_out、r2_out、r3_out進(jìn)行對(duì)應(yīng)的與、異或運(yùn)算計(jì)算出r1_in的值,根據(jù)command命令字各個(gè)位的值選擇r1_out或r2_out賦值給r2_in,根據(jù)command命令字各個(gè)位的值選擇r2_out或r3_out賦值給r3_in,將r1_out、r2_out、r3_out進(jìn)行對(duì)應(yīng)的與、異或運(yùn)算計(jì)算出chi_out的值;在執(zhí)行非線(xiàn)性變換階段,根據(jù)counter_plane_to_pe、counter_sheet_to_pe控制字的值將r1_out左移一定位數(shù)后賦值給rho_out,在執(zhí)行變換階段時(shí),根據(jù)輪轉(zhuǎn)數(shù)nr_round生成對(duì)應(yīng)的輪常數(shù)iota。

    階段2:當(dāng)enR=1時(shí),根據(jù)command命令字各個(gè)位的值選擇將r1_out、chi_out、rho_out與iota進(jìn)行異或運(yùn)算后賦值給data_to_mem。當(dāng)時(shí)鐘上升沿到來(lái)時(shí),按照五步迭代公式賦值運(yùn)算。將RAM表中地址0~24的數(shù)據(jù)輸出,得到最終SHA-3數(shù)據(jù)。

2.3 面積優(yōu)化算法的硬件結(jié)構(gòu)

    面積優(yōu)化SHA-3算法的具體結(jié)構(gòu)如圖5所示, HA-3算法的主要開(kāi)銷(xiāo)在輪運(yùn)算過(guò)程中,所以處理速度的快慢由24輪運(yùn)算的五步迭代所決定。因此,考慮在硬件實(shí)現(xiàn)過(guò)程中,在一個(gè)時(shí)鐘周期內(nèi)采用LUT的方法完成五步迭代,提高算法的效率。同時(shí)采用硬件復(fù)用的方式,進(jìn)行面積優(yōu)化。從時(shí)間的角度,可以提前完成各輪密匙的計(jì)算,雜湊數(shù)據(jù)時(shí)只需要一個(gè)時(shí)鐘周期即可,所以數(shù)據(jù)計(jì)算可以盡量滿(mǎn)足對(duì)實(shí)時(shí)性的要求;從硬件開(kāi)銷(xiāo)角度看,整套SHA-3算法采用LUT和硬件復(fù)用的方式,節(jié)省大量的存儲(chǔ)和邏輯運(yùn)算單元,降低系統(tǒng)功耗。

wdz3-t5.gif

3 實(shí)驗(yàn)結(jié)果與分析

    采用TSMC 65 nm CMOS工藝,實(shí)現(xiàn)基于LUT方法的SHA-3算法硬件電路。實(shí)驗(yàn)環(huán)境包括Intel Pentium(R) Dual-Core CPU 2.70 GHz、2 G RAM計(jì)算機(jī),DC綜合軟件,NCverilog和Modelsim仿真軟件。采用VHDL語(yǔ)言實(shí)現(xiàn)面積優(yōu)化SHA-3算法,其中表1和表2分別為部分的輸入/輸出數(shù)據(jù),表3為DC綜合的特征總結(jié),工作速度為150 MHz。

wdz3-b1.gif

wdz3-b2.gif

wdz3-b3.gif

4 結(jié)論

    本文通過(guò)對(duì)SHA-3算法的五步置換研究,提出一種基于LUT方法的小面積算法設(shè)計(jì)方案,并在VHDL硬件語(yǔ)言下實(shí)現(xiàn)。將生成數(shù)據(jù)與原有的SHA-3算法結(jié)果進(jìn)行比較,驗(yàn)證其正確性。采用利用狀態(tài)機(jī)實(shí)現(xiàn)SHA-3算法核心置換函數(shù)的輪運(yùn)算,結(jié)合LUT方法處理每輪運(yùn)算的數(shù)據(jù)交換和數(shù)據(jù)存儲(chǔ),對(duì)RAM表讀寫(xiě)數(shù)據(jù)實(shí)現(xiàn)讀取運(yùn)算與覆蓋新的運(yùn)算結(jié)果,在優(yōu)化SHA-3算法效率的同時(shí)有效降低面積開(kāi)銷(xiāo)。

參考文獻(xiàn)

[1] 王勇,蔡國(guó)永.基于隨機(jī)函數(shù)的哈希函數(shù)[J].計(jì)算機(jī)工程與設(shè)計(jì),2015,34(10):2679-2683.

[2] ZHANG H,HAN W,LAI X,et al.Survey on cyberspace security[J].Science China(Information Sciences),2015,58(11);5-47.

[3] MALIK A,AZIZ A,KUNDI D,et al.Software implementation of standard hash algorithm(SHA-3) Keccak on Intel core-i5 and cavium networks octeon plus embedded platform[C].2nd Mediterranean Conference on Embedded Computing (MECO),2013:79-83.

[4] Hash function[OL].http://en.wikipedia.org/wiki/Hash function.(2015.11.30).

[5] 李倩男,李云強(qiáng),蔣淑靜,等.Keccak類(lèi)非線(xiàn)性變換的差分性質(zhì)[J].通信學(xué)報(bào),2012,33(9):140-146.

[6] 李建瑞,汪鵬君,張躍軍,等.基于SHA-3算法的圖像密鑰生成方法[J].華東理工大學(xué)學(xué)報(bào),2015,41(5):693-697.



作者信息:

張躍軍,廖澴桓,丁代魯

(寧波大學(xué) 電路與系統(tǒng)研究所,浙江 寧波315211)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。