新聞中心

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

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

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

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

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

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


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



關(guān)鍵詞:

評(píng)論


相關(guān)推薦

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

關(guān)閉