摘要:高級加密標準AES算法中沒有大量復雜的數學運算,可以通過查表操作和組合邏輯電路實現各種變換[1]。已經有很多文獻研究了AES算法在不同硬件上的高效實現[2]。在對大數據量的文件進行加密時,軟件的執(zhí)行是否高效也是一個重要的問題。從算法的執(zhí)行效率考慮,首先替換了列混合運算用到的矩陣,然后將AES算法輪變換中字節(jié)代替、行移位、列混合、輪密鑰加四個運算過程合并,得到D盒。通過C語言編程驗證了原算法中加密過程和使用D盒加密的效率,證明了D盒的運算效率相比原算法提升了240%。
關鍵詞:AES算法;矩陣;效率;D盒
中圖分類號:TP309 文獻標識碼:A
文章編號:1009-3044(2020)08-0233-03
1 概述
AES算法是美國國家標準技術研究所(NIST)在2001年發(fā)布的一種以Rijndael分組密碼算法為基礎的加密標準;原型采用的是Square算法,設計策略是寬軌跡策略[3],使用的是替代/交換(SP)網絡。AES算法是一種數據分組長度為128bit的迭代分組加密算法,使用三個密鑰長度:128bit、192bit.256bit,每種密鑰對應的輪數分別為10輪、12輪或14輪。本文研究的密鑰長度為128bit的加密,記為AES-128。算法共進行了10輪加密,除了最后一輪沒有列混合外,前9輪都是相同的輪變換,由字節(jié)代替、行移位、列混合和輪密鑰加按序進行運算。所以輪變換函數是AES算法中最為核心的步驟,它的效率決定了整個算法的加解密速度。本文通過分析輪變換四步運算,針對加解密時間不對等的問題,改進了列混合中用到的矩陣。然后簡化輪函數通過查表的方式快速實現輪變換,提高了AES算法的實現速度。
2 輪變換過程
(1)字節(jié)代替
字節(jié)代替是一個關于字節(jié)的非線性變換[4]。它是一個簡單的查表操作,在狀態(tài)矩陣中的每一字節(jié)是通過一個16x16個字節(jié)的S盒替換成相應的其他字節(jié)。解密時用逆S盒代替S盒。
(2)行移位
行移位是將狀態(tài)矩陣中的4個字節(jié)進行循環(huán)左移操作。移動的偏移量取決于密鑰的長度,當密鑰長度為128比特時,狀態(tài)矩陣的第0行循環(huán)左移0字節(jié),第1行循環(huán)左移1字節(jié),第2行循環(huán)左移2字節(jié),第3行循環(huán)左移3字節(jié)[5]。解密時逆向行移位就是將狀態(tài)矩陣中的字節(jié)循環(huán)右移相應位數。
(3)列混合
列混合變換是把狀態(tài)矩陣中的每一列看作GF(28)域上一個多項式b(x)。將行移位后的狀態(tài)矩陣與固定多項式c(x)=03'X3+'01,X2+'01,x+02'相乘后再模(x4+1),即:b'(x)=
(4)輪密鑰加
輪密鑰加變換是利用輪密鑰對狀態(tài)進行模2相加的變換,然后將每一輪的輪變化結果同特定的輪密鑰進行異或操作,即輪密鑰被簡單的逐位異或到狀態(tài)中去。解密時的輪密鑰加操作與加密過程操作相同,因為異或運算的逆向操作就是其本身[6]。
3 算法改進
根據前面介紹可知,在AES-128加密過程中共進行了10輪加密,除了最后一輪沒有列混合外,前9輪都是相同的輪變換。那么改進思路就是將每一輪中的4步運算合并成一個查表操作,這種合并操作省略了復雜的求乘法逆運算、矩陣乘法運算,大大減少了算法執(zhí)行的時間復雜度,在不影響加密結果的情況下使效率得到了提升。
3.1 列混合的優(yōu)化
相比列混合變換需要執(zhí)行2次x乘運算和4次XOR加法,逆向列混合變換需要執(zhí)行12次x乘運算和9次XOR加法[7],解密速度相應增長,遠遠慢于加密速度。針對加解密過程耗時不對等的問題,文獻[8]提出了一種變換矩陣,對列混合和逆向列混合用到的系數矩陣做了正交化處理,使得逆矩陣等于它本身。用A矩陣代替原AES算法中列混合和逆向列混合運算中的矩陣,減少了逆向列混合運算所消耗時間,使正向列混淆運算和逆向列混淆運算消耗相同的運算資源,均為執(zhí)行2次x乘運算和4次XOR加法。由此在加解密過程中可具有同樣的運算量[9]。正交化后的系數矩陣如(3)所示:位就能快速實現一次加密輪變換中的四個步驟,只占用IKB的存儲空間,提升算法實現效率的同時也節(jié)省了存儲空間。這種優(yōu)化結構在32位處理器上處理效率最高。在加密的最后一輪,沒有列混合的運算,故將D盒用S盒替換回來即可。
改進后的輪變換用偽C語言描述如下:
Round(unsigned long int*a,unsigned long int*k, unsigned longint*e)
(
for(int j_0;j<4;j++)
(
unsigned long int DO=O,DI=O,D2=O,D3=0;
DO=D[a[4*ill;
D1=(D【a【1+4*((j+1)%4)】]>>8)I(D【a[1+4*(j+1)%4)]】<<24;
D2=(D【a[2+4*(j+2)%4)]】>>16)I(D[a【2+4+(j+2)%4)]]<<16;
D3=(D【a[3+4*(J+3)%4)]]>>24)I(D【a【1+4*(j+1)%4)]]<<8;
ej]=DO^D1“D2“D3“k
)
)
*a為aState矩陣的首地址,*k指向每一輪的輪密鑰的首地址,*e返回經過一輪變換后的State矩陣的首地址,D[]是構造出來的DO盒
4 總結
本文采用了一種D盒查表操作,合并了AES算法中輪變換的4步運算。經過C語言編寫代碼驗證,改進后的D盒在性能上大約提升了240%。因此,在不改變S盒內部結構的情況下,加密效率得到了極大的增強。與原AES算法加密過程相比,新改進的D盒查表法具有處理速度快、計算效率高、軟硬件實用性好的特點。改進后只需要構造一張D。表,雖然節(jié)省了空間,但是輪變換函數每次查表都必須進行移位操作,可能會造成性能降低。后期的研究主要集中在驗證D盒的有關密碼學性能以及對AES算法中輪變換函數進一步改進。
參考文獻:
[1]王春蕾.AES密碼硬件實現方法研究[D].青島:青島科技大學,2010.
[2]于賽.基于分組密碼算法的側信道分析與實現[D].成都:電子科技大學,2019.
[3]樊變霞.面向大數據的加密方法研究[Dl.黃石:湖北師范大學。2016.
[4]魯艷蓉.分組密碼算法的設計與分析研究[D].西安:西安電子科技大學,2011.
[5]李萬興,密碼算法的能量分析研究[D].濟南:山東大學,2011.
[6]王小偉.AES加密算法的研究與IP核設計實現[D].哈爾濱:哈爾濱工業(yè)大學,2013.
[7]王敏.基于組件技術的智慧住區(qū)信息門戶的應用研究[D].濟南:山東建筑大學,2017.
[8]肖振久,胡馳,姜正濤,等.AES與RSA算法優(yōu)化及其混合加密體制[J].計算機應用研究,2014,31(4):1189-1194,1198.
[9]李京,李永珍.AES改進算法在CCMP協(xié)議中的應用[J].延邊大學學報:自然科學版,2015,41(3):244-248.
【通聯(lián)編輯:代影】
收稿日期:2020-02-27
作者簡介:陳曉宇(1994-),男,湖北潛江人,碩士研究生,主要研究方向為信息安全。