新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 數(shù)字簽名算法SHA-1的FPGA高速實現(xiàn)(圖)

數(shù)字簽名算法SHA-1的FPGA高速實現(xiàn)(圖)

——
作者:薛之昕 王暹昊 時間:2007-02-06 來源: 收藏
引言
    隨著網(wǎng)絡(luò)的迅速發(fā)展,對安全性的需要越發(fā)重要。然而,盡管網(wǎng)絡(luò)技術(shù)進步很快,安全性問題仍然相對落后,并且在很多情況下只能靠虛擬私人網(wǎng)vpn和防火墻。因虛擬私人網(wǎng)是構(gòu)建在internet外部結(jié)構(gòu)上的,必須采取某些措施保證安全性問題。一種方法是使用因特網(wǎng)協(xié)議安全性(ipsec)標(biāo)準(zhǔn)。ipsec是一組協(xié)議,它在ip協(xié)議層提供安全保密的通信。ipsec協(xié)議有通道和傳輸兩種通信模式,為了保證在高速通信中的數(shù)據(jù)安全,在設(shè)計中使用硬件加速來實現(xiàn)ipsec中的加密和認證。ipsec中的加密部分使用三重des算法,或使用rc5、idea、blowfish和cast-128等算法作為加密手段。在ipsec協(xié)議中認證使用sha-1和md5單向散列函數(shù)算法實現(xiàn),通過使用fpga高速實現(xiàn)sha-1消息認證算法。

sha-1算法介紹
    安全散列算法sha(secure hash algorithm,sha)是美國國家標(biāo)準(zhǔn)和技術(shù)局發(fā)布的國家標(biāo)準(zhǔn)fips pub 180-1,一般稱為sha-1。其對長度不超過264二進制位的消息產(chǎn)生160位的消息摘要輸出,步驟如下。
 

    首先填充消息使其長度恰好為一個比512的倍數(shù)僅小64位的數(shù)。填充方法是附一個1在消息后面,后接所要求的多個0,然后在其后附上64位的消息長度(填充前),使消息長度恰好是512位的整數(shù)倍。
    5個32位變量,用十六進制表示初始化。然后開始算法的主循環(huán),一次處理512位消息,循環(huán)次數(shù)是消息中512位分組的數(shù)目。
    先把這五個變量復(fù)制到另外的變量中,a到a,b到b,c到c,d到d,e到e。
    主循環(huán)有4輪,每輪20次操作,每次操作對a、b、c、d、e中的3個進行一次非線性運算,后進行移位和加運算,運算的過程見圖1。a、b、c、d和e分別加上a、b、c、d和e,然后用下一數(shù)據(jù)分組繼續(xù)運行算法。最后的輸出由a、b、c、d和e級聯(lián)而成。

sha-1算法的fpga實現(xiàn)
    實現(xiàn)sha-1算法時,用軟件先對消息進行預(yù)處理,使消息長度恰好是512位的整數(shù)倍,再以fpga實現(xiàn)對消息摘要計算的加速。
    fpga的編程一般用verilog hdl或者vhdl進行,本設(shè)計采用了vhdl語言對sha-1算法進行描述。sha-1算法fpga加速器實現(xiàn)分為兩大部分,分別是80個32位臨時值wt(w0至w79)的生成,以及對32位臨時值wt循環(huán)處理生成160位的消息摘要。圖2為將子分組mj(0≤j≤15)變成80個32位wt(kt至w79)的電路框圖,在設(shè)計時,用512位寄存器和2個多路選擇器生成臨時值wt(0≤t≤79)。


    圖3中160位輸入數(shù)據(jù)緩沖器用來放置初始數(shù)據(jù)(5個32位變量a、b、c、d和e),而f1234代表sha-1算法中的4組非線性函數(shù)ft(x,y,z),根據(jù)需要用多路選擇器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個常數(shù)為kt存在rom中(即組件),32



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉