基于FPGA芯片HMAC-SHA1-96計算術(shù)運(yùn)算單元的硬件設(shè)計_第1頁
基于FPGA芯片HMAC-SHA1-96計算術(shù)運(yùn)算單元的硬件設(shè)計_第2頁
基于FPGA芯片HMAC-SHA1-96計算術(shù)運(yùn)算單元的硬件設(shè)計_第3頁
基于FPGA芯片HMAC-SHA1-96計算術(shù)運(yùn)算單元的硬件設(shè)計_第4頁
基于FPGA芯片HMAC-SHA1-96計算術(shù)運(yùn)算單元的硬件設(shè)計_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基于FPGA芯片HMAC_SHA1_96計算術(shù)運(yùn)算單元的硬件設(shè)計1、概述隨著信息社會的發(fā)展,數(shù)據(jù)交換,網(wǎng)上交易等活動日益頻繁,從而網(wǎng)絡(luò)安全成為人們關(guān)注的重要問題。隨著信息技術(shù)的發(fā)展與應(yīng)用,信息安全的內(nèi)涵也在不斷延伸,從最初的信息保密性發(fā)展到信息完整性、可用性、可控性和不可否認(rèn)性,進(jìn)而又發(fā)展為攻(攻擊)、防(防范)、測(檢測)、控(控制)、管(管理)、評(評估)等多方面的基礎(chǔ)理論和實(shí)施技術(shù)。目前對于安全性有以下三個指標(biāo):身份驗(yàn)證、數(shù)據(jù)完整性和機(jī)密性。HMAC_SHA1算法在身份驗(yàn)證和數(shù)據(jù)完整性方面可以得到很好的應(yīng)用,在目前網(wǎng)絡(luò)安全也得到較好的實(shí)現(xiàn)。然而大多數(shù)應(yīng)用通過軟件實(shí)現(xiàn),但其安全性很難得到真正的保障,于是研究安全算法的硬件實(shí)現(xiàn)已成為熱點(diǎn)。本文通過對算法和現(xiàn)場可編程芯片特點(diǎn)的分析,優(yōu)化設(shè)計和實(shí)現(xiàn)了硬件系統(tǒng)的HMAC_SHA1_96算法應(yīng)用方案。2、SHA1函數(shù)SHA1函數(shù)是由美國國家標(biāo)準(zhǔn)和技術(shù)局和美國國家安全局設(shè)計的與DSS一起使用的安全散列算法SHA,并作為安全散列標(biāo)準(zhǔn)(SHS)的聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS)而公布,SHA1是SHA的修訂版。當(dāng)輸入長度小于264bit消息時,輸出160bit的摘要,其算法步驟如下:步驟一:填充附加位。一般經(jīng)過填充使報文長度512取模余64bit。該步驟通常是需要的,即使報文長度已經(jīng)是所希望的長度。因此填充長度范圍為1到512,最高位為1,其余為0。步驟二:附加報文長度值。即把一個64bit的報文長度數(shù)附加在上述報文之后(高字節(jié)優(yōu)先),從而達(dá)到512bit的倍數(shù)。步驟三:初始化變量??梢允褂?60bit的緩存(即160bit寄存器)來存放該散列函數(shù)的初始變量、中間摘要及最終摘要,但首先必須初始化,給初始變量賦值,即:A=0x67452301,B=0xefcdab98,C=0x98badcfe,D=0x10325476,E=0xc3d2e1f0步驟四:處理512bit報文分組。在該步驟中包括四個循環(huán),每個循環(huán)有20個處理步驟,而每個循環(huán)對B﹑C﹑D所用的非線性函數(shù)不同,并且所用的常數(shù)也不同:對于t=0~19,ft(B,C,D)=(B∧C)∨((¬B)∧D),Kt=0x5a827999對于t=20~39,ft(B,C,D)=B⊕C⊕D,Kt=0x6ed9eba1對于t=40~59,ft(B,C,D)=(B∧C)∨(B∧D)∨(C∧D),Kt=0x8f1bbcdc對于t=60~79,ft(B,C,D)=B⊕C⊕D,Kt=0xca62c1d6注:∧表示“與”;∨表示“或”;⊕表示“異或”;¬表示“取反”。在每一步驟中都將執(zhí)行如下的算法過程(圖1)。歸納為以下形式﹐其中《《《表示循環(huán)左移:A’,B’,C’,D’,E’←((A《《《5)+ft(B,C,D)+Et+Wt+Kt),A,(B《《《30),C,D由于我們輸入的是16個32bit消息,而SHA1運(yùn)算需要80個32bit數(shù)據(jù),所以存在一個由512bit消息生成2560bit數(shù)據(jù)的轉(zhuǎn)換過程(即生成W運(yùn)算),其轉(zhuǎn)換機(jī)制如下:對于t=0~15,Wt=Mt;對于t=16~79,Wt=(Mt-3⊕Mt-8⊕Mt-14⊕Mt-16)《《《1。步驟五:結(jié)果輸出。512bit報文運(yùn)算完就輸出160bit的報文摘要。3、HMAC_SHA1_96算法HMAC_SHA1_96算法[2,3,6]是基于單向散列函數(shù)SHA1和以密鑰為基礎(chǔ)的完整性檢查驗(yàn)證機(jī)制,它是從生成的160bit摘要中選擇從高到低的96bit作為最終輸出。在該算法中主要就是SHA1函數(shù)和HMAC算法。它的作用在于生成摘要放在消息后面以驗(yàn)證消息在傳輸時是否受到修改或變動,保證消息的完整性。根據(jù)HMAC的定義,本設(shè)計的HMAC_SHA1_96算法原理圖如圖2。圖2算法的幾點(diǎn)說明:①_ipad表示補(bǔ)位后的密鑰與ipad異或的結(jié)果,K_opad表示補(bǔ)位后的密鑰與opad異或的結(jié)果;②次SHA1運(yùn)算包括生成W運(yùn)算;③由SHA1運(yùn)算輸出的結(jié)果是經(jīng)過加法處理的結(jié)果;④虛線部分表示圖上忽略的信息分組和相應(yīng)的SHA1運(yùn)算部分;⑤如果只有512bit消息,則第一輪只需進(jìn)行兩次SAH1運(yùn)算,就轉(zhuǎn)到第二輪。圖2又可寫成如下的表達(dá)式:SHA1(KXORopad,SHA1(KXORipad,M))其中K是密鑰補(bǔ)位后的新值,即在密鑰后補(bǔ)0使之為512bit;ipad是0×36重復(fù)16次的一個數(shù)組;opad是0×5c重復(fù)16次的一個數(shù)組;M是消息;XOR表示異或運(yùn)算;SHA1是安全散列函數(shù)。4、硬件設(shè)計針對以上算法分析和實(shí)現(xiàn)流程特點(diǎn),結(jié)合FPGA芯片的硬件結(jié)構(gòu),進(jìn)行如下的硬件系統(tǒng)設(shè)計和優(yōu)化。4.1使用RAM結(jié)構(gòu)在HMAC_SHA1_96算法體系中,有大位數(shù)的數(shù)據(jù)存儲,如果要用寄存器來實(shí)現(xiàn),需要大約7000左右的寄存器,占用大量的FPGA芯片資源,這是因?yàn)镕PGA芯片上,每個LE(邏輯單元)單元只有一個寄存器,這樣每個LE單元上其它硬件資源將會浪費(fèi)。然而FPGA芯片上大量的ESB(嵌入式系統(tǒng)塊)資源沒有充分利用,而ESB可以用來實(shí)現(xiàn)各種類型的存儲模塊,如RAM、ROM、FIFO和CAM等,在這種情況下,可以采用ESB實(shí)現(xiàn)RAM來代替寄存器,從而節(jié)省LE硬件資源,并且RAM存儲數(shù)據(jù),控制起來比寄存器方便很多。4.2重復(fù)利用相同模塊正如前面算法所述,SHA1算法是由80次運(yùn)算組成的,而每次運(yùn)算的結(jié)構(gòu)又是一樣的,如果采用水線形式的運(yùn)算模式,利用80個同樣的模塊,會占用很多的硬件資源,不符合優(yōu)化設(shè)計的要求,因此可以先優(yōu)化設(shè)計出一個模塊,再對該模塊復(fù)用80次,每一次運(yùn)算的結(jié)果需存入寄存器,以便送入下一次運(yùn)算,這樣可極大地優(yōu)化利用FPGA硬件資源。4.3模塊劃分HMAC_SHA1_96算法體系的硬件實(shí)現(xiàn),必會存在與外圍電路的數(shù)據(jù)握手傳輸。由于外圍電路(8255或CPU)的工作時鐘頻率與所設(shè)計的芯片工作時鐘頻率不一樣,要讓設(shè)計芯片與外圍電路協(xié)調(diào)工作,就必須專門設(shè)計輸入輸出接口電路,再設(shè)計出核心處理模塊,從而不受外界電路工作環(huán)境影響。由此,可以將本設(shè)計分為三個部分:輸入模塊、算法實(shí)現(xiàn)模塊和輸出模塊。4.3.1輸入模塊由于輸入模塊會跟外圍電路(如8255)連接進(jìn)行信號或數(shù)據(jù)傳輸,根據(jù)握手信號ACK和OBF,每次輸入8bit數(shù)據(jù)寫到64×8bit的RAM,需要64次,而外圍電路什么時候輸入數(shù)據(jù)由內(nèi)部信號sha_end控制,該模塊的輸出一次為32bit,所以相當(dāng)于一次讀4×8bit數(shù)據(jù)。4.3.2算法實(shí)現(xiàn)模塊該模塊主要進(jìn)行HAMC_SHA運(yùn)算,輸出160bit摘要,其數(shù)據(jù)處理流程圖見圖3(圖中M_RAM用來存儲消息),其中又可以分為以下幾個主要部分:①密鑰輸入處理部分。處理密鑰時需要先對其進(jìn)行異或運(yùn)算,然后把其寫入兩個32×16bit的RAM,假設(shè)分別為I_RAM和O_RAM。I_RAM里數(shù)據(jù)在第一輪SHA1算法首先運(yùn)算,而O_RAM里的數(shù)據(jù)要到第二輪才開始運(yùn)算。②生成W處理部分。由于SHA1函數(shù)中要進(jìn)行80次運(yùn)算,每次運(yùn)算采用不同的32bitW值,而輸入的只有16個32bit數(shù)據(jù),于是該算法采用四個不同的W值進(jìn)行異或運(yùn)算生成新的W值。這四個W值是從80×32bit的W_RAM讀出的,而生成新的W值再依次寫入該RAM中沒有使用的位置。③SHA1運(yùn)算部分。是設(shè)計的核心部分,需要完成80次運(yùn)算,每次從32×80bitRAM讀出一個32bitW值,最終生成160bit摘要。④摘要處理部分。主要對每一次SHA1運(yùn)算后生成的摘要與本次的初始密鑰進(jìn)行加法運(yùn)算,作為下次SHA1運(yùn)算的初始密鑰,或者作為最終輸出摘要,或者作為下一輪SHA1運(yùn)算的消息輸入。⑤摘要補(bǔ)位部分[6]。對第一輪生成的160bit摘要進(jìn)行補(bǔ)位,方法為:[160]~[190]0[191]1[192]~[479]0[480]~[511]=1010100000,將此值寫入一個16×32bit的FILL_RAM。4.3.3輸出模塊同輸入模塊一樣,由于同外圍電路進(jìn)行信號或數(shù)據(jù)傳輸,根據(jù)握手信號STB和IBF,每次輸出8bit數(shù)據(jù)到外圍電路,但該部分主要是一個8×12bitRAM,可以一次寫入96bit數(shù)據(jù)。4.4硬件系統(tǒng)總體結(jié)構(gòu)在數(shù)據(jù)輸出端加鎖存器是為了保證輸出數(shù)據(jù)被外圍電路采樣之前始終有效,從而達(dá)到本設(shè)計與外圍電路協(xié)調(diào)工作的目的。結(jié)構(gòu)圖如圖4。5、FPGA實(shí)現(xiàn)我們知道,F(xiàn)PGA芯片內(nèi)部結(jié)構(gòu)是由邏輯陣列塊(LAB)、嵌入式系統(tǒng)塊(ESB)、快速通道互聯(lián)和輸入輸出單元(IOE)組成。LAB是由10個LE、LE間關(guān)聯(lián)的進(jìn)位鏈﹑級連鏈﹑LAB控制信號和LAB局部互連構(gòu)成,可以實(shí)現(xiàn)快速運(yùn)算通道,特別適合本設(shè)計算術(shù)運(yùn)算單元的硬件實(shí)現(xiàn)。ESB如前所說,可以用來實(shí)現(xiàn)不同的存儲模塊,特別適合于大位數(shù)的數(shù)據(jù)存儲??焖偻ǖ朗怯脕韺?shí)現(xiàn)LE之間,ESB與I/O之間的快速互連,并且具有高扇出能力,它是一系列縱橫交錯的連續(xù)式分布通道,能夠得到高性能和快速的信號傳輸,提高本設(shè)計運(yùn)算效率和信號的穩(wěn)定性。I/O單元由一個雙向緩沖器和一個寄存器組成,含有可編程延時,可確保零保持時間或最小的時鐘到輸出時間,減少設(shè)計數(shù)據(jù)輸出的毛刺現(xiàn)象。另外FPGA可以重復(fù)使用,以方便修改代碼或參數(shù)時再重新配置FPGA。本設(shè)計采用Altera的APEX20KE160EQC240_1X芯片實(shí)現(xiàn),其功能模塊及PC接口原理圖見圖5。圖中FPGA編程器采用QuartusⅡ2.0軟件,HMA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論