文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2014)01-0064-04
針對通信網(wǎng)絡(luò)、數(shù)據(jù)存儲加密等應(yīng)用場景中的安全需求,人們對AES算法的硬件實現(xiàn)進(jìn)行了廣泛地研究。目前,對其高速高吞吐率的優(yōu)化實現(xiàn)方法主要分為兩類。
第一類采用組合邏輯計算字節(jié)代替變換中S盒代替表的值,并通過在組合路徑中插入流水寄存器的方法來減小整個芯片的關(guān)鍵路徑,從而提高最高時鐘頻率與數(shù)據(jù)吞吐率。HODJAT A[1]將數(shù)據(jù)映射到GF(24)上,MATHEW S K[2]將所有數(shù)據(jù)與變換系數(shù)均映射到GF(24)2上,并在組合路徑中插入了不同級數(shù)的流水寄存器,實現(xiàn)了不同數(shù)據(jù)吞吐率的AES硬件電路。雖然這類實現(xiàn)方法有著面積占用小、數(shù)據(jù)吞吐率高的優(yōu)點(diǎn),但不能有效支持分組密碼工作中目前已被廣泛使用的密碼分組鏈接CBC(Cipher Block Chaining)模式,影響算法實際應(yīng)用的安全性。
第二類采用多核方案實現(xiàn)。Wang Maoyin[3]提出了面向不同安全等級的AES架構(gòu),Huang Wei[6]提出了低復(fù)雜性的多核異構(gòu)安全SoC平臺。雖然數(shù)據(jù)吞吐率較高,但這類方法在提高數(shù)據(jù)吞吐率的同時成倍地增加了電路面積,且仲裁邏輯的設(shè)計也會導(dǎo)致電路設(shè)計復(fù)雜性的增加。
基于以上問題,本設(shè)計基于一種改進(jìn)的AES算法,在算法級對電路實現(xiàn)進(jìn)行優(yōu)化,將AES算法中字節(jié)代替變換與列混合變換進(jìn)行合并,采用查找表方式實現(xiàn),從而有效地縮短了關(guān)鍵路徑,提高了時鐘頻率,同時支持分組密碼CBC模式,提升了安全強(qiáng)度。
1 AES密碼算法簡介
AES密碼算法是基于對稱密鑰密碼實現(xiàn)的分組密碼算法,分組長度為128 bit,密鑰長度為128 bit、192 bit或256 bit。對應(yīng)的輪數(shù)Nr分別為10、12和14。
AES密碼算法在對明文進(jìn)行加密時,經(jīng)過的變換依次為字節(jié)代替變換、行移位變換、列混合變換和輪密鑰加變換。
2 高速AES密碼算法硬件結(jié)構(gòu)設(shè)計
2.1 適用于CBC模式的硬件結(jié)構(gòu)選擇
分組密碼算法對數(shù)據(jù)進(jìn)行加/解密操作時,有多種不同的工作模式,其中ECB(Electronic Code Book)和CBC是兩種常用的工作模式。
ECB模式中各明/密文分組獨(dú)立處理、實現(xiàn)簡單。但ECB模式無法隱蔽明文數(shù)據(jù)的格式規(guī)律和統(tǒng)計特性,無法抵抗組的重放、嵌入和刪除等攻擊,使密碼分析者可以按組進(jìn)行分析,這對長報文而言并不安全。CBC工作模式中加密算法的輸入是當(dāng)前明文分組與前一密文分組的“異或”。其能夠隱蔽明文數(shù)據(jù)的格式規(guī)律和統(tǒng)計特性,使相同的明文分組未必蘊(yùn)涵著相同的密文分組,可以有效克服ECB模式的弱點(diǎn)。
為使AES密碼芯片能夠有效支持分組密碼CBC模式,在實現(xiàn)時要對其硬件結(jié)構(gòu)設(shè)計進(jìn)行充分的考量。
分組密碼算法的硬件實現(xiàn)結(jié)構(gòu)通常可以分為兩種——循環(huán)迭代結(jié)構(gòu)和全流水結(jié)構(gòu)。
圖1(a)所示,循環(huán)迭代結(jié)構(gòu)將明文分組接入AES運(yùn)算模塊進(jìn)行Nr輪迭代運(yùn)算后輸出,關(guān)鍵路徑為經(jīng)過數(shù)據(jù)選擇器和AES運(yùn)算模塊到輪數(shù)據(jù)寄存器的延遲,其共需Nr個時鐘周期完成加/解密運(yùn)算。對于分組密碼CBC模式而言,下一明文分組等待Nr個時鐘周期后與當(dāng)前明文分組的密文結(jié)果先進(jìn)行“異或”,再開始加/解密運(yùn)算。
圖1(b)所示,全流水結(jié)構(gòu)以在每輪運(yùn)算之間插入流水寄存器的方式實現(xiàn),其關(guān)鍵路徑與循環(huán)迭代結(jié)構(gòu)相同。在輸入數(shù)據(jù)連續(xù),即每個時鐘周期輸入1個明文分組的情況下,當(dāng)前明文分組與下一明文分組連續(xù)輸入時,下一明文分組在沒有得到當(dāng)前明文分組對應(yīng)的密文結(jié)果之前就輸入進(jìn)行計算,這顯然不能滿足分組密碼CBC模式的工作條件。在輸入數(shù)據(jù)不連續(xù)(即下一明文分組在得到當(dāng)前明文分組的密文結(jié)果后,先“異或”再進(jìn)行加/解密運(yùn)算)的情況下,下一明文分組需要等待Nr個時鐘周期才能進(jìn)行加/解密運(yùn)算。此時,芯片的吞吐率與采用循環(huán)迭代結(jié)構(gòu)實現(xiàn)時相同。
但在占用面積資源方面,采用全流水結(jié)構(gòu)時,電路結(jié)構(gòu)中需要Nr個128 bit位寬的輪數(shù)據(jù)寄存器和Nr個AES運(yùn)算模塊,占用面積較大。采用循環(huán)迭代結(jié)構(gòu)實現(xiàn)時,電路結(jié)構(gòu)中只需1個128 bit位寬的輪數(shù)據(jù)寄存器和1個AES運(yùn)算模塊通過硬連線進(jìn)行迭代就可實現(xiàn),占用面積較小。
因此,為有效支持分組密碼CBC模式,同時考慮到資源占用問題,本設(shè)計采用循環(huán)迭代結(jié)構(gòu)來實現(xiàn)AES密碼算法。
2.2 整體架構(gòu)設(shè)計
本設(shè)計的架構(gòu)設(shè)計主要分為(ENCRYPT/DECRYPT)加/解密模塊和(EXPANDKEY)密鑰擴(kuò)展模塊兩大部分。
如圖2所示,輸入數(shù)據(jù)寄存器直接接入與密鑰擴(kuò)展模塊輸出的128 bit輪密鑰進(jìn)行“異或”操作,而后數(shù)據(jù)依次進(jìn)入(ShiftRow)行移位變換模塊、(Sub&Mix)字列合并變換模塊,并將運(yùn)算結(jié)果存入輪數(shù)據(jù)寄存器。以此類推,每一輪的輪寄存器當(dāng)中存入的都是其相應(yīng)輪數(shù)的運(yùn)算結(jié)果。若為最后一輪時,數(shù)據(jù)直接與最后一輪密鑰相“異或”進(jìn)入輸出寄存器。
例如,第1列32 bit列向量中Column1的第i個字節(jié)通過硬連線接入(S&M Table i)字列合并查找表i中(i=1,2,3,4),對查找表的結(jié)果進(jìn)行“異或”后,輸出該32 bit列向量經(jīng)過字節(jié)代替變換與列混合變換后的結(jié)果。
2.4 密鑰擴(kuò)展模塊設(shè)計
由于AES密碼算法的密鑰擴(kuò)展算法是以字為單位進(jìn)行操作的,所以要將128 bit、192 bit和256 bit的密鑰存入4、6和8個不同的32 bit位寬寄存器中。之后初始密鑰數(shù)據(jù)按照密鑰擴(kuò)展算法被擴(kuò)展成4(Nr+1)個字的陣列,記其為W[0],W[1],…,W[4Nr+3]。
如圖4所示,經(jīng)ModeSel信號選擇后,電路可完成3種不同密鑰長度的AES密鑰擴(kuò)展算法。對于128 bit、192 bit和256 bit的密鑰長度,本設(shè)計一個時鐘周期分別能夠輸出4、6和8個字的輪密鑰。
初始密鑰輸入到不同個數(shù)的32 bit位寬輸入密鑰寄存器中,經(jīng)密鑰擴(kuò)展運(yùn)算后并置輸出至KEY.OUT,同時返回迭代,通過數(shù)據(jù)選擇器選擇作為下一輪密鑰擴(kuò)展算法的輸入。其分別需要經(jīng)過10、9和8個時鐘周期完成密鑰擴(kuò)展運(yùn)算。
為減小整個芯片的關(guān)鍵路徑,本設(shè)計采用預(yù)先生成密鑰擴(kuò)展模塊設(shè)計,在電路接收到初始密鑰之后,在狀態(tài)機(jī)控制信號的控制下預(yù)先生成加/解密模塊所需要的Nr輪密鑰序列,并將每輪的128 bit密鑰存入相應(yīng)的寄存器當(dāng)中,在使用時結(jié)合狀態(tài)機(jī)不同輪數(shù)的選擇信號,將每輪的輪密鑰輸出至加/解密模塊以完成相應(yīng)輪數(shù)的加/解密運(yùn)算。這樣一來,在使用時只需結(jié)合相應(yīng)的選擇信號從這些寄存器中選擇相應(yīng)的輪密鑰,不需要在線生成輪密鑰。因此可以減小整個芯片的關(guān)鍵路徑,提高時鐘頻率。
3 實驗結(jié)果
在0.13 μm CMOS工藝條件下,利用綜合工具對本設(shè)計進(jìn)行邏輯綜合優(yōu)化。仿真結(jié)果顯示,本設(shè)計的關(guān)鍵路徑為1.28 ns,最高時鐘頻率為781 MHz,在這一時鐘頻率下,在密鑰長度分別為128 bit、192 bit和256 bit時,最大數(shù)據(jù)吞吐率分別可以達(dá)到9.9 Gb/s、8.3 Gb/s和7.1 Gb/s。
表1所示為本設(shè)計與相關(guān)文獻(xiàn)中AES硬件設(shè)計在工藝、面積、最高時鐘頻率、吞吐率和性能面積比等方面的仿真結(jié)果對比情況。
在0.13 μm CMOS工藝下,LIN S Y[4]提出了同樣支持ECB、CBC模式的高數(shù)據(jù)吞吐率AES密碼芯片;HAMALAINENP[5]設(shè)計實現(xiàn)了小面積、低功耗的AES算法核,Yan Weiwei[6]實現(xiàn)了可重構(gòu)的AES算法,本設(shè)計在數(shù)據(jù)吞吐率方面較其均有顯著的提升。HODJAT A[1]和MATHEW S K[2]以流水線方式實現(xiàn)AES算法,雖然數(shù)據(jù)吞吐率較高,但不支持CBC模式,安全性較低。
本設(shè)計基于改進(jìn)AES算法,在算法級對電路進(jìn)行優(yōu)化,將字節(jié)代替變換和列混合變換整合為一次查表完成,縮短了關(guān)鍵路徑,提高了最高時鐘頻率和數(shù)據(jù)吞吐率。同時采用輪間循環(huán)迭代結(jié)構(gòu)設(shè)計,占用相對較少的面積。仿真結(jié)果證明,本設(shè)計在密碼處理速率上有較高的指標(biāo),在支持密鑰長度為128 bit、192 bit和256 bit AES算法的同時,支持分組密碼工作中的ECB、CBC模式,可以有效滿足當(dāng)前人們對于芯片在通信網(wǎng)絡(luò)、數(shù)據(jù)存儲加密等應(yīng)用場景中的高速數(shù)據(jù)處理需求,并可以作為一個獨(dú)立的IP核嵌入到SoC芯片中。
參考文獻(xiàn)
[1] HODJAT A,VERBAUWHEDE I.Area-throughput trade-offs for fully pipelined 30 to 70 G/s AES processors[J].Computers,IEEE Transactions on.2006,55(4):366-372.
[2] MATHEW S K,SHEIKH F,KOUNAVIS M,et al.53 Gb/s Native GF(24)2 composite-field AES-encrypt/decrypt accelerator for content-protection in 45 nm high-performance microprocessors[C].VLSI Circuits(VLSIC),2010 IEEE Symposium on.2010.
[3] Wang Maoyin,SU C P,HORNG C L,et al.Single-and multi-core configurable AES architecturs for flexible security[J].Very Large Scale Integration (VLSI) Systems,IEEE Transactions on.2010,18(4):541-552.
[4] LIN S Y,HUANG C T.A high-throughput low-power AES cipher for network applications[C].Design Automation Conference,2007.ASP-DAC′07.Asia and South Pacific,2007.
[5] HAMALAINEN P,ALHO T,HANNIKAINEN M,et al.Design and implementation of low-area and low power AES encryption hardware core[C].Digital System Design:Architectures,Methods and Tools,2006.DSD 2006. 9th EUROMICRO Conference,2006.
[6] Yan Weiwei,YOU K,Han Jun.Low-cost reconfigurable VLSI implementation of the SMS4 and AES algorithms[C].ASIC,2009.ASICON′09.IEEE 8th International Conference,2009.