數字簽名算法SHA-1的FPGA高速實現(圖)
隨著網絡的迅速發展,對安全性的需要越發重要。然而,盡管網絡技術進步很快,安全性問題仍然相對落后,并且在很多情況下只能靠虛擬私人網vpn和防火墻。因虛擬私人網是構建在internet外部結構上的,必須采取某些措施保證安全性問題。一種方法是使用因特網協議安全性(ipsec)標準。ipsec是一組協議,它在ip協議層提供安全保密的通信。ipsec協議有通道和傳輸兩種通信模式,為了保證在高速通信中的數據安全,在設計中使用硬件加速來實現ipsec中的加密和認證。ipsec中的加密部分使用三重des算法,或使用rc5、idea、blowfish和cast-128等算法作為加密手段。在ipsec協議中認證使用sha-1和md5單向散列函數算法實現,通過使用fpga高速實現sha-1消息認證算法。
sha-1算法介紹
安全散列算法sha(secure hash algorithm,sha)是美國國家標準和技術局發布的國家標準fips pub 180-1,一般稱為sha-1。其對長度不超過264二進制位的消息產生160位的消息摘要輸出,步驟如下。

首先填充消息使其長度恰好為一個比512的倍數僅小64位的數。填充方法是附一個1在消息后面,后接所要求的多個0,然后在其后附上64位的消息長度(填充前),使消息長度恰好是512位的整數倍。
5個32位變量,用十六進制表示初始化。然后開始算法的主循環,一次處理512位消息,循環次數是消息中512位分組的數目。
先把這五個變量復制到另外的變量中,a到a,b到b,c到c,d到d,e到e。
主循環有4輪,每輪20次操作,每次操作對a、b、c、d、e中的3個進行一次非線性運算,后進行移位和加運算,運算的過程見圖1。a、b、c、d和e分別加上a、b、c、d和e,然后用下一數據分組繼續運行算法。最后的輸出由a、b、c、d和e級聯而成。
sha-1算法的fpga實現
實現sha-1算法時,用軟件先對消息進行預處理,使消息長度恰好是512位的整數倍,再以fpga實現對消息摘要計算的加速。
fpga的編程一般用verilog hdl或者vhdl進行,本設計采用了vhdl語言對sha-1算法進行描述。sha-1算法fpga加速器實現分為兩大部分,分別是80個32位臨時值wt(w0至w79)的生成,以及對32位臨時值wt循環處理生成160位的消息摘要。圖2為將子分組mj(0≤j≤15)變成80個32位wt(kt至w79)的電路框圖,在設計時,用512位寄存器和2個多路選擇器生成臨時值wt(0≤t≤79)。

圖3中160位輸入數據緩沖器用來放置初始數據(5個32位變量a、b、c、d和e),而f1234代表sha-1算法中的4組非線性函數ft(x,y,z),根據需要用多路選擇器mux-1選擇其中一個(ft(x,y,z)=(x∧y)∨((x)∧z),對于t=0至19;ft(x,y,z)=x臲臵,對于t=20至39;ft(x,y,z)=(x∧y)∨(x∧z)∨(y∧z),對于t=40至59;ft(x,y,z)=x臲臵,對于t=60至79),4個常數為kt存在rom中(即組件),32












評論