劉路遙 劉 進 周 勛 袁 濤
(武漢船舶通信研究所 武漢 430200)
隨著國際互聯(lián)網(wǎng)的高速發(fā)展,網(wǎng)絡(luò)應(yīng)用也在不斷的演變。利用互聯(lián)網(wǎng)技術(shù),大大提升了全球信息交流的速度,充分體現(xiàn)了互聯(lián)網(wǎng)的開放性帶給全世界的益處。但正是這種開放性的存在,導致互聯(lián)網(wǎng)中潛藏著越來越大的風險,一旦有局域網(wǎng)接入互聯(lián)網(wǎng),那么局域網(wǎng)中用戶的信息很有可能被泄露,被局域網(wǎng)外的用戶知悉、篡改、假冒等。同時,互聯(lián)網(wǎng)應(yīng)對黑客攻擊等安全方面顯得十分的乏力。所以高速發(fā)展的網(wǎng)絡(luò)使得網(wǎng)絡(luò)安全問題愈發(fā)嚴峻,在面對安全威脅時,迫切需要一種行之有效的解決方法。
于是互聯(lián)網(wǎng)工程任務(wù)組IETF(Internet Engi?neering Task Force)提出了IP安全(IPSecurity)體系結(jié)構(gòu),簡稱IPSec,目的是通過采取加密措施保護用戶之間的IP通信。IPSec技術(shù)的出現(xiàn)大大提高了互聯(lián)網(wǎng)環(huán)境中的信息在網(wǎng)絡(luò)中傳輸?shù)陌踩?。IPSec技術(shù)被用于IP層,以IP數(shù)據(jù)包為處理對象,提供數(shù)據(jù)完整性驗證、數(shù)據(jù)源身份認證、抗重放攻擊等各種安全性服務(wù),能夠明顯降低出現(xiàn)安全威脅。
本論文介紹了在硬件上實現(xiàn)IPSec的結(jié)構(gòu)體系和封包解包處理器及其工作流程;詳細介紹了基于FPGA的AES加密算法和SHA-256算法實現(xiàn),針對兩種算法進行了硬件實現(xiàn)的優(yōu)化設(shè)計。本文中的優(yōu)化設(shè)計是在Xilinx公司的Virtex-4芯片上進行仿真。
IPSec的硬件體系結(jié)構(gòu)如圖1所示。包含內(nèi)網(wǎng)模塊、數(shù)據(jù)緩存模塊、IPSec封包處理模塊、IPsec解包處理模塊、加解密模塊、認證模塊、安全關(guān)聯(lián)數(shù)據(jù)庫(SAD)模塊和安全策略數(shù)據(jù)庫(SPD)模塊。
圖1 IPSec硬件體系結(jié)構(gòu)
以IPSec協(xié)議的外出處理為例,內(nèi)網(wǎng)模塊在接收到一幀數(shù)據(jù)之后,檢查該幀是否有效,若該幀數(shù)據(jù)有效則解封掉數(shù)據(jù)幀的頭尾,變成網(wǎng)絡(luò)IP報文,將IP報文發(fā)送至數(shù)據(jù)緩存模塊。然后經(jīng)過IPSec封包處理模塊,將封包后的數(shù)據(jù)發(fā)送到數(shù)據(jù)緩存模塊,再發(fā)送到外網(wǎng)模塊,外網(wǎng)模塊將此數(shù)據(jù)組成數(shù)據(jù)幀并以數(shù)據(jù)流的形式發(fā)送到下一層。
IPSec的封包協(xié)處理器如圖2所示。當收到的數(shù)據(jù)流進入IPSec封包協(xié)處理器時,IP頭會進入IP?Sec控制器,通過檢索安全策略數(shù)據(jù)庫SPD得到安全關(guān)聯(lián)(SA)指針,然后在安全關(guān)聯(lián)數(shù)據(jù)庫SAD中獲取相應(yīng)的安全關(guān)聯(lián)SA,若是在SAD中沒有相應(yīng)的SA,則由密鑰協(xié)商協(xié)議(IKE)生成相應(yīng)的SA。在包過濾模塊中根據(jù)SA將數(shù)據(jù)包丟棄或者直接發(fā)送到發(fā)送緩沖區(qū)或者應(yīng)用IPSec處理。需要經(jīng)過IPSec處理的數(shù)據(jù)先經(jīng)過AES進行加密,然后經(jīng)過HMAC模塊進行處理,再重新計算數(shù)據(jù)包的IP校驗和,最后才能發(fā)送出去。
圖2 IPSec封包協(xié)處理器
IPSec解包協(xié)處理器如圖3所示。接收到的數(shù)據(jù)包經(jīng)過IP校驗,如果錯誤則直接將此包丟棄。通過IP校驗的數(shù)據(jù)包會根據(jù)數(shù)據(jù)包中的下一協(xié)議是否為安全封裝載荷(ESP)協(xié)議或者認證頭(AH)協(xié)議而做出相應(yīng)的處理,如果不是,則根據(jù)其他地址查找SPD,如果有相應(yīng)的策略則丟棄,否則繞過。若下一個協(xié)議是ESP或者AH,則使用三元組在SAD中查找SA并對數(shù)據(jù)進行IPSec處理。然后通過將SAD和SPD相連的指針進行匹配而找到使用的SPD,驗證是否與采取的IPSec處理相符,如果相符則發(fā)送到上層進行處理,若是不符則丟棄。
圖3 IPSec解包協(xié)處理器
在IPSec體系結(jié)構(gòu)中,用到的加解密算法通常是3DES或者AES,用到的哈希算法通常是SHA-1、SHA-2系列。由于SHA-1已被攻破,存在安全隱患,所以本試驗采用的是更為安全的SHA-256。本論文將詳述AES算法和SHA-256算法。
本論文是在Xilinx的Virtex-4系列FPGA上進行實驗。此芯片運行速度快,有著并行運算的優(yōu)勢,在每個時鐘周期內(nèi)完成更多的任務(wù),有處理復(fù)雜功能的能力。
AES算法是于2001年由美國國家標準技術(shù)協(xié)會發(fā)布的高級加密標準。作為一個對稱分組密碼算法,其分組長度可以為128位、192位和256位。本論文介紹的是分組長度為128位的,密鑰長度為256位的算法。
AES算法加密過程如圖4所示,加密包括字節(jié)替換、行移位、列混合和輪密鑰加四個過程,其中列混合是運算中最復(fù)雜的。解密過程與加密過程相近,包括逆字節(jié)替換、逆行移位、逆列混合和輪密鑰加。
3.1.1 多項式模運算
若a∈GF(28),則a可以表示為
那么:
圖4 AES加解密過程
由于:f(x)=x8+x4+x3+x+1
當a7=0時有:
當a7=1時有:
所以對于任意給定的輸入數(shù)據(jù)a(7:0),當執(zhí)行GF(28)上的x乘法運算時首先將a(7:0)左移一位,得到數(shù)據(jù)(a(6:0),0),其次判斷數(shù)據(jù)最高位的值,所以輸出的數(shù)據(jù)為
c(x)=xa(x)=(a6a5a4a3a2a1a00)+(000a7a70a7a7)
所以AES算法中GF(28)上的x乘法電路如圖5所示。
圖5 x乘法電路圖
3.1.2 列混合與逆列混合運算
列混合是將狀態(tài)陣列的每一列視為系數(shù)在GF(28)上,次數(shù)小于4的多項式,被同一個固定的多項式c(x)進行模x4+1乘法。AES的設(shè)計者所給出的c(x)為
列混合運算可以表示為GF(28)上的可逆線性變換:
通過上述的介紹可以將此運算改進為循環(huán)移位和異或兩種簡單的邏輯運算,更加適合硬件電路的設(shè)計,不需要進行多項式的模乘和模除這種復(fù)雜的運算,可以大大提高運算的效率。
AES解密過程中的逆列混合運算與加密過程中的列混合運算不同:
由上式可知逆列混合運算的復(fù)雜度遠遠大于列混合運算,可以通過下列方法優(yōu)化其逆列混合運算過程:
逆列混合運算可以變換成:
'05','04'的計算量明顯要比變換之前的計算量小,而且變換之后逆列混合運算可以調(diào)用列混合運算中的模塊,減少AES算法對資源的占用,優(yōu)化前后的資源如表1所示。
表1 AES在Virtex-4上的綜合報告
吞吐率=(分組長度*時鐘頻率)/分組運算占用時鐘周期數(shù)。此算法分組長度為128bit,分組運算占用時鐘周期數(shù)為16個時鐘周期。
從表1中可以看到,在經(jīng)過優(yōu)化后,運算頻率有所提高,吞吐率有了提升,面積占用有所減小,可見本論文中提到的方法有一定的效果。
SHA-256算法是指將長度不大于264bit的信息通過64次循環(huán)運算計算出256位的哈希值。哈希運算單元每次處理512位信息。SHA-256單次循環(huán)步驟如圖6所示。
圖6 SHA-256單步運算
其中前16個Wt是最初的512bit消息塊分成的16個32bit數(shù)據(jù),后48個Wt由上面的公式計算所得。
SHA-256算法由64個圖6中的單步運算組成,每一輪 a,b,c,d,e,f,g,h 都是當前輪的輸入,也是上一輪的輸出。每一輪運算里面求a的關(guān)鍵路徑最長,也是延時最大的,可以通過流水的方式減少其最長路徑。
可以通過增加寄存器,減少關(guān)鍵路徑的長度,將a的計算分解成兩個時鐘完成,第一個時鐘計算:
第二個時鐘計算:
然后采用流水的方式在計算a的同時計算下一輪的T1,T2,T3,通過這種并行計算使整個算法的時鐘只增加一個,但是減少了關(guān)鍵路徑的長度,提高了運算速度。
采用本論文中提到的方法前后資源占用、最大時鐘頻率和吞吐率如表2所示。
表2 SHA-256在Virtex-4上的綜合報告
從表2可以看到,與文獻[8],文獻[9]相比,本論文優(yōu)化后的最大時鐘頻率有了一定的提高,資源占用面積也減小了,在數(shù)據(jù)最大吞吐率上面有了明顯的提高,在提升算法性能上有著顯著的效果。
本論文通過分析IPSec硬件實現(xiàn)的結(jié)構(gòu)體系,詳細介紹了基于此安全協(xié)議上的封包和解包流程,針對其中對稱算法AES和哈希算法SHA-256的運算過程進行了詳細的分析。并對這兩個算法進行了硬件實現(xiàn)和優(yōu)化設(shè)計,在頻率、面積上有了一定的優(yōu)化,使得數(shù)據(jù)吞吐率和優(yōu)化之前有了明顯的提高,提升了兩種算法的性能。
[1]Atkinson R.Kent S.Security Architecture for the Internet Protocol[S].RFC2401,1998.
[2]田春歧,王立明,蔡勉.IPSec VPN的研究和分析[J].計算機工程與應(yīng)用,2004,40(4):163-166.
[3]劉航.一種用于IPSec協(xié)議的AES算法可重配置硬件實現(xiàn)[J].小型微型計算機系統(tǒng),2005.12(26):2083-2085.
[4] Wu Jianwu.Implementation of Virtual Private Network based on IPSec Protocol[C]//IEEE Future Computer and Communication,2009:138-141.
[5]A J.Elbirt.Accelerated AES implementations via general?ized instruction set extensions[J].Journal of Computer Se?curity,2008,16(3):265-288.
[6]梁旭,凌朝東,張麗紅.基于FPGA的AES算法的實現(xiàn)[J].通信技術(shù),2011,44(12):111-113.
[7]陳華鋒.高速SHA-256算法硬件實現(xiàn)[J].浙江大學學報,2009,11(6):675-678.
[8]劉鈺力.基于FPGA的SHA256高效數(shù)字加密系統(tǒng)[D].蘭州:蘭州大學,2011.
[9]湯煜,翁秀玲,王云峰.SHA_256哈希運算單元的硬件優(yōu)化實現(xiàn)[J].中國集成電路,2016,25(5):26-31.
[10]何潤民.單向Hash函數(shù)SHA-256的研究與改進[J].信息技術(shù),2013,14(8):22-25.
[11]葛輝.一種256位hash函數(shù)算法[J].大眾科技,2005,6(5):107-108.
[12]佟玉偉,陸浪如,李明等.基于FPGA先進加密算法AES的并行實現(xiàn)[J].交通信息與安全,2002,20(6):20-22.
[13]沈啟峰,黃士坦,楊靚.基于FPGA先進加密算法AES的高速實現(xiàn)[J].西安理工大學學報,2006,22(2):203-206.