彭關(guān)禮,肖順文
(西華師范大學(xué) 電子信息工程學(xué)院,四川 南充 637009)
隨著信息技術(shù)與互聯(lián)網(wǎng)的發(fā)展,數(shù)據(jù)傳送的安全性也變得越來越重要[1]。高級加密標(biāo)準(zhǔn)AES(Advanced Encryption Standard) 算法作為目前最流行的加密算法之一,無論是在商業(yè)、工業(yè)還是在軍事方面都被廣泛應(yīng)用[2]。該加密算法是繼數(shù)據(jù)加密標(biāo)準(zhǔn)DES(Date Encryption Standard)之后的新一代加密算法,采用了Rijndeal算法設(shè)計(jì),該算法具有模塊性、高效性、對稱性等自身結(jié)構(gòu)特點(diǎn)。
高級加密標(biāo)準(zhǔn)AES算法硬件實(shí)現(xiàn)相比軟件實(shí)現(xiàn)提供了更好的物理安全性和更快的處理速度,F(xiàn)PGA(Field-Programmable Gate Array)以其可編程性為該算法的實(shí)現(xiàn)提供了較好的平臺(tái)[3]。本文針對該算法中行位移變換模塊和列混淆變換模塊的特點(diǎn)將兩個(gè)模塊綜合為一個(gè)整體模塊基于硬件描述語言VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)來實(shí)現(xiàn),為AES算法中行位移與列混淆的實(shí)現(xiàn)提供一種可行的設(shè)計(jì)方案。
輪變換函數(shù)包括了字節(jié)替代變換(SubBytes)、行位移變換(ShfitRows)、列混淆變換(MixColumns)(除最后一輪加密外)以及輪密鑰加(AddRoundKey)四個(gè)步驟的操作[4]。在AES加密算法中明文分組長度為128位固定值,而密鑰分組長度的不同決定了加密的輪數(shù)和輪變換的輪數(shù),當(dāng)密鑰分組長度為128位時(shí)加密輪數(shù)和輪變換輪數(shù)為10輪;當(dāng)密鑰分組長度為192位時(shí)加密輪數(shù)和輪變換輪數(shù)為12輪;當(dāng)密鑰分組長度為256位時(shí)加密輪數(shù)和輪變換輪數(shù)為14輪。雖然相應(yīng)的加密輪數(shù)能夠?qū)崿F(xiàn)對數(shù)據(jù)信息進(jìn)行有效地保護(hù),但輪函數(shù)中的行位變換和列混淆變換為加密算法提供了更高的擴(kuò)散性以抗擊密碼攻擊,因此輪變換中的行位變換和列混淆變換對實(shí)現(xiàn)AES加密算法有著至關(guān)重要的作用。
行位移變換是一個(gè)簡單的字節(jié)換位操作,它是將狀態(tài)中的行按照不同的偏移量進(jìn)行循環(huán)移位。AES加密算法中明文分組長度為固定值128位,可以抽象地用4行4列的狀態(tài)矩陣來表示,每行由4字節(jié)組成。在AES加密算法中行位移變換是將第1行字向左循環(huán)移動(dòng)0字節(jié),第2行字向左循環(huán)移動(dòng)1字節(jié),第3行字向左循環(huán)移動(dòng)2字節(jié),第4行字向左循環(huán)移動(dòng)3字節(jié)。
列混淆變換是一個(gè)作用在4字節(jié)列上的磚匠變換,可以將每列看作是一個(gè)多項(xiàng)式與一個(gè)固定的多項(xiàng)d(x)=03.x3+01.x2+01.x+02相乘后取模x4+1,亦可用式(1)所示的矩陣形式[5]表示。
(1)
傳統(tǒng)的AES算法輪函數(shù)中行位移與列混淆是作為單獨(dú)的兩個(gè)模塊分別來實(shí)現(xiàn),因此模塊與模塊之間存在線路的傳輸延遲以及資源的多余損耗,不利于提高該算法實(shí)現(xiàn)的效率以及資源空間的節(jié)省,因此文中采用了行位移與列混淆的混合設(shè)計(jì)模式。
首先輪函數(shù)中的行位移變換與列混淆變換都是針對字節(jié)的變換操作,其次兩者的變換都具有一定的線性性質(zhì)。在原AES加密算法中行位移變換與列混淆變換是兩個(gè)獨(dú)立變換,因此原算法基于FPGA的硬件描述語言VHDL來實(shí)現(xiàn)需要兩個(gè)獨(dú)立模塊,通過對算法中的行位移與列混淆的分析可以將它們綜合為一個(gè)整體模塊來實(shí)現(xiàn)。
(2)
其中{X}H表示十六進(jìn)制數(shù),⊕表示異或運(yùn)算,X取01,02,03,i取0,4,8,12。為了更好地實(shí)現(xiàn)混合設(shè)計(jì),式(2)中乘02、乘03統(tǒng)一定義為Xtime()[6]運(yùn)算,設(shè)a=b7b6b5b4b3b2b1b0(a表示十六進(jìn)制數(shù),其中b7,b6,b5,b4,b3,b2,b1,b0表示依次從高位到低位的二進(jìn)數(shù))。定義Xtime()按照以下方式運(yùn)算,如式(3)所示,c=00011011是用二進(jìn)制數(shù)表示的常量。
(3)
因此由式(2)經(jīng)過變換整理可以得到式(4)。
(4)
從理論角度而言整合設(shè)計(jì)模塊優(yōu)于原算法中兩個(gè)獨(dú)立模塊,整合后的模塊省去了一些中間變換步驟,同時(shí)也能夠消除模塊之間傳輸?shù)木€路延遲,但效率的提升因軟件、硬件以及加密時(shí)的文件大小不同而有所差異[7]。
硬件描述語言VHDL具有功能強(qiáng)大、設(shè)計(jì)靈活、與具體器件無關(guān)等自身結(jié)構(gòu)優(yōu)點(diǎn)[8],而AES加密算法基于硬件實(shí)現(xiàn)優(yōu)于軟件實(shí)現(xiàn)。因此采用專有硬件來實(shí)現(xiàn)AES加密算法更能顯示其中的優(yōu)點(diǎn)。實(shí)現(xiàn)行位移與列混淆變換的部分VHDL程序如下:
library ieee;
use ieee.std_logic_arith.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
.
.
s0:=Xtime(h1,(e0 xor e5)) xor (e5 xor e10) xor e15;
s1:=Xtime(h1,(e5 xor e10)) xor (e10 xor e15) xor e0;
s2:=Xtime(h1,(e10 xor e15)) xor (e0 xor e15) xor e5;
s3:=Xtime(h1,(e0 xor e15)) xor (e0 xor e5) xor e10;
基于Quartus II 9.1 (32-Bit)版本,在cyclone iii系列下的EP3C80F484C8芯片上進(jìn)行了實(shí)驗(yàn)仿真,其中資源利用率如圖1所示,基于芯片EP3C80F484C8中的81264個(gè)LE資源(Total logic elements)僅使用216個(gè),占用率小于1%,引腳數(shù)(Total pins)利用率為87%。
FamilyCycloneIIIDeviceEP3C80F484C8TimingModelsH/ATotallogicelements216/81,264(<1%) Totalcombinationalfunctions216/81,264(<1%) Dedicatedlogicregisters128/81,264(<1%)Totalregisters128Totalpins257/296(87%)Totalvirtualpins0Totalmemorybits0/2,810,880(0%)EmbeddedMultiplier9-bitelements0/488(0%)TotalPLLs0/4(0%)
圖1資源利用率
為了驗(yàn)證該混合設(shè)計(jì)模塊的穩(wěn)定性和可靠性,分別給出了不同工作頻率下不同輸入數(shù)據(jù)對應(yīng)的輸出數(shù)據(jù)結(jié)果,具體測試結(jié)果如表1所示。
表1 相關(guān)數(shù)據(jù)測試
由表1可知,在工作頻率分別為1 000MHz和100MHz時(shí),當(dāng)輸入數(shù)據(jù)din=DEE570E3749B9BBA7516C67
69D51924D,對應(yīng)的數(shù)據(jù)輸出為dout=52C192121EF7DCDBC580F2222DDFB28E,其吞吐率分別可以達(dá)到9.78Gb/s和7.28Gb/s.當(dāng)輸入數(shù)據(jù)din=22C93CBFD2C73A6B1418407FB88D214A,對應(yīng)的數(shù)據(jù)輸出為dout=5CC307CC246A8B0B191FF3C11DF9BAB1,其吞吐率分別可以達(dá)到9.30Gb/s和7.21Gb/s.
測試使用的時(shí)鐘頻率為1000MHz時(shí),第1組數(shù)據(jù)的仿真結(jié)果如圖2所示:
測試使用的時(shí)鐘頻率為100MHz時(shí),第1組數(shù)據(jù)的仿真結(jié)果如圖3所示:
測試使用的時(shí)鐘頻率為1 000MHz時(shí),第2組數(shù)據(jù)的仿真結(jié)果如圖4所示:
測試使用的時(shí)鐘頻率為100MHz時(shí),第2組數(shù)據(jù)的仿真結(jié)果如圖5所示:
本文通過對原AES算法中的行位移變換與列混淆變換的分析,針對這兩種變換的特點(diǎn)經(jīng)過整合來實(shí)現(xiàn)兩個(gè)模塊所能單獨(dú)實(shí)現(xiàn)的功能,實(shí)驗(yàn)仿真結(jié)果表明基于FPGA的硬件描述語言VHDL實(shí)現(xiàn)AES算法的行位移與列混淆的混合設(shè)計(jì)是可行的,在不同的工作頻率下達(dá)到了數(shù)據(jù)的不同處理速度,在同一工作頻率下不同輸入數(shù)據(jù)達(dá)到了相應(yīng)的工作頻率。
參考文獻(xiàn):
[1]肖振久,胡馳,姜正濤,等.AES與RSA算法優(yōu)化其混合加密體制[J].計(jì)算機(jī)應(yīng)用研究,2014,31(4):1189-1198.
[2]于松林,王文工,陳博,等.基于FPGA的AES硬件實(shí)現(xiàn)及優(yōu)化[J].電子設(shè)計(jì)工程,2017,25(6):75-83.
[3]張偉,高俊雄,王耕波,等.一種優(yōu)化的AES算法及其FPGA實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2017,45(3):502-505.
[4]趙躍華,馬林林.AES算法的輕量化實(shí)現(xiàn)研究[J].計(jì)算機(jī)工程與應(yīng)用.2015,51(6):79-83.
[5]趙哲斐.AES算法IP核優(yōu)化與設(shè)計(jì)[D].西安:西安電子科技大學(xué),2013.
[6]王穎.高級加密標(biāo)準(zhǔn)AES中MixColumns()函數(shù)的改進(jìn)[D].西安:陜西師范大學(xué),2011.
[7]劉秀蓮.AES算法的一種快速實(shí)現(xiàn)方法[J].計(jì)算機(jī)安全,2012(06):47-49.
[8]朱松柏,肖順文,江敏.基于FPGA的AES解密算法研究[J].成都工業(yè)學(xué)院學(xué)報(bào),2016,19(2):27-30.