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