劉宇峰 許向陽 蘇 浩 耿艷香 劉 婷
1(河北科技大學信息科學與工程學院 河北 石家莊 050000)2(天津商業大學信息工程學院 天津 300134)
科技進步以及互聯網技術的迅速發展使人們對信息安全這個概念的理解更加深入。AES算法可以通過軟件來實現,但是現在已經跟不上人們的需求,它受限于CPU的串行體制,導致加密和解密的速度已經跟不上現在使用的需要。與此同時,軟件實現方案在物理安全性方面比較薄弱,比較容易受到安全攻擊。除此之外,對于AES算法怎樣能更好地發揮其自身的性能,本文嘗試對算法進行了優化設計。
本文提出了一種優化后的AES算法,隨機性測試表明優化方案提高了算法的安全性,本次設計是采用自頂向下的設計方案,其主要依據是AES的算法結構,本文優化設計后的AES算法,提高了吞吐量,減少了使用面積,大大提高了使用性能。其中:算法方面的主要問題是怎樣對各種變換進行優化以提高處理速度和安全性能;實現方面的主要問題是AES的各個模塊在通過FPGA實現的環節上是否能提高吞吐量和處理速度,在性能上進行突破設計出一個高效的加密解密系統,在確保速度的前提下還要盡力減小芯片資源的占用。
現在是信息科技逐日更新進步的時代,Email的收發、資料的查找、保密數據的保存及傳輸等天天都發生在我們的生活中。網絡是把雙刃劍,在它把大家帶上信息發展的高速路,讓我們感受便利的同時,也讓信息以及用戶安全受到威脅,隨著人們對個人信息的安全性意識逐漸提高,信息的傳輸、存儲和調用查找等問題的安全性處理逐漸成為人類要迅速解決的問題。所以人們發明了加密算法,加密技術最有效的方法之一就是通過加密算法來對需要保密的信息進行加密處理。DES加密算法是較早的算法,它一直保護著人類信息的安全性直到1999年被破解。在DES算法的安全性被攻破后,美國向全世界科研人員尋求幫助來研究出一種更為安全的加密算法,最終提出了AES。
當AES算法被確定為新的加密算法后,它就立即被用于多個領域,如NFC加密、Email數據加密、衛星通信加密以及PC機中硬盤的加密等。起初AES是通過軟件來實現的,軟件容易實現且便于更新,但是安全性不強,吞吐量不高。所以人們逐漸開始選擇硬件來實現。相比軟件而言,在實際應用中AES算法用硬件完成后,它的安全性會更好,不容易被破解攻破,而且吞吐量比軟件高出數千倍,硬件實現的方法有ASIC(Application Specific Integrated Circuit)和FPGA(Field Programmable Gate Array),本文使用FPGA來實現AES算法,因為FPGA可以編程和配置,所以它比ASCI更具有靈活性,且比ASCI實現速度快。
AES加密解密算法屬于對稱加密解密算法,它主要由加密、解密以及密鑰擴展三部分組成。AES算法的明文分組長度只可以是128 bit,但是其密鑰長度允許是128 bit、192 bit或256 bit,與輪密鑰相關的選代輪數Nr分別是10、12、14輪。本文設計是把三種密鑰長度集成在一起,并且可以隨意選擇所需的密鑰長度進行加密和解密。
現有S-box研究主要集中在其設計準則和構造方法上。S-box設計準則主要有:非線性度、查分均勻性、代數次數及項數分布。任何一個有差異的密碼學性質都各自應用防御不一樣的安全威脅,例如差分分析可以用差分均勻性來阻擋,差分攻擊可以使用項數分布和代數次數來防御。通常在設計準則之間存在制約關系,具體設計時需要折中考慮。基于上述設計準則,在實際設計中有許多種S-box構造方法,如:隨機選取并測試、幾乎完全非線性置換、數學函數和不同群中數學函數的復合等。
在AES算法中,S-box設計遵循的準則為:非線性度;代數復雜度。設計者建議選取GF(28)上的乘法逆運算來構造S-box,然而直接采用逆變換生成的S-box在GF(28)上的代數表達式太簡單,攻擊者可能利用這一點進行插值攻擊。為彌補這一缺陷,設計者對乘法逆運算結果進行了一次環Z2[x]/(x8+1)上(而非有限域GF(28)上)的仿射變換,這使得產生的S-box代數表達式非常復雜。此外,設計者限制仿射變換使得S-box沒有不動點與反不動點,雖然目前還沒有針對這一特性的攻擊方法。AES算法中S-box具體構造過程如下:
(1) 求GF(28)上元素的乘法逆元:
(2) 進行Z2[x]/(x8+1)上的仿射變換:
b(x)=(u(x)a(x)+v(x))mod(x8+1)
將其記為Lu和Lv,u(x)和v(x)稱為仿射變換對,矩陣表達式為:
定義1若存在正整數n,使得Sn(x)=x,則稱S-box是周期性的,及GF(28)內元素通過S-box的連續變換返回自身所經過的循環次數。AES算法S-box共有5個迭代周期:2、27、59、81、87,這對于GF(28)的空間容量256來說太小了,之前有人指出任何明文或明文差分經過ABS算法線性擴散層的16輪選代之后都會重現,將其與S-box選代周期過短的缺點結合起來會成為AES算法的弱點,所以應該把選代周期作為一條設計準則加以考慮。

之前有人指出AES算法S-box代數表達式次數為254,代數式項數為9,過于簡單的形式引發了對其安全性的懷疑。有人證明了GF(2)上的矩陣運算是造成S-box代數式復雜度低的主要原因,改變有限域生成多項式m(x)、仿射矩陣u(x)和仿射常量v(x)等不會增加S-box代數式的次數和復雜程度,上述缺點與乘法逆運算和仿射變換的順序有關,他們采用了新的仿射變換對{6b,5d}并且改變了S-box構造順序,然而這一構造方案進行了2次仿射變換使得電路的面積和路徑延時增加。本文最終選擇S-box的構造方案:S-box非線性變換為y=(ux)-1+v,逆S-box非線性變換為y=u-1(x+v)-1,仿射變換對(u,v)=({34},{ba})。該優化方案僅采用了1次仿射變換,比原始的方案電路面積更小,路徑延時更低。表1為本文S-box與原始AES算法S-box密碼性質的比較,可見優化的S-box具有更好的密碼學特性

表1 S-box性能比較
在MixColumn和IncMixColumn的操作中,主要操作定義如下:
(1)
(2)
在設計中,可以將式(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)所做的操作及結果列入表2,由步驟1到步驟5處理的結果得到outx,接著由outx和W8得到outy。執行過程中,操作所用到的硬件資源及其所得結果可以用于步驟9還有步驟10。如圖1所示,這種新型結構(字節-列混合模塊)僅僅需要8個加法器和4個乘法器。與原始方案相比,此設計大大減少了硬件的復雜度并顯著節省了資源的消耗。

表2 運算操作

圖1 列混合模塊
在圖1中的乘法器模塊中的計算公式為:out[7:0]={in[6:4],in[3:0]}∧{in[7],in[7],0,in[7],in[7]}
本文采用的是Quartus做的總體綜合,本文使用的是全流水技術,也就是在組合邏輯單元中添加寄存器縮短路徑演示以滿足更高的時鐘頻率要求,提高系統的吞吐量,并且本次設計是將128 bit、192 bit、256 bit這三種密鑰長度綜合在一起實現三種自由選擇,而且可以實現加密解密同時進行。相比優化前的AES算法的設計,本次設計在多方面有了改進和優化,大大提高了工作效率。圖2是整體設計的電路接口圖,表3是電路端口聲明,keylen代表密鑰長度的選擇00代表128 bit,01代表192 bit,10代表256 bit。

圖2 整體設計的電路接口圖

表3 電路端口聲明

續表3
本文使用Modelsim進行仿真,全流水結構如圖3所示。

圖3 全流水結構仿真圖
圖4是選擇256 bit密鑰進行加密的仿真驗證。
密鑰:256′h123456789abcdef123456789abcdef123456789abcdef123456789abcdef1234;
明文:128′h000000000000000000000000000000C8;
加密結果:128′h3001320a8f2cee7394d20153f4dffb8e。

圖4 加密仿真驗證
圖5是使用軟件進行驗證。

圖5 軟件驗證
圖6是解密仿真,也就是加密仿真的逆過程。
密鑰:256′h123456789abcdef123456789abcdef123456789abcdef123456789abcdef1234;
密文:128′h3001320a8f2cee7394d20153f4dbfb8e;
解密結果:128′h000000000000000000000000000000c8。

圖6 解密仿真驗證
圖7是原始方法S盒的性能,而圖8是優化后的性能結果,可以看出,原始方法在資源使用上要比優化后的S-box的資源用得多,原始S-box使用3 328個邏輯器件,而優化后的S-box則使用1 233個邏輯器件。

圖7 經典方法S盒性能

圖8 本文優化后S盒性能
本文通過FPGA實現改進后的AES算法加密和解密。對AES算法中的S盒使用列混合進行優化,采用全流水的方式進行操作,大大提高了吞吐量,減少了使用面積。在設計過程中也進行了優化,使得加密解密可以同時進行,并且可以隨意選擇密鑰的長度,大大提高了工作效率及安全保障。最后通過Modelsim進行仿真,驗證了整體設計的可行性和準確性。