江碧嫦
(廣州歷康信息科技股份有限公司,廣東 廣州 510663)
資源共享的并行AES加密/解密算法及實現研究
江碧嫦
(廣州歷康信息科技股份有限公司,廣東 廣州 510663)
隨著密碼分析技術的進一步發展,高級加密標準(AES)逐漸取代了以往的數據加密標準(DES),成為新一代數據加密標準。現階段,在應用AES算法的過程中,還存在一些問題,主要表現為吞吐率低、資源消耗大、無法分別實現加密和解密等。文章主要針對在消耗較少資源的條件下獲取較高吞吐率的AES加密/解密算法進行研究。
AES算法;加密;解密;復合域
1.1 算法內基本變換
AES是利用明文進行多次循環操作進行加密與解密,屬于分組對稱加密算法。分組長為128位,密鑰長為128位、192位及256位。為方便研究,本文只針對128位密鑰的AES算法進行討論,循環操作輪數為10次。該算法中,加密與解密的輪變化由4個基本變換構成:字節置換變換、行字節移位變換、列字節混合變換、循環密鑰添加變換。輪變化中間結果狀態字節為16字節,表示方法采用4×4狀態矩陣。
1.2 字節置換變換
此類變換為非線性變換,針對的是狀態字節,不管是正向還是逆向,都包含兩個變換。在正向字節置換中,在有限域GF(28)內先對字節求乘法逆,{00}字節的逆是其自身,最后在有限域GF(2)中進行仿射變換:

上式中,Outi,Ini,ci表示輸出字節Out,輸入字節In和常數字節c的第i個比特位;表示異或運算;c二進制取值為{01100011}。
在逆向字節置換中,在有限域GF(2)內進行仿射變換:

然后在有限域GF(28)內對字節求乘法逆,其中c值為{00000101}。
1.3 行字節移位變換
針對的是狀態矩陣中的字節數和不同方面的循環移位,狀態矩陣第0,1,2,3行在正向行字節移位中循環左移0,1,2,3個字節,在逆向行字節移位中循環右移0,1,2,3個字節。
1.4 列字節混合變換
針對的是狀態矩陣的列。在有限域GF(28)內每一列都可用4項多項式進行表示,對于正向與逆向列字節混合變換中,通常會用到c(x)與d(x)兩個固定的4項多項式:
c(x)={03}x3+{01}x+{01}x+{02}d(x)={0b}x3+{0d}x+{09}x+{0e}
如果正向列字節混合變換的輸入狀態列為Sc(x),輸出狀態列為,則有:
如果逆向列字節混合變換的輸入狀態列為Sc(x),輸出狀態列為,則有:


1.5 循環密鑰添加
種子密鑰通過擴展后得到輪密鑰,將輪密鑰和狀態矩陣內對應的字節進行異或運算即為循環密鑰。
在加密過程中,從第0輪變換開始,明文與種子密鑰通過循環密鑰添加后所得到的結果即為第1輪變化的輸入,以此類推,第i-1輪的輸出即為第i輪的輸入。本文中循環次數設置為10次,則第10輪即可輸出密文。進行第10輪輸出的時候,不需要列字節混合變換,加密流程如圖1(a)所示。而解密的結構與加密基本類似,不同之處在于,除取逆向外,采用的輪密鑰也不同,解密的第0輪與第10輪的輪密鑰,對應的是加密的第10輪和第0輪密鑰,解密的流程如圖1(b)所示。圖1中,種子密鑰就是第0輪密鑰,“*”表示對該輪密鑰進行逆向混合變換。

圖1 加密與解密流程
3.1 基于復合域的字節置換變換
字節置換與列字節混合變換是AES算法中對資源消耗和時延影響最大的。對公式(1)(2)進行利用,能夠構造S盒查找表,實現對字節的置換,雖然其置換的速度比較快,但是存在資源消耗大的問題,并且需要逆向S盒才能解密。所以在有限域GF(28)內,硬件實現難度稍大,但在復合域內可在節省硬件資源的基礎上,實現字節置換。在正向字節置換中,先在有限域GF(28)內將輸入字節映射到有限域GF(42)內,然后對字節進行求乘法逆,將結果反映射到有限域GF(28)內,最后在有限域GF(2)內仿射變換。對于逆向字節置換時,先要在有限域GF(2)內逆仿射變換。假設a∈GF(28),則有:

GF(42)的多項式加法與乘法運算與GF(28)類似,模多項式為x4+x+1。GF(42)的乘法逆可作如下表示:

3.2 基于硬件的行字節移位變換
可根據移位的字節數與放線連線,幾乎不會產生時延,也不會占用大量固定的硬件資源,然后利用選擇器對正向與逆向行字節移位變換進行選通即可。
3.3 基于Xtimei()的列字節混合變換
Xtimei()操作是將字節多項式a(x)與x相乘,表示為Xtimei(x(x))=xa(x)。假設ai是字節a的第i比特位,在有限域GF(28)內利用字節多項式加法和乘法運算,可將Xtime()寫為:

為了降低時延和硬件消耗,對上式進一步進行推算與定義:


3.4 基于128位加密/解密密鑰擴展方案
假設輸入128位種子月在加密密鑰擴展中為w0,w1,w2,w3,分別表示1個字節,則第i輪的密鑰可從第i-1輪密鑰中進行推導:

式中,1≤i≤10,SubWord()為正向字節置換變換,RoiWord()為循環左移一個字節,Rcon(i)為循環常數,最左邊1個字節有值,其它字節均為{00},可利用有限域GF(28)多項式Xi-1進行表示。對解密密鑰進行擴展的時候,解密密鑰的第0輪密鑰是加密的最后一輪密鑰,以此類推,可得到下一輪密鑰,然后取逆,可作為該輪解密的密鑰。假設上一輪混合變換前的密鑰依次為W(4i),W(4i+1),W(4i+2),W(4i+3),對異或運算的性質進行利用,可根據公式(6)對下一輪列混合變換前的密鑰進行推導。
3.5 AES加密/解密算法的并行實現
通過分析可知,在每一輪中,輸入din,而輸出的dout則是作為下一輪的din進行輸入,在經過11次循環(包含第0輪)后,輸出結果即為明文或密文。
本文主要是針對AES算法提高吞吐率與降低資源消耗的方法進行研究,在128位加密與解密密鑰擴展與各個變換的基礎上,實現字節置換變換在復合域內的優化,通過對Xtimei()結構進行推導及簡化,實現了列字節混合變換,都降低了變換時延與資源消耗,同時提出了128位加密/解密密鑰擴展方案的共享,利用FPGA驗證結果證明了該方案在獲取較高吞吐率的同時,有效地降低了資源消耗,能夠使吞吐率與資源消耗達到平衡,具有較好的使用價值。
[1]舒駿,王憶文,李輝.一種資源共享的快速加解密AES算法的實現[J].微處理機,2011(2):48-51.
[2]費雄偉,李肯立,陽王東.基于CTR模式的GPU并行AES算法的研究與實現[J].小型微型計算機系統,2015(3):529-533.
Research on the Implementation of Parallel AES Encryption/Decryption Algorithm for Resource Sharing
Jiang Bichang
(Guangzhou Leadcom Information Technology Co., Ltd., Guangzhou 510663, China)
With the further development of the code analysis technology, the advanced encryption standard (AES)has gradually replaced previous data encryption standard (DES) as a new generation of data encryption standard. Of AES algorithm at present, there exist some problems in the process of application, which mainly shows low throughput, resource consumption, unable to realize encryption and decryption respectively. This article mainly aims at consuming less resources conditions to obtain high throughput and AES encryption/decryption algorithm is studied.
AES algorithm; encryption; decryption; composite domain
江碧嫦(1970— ),女,廣東廣州;研究方向:計算機應用技術。