名稱
Advanced Encryption Standard 即 高階加密標準,又叫做 Rijndael演算法,是一種對稱加密演算法,它已取代了原有的 DES ,在全世界被廣泛使用。
演算法流程
演算法的輸入是明文字串,它會被轉換成多個 4 * 4 的位元組矩陣,每個矩陣被稱為 體(state)。每一個體都會進行一遍 AES 演算法流程,最終輸出加密後的字串。 AES 演算法流程:
1. AddRoundKey(輪祕鑰加): 距震中的每一個位元組都與該次會和金鑰做XOR(異或)
2. SubBytes(位元組替換): 通過一個非線性的替換函式,用查詢表的方式把每個位元組替換成對應的位元組
3. ShiftRows(行移位): 將距震中的每個橫列進行迴圈式移位
4. MixColumns(列混淆): 為了充分混合矩陣中各個直行的操作。這個步驟使用線性轉換來混合每內聯的四個位元組。最後一個加密迴圈中省略 MixColumns 步驟,用另外一個 AddRoundKey 代替
複製程式碼
AddRoundKey(輪祕鑰加)
在每一次的加密迴圈中,都會由主金鑰生成一個回合祕鑰(Rijndael 祕鑰生成方案)。該祕鑰的大小和一個體的大小相同,都是一個 4 * 4 的矩陣。將回合祕鑰與體的對應位元組做異或操作。
SubBytes(位元組替換)
經過了 AddRoundKey 步驟的矩陣,在這一步中,每個位元組都會通過 S-box(S盒) 轉換成另一個位元組。S盒具有良好的非線性特性,用於提供加密演算法的混淆性。
S盒 和 S盒逆 都是16 * 16 的矩陣,它們記錄了一個位元組到另一個自己的轉換和逆轉換。
ShiftRows(行移位)
在這個步驟中,4 * 4 矩陣中的每一行都向左迴圈位移某個偏移量。在 AES 中, 加密時,第一行維持不變,第二行向左迴圈移動一個位元組,第三行兩個位元組,第四行三個位元組。經過 ShiftRows 之後, 矩陣中的每一個列,都由輸入的不同列組成。這個步驟提供了 AES 的擴散性。
MixColumns(列混淆)
列混淆是利用了 GF(2^8) 域上算術特性的一個代替,同樣用於提供 AES 的擴散性。
安全性
針對 AES 的攻擊,對於 128 位的祕鑰來說,窮舉法需要 2的128次方 的複雜度, 目前尚未出現有效的攻擊方式。