文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.183277
中文引用格式: 陳鎮(zhèn)江,張寅,,張志文,,等. 一種基于數(shù)據(jù)存儲的流水SHA256硬件實現(xiàn)電路[J].電子技術應用,,2019,,45(7):44-49.
英文引用格式: Chen Zhenjiang,Zhang Yin,,Zhang Zhiwen,,et al. A hardware implementation circuit of pipelined SHA256 based on data storage[J]. Application of Electronic Technique,2019,,45(7):44-49.
0 引言
SHA-2(Security Hash Algorithm-2)安全散列算法是由美國國家安全局(NSA)和美國國家標準與技術研究院(NIST)在2002年公布的一種密碼散列算法。其主要作用是實現(xiàn)數(shù)據(jù)間的單向映射,,它可以將任意長度的消息映射成固定長度的消息摘要,,并且映射過程不可逆[1]。根據(jù)不同的輸出消息摘要的長度,,SHA-2家族分為SHA-224,、SHA-256、SHA-384,、SHA-512四種算法,,它們主要用于數(shù)字簽名、指紋驗證以及網(wǎng)絡安全協(xié)議等領域,。
現(xiàn)有的高吞吐率SHA256通常采用流水的硬件實現(xiàn)方式,,因此,本文將在現(xiàn)有流水結構的基礎上,,采用基于鎖存器存儲的數(shù)據(jù)流水方式替代傳統(tǒng)的基于寄存器翻轉(zhuǎn)的數(shù)據(jù)流水方式,。
1 SHA256算法概述
1.1 SHA256流水實現(xiàn)方式
SHA256能將任意有限長度的輸入消息(長度小于264位)轉(zhuǎn)換為256位的輸出消息摘要。步驟分為數(shù)據(jù)預處理,、數(shù)據(jù)擴充和數(shù)據(jù)壓縮三個部分[2],。
1.1.1 數(shù)據(jù)預處理
1.1.2 數(shù)據(jù)擴展
在式(3)中,算子為按位異或,,算子
為按位與,,算子
為按位取反,算子SHRn為右移n位,,ROTRn為循環(huán)右移n位,。
1.1.3 數(shù)據(jù)壓縮
現(xiàn)假設8個迭代變量分別為A、B,、C,、D、E,、F,、G、H,。首先按照式(4)規(guī)定的算法初始化8個變量,,其中Hj-1為第j-1個數(shù)據(jù)塊(Mj)迭代后輸出哈希值,初始值由式(1)給出,。
經(jīng)過上述初始賦值后進行如下迭代操作:對于t=0~63:(Kt是一組常量[5])
經(jīng)過64次迭代之后,,最終的散列值計算方法如式(6)所示:
這里,||表示拼接符,。剩下數(shù)據(jù)塊采用與上述相同的方式進行壓縮,,且每一數(shù)據(jù)塊的輸出256值作為下一個數(shù)據(jù)塊的輸入值,,最終經(jīng)過多次運用該算法,可以將任意長度的輸入數(shù)據(jù)壓縮成為256位輸出消息摘要,。
1.2 通用的流水電路結構
基于寄存器翻轉(zhuǎn)的SHA256全流水電路結構如圖1所示,,它包括數(shù)據(jù)壓縮部分流水結構和數(shù)據(jù)擴展流水結構。當每個時鐘觸發(fā)沿到來時,,數(shù)據(jù)擴展部分進入一個新的數(shù)據(jù)塊Mi,,構成W0i~W15i,并存入數(shù)據(jù)擴展部分的第一級寄存器組,,其中W0i將輸入至數(shù)據(jù)壓縮部分,,進行第一輪的壓縮。然后,,隨著時鐘觸發(fā)沿的不斷到來,,第i個數(shù)據(jù)塊不斷往前進行流水傳輸,并逐級進行擴展,,以產(chǎn)生W16i~W63i,,同時逐步將W1i~W63i輸入至數(shù)據(jù)壓縮部分進行壓縮,直至完成64輪壓縮,,得到最終的A63i~H63i,,使第i個數(shù)據(jù)塊Mi處理完成。此時,,與Mi相關的信息將全部移出流水結構,,流水結構正在處理的將是Mi1~Mi64的數(shù)據(jù)塊,。
在上述結構中,,采用64級A-H寄存器暫存64個輸入數(shù)據(jù)塊的壓縮信息,同時采用64級Wt寄存器暫存64個輸入數(shù)據(jù)塊的擴展信息,??梢钥闯觯瑐鹘y(tǒng)全流水結構在獲得高吞吐率的同時,,也將消耗掉大量的寄存器和壓縮,、擴展算子[5]。
1.3 SHA256流水結構研究現(xiàn)狀
目前國內(nèi)外文獻對SHA256的流水實現(xiàn)方式提出了很多優(yōu)化方案,。文獻[6]提出了一種四級流水的結構,,提高了運算速度,增大了吞吐率,;文獻[7]提出了一種Wallace樹方式互連的CSA組合樹結構來添加多操作數(shù),,減少了SHA256電路更新中加法器所導致的延遲,提高了電路性能,;文獻[8]中提出一種14 nm三柵CMOS工藝實現(xiàn)SHA256安全散列硬件加速器,,通過預先添加消息摘要,,采用多路調(diào)用的方式完成分布式哈希計算,增大了吞吐率,;文獻[9]中提出了一種基于可重構硬件的SHA256電路,,在面積和最大頻率方面得到優(yōu)化,最高吞吐率達到2 027.84 Mb/s,;另外,,文獻[10]中基于硬件描述語言實現(xiàn)了SHA256哈希函數(shù)的優(yōu)化流水線結構,對壓縮器和擴展塊進行了修改,,加入進位跳躍加法器提高體系結構的性能,,實現(xiàn)SHA256的優(yōu)化。
雖然上述文獻采用了多種優(yōu)化方案提高SHA256硬件實現(xiàn)電路的效率,,但是大多都是基于寄存器翻轉(zhuǎn)的數(shù)據(jù)流水方式,。而對于SHA256流水結構而言,其硬件實現(xiàn)需要使用大量的寄存器,。雖然基于寄存器翻轉(zhuǎn)的數(shù)據(jù)流水方式實現(xiàn)簡單,,但是其動態(tài)翻轉(zhuǎn)功耗較大。因此,,為了減小功耗,,本文提出了一種基于鎖存器存儲的SHA256流水硬件實現(xiàn)電路。
2 存儲方案
本節(jié)將主要從數(shù)據(jù)壓縮部分介紹本文提出的基于鎖存器存儲的全流水實現(xiàn)方式,。
采用鎖存器存儲每一輪迭代新產(chǎn)生的A和E,,再通過選擇存儲器中已存的前4輪的A和E數(shù)據(jù)去計算得到新一輪的A和E。但在輸入級計算A2,、A3,、A4和E2、E3,、E4時,,會存在缺少前輪計算數(shù)據(jù)的情況。因此,,本節(jié)將分別從通用級存儲結構和輸入級(A0~A4,,E0~E4)存儲結構對該存儲方案進行介紹。
2.1 通用級存儲結構
以64級標準流水電路結構為例,,關注前五輪Round1~Round5新產(chǎn)生的A和E,,具體算法如式(7)~式(11)所示:
A1和E1由Round1產(chǎn)生,但在Round2~Round5中都被使用,,因此,,A1和E1并不需要逐級往前傳遞,而是可以采用存儲器存儲起來,,當Round2~Round5的迭代需要使用該數(shù)據(jù)時,,直接在存儲器中讀取該數(shù)據(jù)即可,。當4個時鐘周期過后,A1和E1生命周期結束,,在后續(xù)迭代過程中不再被使用,,此時存儲在存儲器中的A1和E1可以被擦除并更新。
更普遍地,,寫出每級的A~H:
其中k意味著第k級存儲器,,i為第i個輸入數(shù)據(jù)。如圖2所示,,討論存儲方案實現(xiàn)的通用情況,。
對于第k級,只需要兩個存儲器組來分別存儲A和E,,每個寄存器組的大小為4×32位,,分別存儲Ak_i、Ak_i+1,、Ak_i+2,、Ak_i+3和Ek_i、Ek_i+1,、Ek_i+2,、Ek_i+3,其中Ak_i+3,、Ek_i+3為第k輪新產(chǎn)生的數(shù)據(jù),,Ak_i、Ak_i+1,、Ak_i+2和Ek_i,、Ek_i+1、Ek_i+2為存儲在存儲器中的前3輪產(chǎn)生的數(shù)據(jù),。
對于第i個輸入數(shù)據(jù),,在k輪迭代運算完成后,得到的數(shù)據(jù)并不往前傳,,而是繼續(xù)存儲在第k級對應的存儲器中,以便第k+4輪迭代運算進行調(diào)用,。為了得到Ak+4_i和Ek+4_i,,使用了第k級存儲器存儲的Ak_i和Ek_i、第k+1級存儲器存儲的Ak+1_i和Ek+1_i,、第K+2級存儲器存儲的Ak+2_i和Ek+2_i以及第k+3級存儲器存儲的Ak+3_i和Ek+3_i:
2.2 輸入級存儲結構
對于輸入級,,即A0~A4和E0~E4,在本存儲方案中,,由于新數(shù)據(jù)的產(chǎn)生需要用到前三級存儲器中的數(shù)據(jù),,根據(jù)式(7)~式(11),,A1和E1可以完全由外部輸入數(shù)據(jù)計算得到,但A2,、A3,、A4和E2、E3,、E4的產(chǎn)生仍需要用到輸入的A0和E0,。因此,引入三級輸入緩沖存儲器存儲相應的輸入數(shù)據(jù),,如圖3所示,。
每組輸入緩沖存儲器為32位,共12組,,其中HA3-1_i-3,、HE3-1_i-3用于存儲第i-3個輸入數(shù)據(jù)的A和E,HA2-1_i-2,、HA2-2_i-2用于存儲第i-2個輸入數(shù)據(jù)的A和B,,HE2-1_i-2、HE2-2_i-2用于存儲第i-2個輸入數(shù)據(jù)的E和F,,緩沖存儲器中的數(shù)據(jù)仍采用逐級傳遞的方式,。
引入上述緩沖存儲器后,在Round1~Round4,,A2,、A3、A4和E2,、E3,、E4的產(chǎn)生都可以通過調(diào)用緩沖存儲器中的數(shù)據(jù)進行計算得到;在Round5,,A5和E5由A1,、A2、A3,、A4和E1,、E2、E3,、E4計算得到,,且計算形式與式(13)一致。由此,,輸入級存儲結構和通用級存儲結構就構成了完整的數(shù)據(jù)壓縮存儲結構,。
2.3 完整數(shù)據(jù)壓縮存儲結構
完整數(shù)據(jù)壓縮存儲結構如圖4所示。對于輸入級,在時鐘觸發(fā)沿,,數(shù)據(jù)輸入首先存儲在第1級存儲器(Latch1_AE)中,,在數(shù)據(jù)逐級向緩沖器傳遞的同時產(chǎn)生新的數(shù)據(jù)。輸入級數(shù)據(jù)的產(chǎn)生方式如下:輸入端MUX選擇輸入的數(shù)據(jù),,經(jīng)過壓縮算子計算模塊計算的輸出值順序存儲在存儲器中,。經(jīng)過四個周期后,A0,、E0的生命周期結束,,存儲器對應位置的值被擦除并更新為A0_i+4和E0_i+4,同時,,數(shù)據(jù)壓縮進入正常流水級,。
在正常流水級中,數(shù)據(jù)壓縮方式與輸入級一致,,通過8個MUX選擇輸入數(shù)據(jù),,經(jīng)過壓縮算子計算模塊后將輸出值順序存儲在存儲器中,在四個周期后,,存儲器中的數(shù)據(jù)被重新更新,。經(jīng)過64輪迭代之后,散列值的計算方式如式(14)所示:
其中DMj-1為Mj數(shù)據(jù)塊迭代后輸出哈希值,,DMj為第Mj-1數(shù)據(jù)塊迭代后輸出哈希值,,m、n,、p,、q表示當前時刻存儲在存儲器中第m、n,、p,、q組的數(shù)據(jù)。
另外,,數(shù)據(jù)擴展部分原理與數(shù)據(jù)壓縮部分原理相似,,同樣采用鎖存器進行存儲,只不過數(shù)據(jù)存儲的周期略有區(qū)別,。通過MUX選擇開關選擇參與數(shù)據(jù)壓縮計算部分的數(shù)據(jù),,新的擴展數(shù)據(jù)的產(chǎn)生和存儲也通過選擇開關實現(xiàn),此處不做贅述,。
3 電路設計
3.1 存儲器
存儲器采用圖5所示的latch結構,,通過控制使能信號來實現(xiàn)存儲功能。每組存儲單元大小為32位,,采用4組32位latch分別存儲A和E,通過使能信號(EN0、EN1,、EN2,、EN3)來控制數(shù)據(jù)存儲位置(EN和ENB為一對反向信號)。
3.2 使能信號產(chǎn)生電路
控制存儲器存儲和開關通斷的使能信號產(chǎn)生電路如圖6所示,。電路由計數(shù)器(Cnt),、二四譯碼器(Dec)和非交疊使能信號電路(N)組成。產(chǎn)生四組占空比為1:3的使能信號,,每組信號之間有1/4周期的延時,。
3.3 非交疊使能信號產(chǎn)生電路
在數(shù)據(jù)選擇電路(MUX)中需要非交疊的使能信號來控制開關不會被兩個使能信號同時打開,減少漏電,。所采用的非交疊信號產(chǎn)生電路如圖7所示,,其中RS觸發(fā)器產(chǎn)生非交疊的信號,與非門用于占空比的調(diào)節(jié),,通過調(diào)節(jié)虛線框圖中的反向器個數(shù)n來形成四組非交疊的使能信號,。
3.4 選擇開關電路
選擇開關由反相器和TG32構成,如圖8所示,。由四組選擇開關構成一個總的選擇開關,,分別選擇A和E。通過使能信號控制開關通斷實現(xiàn)數(shù)據(jù)選擇功能,,選擇數(shù)據(jù)時的使能信號和存儲數(shù)據(jù)時的使能信號保持一致,。TG32開關由四組圖5中用到的8位傳輸門構成,由一組使能信號控制(EN和ENB),。通過EN1,、EN2、EN3,、EN4四組信號進行選擇,,選擇數(shù)據(jù)方式如式(13)所示。
4 性能評估
4.1 ModelSim仿真
使用Verilog硬件描述語言分別實現(xiàn)本文提出的基于鎖存器存儲和傳統(tǒng)基于寄存器翻轉(zhuǎn)的流水電路,,并采用ModelSim進行仿真,。在相同的仿真激勵下,仿真結果如圖9所示,。
其中sim為傳統(tǒng)基于寄存器翻轉(zhuǎn)的流水電路波形圖,,vsim為本文提出的基于鎖存器存儲的電路波形圖,DM_pre,、DM_new分別為輸入值和輸出值,,圖中框線內(nèi)的值表示在相同的激勵條件下,傳統(tǒng)基于寄存器翻轉(zhuǎn)的標準流水結構(sim:DM_new)和本文所提出的電路結構(vsim:DM_new)的輸出值,。
仿真結果表明:在相同的仿真激勵情況下,,本文提出的電路結構和標準流水電路結構的仿真結果一致,驗證了本文提出的電路結構的可行性。
4.2 Cadence仿真
為了進一步驗證本文所提出的存儲結構在功耗和面積方面的優(yōu)勢,,本文基于28 nm標準CMOS工藝,,在MOS晶體管級設計出本文提出的基于鎖存器存儲的電路和對應的傳統(tǒng)的基于寄存器翻轉(zhuǎn)的流水數(shù)據(jù)結構SHA256標準電路。在相同的激勵情況下,,功耗仿真結果如圖10所示,。
其中I0波形為傳統(tǒng)流水結構的電流波形,I1波形為本文提出的電路結構的電流波形,。因為后續(xù)的電路結構與前四級一致,,所以比較前四級功耗和面積即可。經(jīng)計算,,本文提出的電路結構四級運算的總電流I=1.308 mA,,相同激勵條件下,正常流水結構電路四級運算的總電流I=1.804 mA,。
比較可知,,在相同的激勵下,本方案降低功耗約為27.5%,。同時從圖10可以看出,,本方案對應的最大瞬態(tài)功耗也遠小于基于寄存器翻轉(zhuǎn)的流水結構。在成本方面,,本存儲方案四級電路共需晶體管488個,,而正常流水結構電路四級共需晶體管960個。比較可知,,在相同的功能情況下,,可近似認為本存儲方案優(yōu)化面積約49.2%。
因此,,通過ModelSim仿真和Cadence仿真驗證了本存儲方案的可行性和優(yōu)化效果,。本文提出的基于鎖存器存儲的電路結構優(yōu)于現(xiàn)有的基于寄存器翻轉(zhuǎn)的SHA256流水電路結構,具有功耗低,、面積小的優(yōu)勢,。
5 結論
本文提出了一種新型的適用于全流水結構的SHA256數(shù)據(jù)迭代方案。根據(jù)標準全流水結構SHA256系列電路數(shù)據(jù)傳輸特點,,只存儲每一級產(chǎn)生的A和E,,在每4輪迭代之后,所存儲的A和E數(shù)據(jù)被擦除并更新,。如此,,每級流水只需要采用latch存儲A和E,而其他所需數(shù)據(jù)則通過MUX來選擇前1~4級所存儲的數(shù)據(jù),,不涉及寄存器的翻轉(zhuǎn),。存儲方案新增硬件主要來自于MUX,。但相較于正常流水結構,MUX的結構簡單,,并且存儲電路也比寄存器結構簡單,,進而減少了硬件開銷和動態(tài)功耗,?;?8 nm標準CMOS工藝的仿真結果顯示,采用存儲方案實現(xiàn)SHA256的流水結構電路后,,對應的功耗優(yōu)化比例約為27.5%,,面積優(yōu)化比例約為49.2%。
參考文獻
[1] 張躍軍,,廖澴桓,,丁代魯.基于LUT的高速低硬件開銷SHA-3算法設計[J].電子技術應用,2017,,43(4):43-46.
[2] 陳穗光,,葛建華.DRM系統(tǒng)的SHA256算法設計及FPGA實現(xiàn)[J].電子技術應用,2007,,33(1):139-141.
[3] 楊曉輝,,戴紫彬.一種基于FPGA的可重構密碼芯片的設計與實現(xiàn)[J].電子技術應用,2006,,32(8):102-105.
[4] 何潤民.單向Hash函數(shù)SHA-256的研究與改進[J].信息技術,,2013(8):22-25.
[5] 王政.一種高效能SHA-256電路設計[D].南京:東南大學,2015.
[6] 湯煜,,翁秀玲,,王云峰.SHA-2S6哈希運算單元的硬件優(yōu)化實現(xiàn)[J].中國集成電路,2016,,25(5):26-31.
[7] OPRITOIU F,,JURJ S L,VLADUTIU M.Technological solutions for throughput improvement of a Secure Hash Algorithm-256 engine[C].International Symposium for Design and Technology in Electronic Packaging.IEEE,,2017:159-164.
[8] SURESH V,,SATPATHY S,MATHEW S,,et al.A 230 mV-950 mV 2.8Tbps/W Unified SHA256/SM3 secure hashing hardware accelerator in 14 nm Tri-Gate CMOS[C].ESSCIRC 2018-IEEE 44th European Solid State Circuits Conference(ESSCIRC).IEEE,,2018:98-101.
[9] SUHAILI S B,WATANABE T.Design of high-throughput SHA-256 hash function based on FPGA[C].International Conference on Electrical Engineering and Informatics,,2017:1-6.
[10] PADHI M,,CHAUDHARI R.An optimized pipelined architecture of SHA-256 hash function[C].International Symposium on Embedded Computing and System Design,2017:1-4.
作者信息:
陳鎮(zhèn)江1,,張 寅1,,張志文1,,盧 仕1,劉玖陽2,,萬美琳1,,戴 葵2
(1.湖北大學 物理與電子科學學院,湖北 武漢430060,;2.華中科技大學 光學與電子信息學院,,湖北 武漢430062)