武 一,郭婷婷
(河北工業(yè)大學(xué)信息工程學(xué)院,天津300401)
隨著專(zhuān)用虛擬網(wǎng)絡(luò)的快速發(fā)展,人們對(duì)于通信加密的要求也隨之增高。為解決這一問(wèn)題,通常采用數(shù)據(jù)加密標(biāo)準(zhǔn)(Data Encryption Standard,DES)和高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES)來(lái)提高信息系統(tǒng)及數(shù)據(jù)的安全性和保密性。目前研究表明,一些ASIC(專(zhuān)用集成電路)和FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)器件可成功實(shí)現(xiàn)DES和AES的多種硬件加密。其中,一部分研究側(cè)重于使用循環(huán)結(jié)構(gòu)來(lái)減小芯片的資源占用,另一部分則側(cè)重于使用流水線結(jié)構(gòu)來(lái)提高吞吐率。對(duì)于DES和AES加密算法來(lái)說(shuō),要想達(dá)到一個(gè)高的吞吐率,在每一輪運(yùn)算中嵌入流水線寄存器是必要的[1]。然而,沒(méi)有相關(guān)的權(quán)衡,一味地嵌入流水線將增加邏輯運(yùn)算復(fù)雜度和硬件占用面積。因此,硬件資源的共享和復(fù)用以及邏輯門(mén)的壓縮是產(chǎn)生一個(gè)加密電路所不可缺少的條件。
為了保護(hù)私有信息不被非法竊取,數(shù)據(jù)加密技術(shù)應(yīng)運(yùn)而生。數(shù)據(jù)加密技術(shù)采用相關(guān)的加密算法對(duì)數(shù)據(jù)進(jìn)行屏蔽,使其成為不可讀的代碼,只有指定的用戶(hù)或場(chǎng)合才能解除屏蔽而獲得數(shù)據(jù)。在實(shí)際應(yīng)用中,DES和AES加密算法被普遍用來(lái)實(shí)現(xiàn)敏感的金融數(shù)據(jù)、政府信息和私人交易的加密[2]。
數(shù)據(jù)加密的實(shí)現(xiàn)方式通常分為軟件實(shí)現(xiàn)和硬件實(shí)現(xiàn)兩種。軟件實(shí)現(xiàn)方式在主機(jī)上運(yùn)行加密軟件,占用主機(jī)資源、處理速度慢、抗攻擊能力差[3]。而硬件實(shí)現(xiàn)方式,基于FPGA或ASIC器件的加密設(shè)計(jì)很難被非法攻破。因此,從本質(zhì)上說(shuō),硬件加密具有更高的物理安全性。另外,硬件加密獨(dú)立于主機(jī)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)和運(yùn)算,資源占用少,滿(mǎn)足更高的實(shí)時(shí)性要求。
傳統(tǒng)硬件實(shí)現(xiàn)主要采用ASIC,設(shè)計(jì)成本高、系統(tǒng)擴(kuò)展性差。FPGA器件以其硬件的安全性和高速性以及軟件的靈活性和易維護(hù)性,成為研究和實(shí)現(xiàn)加密算法的理想硬件平臺(tái)。采用FPGA實(shí)現(xiàn)的加解密系統(tǒng)可在保證加解密性能的同時(shí)提供更好的可擴(kuò)展性和通用性[4]。
文獻(xiàn)[1-3]介紹了DES加密算法的FPGA實(shí)現(xiàn)。這些研究中所設(shè)計(jì)的結(jié)構(gòu)能夠達(dá)到Gbit/s級(jí)的吞吐率。其中最高的吞吐率可達(dá)到6 Gbit/s[2]。文獻(xiàn)[4-6]描述了AES算法的FPGA實(shí)現(xiàn)。文獻(xiàn)[4]中提出了提高吞吐率的可能性方案(不超過(guò)1 Gbit/s),文獻(xiàn)[5]中已經(jīng)能達(dá)到7 Gbit/s的吞吐率。但這些研究工作都集中在吞吐率方面,沒(méi)有權(quán)衡相關(guān)的芯片資源占用。
因此,本文采用資源優(yōu)先的設(shè)計(jì)方案,在一片F(xiàn)PGA芯片上設(shè)計(jì)實(shí)現(xiàn)了DES、AES加解密系統(tǒng)。通過(guò)分別對(duì)系統(tǒng)的輪函數(shù)及S盒進(jìn)行優(yōu)化設(shè)計(jì),實(shí)現(xiàn)系統(tǒng)的高速率、低占用。
DES加密系統(tǒng)中,輸入的64位明文經(jīng)初始置換后,數(shù)據(jù)移位,明文塊被分成左右兩部分,各32位。其中左半部分依賴(lài)循環(huán)密鑰進(jìn)行邏輯運(yùn)算,右半部分不變,然后交換左右兩部分,并將此過(guò)程循環(huán)進(jìn)行16次。這個(gè)過(guò)程既包含替代又包含移位,數(shù)據(jù)和密鑰在這一階段被結(jié)合在一起。DES加密流程如圖1所示。
數(shù)據(jù)的安全性取決于密鑰的安全性設(shè)置。每一輪運(yùn)算的關(guān)鍵是初始密鑰的字節(jié)變換和由內(nèi)部密鑰產(chǎn)生器執(zhí)行的左移操作[5]。
內(nèi)部子密鑰產(chǎn)生器對(duì)輸入的64位的外部密鑰K進(jìn)行奇偶校驗(yàn),剔除奇偶校驗(yàn)位,再經(jīng)置換得到56位有效密鑰,將得到的密鑰分成兩部分,每部分28位,分別輸入到28位的寄存器C0、D0中。
圖1 加密系統(tǒng)流程圖
在內(nèi)部子密鑰產(chǎn)生器中,除寄存器(C0,D0)外,還有16 對(duì)寄存器,即(C1,D1),(C2,D2),…,(C16,D16)。C 和 D中的內(nèi)容分別向左移動(dòng)1至2位便可得到加密時(shí)的內(nèi)容,這種移位方式是按循環(huán)移位寄存器方式進(jìn)行的。在16輪左移操作中,第1、2、9、16輪密鑰位數(shù)只左移1位,其余輪密鑰左移2位,共計(jì)向左移動(dòng)了28位,這樣就保證了C16=C0,D16=D0,即(C16,D16)的內(nèi)容和(C0,D0)完全相同。
合并寄存器C1和D1中存儲(chǔ)的28位數(shù)據(jù),形成56位密鑰,并依據(jù)壓縮置換確定48位的內(nèi)部子密鑰K。如圖2所示。
圖2 子密鑰產(chǎn)生框圖
加密過(guò)程中要實(shí)現(xiàn)16輪的變換,才能得到最終密文。若輪函數(shù)采用硬件級(jí)聯(lián)的實(shí)現(xiàn)方式,可得到較快的處理速度,但每個(gè)時(shí)鐘周期都要將數(shù)據(jù)存入寄存器,要占用很大的資源空間[6]。
考慮到FPGA的硬件資源有限,本設(shè)計(jì)提出重復(fù)調(diào)用一份輪函數(shù)的硬件拷貝,即僅用硬件實(shí)現(xiàn)一套密鑰變換和密鑰加數(shù)據(jù)運(yùn)算輪函數(shù),通過(guò)反復(fù)16次調(diào)用這一硬件結(jié)構(gòu)來(lái)實(shí)現(xiàn)1次DES加密運(yùn)算。以時(shí)間換空間,達(dá)到硬件資源占用的最小化[7]。同時(shí),為了兼顧芯片的處理速度,在輪函數(shù)內(nèi)部設(shè)置一級(jí)流水線來(lái)提高整體處理的速度。
在硬件上實(shí)現(xiàn)密鑰變換函數(shù)和密鑰加數(shù)據(jù)輪函數(shù)的同步流水線架構(gòu),減少了相鄰流水線級(jí)間的邏輯復(fù)雜度[8]。通過(guò)設(shè)置輪計(jì)數(shù)器對(duì)所進(jìn)行的輪運(yùn)算計(jì)數(shù),控制數(shù)據(jù)選擇器,從而實(shí)現(xiàn)輪函數(shù)復(fù)用。圖3為輪函數(shù)硬件結(jié)構(gòu)電路圖。
AES-128加密算法需要運(yùn)行10輪,在每一輪運(yùn)算中,字節(jié)變換是唯一的非線性變換。次變換使用S盒來(lái)獨(dú)立操作狀態(tài)矩陣中的每個(gè)字節(jié)。
設(shè)計(jì)一個(gè)合適的S盒能夠很大程度上減少AES硬件電路的復(fù)雜度和運(yùn)算量[9]。目前大多采用基于復(fù)合域變換的S盒實(shí)現(xiàn)方法。
具體操作是將域GF(28)上的元素取逆同構(gòu)線性變換為在GF(24)的取逆。GF(24)上的乘法取逆所消耗的資源相對(duì)較少,可降低資源消耗。不足是增大了硬件設(shè)計(jì)的復(fù)雜性和實(shí)現(xiàn)的時(shí)延[10]。
為避免執(zhí)行同構(gòu)變換,本設(shè)計(jì)的S盒在GF(24)2上取乘法逆,原S盒的仿射函數(shù)不變。具體選擇GF(2)[x]上不可約的三項(xiàng)式x4+x+1定義GF(24)上的乘法,選擇子GF(24)上的二次不可約多項(xiàng)式x2+x+8定義GF(24)2上的乘法。然后對(duì)所定義的域GF(24)2乘法取逆,并且與AES算法S盒的仿射函數(shù)相復(fù)合生成新的S盒。
圖3 輪函數(shù)硬件結(jié)構(gòu)電路圖
實(shí)現(xiàn)過(guò)程如下:
1)設(shè)AES算法S盒的仿射函數(shù)是z=A×t+0x63,則z=t⊕(t<<1)⊕(t<<2)⊕(t<<3)⊕(t<<4)⊕0x63。
2)輸入:8 bit向量 y=(y7,y6,…,y0)。
輸出:8 bit向量 z=(z7,z6,…,z0)。
令 b=(y7,…,y0),c=(y3,y2,…,y0),將 y=(b,c)看作是域GF(24)2的元素bx+c,取逆:(bx+c)-1=b(b28+bc+c2)-1x+(c+b)(b28+bc+c2)-1;(b28+bc+c2)-1可通過(guò)查表完成。
3)設(shè)乘法取逆的結(jié)果是dx+e,將之用向量表示為t=(t7,t6,…,t0),再計(jì)算:z=t⊕(t<<1)⊕(t<<2)⊕(t<<3)⊕(t<<4)⊕0x63,并輸出結(jié)果z=(z7,z6,…,z0)。
經(jīng)變形后的S盒仍滿(mǎn)足AES加密算法提出的設(shè)計(jì)要求,且由于不執(zhí)行同構(gòu)變換,邏輯電路門(mén)數(shù)減少,更易設(shè)計(jì)和實(shí)現(xiàn)。
在加解密系統(tǒng)中,解密過(guò)程是加密過(guò)程的逆過(guò)程,每一輪包括逆字節(jié)變換ISB,逆行位移運(yùn)算ISR,和逆列混合運(yùn)算IMC。在首輪運(yùn)算開(kāi)始之前,包括一次輪密鑰加運(yùn)算ARK,而最后一輪不包括逆列混合運(yùn)算IMC。加密和解密過(guò)程往往由兩個(gè)電路分開(kāi)實(shí)現(xiàn),這導(dǎo)致硬件資源損耗過(guò)大,且不利于加密和解密的同步優(yōu)化[11]。
為了彌補(bǔ)這兩個(gè)不足,在設(shè)計(jì)中,解密模塊將分別調(diào)用加密模塊的電路結(jié)構(gòu),利用加密硬件資源的復(fù)用完成解密工作,減少硬件資源損耗[12]。另外,解密時(shí)先執(zhí)行非線性字節(jié)變換,有利于加解密的同步優(yōu)化。
實(shí)現(xiàn)過(guò)程如下:解密時(shí),首先進(jìn)行數(shù)組矩陣的逆仿射變換,然后調(diào)用加密電路的字節(jié)變換部分,得到逆字節(jié)變換的輸出。輸出結(jié)果執(zhí)行逆行位移運(yùn)算的右移操作。右移后的矩陣乘以系數(shù)矩陣(0E,0B,0D,09),并調(diào)用列混合模塊的電路結(jié)構(gòu)完成逆列混合運(yùn)算。
加密過(guò)程中,輪密鑰key0~key9由AES算法的密鑰擴(kuò)展基于原始密鑰計(jì)算產(chǎn)生。解密過(guò)程中,輪密鑰加運(yùn)算依次取輪密鑰key9~key0,除去首輪和最后一輪,從RAM中取出的輪密鑰需要先經(jīng)進(jìn)行逆列混合運(yùn)算[13]。加解密流程如圖4所示。
本設(shè)計(jì)采用FPGA開(kāi)發(fā)平臺(tái)、Cyclone II系列芯片對(duì)加解密系統(tǒng)進(jìn)行測(cè)試與驗(yàn)證。系統(tǒng)主要包括數(shù)據(jù)輸入、密鑰輸入和狀態(tài)控制信號(hào)線,具有統(tǒng)一的外部時(shí)鐘控制[14]。
在加密測(cè)試文件中:
desin:000000000000000
圖4 AES加/解密系統(tǒng)
key:0000000000000000
expout:8ca64de9c1b123a7
加密后:
desout:8ca64de9c1b123a7
由仿真圖(如圖5)可知:經(jīng)16個(gè)時(shí)鐘周期后,加密得到的最終輸出desout與理論值相同,證明加密成功。
圖5 DES加密仿真波形圖(截圖)
在加密測(cè)試文件中:
key:00000000000000000000000000000000
plain:f34481ec3cc627bacd5dc3fb08f273e6
ciph:0336763e966d92595a567cc9ce537f5e
加密后:
test_out:0336763e966d92595a567cc9ce537f5e
同步解密后:
test_out2:f34481ec3cc627bacd5dc3fb08f273e6
由仿真圖(如圖6)可知:最終得到的密文與理論值相同,證明加密成功。同步解密后,還原了最初的明文,解密成功。
圖6 AES加密仿真波形圖(截圖)
結(jié)果表明:DES系統(tǒng)的實(shí)現(xiàn)僅占用了629個(gè)LE,不到整個(gè)硬件資源的6%,處理速度為3.08 Gbit/s。
AES系統(tǒng)的實(shí)現(xiàn)占用了1 128個(gè)LE,占整個(gè)硬件資源的8%,處理速度達(dá)到了7.04 Gbit/s。
表1給出了本設(shè)計(jì)的具體實(shí)驗(yàn)結(jié)果。
表1 實(shí)驗(yàn)結(jié)果
表2為本設(shè)計(jì)與一些同類(lèi)設(shè)計(jì)的比較結(jié)果。
表2 本設(shè)計(jì)與一些同類(lèi)設(shè)計(jì)的比較結(jié)果
由表1可知,在DES加密系統(tǒng)的設(shè)計(jì)中,對(duì)比文獻(xiàn)[1-3],文獻(xiàn)[2]中采用EP1S10芯片實(shí)現(xiàn)DES的硬件加密,占用了4 362個(gè)LE,加密速率為6 Gbit/s,是3個(gè)方案中相對(duì)最好的。而本設(shè)計(jì)選用EP2C35系列芯片,采用改進(jìn)的方法后,硬件資源占用629個(gè)LE,約為文獻(xiàn)[2]的0.144倍,且加密速度為3.08 Gbit/s,總體性能大大提高。
在 AES加密系統(tǒng)設(shè)計(jì)中,文獻(xiàn)[5]采用 2塊XC2V3000芯片實(shí)現(xiàn)AES的硬件加密,占用了4 817個(gè)LE,加密速度為7.12 Gbit/s,與文獻(xiàn)[4]和文獻(xiàn)[6]相比,文獻(xiàn)[5]性能相對(duì)最佳。而本設(shè)計(jì)的實(shí)現(xiàn)設(shè)備采用EP2C35系列芯片,硬件資源占用了1 128個(gè)LE,約為文獻(xiàn)[5]的0.234 倍,加密速度為7.04 Gbit/s,與文獻(xiàn)[5]基本持平。
本設(shè)計(jì)實(shí)現(xiàn)了一個(gè)高性能的DES和AES硬件加密系統(tǒng)。實(shí)驗(yàn)證明此系統(tǒng)能夠節(jié)省90%的硬件存儲(chǔ)資源,同時(shí)具有相同的抗攻擊能力來(lái)保證新一代的IT安全。本設(shè)計(jì)與其他同類(lèi)設(shè)計(jì)的比較結(jié)果顯示,本設(shè)計(jì)可提供較高的吞吐率,并且在硬件資源方面具有明顯的優(yōu)勢(shì),資源占用率遠(yuǎn)低于其他的設(shè)計(jì),實(shí)現(xiàn)了資源優(yōu)先的設(shè)計(jì)目的。
本設(shè)計(jì)在整體性能方面(吞吐率/面積)具有明顯的優(yōu)越性,使用FPGA來(lái)實(shí)現(xiàn)加密算法將具有良好的發(fā)展前景。
[1]姚霽,劉建華,范九倫.一種密鑰可配置的DES加密算法的FPGA實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2009,35(7):145-148.
[2]張峰,鄭春來(lái),耶曉東.DES加密算法的FPGA實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2008,31(7):80-82.
[3] MCLOONEM,MCCANNY JV.High-performance FPGA implementation of DESusing a novel method for implementing the key schedule[J].IEEE Proc.Circuits Devices Syst.,2003,150(5):373-378.
[4]徐柏權(quán),王昭順.基于AES算法的FPGA高速實(shí)現(xiàn)[J].信息與電腦,2009(7):98-99.
[5]周微微.DES算法的跨平臺(tái)研究與實(shí)現(xiàn)[J].中國(guó)高新技術(shù)企業(yè),2010(21):30-31.
[6]周建欽,何凌云.DES加密算法的密鑰擴(kuò)展[J].科技通報(bào),2011(2):263-267.
[7]劉明珍.密碼技術(shù)DES和RSA的比較與應(yīng)用[J].煤炭技術(shù),2011(6):176-177.
[8] YANGXianwen,LIZheng,WANGAn,etal.Design research of the DES against power analysis attacks based on FPGA[J].Microprocessors and Microsystems,2011(35):18-22.
[9]馮妮,張會(huì)新,盧一男,等.嵌入式AES加密存儲(chǔ)器的硬件實(shí)現(xiàn)[J].電視技術(shù),2013,37(3):59-61.
[10]胡春燕,易波.基于AES加密算法的S盒優(yōu)化設(shè)計(jì)[J].微計(jì)算機(jī)信息,2012,10(28):358-360.
[11] JOSM,GRANADO C,MIGUEL A.A new methodology to implement the AES algorithm using partial and dynamic reconfiguration[J].the VLSI journal of Integration,2010(43):72-80.
[12]劉維杰.基于FPGA的AES加密設(shè)計(jì)[D].太原:中北大學(xué),2012.
[13]楊曉非,趙婷.基于AES算法改進(jìn)的藍(lán)牙安全機(jī)制研究[J].電視技術(shù),2013,37(5):106-109.
[14]唐明,張煥國(guó),劉樹(shù)波,等.AES的高性能硬件設(shè)計(jì)與研究[J].計(jì)算機(jī)工程,2006,32(8):257-259.