張青鳳 ,張鳳琴 ,王 蓉
(1.運城學院,公共計算機教學部,山西 運城 044000;2.空軍工程大學,計算機系,陜西 西安 710077)
AES(Advanced Encryption Standard)是美國聯邦標準局于1997年開始向全世界征集的加密標準[1],屬于對稱加密算法,代表了當今最先進的編碼技術,最終獲勝的是RijnDael算法。統計顯示,即使使用目前世界上運算速度最快的計算機,窮盡128 bit密鑰也需要幾十億年的時間,更不用說去破解采用256 bit密鑰長度的AES算法了。
Rijndael算法由比利時計算機科學家Vincent Rijmen和 Joan Daemen 開發, 它使用 128 bit、192 bit、256 bit的密鑰長度,比 56 bit的 DES更健壯可靠[3]。美國國家標準技術研究所選擇Rijndael作為美國政府加密標準AES的加密算法,取代早期的數據加密標準DES[1]。Rijndael作為一種迭代分組加密算法,其數據塊長度和密鑰長度均是可變的,因此它匯聚了強安全性、高性能、高效率、易用、靈活等優點被廣泛應用在各個領域中。
Rijndael作為加密標準AES算法,其128 bit輸入分組用以字節為單位的矩陣方陣描述[4]。該數組被復制到State數組。數據塊長度、密鑰長度可以被設定為128 bit、192 bit、256 bit三個可選長度,相應的加密輪數分別為10、12、14,每一輪循環都有一個循環密鑰,它來自于初始密鑰。
加密過程分為四個階段:密鑰擴展、輪密鑰加、Nr-1(128 bit、192 bit、256 bit密鑰長度,Nr分別為 10、12、14)輪變換及最后一輪變換。輪變換包括字節代換、行移位、列混淆和輪密鑰加四個過程,最后一輪變換包括字節代換、行移位和輪密鑰加三個過程。其流程圖如圖1所示。
(1)狀態:指明文分組及每次變換的中間結果[4],是一個4×Nb的矩陣,Nb為數據塊長度除以32。
(2)字符代換:用一個簡單的查表操作代替了基于矩陣乘法的復雜仿射變換。S盒是一個16×16字節矩陣,包含8 bit值所能表達的256種可能的變換。把Statc中每個字節的高4位作為行值,低4位作為列值,取出S盒中對應行列的元素作為新的字節輸出。

圖1 Rijndael算法加密流程
(3)行移位:State的第一行保持不變,第 2、3、4行分別循環左移1、2、3個字節。
(4)列混淆:可表示為基于系數矩陣CoefMix與State的矩陣乘法。乘積矩陣中的每個元素S[i,j]是系數矩陣中一行元素CoefMix[i,k]與State矩陣中對應一列元素State[k,j]的乘積之和。這里的加法與乘法都定義在有限域 GF(28)上:加法即按位“異或”操作,乘法遵循 GF(28)上的多項式乘法規則[2]。
(5)輪密鑰加:是基于 State列的操作,即把 State一列中的4個字節與輪密鑰RoundKey的1個字進行 “異或”。
(6)擴展密鑰:以 4個字密鑰為輸入,生成 44字擴展密鑰數組ω[44],為初始輪密鑰加階段和后面10輪變換提供輪密鑰。輸入密鑰直接被復制到擴展密鑰數組的前4個字,然后每次用4個字填充擴展密鑰數組余下的部分[4]。 在擴展密鑰數組中,ω[i]值依賴于 ω[i-1]和 ω[i-4]。 ω 數組中下標不是 4的倍數時,ω[i]為 ω[i-1]和ω[i-4]的“異或”。 下標為 4的倍數時,首先將 ω[i-1]的4個字節循環左移1個字節,然后利用S盒對每個字節進行字節代換,再與輪常量按位“異或”。輪常量是1個字,其最右邊3個字節為0,最左邊 1個字節的值 RC[j]與輪數 j相關。 RC[1]=1,RC[j]=2·RC[j-1],乘法定義在GF(28)上。RC[j]值以十六進制表示。
(7)加密輪數 Nr:在 Rijndael算法中,運算的輪數(Nr)是由Nb及Nk所決定的[4],輪數的變動定義如表1所示。

表1 Nr、Nb、Nk 關系
Rijndael解密過程是加密的逆過程,每輪循環中的步驟都被它們的逆所替換,值得注意的是:循環密鑰使用起來應該顛倒次序。
Rijindael算法常被用于文件的加解密過程,加密時先將讀入的明文依次分組,用加密密鑰將明文加密后寫入文件中;解密時用解密密鑰將文件中的密文解密后將明文寫入結果文件中。





Rijndael算法一直經受著世界各國密碼機構和專家的攻擊,最有名的當屬 Squre攻擊[4]。目前Rijndael算法已被廣泛應用于身份認證、數字簽名、數據加密等方面,由于硬件的加解密速度要比軟件快,且可在物理上保證系統安全,國內很多單位用硬件的方法來實現該算法。
[1]段鋼.加密與解密(第 3版)[M].北京:電子工業出版社,2008.
[2]馮登國.信息安全中的數學方法與技術[M].北京:清華大學出版社,2009.
[3]Http://zhidao.baidu.com.
[4]DAEMEN J,RIJMAN V.高級加密標準算法(AES)—Rijndael的設計[M].谷大武,徐勝波譯.北京:清華大學出版社,2003.