王 亮,顧美康,孫凱民
(上海師范大學(xué) 通信與信息系統(tǒng)學(xué)院,上海200234)
在信息化高速發(fā)展的時(shí)代,網(wǎng)絡(luò)不僅給人們的生活帶來了諸多便利,也推動(dòng)了航天、軍事,商務(wù)領(lǐng)域的不斷進(jìn)步。因此,信息安全尤其是在數(shù)據(jù)存儲(chǔ)和傳輸方面的數(shù)據(jù)安全尤為重要。數(shù)據(jù)加密技術(shù)在數(shù)據(jù)安全中起著至關(guān)重要的作用,它保護(hù)敏感信息免受來自外界的惡意攻擊,使數(shù)據(jù)不被篡改、盜取[1]。
國際上現(xiàn)行的數(shù)據(jù)加密標(biāo)準(zhǔn)是AES加密標(biāo)準(zhǔn),又稱Rijndael算法,它取代了DES和3DES,成為21世紀(jì)保護(hù)信息安全的新一代加密標(biāo)準(zhǔn)[2-3],并在各個(gè)領(lǐng)域得到廣泛應(yīng)用,如智能存儲(chǔ)卡、高性能的數(shù)據(jù)服務(wù)器、無限網(wǎng)絡(luò)傳感器等。
本文針對AES加密算法進(jìn)行了研究,通過分析其算法結(jié)構(gòu)和加密原理,采用Nios II CPU的SOPC集成實(shí)現(xiàn)方式,基于FPGA設(shè)計(jì)出了具有加密和解密功能的、密鑰可配置的、資源利用和吞吐量都十分理想的SOPC加密系統(tǒng)。
AES是一個(gè)迭代的對稱分組密碼[4]。它需要一個(gè)128 bit的數(shù)據(jù)塊作為輸入,并執(zhí)行在此分組內(nèi)的輪變換。AES-Rijndael的算法是在“狀態(tài)”中進(jìn)行的。
狀態(tài)是一個(gè)兩維的字節(jié)數(shù)組,由4行Nb列組成,其中,Nb是除以32的分組長度。在AES算法中,所有字節(jié)表示為有限域GF(28)上的元素,使用多項(xiàng)式來表示。在有限域上的數(shù)學(xué)運(yùn)算與那些有數(shù)學(xué)字符表示的運(yùn)算不同。通過一個(gè)模2(一個(gè)XOR操作)實(shí)現(xiàn)兩個(gè)多項(xiàng)式的相加。相對應(yīng)的,有限域元素上的減法也是如此。
此外,在GF(28)上的乘法是一個(gè)8次冪的多項(xiàng)式乘法。AES算法指定一個(gè)不可約多項(xiàng)式,沒有簡單的操作可以在字節(jié)級(jí)上實(shí)現(xiàn)乘法。算法的輪數(shù)依賴于密鑰的大小和分組的大小,由表1所示。所產(chǎn)生的輪數(shù)(Nr)由以下公式所得:Nr=(密鑰長度(位))/32+6。在設(shè)計(jì)中,建議使用128 bit的密鑰和密碼的大小,因此,需要10個(gè)回合[5]。

表1 密鑰和分組大小
AES算法的整體結(jié)構(gòu)如圖1所示。解密結(jié)構(gòu)與加密結(jié)構(gòu)具有完全相同的變換序列結(jié)構(gòu)。此功能可以更有效地實(shí)施聯(lián)合加密/解密。
在標(biāo)準(zhǔn)的AES算法中,有4個(gè)步驟,即字節(jié)代換、行移位變換列、列混合變換及密鑰加法[6]。
1)字節(jié)代換是一個(gè)非線性的字節(jié)取代變換獨(dú)立的作用于的每一個(gè)字節(jié),用替換表(S盒)來實(shí)現(xiàn),其中S盒是可逆的。
2)移行變換作用于狀態(tài)的最后三行中的字節(jié)進(jìn)行字節(jié)循環(huán)移位,每一行的偏移量不同。第一行不移位。
3)列混合變換混合加密列上的狀態(tài),在每列中使用線性變換,結(jié)合行位移變換。

圖1 AES算法的整體結(jié)構(gòu)
4)密鑰加法把每個(gè)字節(jié)的狀態(tài)與每一輪的密鑰相結(jié)合,每個(gè)循環(huán)密鑰來自密鑰編排。
本設(shè)計(jì)通過在FPGA中嵌入微控制處理單元Nios II來實(shí)現(xiàn)對整個(gè)系統(tǒng)的控制,定制了32位Nios II CPU軟核,并將定制的軟核連接到Avalon總線上,與此同時(shí),將Jtag Uart、SDRAM Controller、PIO等必要的外設(shè)和CPU一起集成在芯片上,使系統(tǒng)的規(guī)模得到簡化,實(shí)現(xiàn)了On Chip System,得到了一個(gè)可靠安全、高效并且可靈活配置的實(shí)時(shí)加解密系統(tǒng)。本設(shè)計(jì)的SOPC系統(tǒng)架構(gòu)如圖2所示。

圖2 SOPC系統(tǒng)框架圖
本系統(tǒng)根據(jù)AES加密算法的輪變換步驟確定AES IP Core的設(shè)計(jì)過程,把AES IP Core作為頂層,根據(jù)功能劃分子模塊:字節(jié)代換模塊(SubBytes)、行移變換模塊(ShiftRows)、列混合變換模塊(MixColumns)、密鑰加模塊(AddKey)、密鑰擴(kuò)展模塊(KeyExpansion)、多路復(fù)用模塊(AddKeyMux)和有限狀態(tài)機(jī)模塊(Fine State Machine)。其中,有限狀態(tài)機(jī)模塊和多路復(fù)用模塊為輪變換控制模塊。IP Core設(shè)計(jì)模塊結(jié)構(gòu)如圖3所示。

圖3 IP Core設(shè)計(jì)模塊結(jié)構(gòu)圖
其中控制信號(hào)有:時(shí)鐘信號(hào)(Clk)、復(fù)位信號(hào)(Reset)、使能信號(hào)(Enable)、功能片選信號(hào)(CS)、中斷信號(hào)(IRQ)和狀態(tài)信號(hào)(State)。其根據(jù)輸入和輸出位寬又可劃分為:
輸入(位寬):Aavlon總線時(shí)鐘信號(hào)Clk(1);同步復(fù)位信號(hào)Reset(1);寫數(shù)據(jù)總線Writedata(32);地址信號(hào)Address(5)能表示32個(gè)地址;寫使能信號(hào)Write(1);讀使能信號(hào)Read(1)。
輸出(位寬):讀數(shù)據(jù)總線Readdata(32);等待信號(hào)Writequest(1);中斷信號(hào)Irq(1)。
Nios II嵌入式系統(tǒng)中將Avalon總線的寬度設(shè)定為32位(128/4),則一個(gè)時(shí)鐘周期內(nèi)輸入數(shù)據(jù)端口能傳輸32位分組數(shù)據(jù),對于數(shù)據(jù)長度和密鑰長度較長的配置,完成一組數(shù)據(jù)的加密和解密過程就需要多個(gè)時(shí)鐘周期,為此,本設(shè)計(jì)通過接口的地址空間映射、密鑰擴(kuò)展模塊和有限狀態(tài)機(jī)模塊的設(shè)計(jì)很好地解決了這個(gè)問題。
有限狀態(tài)機(jī)模塊的設(shè)計(jì)是整個(gè)系統(tǒng)中十分重要且較為復(fù)雜的部分,它控制著每一輪的加解密操作,IP Core加解密模塊會(huì)先對密鑰進(jìn)行初始化操作,并通過密鑰擴(kuò)展模塊產(chǎn)生每一輪變換所必須的密鑰,最后和數(shù)據(jù)分組一起傳輸?shù)接邢逘顟B(tài)機(jī)完成加解密過程,其狀態(tài)描述如圖4所示。

圖4 AES IP Core加/解密狀態(tài)機(jī)
如圖4所示,狀態(tài)機(jī)先等待初始化以后的密鑰和數(shù)據(jù),如果密鑰有效并且數(shù)據(jù)也穩(wěn)定,進(jìn)入第一輪輪變換的操作,接著進(jìn)入輪循環(huán)狀態(tài),等進(jìn)行到最后一輪時(shí)又進(jìn)入到最后一輪開始狀態(tài),接著指示操作完成。因?yàn)锳ES算法在第一輪中需要做控制密鑰的預(yù)變換,而最后一輪不進(jìn)行列混合變換操作,所以分別列出了第一輪開始和最后一輪開始兩個(gè)狀態(tài)來對其輪變換做特殊處理。
本設(shè)計(jì)采用Modelsim仿真工具對系統(tǒng)進(jìn)行仿真,包括功能仿真和時(shí)序仿真兩部分,對于128 bit數(shù)據(jù)長度的明文(密文),配置3種密鑰長度128 bit、192 bit、256 bit。其中128 bit數(shù)據(jù)長度/128 bit密鑰加解密功能仿真圖如圖5、圖6所示。

圖5 128 bit數(shù)據(jù)長度/128 bit密鑰加密功能仿真圖(截圖)
由圖5和圖6所示,把128 bit明文和128 bit密鑰作為輸入,經(jīng)過加密功能得到密文,將這個(gè)密文作為解密系統(tǒng)的輸入,輸出結(jié)果和明文一致,充分驗(yàn)證了功能的準(zhǔn)確性。

圖6 128 bit數(shù)據(jù)長度/128 bit密鑰解密功能仿真圖(截圖)
系統(tǒng)編譯后性能評估總結(jié)如圖7所示,系統(tǒng)占用的LE(邏輯單元)的數(shù)量為6 661個(gè),占總邏輯單元的10%,內(nèi)存使用量僅為166 784 bit,系統(tǒng)的最大穩(wěn)定頻率為127.29 MHz,滿足時(shí)序要求。

圖7 AES加密系統(tǒng)性能評估圖(截圖)
為了評估本設(shè)計(jì)在FPGA硬件設(shè)計(jì)上的優(yōu)劣,與以往做同類AES加密系統(tǒng)的設(shè)計(jì)者所設(shè)計(jì)的系統(tǒng)做橫向?qū)Ρ龋绫?所示。
通過比較可以看出[7-10],對于使用不同器件并且不同設(shè)計(jì)者所設(shè)計(jì)的AES加密系統(tǒng)而言,本設(shè)計(jì)比那些使用資源相近的設(shè)計(jì)吞吐量高,而對比與吞吐量較高的設(shè)計(jì)所用的資源十分稀少,在吞吐量和資源占用量方面達(dá)到了很好的平衡。
針對AES算法進(jìn)行了系統(tǒng)設(shè)計(jì),用自定義組件的方式,對軟硬件做出合理的劃分,縮小了高級(jí)語言和機(jī)器指令的差距,實(shí)現(xiàn)了復(fù)雜的AES指令。通過Modelsim仿真工具成功得到了合理的結(jié)果,通過和其他設(shè)計(jì)者的設(shè)計(jì)對比,體現(xiàn)了本設(shè)計(jì)在速度和資源利用上的優(yōu)勢。

表2 AES設(shè)計(jì)性能比較表
[1]馮登國,裴定一.密碼學(xué)導(dǎo)引[M].北京:科學(xué)出版社,2001.
[2]Advanced Encryption Standard(AES)[EB/OL].[2012-12-30].http://csrc.nist.gov/pualications/fips/fips197/fips-197.pdf.
[3]Data Encryption Standard(DES)[EB/OL].[2012-12-30].http://csrc.nist.gov/pualications/fips/fips46-3/fips46-3.pdf.
[4]胡冠章.應(yīng)用近世代數(shù)[M].北京:清華大學(xué)出版社,1999.
[5]龍冬陽,王常吉,吳丹.應(yīng)用編碼與計(jì)算機(jī)密碼學(xué)[M].北京:清華大學(xué)出版社,2005.
[6]胡予濮,張玉清,肖國鎮(zhèn).對稱密碼學(xué)[M].北京:機(jī)械工業(yè)出版社,2002.
[7]VERAAUWHEDE I,SCHAUMONT P,KUO H.Design and performance testing of a 2.29 ga/s Rijndael processor[J].IEEE Journal of Solid-State Circuits,2003,38(3):569-572.
[8]MUKHOPADHYAY D,ROYCHOWDHURY D.An efficient end to end design of Rijndael crypto system in 0.18μm CMOS[C]//Proc.18th International Conference on VLSI Design.[S.l.]:IEEE Press,2005:405-410.
[9]MORIOKA S,SATOH A.K 10-gaps full-KES crypto design with K twisted ADD s-aox architecture[J].IEEE Trans.Very Large Scale Integration(VLSI)Systems,2004,12(7):686-691.
[10]MATHEW S K,SHEIKH F,KOUNAVIS M,et al.53 gaps native GF((24)2)composite-field KES-encrypt/decrypt accelerator for content-protection in 45 nm high-performance microprocessors[J].IEEE Journal of Solid-State Circuits,2011,46(4):767-776.