劉宇峰 許向陽 蘇 浩 耿艷香 劉 婷
1(河北科技大學(xué)信息科學(xué)與工程學(xué)院 河北 石家莊 050000)2(天津商業(yè)大學(xué)信息工程學(xué)院 天津 300134)
科技進(jìn)步以及互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展使人們對信息安全這個概念的理解更加深入。AES算法可以通過軟件來實現(xiàn),但是現(xiàn)在已經(jīng)跟不上人們的需求,它受限于CPU的串行體制,導(dǎo)致加密和解密的速度已經(jīng)跟不上現(xiàn)在使用的需要。與此同時,軟件實現(xiàn)方案在物理安全性方面比較薄弱,比較容易受到安全攻擊。除此之外,對于AES算法怎樣能更好地發(fā)揮其自身的性能,本文嘗試對算法進(jìn)行了優(yōu)化設(shè)計。
本文提出了一種優(yōu)化后的AES算法,隨機(jī)性測試表明優(yōu)化方案提高了算法的安全性,本次設(shè)計是采用自頂向下的設(shè)計方案,其主要依據(jù)是AES的算法結(jié)構(gòu),本文優(yōu)化設(shè)計后的AES算法,提高了吞吐量,減少了使用面積,大大提高了使用性能。其中:算法方面的主要問題是怎樣對各種變換進(jìn)行優(yōu)化以提高處理速度和安全性能;實現(xiàn)方面的主要問題是AES的各個模塊在通過FPGA實現(xiàn)的環(huán)節(jié)上是否能提高吞吐量和處理速度,在性能上進(jìn)行突破設(shè)計出一個高效的加密解密系統(tǒng),在確保速度的前提下還要盡力減小芯片資源的占用。
現(xiàn)在是信息科技逐日更新進(jìn)步的時代,Email的收發(fā)、資料的查找、保密數(shù)據(jù)的保存及傳輸?shù)忍焯於及l(fā)生在我們的生活中。網(wǎng)絡(luò)是把雙刃劍,在它把大家?guī)闲畔l(fā)展的高速路,讓我們感受便利的同時,也讓信息以及用戶安全受到威脅,隨著人們對個人信息的安全性意識逐漸提高,信息的傳輸、存儲和調(diào)用查找等問題的安全性處理逐漸成為人類要迅速解決的問題。所以人們發(fā)明了加密算法,加密技術(shù)最有效的方法之一就是通過加密算法來對需要保密的信息進(jìn)行加密處理。DES加密算法是較早的算法,它一直保護(hù)著人類信息的安全性直到1999年被破解。在DES算法的安全性被攻破后,美國向全世界科研人員尋求幫助來研究出一種更為安全的加密算法,最終提出了AES。
當(dāng)AES算法被確定為新的加密算法后,它就立即被用于多個領(lǐng)域,如NFC加密、Email數(shù)據(jù)加密、衛(wèi)星通信加密以及PC機(jī)中硬盤的加密等。起初AES是通過軟件來實現(xiàn)的,軟件容易實現(xiàn)且便于更新,但是安全性不強(qiáng),吞吐量不高。所以人們逐漸開始選擇硬件來實現(xiàn)。相比軟件而言,在實際應(yīng)用中AES算法用硬件完成后,它的安全性會更好,不容易被破解攻破,而且吞吐量比軟件高出數(shù)千倍,硬件實現(xiàn)的方法有ASIC(Application Specific Integrated Circuit)和FPGA(Field Programmable Gate Array),本文使用FPGA來實現(xiàn)AES算法,因為FPGA可以編程和配置,所以它比ASCI更具有靈活性,且比ASCI實現(xiàn)速度快。
AES加密解密算法屬于對稱加密解密算法,它主要由加密、解密以及密鑰擴(kuò)展三部分組成。AES算法的明文分組長度只可以是128 bit,但是其密鑰長度允許是128 bit、192 bit或256 bit,與輪密鑰相關(guān)的選代輪數(shù)Nr分別是10、12、14輪。本文設(shè)計是把三種密鑰長度集成在一起,并且可以隨意選擇所需的密鑰長度進(jìn)行加密和解密。
現(xiàn)有S-box研究主要集中在其設(shè)計準(zhǔn)則和構(gòu)造方法上。S-box設(shè)計準(zhǔn)則主要有:非線性度、查分均勻性、代數(shù)次數(shù)及項數(shù)分布。任何一個有差異的密碼學(xué)性質(zhì)都各自應(yīng)用防御不一樣的安全威脅,例如差分分析可以用差分均勻性來阻擋,差分攻擊可以使用項數(shù)分布和代數(shù)次數(shù)來防御。通常在設(shè)計準(zhǔn)則之間存在制約關(guān)系,具體設(shè)計時需要折中考慮。基于上述設(shè)計準(zhǔn)則,在實際設(shè)計中有許多種S-box構(gòu)造方法,如:隨機(jī)選取并測試、幾乎完全非線性置換、數(shù)學(xué)函數(shù)和不同群中數(shù)學(xué)函數(shù)的復(fù)合等。
在AES算法中,S-box設(shè)計遵循的準(zhǔn)則為:非線性度;代數(shù)復(fù)雜度。設(shè)計者建議選取GF(28)上的乘法逆運算來構(gòu)造S-box,然而直接采用逆變換生成的S-box在GF(28)上的代數(shù)表達(dá)式太簡單,攻擊者可能利用這一點進(jìn)行插值攻擊。為彌補(bǔ)這一缺陷,設(shè)計者對乘法逆運算結(jié)果進(jìn)行了一次環(huán)Z2[x]/(x8+1)上(而非有限域GF(28)上)的仿射變換,這使得產(chǎn)生的S-box代數(shù)表達(dá)式非常復(fù)雜。此外,設(shè)計者限制仿射變換使得S-box沒有不動點與反不動點,雖然目前還沒有針對這一特性的攻擊方法。AES算法中S-box具體構(gòu)造過程如下:
(1) 求GF(28)上元素的乘法逆元:
(2) 進(jìn)行Z2[x]/(x8+1)上的仿射變換:
b(x)=(u(x)a(x)+v(x))mod(x8+1)
將其記為Lu和Lv,u(x)和v(x)稱為仿射變換對,矩陣表達(dá)式為:
定義1若存在正整數(shù)n,使得Sn(x)=x,則稱S-box是周期性的,及GF(28)內(nèi)元素通過S-box的連續(xù)變換返回自身所經(jīng)過的循環(huán)次數(shù)。AES算法S-box共有5個迭代周期:2、27、59、81、87,這對于GF(28)的空間容量256來說太小了,之前有人指出任何明文或明文差分經(jīng)過ABS算法線性擴(kuò)散層的16輪選代之后都會重現(xiàn),將其與S-box選代周期過短的缺點結(jié)合起來會成為AES算法的弱點,所以應(yīng)該把選代周期作為一條設(shè)計準(zhǔn)則加以考慮。
之前有人指出AES算法S-box代數(shù)表達(dá)式次數(shù)為254,代數(shù)式項數(shù)為9,過于簡單的形式引發(fā)了對其安全性的懷疑。有人證明了GF(2)上的矩陣運算是造成S-box代數(shù)式復(fù)雜度低的主要原因,改變有限域生成多項式m(x)、仿射矩陣u(x)和仿射常量v(x)等不會增加S-box代數(shù)式的次數(shù)和復(fù)雜程度,上述缺點與乘法逆運算和仿射變換的順序有關(guān),他們采用了新的仿射變換對{6b,5d}并且改變了S-box構(gòu)造順序,然而這一構(gòu)造方案進(jìn)行了2次仿射變換使得電路的面積和路徑延時增加。本文最終選擇S-box的構(gòu)造方案:S-box非線性變換為y=(ux)-1+v,逆S-box非線性變換為y=u-1(x+v)-1,仿射變換對(u,v)=({34},{ba})。該優(yōu)化方案僅采用了1次仿射變換,比原始的方案電路面積更小,路徑延時更低。表1為本文S-box與原始AES算法S-box密碼性質(zhì)的比較,可見優(yōu)化的S-box具有更好的密碼學(xué)特性
表1 S-box性能比較
在MixColumn和IncMixColumn的操作中,主要操作定義如下:
(1)
(2)
在設(shè)計中,可以將式(1)、式(2)表示為:
outx=2(a+b)+b+(c+d)
(3)
和
outy=4(2(a+b)+2(c+d)+(a+c))+
2(a+b)+b+(c+d)
(4)
將式(1)和式(2)所做的操作及結(jié)果列入表2,由步驟1到步驟5處理的結(jié)果得到outx,接著由outx和W8得到outy。執(zhí)行過程中,操作所用到的硬件資源及其所得結(jié)果可以用于步驟9還有步驟10。如圖1所示,這種新型結(jié)構(gòu)(字節(jié)-列混合模塊)僅僅需要8個加法器和4個乘法器。與原始方案相比,此設(shè)計大大減少了硬件的復(fù)雜度并顯著節(jié)省了資源的消耗。
表2 運算操作
圖1 列混合模塊
在圖1中的乘法器模塊中的計算公式為:out[7:0]={in[6:4],in[3:0]}∧{in[7],in[7],0,in[7],in[7]}
本文采用的是Quartus做的總體綜合,本文使用的是全流水技術(shù),也就是在組合邏輯單元中添加寄存器縮短路徑演示以滿足更高的時鐘頻率要求,提高系統(tǒng)的吞吐量,并且本次設(shè)計是將128 bit、192 bit、256 bit這三種密鑰長度綜合在一起實現(xiàn)三種自由選擇,而且可以實現(xiàn)加密解密同時進(jìn)行。相比優(yōu)化前的AES算法的設(shè)計,本次設(shè)計在多方面有了改進(jìn)和優(yōu)化,大大提高了工作效率。圖2是整體設(shè)計的電路接口圖,表3是電路端口聲明,keylen代表密鑰長度的選擇00代表128 bit,01代表192 bit,10代表256 bit。
圖2 整體設(shè)計的電路接口圖
表3 電路端口聲明
續(xù)表3
本文使用Modelsim進(jìn)行仿真,全流水結(jié)構(gòu)如圖3所示。
圖3 全流水結(jié)構(gòu)仿真圖
圖4是選擇256 bit密鑰進(jìn)行加密的仿真驗證。
密鑰:256′h123456789abcdef123456789abcdef123456789abcdef123456789abcdef1234;
明文:128′h000000000000000000000000000000C8;
加密結(jié)果:128′h3001320a8f2cee7394d20153f4dffb8e。
圖4 加密仿真驗證
圖5是使用軟件進(jìn)行驗證。
圖5 軟件驗證
圖6是解密仿真,也就是加密仿真的逆過程。
密鑰:256′h123456789abcdef123456789abcdef123456789abcdef123456789abcdef1234;
密文:128′h3001320a8f2cee7394d20153f4dbfb8e;
解密結(jié)果:128′h000000000000000000000000000000c8。
圖6 解密仿真驗證
圖7是原始方法S盒的性能,而圖8是優(yōu)化后的性能結(jié)果,可以看出,原始方法在資源使用上要比優(yōu)化后的S-box的資源用得多,原始S-box使用3 328個邏輯器件,而優(yōu)化后的S-box則使用1 233個邏輯器件。
圖7 經(jīng)典方法S盒性能
圖8 本文優(yōu)化后S盒性能
本文通過FPGA實現(xiàn)改進(jìn)后的AES算法加密和解密。對AES算法中的S盒使用列混合進(jìn)行優(yōu)化,采用全流水的方式進(jìn)行操作,大大提高了吞吐量,減少了使用面積。在設(shè)計過程中也進(jìn)行了優(yōu)化,使得加密解密可以同時進(jìn)行,并且可以隨意選擇密鑰的長度,大大提高了工作效率及安全保障。最后通過Modelsim進(jìn)行仿真,驗證了整體設(shè)計的可行性和準(zhǔn)確性。