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

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

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

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

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

?

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

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

1 AES算法介紹?

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

?

?

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

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

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

2.1 整體架構(gòu)?

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

?

?

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

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

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

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

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

?

?

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

?

?

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

2.2.2 行移位模塊?

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

?

?

2.2.3 列混合模塊?

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

??? 圖5給出了以字為單位的硬件電路模型。在以字節(jié)為單位的列混合模塊中,x乘法電路是最重要的單元,。對(duì)于任意給定的輸入數(shù)據(jù)b(7:0),當(dāng)執(zhí)行x乘運(yùn)算時(shí),首先將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)左移一位和緊接著的一個(gè)與0x1b的條件位異或來(lái)實(shí)現(xiàn),。本文對(duì)其進(jìn)行了優(yōu)化設(shè)計(jì),如圖6所示,。?

?

?

?

3 性能評(píng)價(jià)?

3.1 密碼處理性能?

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

?

?

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

?

?

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

??? 在不考慮初始配置時(shí)間和數(shù)據(jù)輸入/輸出時(shí)間并假定數(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è)計(jì),數(shù)據(jù)處理并行度高,本文是按照其基本結(jié)構(gòu)實(shí)現(xiàn)該算法時(shí)選取的數(shù)據(jù)。如前所述,本設(shè)計(jì)能夠較好地適配AES算法,加/解密速率達(dá)3.4Gb/s,。由此可見,本方案在速度上具有明顯的優(yōu)勢(shì),同時(shí)對(duì)系統(tǒng)資源的消耗很少,具有很好的性價(jià)比,。?

??? 本文對(duì)AES算法的運(yùn)算模塊和密鑰擴(kuò)展模塊進(jìn)行了可重構(gòu)設(shè)計(jì),對(duì)輪結(jié)構(gòu)中的列混合模塊進(jìn)行了結(jié)構(gòu)優(yōu)化,并給出了AES算法在ECB模式下的設(shè)計(jì)方案。在該方案基礎(chǔ)上做進(jìn)一步改進(jìn)便能實(shí)現(xiàn)AES算法的CBC,、OFB,、CFB模式。此外,本文在分析AES算法基礎(chǔ)上,分別用FPGA和ASIC對(duì)本文提出的方案進(jìn)行了高速硬件實(shí)現(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è)計(jì)[D].臺(tái)灣:臺(tái)灣國(guó)立云林科技大學(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)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:aet@chinaaet.com,。