a dvanced e ncryption s tandard
DESCRIPTION
A dvanced E ncryption S tandard. 指導老師 黃宗立教授 資訊工程 101 林昂鋒 資訊工程 101 吳宗育. 大綱. What AES? 何謂 AES? Why AES? 為何需要 AES? How AES? AES 如何運作 ? Do AES? AES 安全嗎 ?. What AES ?. 何謂 AES ?. 高級加密標準 ( Advanced Encryption Standard , AES ) 又稱 Rijndael 加密法 是美國聯邦政府採用的一種區塊加密標準。. Why AES?. - PowerPoint PPT PresentationTRANSCRIPT
Advanced Encryption Standard指導老師 黃宗立教授資訊工程 101 林昂鋒資訊工程 101 吳宗育
大綱• What AES?
– 何謂 AES?
• Why AES?– 為何需要 AES?
• How AES?– AES 如何運作 ?
• Do AES?– AES 安全嗎 ?
What AES?
何謂 AES?
• 高級加密標準( Advanced Encryption Standard , AES )
• 又稱 Rijndael 加密法
• 是美國聯邦政府採用的一種區塊加密標準。
Why AES?
DES
• 原有的 Data Encryption Standard
DES 不夠安全嗎 ??
DES 不夠安全 - 暴力破解
• DES 的版本有– 56 位元組金鑰的 DES• 目前平行式計算暴力破解顯示並不安全
– 112 位元組金鑰兩把金鑰三重 DES• 安全
– 168 位元組金鑰三把金鑰三重 DES• 安全
DES 不夠安全 - 差異破密
• 假設加密為一個 XOR 運算• C1 = P1 K
• C2 = P2 K
–> C1 C2 = P1 K P2 K = P1 P2
(C1 與 C2 加密會等於 P1 與 P2 加密 )
DES 不夠安全 - 線性破密
• DES 使用 16 個 S – Box
• S – Box 不是完全非線性
• 基於某些機率原理可破解
DES 不夠安全 - 弱金鑰
• 例如:輸入的金鑰為( 64 bits )
• 造成明文及密文間差異過小 , 容易被猜出
多重 DES 依然不夠安全
• 中間相遇攻擊
How AES?
AES 核心概念 Add_Round_Key : Key Expansion
Sub_Bytes : Intra-byte( 位元組內 )
Shift_Rows : Byte-exchange( 位元 組交換 )
Mix_Columns : Inter-byte( 位元組 之間轉換 )
AES 核心概念 Add_Round_Key : 擴展
Sub_Bytes : 取代
Shift_Rows : 排列
Mix_Columns : 混合
AES 的狀態
• 狀態 States : AES 加密過程每個階段的開頭和結尾 , 稱為狀態
AES Function 解析
AES 金鑰選擇
• 現行 AES 使用 128 位元 , 192 位元或256 位元( 本投影片討論 AES-128)
• 明文 , 密文區塊大小為 128 位元
• 回合金鑰固定為 128 位元 ( 何謂回合金鑰 ?)
AES 明文狀態
• 明文轉換成狀態區塊
• 每個狀態為一個 4 * 4 的矩陣
• 每個狀態為 32 位元 (16 進位 )
• 依序填入 , 由上而下 , 由左而右填入
預先轉換回合
AES 加密第一步驟
• Pre- Round Transformation( 預先回合轉換 )
– 將已輸入之金鑰 32 位元為一組 , 切成四塊
– 依序放入矩陣中 , 由上而下 , 由左而右
– 與狀態明文做矩陣加法
預先轉換回合結束進入第一回合
Sub Bytes
SubBytes
• 利用兩個數字表示成為 16 進位• 左邊數字代表列 , 右邊的數字代表行• 查表 /GF(28) 找到獨立的轉換
SubBytes 查表
SubBytes 查表
表怎麼來的 ??
AES 制定 GF(28)
• f(x) = x8+x4+x3+x+1• a * a’ ≡ 1 (mod (f(x)) )• 求出 a’• 排入 b 矩陣• c = X * b• d = c + y• ( 重複 SubBytes 動作 16 次 )
這個步驟提供了加密法非線性的變換能力。已知具有良好的非線性特性。
Shift Rows
Shift Rows
• 由右向左位移• 位移次數取決矩陣列數
Shift Rows
Mix Column
Mix Column
• 用於位元組之間擴散效果• 新矩陣 = 常數矩陣 x 原始矩陣
常數矩陣
Add Round Key
Add Round Key
只有這樣 ??
每一回合 Key 都不一樣Key expansion
Key Expansion
• Key-expansion程序用來建立每回合使用的回合金鑰
• 第一回合金鑰被使用於 預先回合轉換
AES 金鑰擴展程序
AES 金鑰擴展程序
• (i mod 4) = 0 時 , Wi = t Wi-4
• (i mod 4) ≠ 0 時 , Wi = Wi-1 Wi-4
– > t 是什麼 ??
ti = SubWord(RotWord(Wi-1)) ⊕ RConi/4
t ??
• ti = SubWord(RotWord(Wi-1)) RConi/4
• RotWord : 以位元組為單位 , 將 W 以迴轉方式 向左移動
–W = 13AA5487 => RotWord(13AA5487) = AA548713
t ??
• ti = SubWord(RotWord(Wi-1)) RConi/4
• SubWord : 意及 SubByte, 查表去吧!
– RotWord(W) = AA548713 => SubWord(AA548713) = AC20177D
t ??
• ti = SubWord(RotWord(Wi-1)) RConi/4
• RCon : 回合常數
AC20177D⊕
01000000----------------
t = AD20177D
值得注意的細節每個回合都有四個可逆的轉換
1. SubBytes2. ShiftRows3. MixColumns4. AddRoundKey
第一回合前有個預先轉換回合1. AddRoundKey
最後一回合只有三個三個轉換(少了 MixColumns)
一回合加密完成
AES-128 重複步驟 10 回合
加密完成 , 解密 ??
Let‘s Review
解密
Inv_Add_Round_Key
• 加上去的減回去
Inv_Mix_Columns
• 乘上去的除回去 (乘上 Inverse)
Inv_Shift_Rows
• 動出去的動回去
IInv_Sub_Bytes
• 被替代的找回原先面目
Do AES?
Totally Safe!
• 暴力攻擊 Safe!• 統計攻擊 Safe!• 差異攻擊 Safe!• 線性攻擊 Safe!• 弱金鑰 Safe!
天衣無縫 ??
• 沒有人是完美的 , AES 的弱點
– Side-channel attacks– XSL attack
怎麼辦 ?
等下一位高手來解決 !!別懷疑 ,
可能是你 !可能是我 !
報告到此 ,
謝謝各位 !!
參考資料 :
Wikipedia
Cryptography and Network Security(Behroz A. Forouzan)