文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2017.04.011
中文引用格式: 張躍軍,廖澴桓,,丁代魯. 基于LUT的高速低硬件開銷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.
0 引言
集成電路和信息技術(shù)的日益發(fā)展,,支付寶、淘寶,、網(wǎng)銀以及微信等互聯(lián)網(wǎng)應(yīng)用的迅速普及,,為人們?nèi)粘I睢W(xué)習(xí)和工作帶來極大便利,。大量的信息共享帶來方便的同時(shí),,也出現(xiàn)信息泄露與被篡改的威脅,如網(wǎng)上銀行賬戶被盜,、個(gè)人隱私泄露以及棱鏡門事件等,。因此如何保證數(shù)據(jù)信息的安全在密碼學(xué)中顯得尤為突出。Hash函數(shù)又稱哈希函數(shù)或者雜湊函數(shù),,是現(xiàn)代密碼學(xué)中最基本的模塊之一,,以任意長度的消息值作為輸入,生成固定長度的輸出數(shù)據(jù),。Hash函數(shù)在數(shù)字簽名,、文件校驗(yàn)、鑒權(quán)協(xié)議以及流密鑰產(chǎn)生,、偽隨機(jī)序列生成,、流密碼等方面有著廣泛的應(yīng)用。自從2004年密碼學(xué)家王小云教授宣布攻破常用的MD5雜湊算法以來,,網(wǎng)絡(luò)信息安全問題進(jìn)一步凸顯,。美國國家標(biāo)準(zhǔn)與技術(shù)研究所(NIST)于2007年宣布一項(xiàng)公開征集雜湊函數(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ì)越來越多,其安全性也可能隨之降低,。因此,,SHA-3算法本身存在一定的優(yōu)化空間。本文在研究查找表(Look-Up-Table,,LUT)方法的基礎(chǔ)上,,針對(duì)算法在實(shí)際應(yīng)用中速度慢與占用資源大的問題進(jìn)行改進(jìn),提出一種基于LUT的高速低硬件開銷SHA-3算法,。將其運(yùn)行的中間結(jié)果先寫入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競選的最終獲勝者,,該算法方案的提供者主要包括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)的工作過程主要分成兩個(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ù)的置換寬度,,長度決定迭代函數(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]中,,稱作狀態(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)算都各自簡單獨(dú)立。每輪迭代的輪函數(shù)由五步迭代的R運(yùn)算組成,,通過對(duì)三維比特?cái)?shù)組進(jìn)行不同方向的變換達(dá)到擴(kuò)散和混淆的作用,。其中,變換為非線性變換,,下文將會(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)算,。
這一變換是將每比特附近的兩列(column)比特之和迭加到該比特上(m和n的坐標(biāo)都是模5的)具有良好的擴(kuò)散性,。
這一變換作用于z軸上,是針對(duì)每個(gè)p方向的lane的比特循環(huán)移位,。
這一變換是針對(duì)每個(gè)m-n平面的slice的比特移位,,達(dá)到長期擴(kuò)散的效應(yīng)。
這是針對(duì)每個(gè)m方向的row的非線性運(yùn)算,,等效為5×5的S盒,。
這一變換是通過在每輪運(yùn)算最后加一個(gè)輪常數(shù)RC,逐比特進(jìn)行,,且每輪ir的輪常數(shù)不同,,達(dá)到破壞三維數(shù)組原有對(duì)稱性的效應(yīng),。
2 SHA-3面積優(yōu)化算法的VLSI實(shí)現(xiàn)
SHA-3算法的面積優(yōu)化的主要思路是通過使用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位,因而若采用并行加速的方式來設(shè)計(jì)算法,,開銷太大不能實(shí)現(xiàn)同時(shí)對(duì)一個(gè)分組數(shù)據(jù)進(jìn)行運(yùn)算處理,,在運(yùn)算過程中只能對(duì)某一部分?jǐn)?shù)據(jù)進(jìn)行運(yùn)算,其他數(shù)據(jù)資源處于閑置狀態(tài),,極大影響利用率和算法執(zhí)行速度,。而采用LUT方法,如圖1和圖2所示,,暫存中間數(shù)據(jù)來實(shí)現(xiàn)算法,,克服內(nèi)存開銷過大的缺點(diǎn)。每次將計(jì)算好的結(jié)果放在RAM中,,進(jìn)行加密運(yùn)算時(shí),,直接從SRAM中取出運(yùn)算結(jié)果即可。不但加快SHA-3置換算法處理速度,,而且極大降低算法設(shè)計(jì)復(fù)雜度,,進(jìn)而減少實(shí)際電路資源開銷。
2.2 面積優(yōu)化算法流程
基于SHA-3標(biāo)準(zhǔn)算法和面積優(yōu)化策略,,確定SHA-3面積優(yōu)化算法的具體實(shí)現(xiàn)方案,,該算法的流程如圖3所示,該算法步驟如下:
步驟1:將算法中輸入的25位64進(jìn)制數(shù)據(jù)形式的輸入數(shù)據(jù)從0地址開始存入64位64進(jìn)制的RAM表中,。
步驟2:通過狀態(tài)機(jī)對(duì)輸入數(shù)據(jù)依次實(shí)現(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)制讀寫信號(hào)enR和enW,,通過地址以及讀寫信號(hào)對(duì)RAM表中對(duì)應(yīng)的數(shù)據(jù)進(jìn)行操作,,讀取的數(shù)據(jù)存儲(chǔ)在64位的二進(jìn)制寄存器data_from_mem中,要寫入RAM表中的數(shù)存儲(chǔ)在64位的二進(jìn)制寄存器data_to_mem中,。
每個(gè)狀態(tài)執(zhí)行的變換過程如圖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è)階段:
階段1:當(dāng)enW=1時(shí),,在執(zhí)行線性變換階段,,根據(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í)行非線性變換階段,,根據(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í)鐘上升沿到來時(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算法的主要開銷在輪運(yùn)算過程中,所以處理速度的快慢由24輪運(yùn)算的五步迭代所決定,。因此,,考慮在硬件實(shí)現(xiàn)過程中,,在一個(gè)時(shí)鐘周期內(nèi)采用LUT的方法完成五步迭代,提高算法的效率,。同時(shí)采用硬件復(fù)用的方式,,進(jìn)行面積優(yōu)化。從時(shí)間的角度,,可以提前完成各輪密匙的計(jì)算,,雜湊數(shù)據(jù)時(shí)只需要一個(gè)時(shí)鐘周期即可,所以數(shù)據(jù)計(jì)算可以盡量滿足對(duì)實(shí)時(shí)性的要求,;從硬件開銷角度看,,整套SHA-3算法采用LUT和硬件復(fù)用的方式,節(jié)省大量的存儲(chǔ)和邏輯運(yùn)算單元,,降低系統(tǒng)功耗,。
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語言實(shí)現(xiàn)面積優(yōu)化SHA-3算法,其中表1和表2分別為部分的輸入/輸出數(shù)據(jù),,表3為DC綜合的特征總結(jié),,工作速度為150 MHz。
4 結(jié)論
本文通過對(duì)SHA-3算法的五步置換研究,,提出一種基于LUT方法的小面積算法設(shè)計(jì)方案,,并在VHDL硬件語言下實(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表讀寫數(shù)據(jù)實(shí)現(xiàn)讀取運(yùn)算與覆蓋新的運(yùn)算結(jié)果,,在優(yōu)化SHA-3算法效率的同時(shí)有效降低面積開銷。
參考文獻(xiàn)
[1] 王勇,,蔡國永.基于隨機(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類非線性變換的差分性質(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)