《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 高速可重構(gòu)AES的設(shè)計與實現(xiàn)

高速可重構(gòu)AES的設(shè)計與實現(xiàn)

2008-12-10
作者:任 巧, 戴紫彬, 李 偉

??? 摘?? 要: 提出一種可重構(gòu)" title="可重構(gòu)">可重構(gòu)AES硬件架構(gòu),對加/解密運(yùn)算模塊和密鑰擴(kuò)展模塊進(jìn)行了可重構(gòu)設(shè)計,使其能夠適配" title="適配">適配128bit,、192bit,、256bit三種" title="三種">三種密鑰長度的AES算法,并針對列混合模塊進(jìn)行了結(jié)構(gòu)優(yōu)化" title="結(jié)構(gòu)優(yōu)化">結(jié)構(gòu)優(yōu)化,。在FPGA上進(jìn)行了驗證與測試,并在0.18μm SMIC工藝下進(jìn)行了邏輯綜合" title="邏輯綜合">邏輯綜合及布局布線,。結(jié)果表明其核心時鐘頻率為270MHz, 吞吐量達(dá)到3.4Gb/s,能夠滿足高性能的密碼處理要求。?

??? 關(guān)鍵詞: 可重構(gòu); AES; 密鑰擴(kuò)展;列混合

?

??? 隨著信息化和網(wǎng)絡(luò)化的飛速發(fā)展,計算機(jī)之間傳輸數(shù)據(jù)的安全性已愈發(fā)重要,。對數(shù)據(jù)進(jìn)行加密是保護(hù)秘密信息的一種重要手段,然而,隨著計算機(jī)運(yùn)算速度,、密碼分析技術(shù)和芯片處理能力的不斷發(fā)展,一些傳統(tǒng)的加密算法的安全強(qiáng)度已經(jīng)很難適應(yīng)新的安全需要。因此,AES應(yīng)運(yùn)而生,。2000年10月,美國國家標(biāo)準(zhǔn)技術(shù)研究所(NIST)通過公開征集和討論最終宣布將Rijndael算法作為新的高級加密標(biāo)準(zhǔn)[1],。Rijndael具有抗攻擊能力強(qiáng)、密鑰建立時間短,、靈敏性好和內(nèi)存需求小的特點,。?

??? 本文在設(shè)計AES算法IP核時,綜合考慮速度和面積等因素對硬件實現(xiàn)的影響,一方面對列混合模塊進(jìn)行了結(jié)構(gòu)優(yōu)化,另一方面對密鑰擴(kuò)展模塊進(jìn)行了可重構(gòu)[2]設(shè)計,使其能夠適配密鑰長度為128bit、192bit和256bit的三種AES算法,從而既提高了處理速度,又有效節(jié)省了硬件資源。本設(shè)計在經(jīng)過FPGA驗證后,采用Synopsys邏輯綜合工具Design Compiler進(jìn)行邏輯綜合和優(yōu)化,。結(jié)果表明,該設(shè)計能夠滿足高性能密碼處理要求,可以作為CPU核的外圍模塊。?

1 AES算法介紹?

??? AES算法是一個迭代型分組密碼,。其明文分組長度為128bit,密鑰分組長度可以分別指定為128bit,、192bit、256bit,即AES-128,、AES-192和AES-256,。它們的加/解密圈數(shù)分別為10、12和14,。AES加/解密算法的輸入是一個128bit的數(shù)據(jù)塊,此數(shù)據(jù)塊被編排為一個被稱作狀態(tài)矩陣的4×4矩陣,AES的所有變換都是基于該狀態(tài)矩陣的,。類似地,種子密鑰也用一個以字節(jié)為元素的矩陣陣列表示,該陣列有4行,列數(shù)記為Nk,對應(yīng)三種密鑰長度,Nk分別為4、6,、8,。AES算法流程如圖1所示。?

?

?

??? 算法的操作步驟為:初始的密鑰加,、(Nr-1)輪迭代以及一個結(jié)尾輪,。其中,輪迭代又分為四步,即字節(jié)替代(ByteSub)、行移位(ShiftRow),、列混合(MixColumn),、密鑰加(AddRoundKey)。在結(jié)尾輪運(yùn)算中不進(jìn)行列混合變換,。?

??? AES解密算法有兩種實現(xiàn)方案[3],其一是直接使用加密算法的逆算法,在這種實現(xiàn)方案中,解密算法所使用的基本運(yùn)算都是加密算法的逆運(yùn)算,但所使用的子密鑰與加密算法相同,只是使用順序與加密算法相反,。其二是采用等效解密算法,其架構(gòu)與加密算法非常類似,但所使用的子密鑰與加密算法不同。本文在硬件實現(xiàn)時,為減少資源占用,將加密和解密模塊整合到一個模塊中實現(xiàn),故采用等效的解密流程,。?

2 可重構(gòu)AES算法的設(shè)計與實現(xiàn)?

2.1 整體架構(gòu)?

??? AES算法結(jié)構(gòu)簡單,只需要邏輯運(yùn)算和查找表運(yùn)算,易于實現(xiàn),靈活性強(qiáng),。它不需要大量復(fù)雜的乘法運(yùn)算,加解密速度快,且輪函數(shù)具有良好的統(tǒng)計特性,并行執(zhí)行度高,十分有利于硬件設(shè)計與實現(xiàn)。本設(shè)計從節(jié)約資源角度出發(fā),將加密和解密算法整合到一個模塊中實現(xiàn),。圖2所示是可重構(gòu)AES算法的整體電路架構(gòu),。電路由輸入輸出模塊、可重構(gòu)運(yùn)算模塊,、可重構(gòu)密鑰擴(kuò)展模塊和控制模塊四部分組成,。?

?

?

??? Start為啟動信號。當(dāng)LoadData信號或LoadKey信號有效時,外部明/密文或種子密鑰通過In/Out端口分別注入到可重構(gòu)加/解密運(yùn)算模塊或可重構(gòu)密鑰擴(kuò)展模塊中進(jìn)行相應(yīng)變換,。KeySize信號用來選擇該模塊被重構(gòu)成哪種密鑰長度的AES算法,。當(dāng)其為“00”時,該模塊重構(gòu)成AES-128;當(dāng)為“01”時重構(gòu)成AES-192;為“10”時重構(gòu)成AES-256。Enc_Dec為加/解密信號,用來指示加密或解密操作,。當(dāng)Busy信號有效時,表示內(nèi)部正在進(jìn)行加/解密處理或密鑰擴(kuò)展運(yùn)算,。?

??? 在可重構(gòu)加/解密運(yùn)算模塊中,ByteSub所使用的S-box和InvS-box主要有三種實現(xiàn)方法,即查找表法、多項式法以及ROM替代法,。本文采用存儲器資源來進(jìn)行實現(xiàn),不占用其他硬件資源,而且可以減少延時,。AddRoundKey采用簡單的異或邏輯實現(xiàn),。?

2.2 關(guān)鍵模塊的設(shè)計實現(xiàn)?

2.2.1 密鑰擴(kuò)展模塊?

??? 密鑰擴(kuò)展是以4字節(jié)字為元素的一維陣列,表示為W[Nb×(Nr+1)],其中前一個字取為種子密鑰,以后每個字按遞歸方式定義。本文針對密鑰擴(kuò)展模塊進(jìn)行了可重構(gòu)設(shè)計,其單元結(jié)構(gòu)如圖3所示,。?

?

?

??? 在圖3中,對C1,、C2、C3進(jìn)行相應(yīng)配置就能使該單元分別適配三種密鑰長度的密鑰擴(kuò)展算法,。具體的配置參數(shù)如表1所示,。

?

?

??? 在加/解密過程中每一輪需要128位的輪子密鑰,子密鑰的生成可以與密碼處理并行進(jìn)行,采用這種方式擴(kuò)展密鑰可以節(jié)省存儲空間,但會增加芯片的動態(tài)功耗,并且由于解密運(yùn)算所使用的子密鑰是由加密子密鑰經(jīng)過列混合運(yùn)算得到,故解密時的密鑰擴(kuò)展比加密時的密鑰擴(kuò)展要多用一倍的時鐘,這將使運(yùn)算模塊長期處于等待狀態(tài),制約解密過程的實現(xiàn),導(dǎo)致處理性能降低。通常,在實際應(yīng)用中種子密鑰不會頻繁改變,所以本文采用外部擴(kuò)展方式,即通過預(yù)計算將擴(kuò)展出的子密鑰保存在RAM中,進(jìn)行密碼處理時再從RAM中讀出各輪子密鑰參與運(yùn)算,。這種方式靈活性強(qiáng),對提高整體性能有很大幫助,。?

2.2.2 行移位模塊?

??? 行移位只是完成信號在不同輸入輸出之間的切換,不占用任何觸發(fā)器、門陣列資源,只占用布線資源,。本文采用硬連線方式實現(xiàn)該模塊,延時小且實現(xiàn)簡單,。通過配置,該模塊能夠分別實現(xiàn)三種密鑰長度所對應(yīng)的行移位。該模塊結(jié)構(gòu)如圖4所示,。?

?

?

2.2.3 列混合模塊?

??? 列混合變換被定義為系數(shù)在有限域GF(28)上的四次多項式矩陣乘法[1],加密過程是在GF(28)上乘01,、02、03,解密過程相對復(fù)雜,是在GF(28)上乘09,、0E,、0B、0D,。為了簡化實現(xiàn),將矩陣乘法展開并整理,。以加密過程為例可得:對解密過程也進(jìn)行相應(yīng)整理,經(jīng)比較可以得知加密和解密兩種操作函數(shù)中存在可共享的部分,于是將兩種操作函數(shù)整合在一起,從而簡化了列混合模塊的實現(xiàn)過程,節(jié)約了硬件資源。?

??? 圖5給出了以字為單位的硬件電路模型,。在以字節(jié)為單位的列混合模塊中,x乘法電路是最重要的單元,。對于任意給定的輸入數(shù)據(jù)b(7:0),當(dāng)執(zhí)行x乘運(yùn)算時,首先將b(7:0)左移1位得到數(shù)據(jù)b(6:0)&‘0’;其次判斷數(shù)據(jù)最高位b(7)的值。若b(7)=0,則輸出數(shù)據(jù)為b(6:0),否則,輸出數(shù)據(jù)為b(6:4)&(“11011”xor (b(3:0) &‘0’)),。因此,x乘法可以用字節(jié)內(nèi)左移一位和緊接著的一個與0x1b的條件位異或來實現(xiàn),。本文對其進(jìn)行了優(yōu)化設(shè)計,如圖6所示。?

?

?

?

3 性能評價?

3.1 密碼處理性能?

??? 整個設(shè)計是在Quartus Ⅱ開發(fā)平臺上采用Verilog語言實現(xiàn)的,并將設(shè)計文件在Quartus軟件下進(jìn)行編譯,、仿真和FPGA下載驗證,。表2給出了采用FPGA實現(xiàn)時的性能和資源占用情況。

?

?

??? 本設(shè)計在經(jīng)過FPGA驗證后,采用0.18μm CMOS標(biāo)準(zhǔn)單元庫編寫約束文件,使用Synopsys Design Compiler工具進(jìn)行邏輯綜合,、優(yōu)化,在ModelSim工具上仿真,其綜合結(jié)果如表3所示,。

?

?

3.2 與其他實現(xiàn)方案的比較?

??? 在不考慮初始配置時間和數(shù)據(jù)輸入/輸出時間并假定數(shù)據(jù)、子密鑰已經(jīng)準(zhǔn)備完畢的情況下,在參考文獻(xiàn)[4]中提出的方案其速率為1.83Gb/s,參考文獻(xiàn)[5]中提出的方案速率為0.61Gb/s,。AES算法基于SP網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計,數(shù)據(jù)處理并行度高,本文是按照其基本結(jié)構(gòu)實現(xiàn)該算法時選取的數(shù)據(jù),。如前所述,本設(shè)計能夠較好地適配AES算法,加/解密速率達(dá)3.4Gb/s。由此可見,本方案在速度上具有明顯的優(yōu)勢,同時對系統(tǒng)資源的消耗很少,具有很好的性價比。?

??? 本文對AES算法的運(yùn)算模塊和密鑰擴(kuò)展模塊進(jìn)行了可重構(gòu)設(shè)計,對輪結(jié)構(gòu)中的列混合模塊進(jìn)行了結(jié)構(gòu)優(yōu)化,并給出了AES算法在ECB模式下的設(shè)計方案,。在該方案基礎(chǔ)上做進(jìn)一步改進(jìn)便能實現(xiàn)AES算法的CBC,、OFB、CFB模式,。此外,本文在分析AES算法基礎(chǔ)上,分別用FPGA和ASIC對本文提出的方案進(jìn)行了高速硬件實現(xiàn),。該方案同樣適用于Altera公司的其他FPGA芯片及Xinlinx公司的FPGA器件等,具有很好的通用性。?

參考文獻(xiàn)?

[1]?DANMEN J, RIIJMEN V. AES Proposal : Rijndael.AES?algorithm submission, AES home page: http://www.nist.gov/aes, 1999-09.?

[2] SIGH H, LEE M H, LU G, et a1.An integerated reconfigurable system for data-parallel and computation-intensive?applications[J]. IEEE Transcations on Computer, 2000,49?(5):465-481.?

[3]?朱信賢.全功能AES密碼引擎之超大型積體電路架構(gòu)設(shè)計[D].臺灣:臺灣國立云林科技大學(xué),2002.?

[4]?KUO H, VERBAUWHEDE I, SCHAUMONT P. A 2.29?Gbits/sec, 56 mW Non-pipelined Rijndael AES Encryption JC in a 1.8V, 0.18 mm CMOS Technology. Electrical Engineering Department, University of California Los Angeles,Los Angeles, CA.?

[5] MROCZKOWSKI P. Implemetation of the block cipher?Rijndael using Altera FPGA. Military University of Technology.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]