文獻標(biāo)識碼: A
文章編號: 0258-7998(2014)01-0064-04
針對通信網(wǎng)絡(luò)、數(shù)據(jù)存儲加密等應(yīng)用場景中的安全需求,,人們對AES算法的硬件實現(xià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)點,,但不能有效支持分組密碼工作中目前已被廣泛使用的密碼分組鏈接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è)計基于一種改進的AES算法,,在算法級對電路實現(xiàn)進行優(yōu)化,,將AES算法中字節(jié)代替變換與列混合變換進行合并,采用查找表方式實現(xiàn),,從而有效地縮短了關(guān)鍵路徑,,提高了時鐘頻率,同時支持分組密碼CBC模式,,提升了安全強度,。
1 AES密碼算法簡介
AES密碼算法是基于對稱密鑰密碼實現(xiàn)的分組密碼算法,分組長度為128 bit,,密鑰長度為128 bit,、192 bit或256 bit。對應(yīng)的輪數(shù)Nr分別為10,、12和14,。
AES密碼算法在對明文進行加密時,經(jīng)過的變換依次為字節(jié)代替變換,、行移位變換,、列混合變換和輪密鑰加變換。
2 高速AES密碼算法硬件結(jié)構(gòu)設(shè)計
2.1 適用于CBC模式的硬件結(jié)構(gòu)選擇
分組密碼算法對數(shù)據(jù)進行加/解密操作時,,有多種不同的工作模式,其中ECB(Electronic Code Book)和CBC是兩種常用的工作模式,。
ECB模式中各明/密文分組獨立處理,、實現(xiàn)簡單。但ECB模式無法隱蔽明文數(shù)據(jù)的格式規(guī)律和統(tǒng)計特性,,無法抵抗組的重放,、嵌入和刪除等攻擊,使密碼分析者可以按組進行分析,,這對長報文而言并不安全,。CBC工作模式中加密算法的輸入是當(dāng)前明文分組與前一密文分組的“異或”。其能夠隱蔽明文數(shù)據(jù)的格式規(guī)律和統(tǒng)計特性,,使相同的明文分組未必蘊涵著相同的密文分組,,可以有效克服ECB模式的弱點。
為使AES密碼芯片能夠有效支持分組密碼CBC模式,,在實現(xiàn)時要對其硬件結(jié)構(gòu)設(shè)計進行充分的考量,。
分組密碼算法的硬件實現(xiàn)結(jié)構(gòu)通??梢苑譃閮煞N——循環(huán)迭代結(jié)構(gòu)和全流水結(jié)構(gòu)。
圖1(a)所示,,循環(huán)迭代結(jié)構(gòu)將明文分組接入AES運算模塊進行Nr輪迭代運算后輸出,,關(guān)鍵路徑為經(jīng)過數(shù)據(jù)選擇器和AES運算模塊到輪數(shù)據(jù)寄存器的延遲,其共需Nr個時鐘周期完成加/解密運算,。對于分組密碼CBC模式而言,,下一明文分組等待Nr個時鐘周期后與當(dāng)前明文分組的密文結(jié)果先進行“異或”,再開始加/解密運算,。
圖1(b)所示,,全流水結(jié)構(gòu)以在每輪運算之間插入流水寄存器的方式實現(xiàn),其關(guān)鍵路徑與循環(huán)迭代結(jié)構(gòu)相同,。在輸入數(shù)據(jù)連續(xù),,即每個時鐘周期輸入1個明文分組的情況下,當(dāng)前明文分組與下一明文分組連續(xù)輸入時,,下一明文分組在沒有得到當(dāng)前明文分組對應(yīng)的密文結(jié)果之前就輸入進行計算,,這顯然不能滿足分組密碼CBC模式的工作條件。在輸入數(shù)據(jù)不連續(xù)(即下一明文分組在得到當(dāng)前明文分組的密文結(jié)果后,,先“異或”再進行加/解密運算)的情況下,,下一明文分組需要等待Nr個時鐘周期才能進行加/解密運算。此時,,芯片的吞吐率與采用循環(huán)迭代結(jié)構(gòu)實現(xiàn)時相同,。
但在占用面積資源方面,采用全流水結(jié)構(gòu)時,,電路結(jié)構(gòu)中需要Nr個128 bit位寬的輪數(shù)據(jù)寄存器和Nr個AES運算模塊,,占用面積較大。采用循環(huán)迭代結(jié)構(gòu)實現(xiàn)時,,電路結(jié)構(gòu)中只需1個128 bit位寬的輪數(shù)據(jù)寄存器和1個AES運算模塊通過硬連線進行迭代就可實現(xiàn),,占用面積較小。
因此,,為有效支持分組密碼CBC模式,,同時考慮到資源占用問題,本設(shè)計采用循環(huán)迭代結(jié)構(gòu)來實現(xiàn)AES密碼算法,。
2.2 整體架構(gòu)設(shè)計
本設(shè)計的架構(gòu)設(shè)計主要分為(ENCRYPT/DECRYPT)加/解密模塊和(EXPANDKEY)密鑰擴展模塊兩大部分,。
如圖2所示,輸入數(shù)據(jù)寄存器直接接入與密鑰擴展模塊輸出的128 bit輪密鑰進行“異或”操作,,而后數(shù)據(jù)依次進入(ShiftRow)行移位變換模塊,、(Sub&Mix)字列合并變換模塊,并將運算結(jié)果存入輪數(shù)據(jù)寄存器,。以此類推,,每一輪的輪寄存器當(dāng)中存入的都是其相應(yīng)輪數(shù)的運算結(jié)果,。若為最后一輪時,數(shù)據(jù)直接與最后一輪密鑰相“異或”進入輸出寄存器,。
例如,,第1列32 bit列向量中Column1的第i個字節(jié)通過硬連線接入(S&M Table i)字列合并查找表i中(i=1,2,,3,,4),對查找表的結(jié)果進行“異或”后,,輸出該32 bit列向量經(jīng)過字節(jié)代替變換與列混合變換后的結(jié)果,。
2.4 密鑰擴展模塊設(shè)計
由于AES密碼算法的密鑰擴展算法是以字為單位進行操作的,所以要將128 bit,、192 bit和256 bit的密鑰存入4,、6和8個不同的32 bit位寬寄存器中。之后初始密鑰數(shù)據(jù)按照密鑰擴展算法被擴展成4(Nr+1)個字的陣列,,記其為W[0],,W[1],…,,W[4Nr+3],。
如圖4所示,經(jīng)ModeSel信號選擇后,,電路可完成3種不同密鑰長度的AES密鑰擴展算法,。對于128 bit、192 bit和256 bit的密鑰長度,,本設(shè)計一個時鐘周期分別能夠輸出4,、6和8個字的輪密鑰。
初始密鑰輸入到不同個數(shù)的32 bit位寬輸入密鑰寄存器中,,經(jīng)密鑰擴展運算后并置輸出至KEY.OUT,,同時返回迭代,通過數(shù)據(jù)選擇器選擇作為下一輪密鑰擴展算法的輸入,。其分別需要經(jīng)過10、9和8個時鐘周期完成密鑰擴展運算,。
為減小整個芯片的關(guān)鍵路徑,,本設(shè)計采用預(yù)先生成密鑰擴展模塊設(shè)計,在電路接收到初始密鑰之后,,在狀態(tài)機控制信號的控制下預(yù)先生成加/解密模塊所需要的Nr輪密鑰序列,,并將每輪的128 bit密鑰存入相應(yīng)的寄存器當(dāng)中,在使用時結(jié)合狀態(tài)機不同輪數(shù)的選擇信號,,將每輪的輪密鑰輸出至加/解密模塊以完成相應(yīng)輪數(shù)的加/解密運算,。這樣一來,,在使用時只需結(jié)合相應(yīng)的選擇信號從這些寄存器中選擇相應(yīng)的輪密鑰,不需要在線生成輪密鑰,。因此可以減小整個芯片的關(guān)鍵路徑,,提高時鐘頻率。
3 實驗結(jié)果
在0.13 μm CMOS工藝條件下,,利用綜合工具對本設(shè)計進行邏輯綜合優(yōu)化,。仿真結(jié)果顯示,本設(shè)計的關(guān)鍵路徑為1.28 ns,,最高時鐘頻率為781 MHz,,在這一時鐘頻率下,在密鑰長度分別為128 bit,、192 bit和256 bit時,,最大數(shù)據(jù)吞吐率分別可以達到9.9 Gb/s、8.3 Gb/s和7.1 Gb/s,。
表1所示為本設(shè)計與相關(guā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è)計基于改進AES算法,,在算法級對電路進行優(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ù)處理需求,并可以作為一個獨立的IP核嵌入到SoC芯片中,。
參考文獻
[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.