1 / 69

新一代密碼系統 ( A dvanced E ncryption S tandard)

新一代密碼系統 ( A dvanced E ncryption S tandard). 本章內容. 6.1 前言 6.2 Rijndael 密碼系統 6.3 Rijndael 密碼系統的數學背景 6.4 回合金鑰的產生 6.5 Rijndael 的加密演算法 6.6 Rijndael 的解密演算法. 6.1 前言. 就目前科技而言, 現有之 DES 密碼系統所使用之金鑰長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高其安全性,便有了 Triple-DES 的構想。

Download Presentation

新一代密碼系統 ( A dvanced E ncryption S tandard)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 新一代密碼系統(Advanced Encryption Standard)

  2. 本章內容 6.1 前言 6.2 Rijndael密碼系統 6.3 Rijndael密碼系統的數學背景 6.4 回合金鑰的產生 6.5 Rijndael的加密演算法 6.6 Rijndael的解密演算法

  3. 6.1前言 • 就目前科技而言,現有之DES密碼系統所使用之金鑰長度過短(僅56位元),其安全性已遭受質疑,為提高其安全性,便有了Triple-DES的構想。 • 隨著電腦技技的發展,可預見未來Triple-DES的加密演算法也勢必淘汰,有鑑於此,美國國家標準技術局(NIST)於1997年元月二日開始著手計劃公開徵求新一代加密標準(簡稱AES)。

  4. AES (Advanced Encryption Standard) • 1997年元月二日由NIST經由公開程序對外徵求 • 1997年四月十五日舉辦AES研討會,研討制訂AES之功能需求。NIST於1997年九月十二日,正式公佈AES功能規格標準需求: • - AES為一對稱性加密演算法 • - AES為一區塊加密演算法 • - AES為進行加密之區塊最小為128位元 • - AES秘密金鑰之長度是變動的,可以為128、192或256位元 • - 可以同時由硬體及軟體來實作 • - 沒有專利的限制,可以自由使用

  5. AES (Advanced Encryption Standard) • 1998年8月20日NIST舉行第一屆AES會議,會中並宣佈及介紹15個獲AES初選之演算法:CAST-256、CRYPTON、DEAL、DFC、E2、FROG、HPC、LOKI97、MAGENTA、MARS、RC6、RIJNDAEL、SAFER+、SERPENT、TWOFISH。 • 針對此15個初選AES之安全性、效率及相容性做分析,並於1999年3月22日第二屆AES會議中提出分析報告。 • 1999年8月20日公佈MARS、RC6、Rijndael、Serpent及Twofish等5個演算法可進入第二回合決選。

  6. AES (Advanced Encryption Standard) • NIST於2000年4月13日再舉行第三屆AES會議,對五個決選AES演算法再進行分析。 • 2000年10月2日正式宣佈由比利時二位密碼專家Joan Daemen及Vincent Rijmen二位博士所設計Rijndael(發音為Rain Doll)獲選為AES之演算法。

  7. AES初選演算法

  8. AES加密演算法之架構 By :施冠州 邱敬智 許修維 明文 明文 初次 Round Key ⊕ AddRoundKey AddRoundKey 1:SubBytes 1:SubBytes 2 3 4 5 6 7 8 Nr-1 2:ShiftRows 2:ShiftRows Round 1 Round 1 3:MixColumns 3:MixColumns Round Key ⊕ 4:AddRoundKey 4:AddRoundKey 1:SubBytes 1:SubBytes 2:ShiftRows 2:ShiftRows 最後 Round Key ⊕ 3:AddRoundKey 3:AddRoundKey 密文 密文

  9. 6.2Rijndael 密碼系統 ◎ Rijndael • 反覆運算的加密演算法 • 資料區塊及金鑰可獨立變動 128, 192, 256 bits State:運算過程所產生的中間值,用一個以byte為單位的長方型矩陣來表示(4列,行數為資料區塊除以32bits),成為一個 4×Nb的矩陣,也就是把資料分割成 Nb個區塊{或 行數}。 8 bits * 4 = 32 bits X / 32 = Nb {行} X / 8 = 4 * Nb {byte} 加解密資料會先被複製到此state矩陣

  10. AES演算法相關參數說明 • Nb (明文區塊數目) • 由資料長度除以32位元求得 • Nk (金鑰區塊數目) • 由金鑰長度除以32位元求得 • Nr (回合數) • 由Nb、Nk共同決定 • State (要加密的資料) • 加密的資料會先被複製到此一矩陣(size:4 * Nb) • W(存放金鑰字元的陣列) • 陣列中每個元素為32位元(size:Nb * (Nr+1)) 10

  11. 6.2 Rijndael 密碼系統 ◎ Rijndael Cipher Key: 加密金鑰,一個 4×Nk bytes的矩陣,也就是把金鑰分割成 Nk 個32位元之子金鑰。 Nb vs. Nk Nk=6 if cipher key size = 192 bits, then 192/32 = 6

  12. Rijndael 執行的回合數 Nr: 回合數,由Nb及Nk決定出回數。 4 bytes Nk = 6 Nb = 4 決定出回數 如下表 12

  13. 加密流程 Nr(回合數),由Nb及Nk所決定的,回合的變動數如表: 13

  14. 6.3 Rijndael密碼系統的數學背景 ◎ GF(28)的定義 當作一個7 由 組成,將 假設位元組 次多項式的係數。 例如: 表示成多項式為: GF(28) = GF(256) 14

  15. 數學背景 ◎ 加法 兩個多項式的加法,即係數做XOR。 例如: 表示成多項式為: 0

  16. 數學背景 ◎ 乘法 在GF(28)中的乘法運算,也可視為兩個多項式相乘。 0 ?!

  17. 數學背景 ◎ 乘法 多項式相乘之後的結果很容易造成溢位,在Rijndael中 將其溢位再modulo一個固定的多項式: 例如:

  18. Mathematical Preliminaries by Dr. 林仁宏 • Addition • XOR operation • Multiplication • In the polynomial representation, multiplication in GF(28)corresponds with the multiplication of polynomials modulo an irreducible polynomial ofdegree 8. m(x) = x8+x4+x3+x+1 • EX, {57}‧{83} = {c1} {01010111}‧{10000011}={11000001}(x6+x4+x2+x+1)(x7+x+1) =x13+x11+x9+x8+x7+x7+x5+x3+x2+x+x6+x4+x2+x+1=x13+x11+x9+x8+x6+x5+x4+x3+1(x13+x11+x9+x8+x6+x5+x4+x3+1) modulo x8+x4+x3+x+1=x7+x6+1

  19. 6.4回合金鑰的產生 • 在Rijndael的密碼系統中,不管加密或解密都需要產生各回合所使用的回合金鑰(Round Key)或副金鑰(Subkey)。 • 回合金鑰的產生方式可分兩階段,第一階段為金鑰的擴充,第二階段為回合金錀的選擇。

  20. 6.4.1金鑰的擴充 ◎ Cipher key  Expanded key Expanded key是一個線性的4byte矩陣,以W[Nb×(Nr+1)]表示,前Nk個字組包含了加密金鑰(Cipher key),剩下的字組 依不同的Nk值,會有不同的處理如下: Example: Nb=4, Nk=6, Nr=12 W[4 * 13]=W[52]=W[0]~W[51] 20

  21. 41 A 45 E 49 I 4d M 42 B 46 F 4a J 4e N 43 C G 47 K 4b 4f O 44 D H 48 L 4c 50 P 金鑰之擴充程序(1/4) • 原始金鑰(128bit) • │Ki│= 1 byte = 8 bits • Key=ABCDEFGHIJKLMNOP • 4word(128bit) Key將擴充成為4*11word key • 6word(192bit) Key將擴充成為4*13word key • 8word(256bit) Key將擴充成為4*15word key By :施冠州 邱敬智 許修維 K1 K1 K1 K1 K2 K2 K2 K2 K3 K3 K3 K3 128 / 8 = 16 K4 K4 K4 K4

  22. 4d 4e RotWord 4f 50 41 6f 6f 01 c6 42 c6 00 10 10 00 43 44 00 a7 a7 擴充程序(2/4) If (i mod 4)=0 Wi = Wi-4⊕SubBytes(RotWord(Wi-1))⊕ RCON(i) RCON(i) = 2(i-4)/4 = 1,2,4,8…… …… Wi-4 Wi-1 Wi 41 45 49 4d 42 46 4a 4e 43 47 4b 4f 44 48 4c 50 4e e 2f 4 4e 4f SubBytes 50 4d RCON W4 2f ⊕ ⊕ = 84 53 e3

  23. AES Key Schedule By: 韋宜成、 劉伯伸、 陳昱潭、 曾劭逸 Cipher key Roundkey 1 ... 09 移動到最下面 RotWord XOR XOR XOR (經過S-Box轉換後) = = Rcon 23

  24. AES Key Schedule(1/2) Cipher key Roundkey 1 ... 總共10個round XOR = 24

  25. 45 45 49 49 4d 4d 46 46 4a 4a 4e 4e 47 47 4b 4b 4f 4f 48 48 4c 4c 50 50 2a d9 7b 6f 6f 9d bf 88 8c 63 2a 32 2e 55 bb 18 f7 63 ef 8a c6 eb 3e 6f ca c6 61 ca 6b 21 ab 80 2b 40 e5 80 84 e9 1c 3d 1d b7 53 1c 10 57 10 57 4a a1 b8 05 a4 56 f2 97 e1 a3 7f a3 96 da f3 29 08 6a a7 79 13 da c9 a7 ef db e0 7f 擴充程序(3/4) If (i mod 4) <> 0 Wi = Wi-4⊕ Wi-1 Wi-4 Wi-1 Wi 41 …… 42 43 44 ⊕ If (i mod 4)=0 Wi = Wi-4⊕SubBytes(RotWord(Wi-1))⊕ RCON(i) Else Wi = Wi-4⊕ Wi-1 128bit的 Key 需 11 回合加解密, 因此 i = 4 - 44 ⊕ ⊕

  26. 擴充金鑰之規則(4/4) 第二 組後擴充金鑰之規則 If (i mod kw)=0 then W[i]= W[i- kw] ⊕SubBytes( RotWord(W[i-1]) ) ⊕ 2(i/kw)-1 Else If (kw>6) and ((i mod 4)=0) then W[i]= eK[i- kw] ⊕SubBytes( W[i-1] ) Else W[i]= eK[i- kw] ⊕ W[i-1] kw :key之word數 128bit Key, kw=4, 需 10 次 i = 4 - 43 192bit Key, kw=6, 需 8 次 i = 6 - 51 256bit Key, kw=8, 需 7 次 i = 8 - 59

  27. 6.4.2選擇回合金鑰 ◎ Expanded key  Round key 子金鑰的選擇是由擴充金鑰中所依序給定的,即 第i把回合金鑰由W[Nb×i] ~ W[Nb×(i+1)-1] Initial Round Round Key 0: W[0]~W[3] Round Key 1: W[4]~W[7] Round Key 2: W[8]~W[11] Round Key 3: W[12]~W[15] Standard Round … Round Key 11: W[44]~W[47] Final Round Round Key 12: W[48]~W[51]

  28. Standard Round Standard Round Byte Sub Shift Row Mix Column Add Round Key

  29. 6.5.1回合金鑰的加密函數 ◎ Add Round Key(state,Round key) 將狀態值與子金鑰作互斥或運算 W[0] W[1] W[2] W[3] Ex State RK0

  30. b0, 0 b0, 1 b0, 2 b0, 3 b0, 4 b0, 5 b1, 0 b1, 1 b1, 2 b1, 3 b1, 4 b1, 5 b2, 0 b2, 1 b2, 2 b2, 3 b2, 4 b2, 5 b3, 0 b3, 1 b3, 2 b3, 3 b3, 4 b3, 5 6.5.2 位元組取代轉換Byte Sub函數 a0, 0 a0, 1 a0, 2 a0, 3 a0, 4 a0, 5 a1, 0 a1, 1 a1, 2 a1, 3 a1, 4 a1, 5 a2, 0 a2, 1 a2, 2 a2, 3 a2, 4 a2, 5 S-Box a3, 0 a3, 1 a3, 2 a3, 3 a3, 4 a3, 5

  31. 位元組取代轉換 (Byte Sub) • 位元組轉換是一個以位元組為單位的線性取代運算,取代表(S-Box)是經過兩個運算過程而建立,並且是可逆的。 (95)16 (2a)16 55

  32. Byte Sub位元組取代轉換

  33. Byte Sub例子

  34. Byte Sub例子的驗證

  35. Byte Sub 查表

  36. Byte Sub反運算

  37. Byte Sub反運算例子 的乘法反元素為

  38. Byte Sub 反運算查表

  39. Byte Sub 查表 EX

  40. 6.5.3移列轉換函數 每一個State的第一列不變,後三列被循環轉換(cyclically shift)不同的大小,且依Nb的大小也會有所不同,如下:

  41. Shift Row 例子

  42. 19 19 a0 a0 9a 9a e9 e9 f4 f4 c6 c6 f8 f8 e3 e3 e3 e2 e2 e2 8d 8d 48 48 be be be 2b 2b 2b 28 28 28 ShiftRows():列移位運算 Data ShiftRows(Data) 3d 3d 左旋1 3d 左旋2 08 08 左旋3

  43. 6.5.4MixColumn混行轉換函數 每一 entity 視為一個在 GF(2^8)中之多項式

  44. 6.5.4 MixColumn混行轉換函數

  45. 04 d4 bf 66 81 5d e0 28 b8 ab 09 1e e5 30 b4 ae 87 41 27 cf d2 52 15 11 98 4f 9e a6 88 f1 e5 3c d4 d4 d4 5d 5d 5d 30 30 30 bf bf bf MixColumns():混合行運算     Data      MixColumns(Data) By 施冠州 邱敬智 許修維 04 d4 66 bf 5d 81 30 e5 ? 04 d4 5d 30 bf 66 81 e5 For more details, see next page

  46. AES加密運算實例(5/6 ) 混合行運算 (Mix Column Operation) 1 D4 11010100 × 02 ×00000010 x8+x7+x5+ x3 x8+ x4+x3+x+1 00000000 ⊕ 11010100 ⊕ x7+x5+x4+ x+1 10110011 110101000 超過有限場需 以11B調整 1 BF 10111111 × 03 ×00000011 x8+x7+x6+ +1 x8+ x4+x3+x+1 10111111 ⊕ 10111111 ⊕ x7+x6+x4+x3+x 11011010 111000001 超過有限場需 以11B調整

  47. AES加密運算實例(6/6 ) 混合行運算 (Mix Column Operation) 10110011 → {02} × d4 結果 ⊕ 11011010 → {03} × bf 結果 01101001 ⊕ 01011101 → 5d 00110100 ⊕ 00110000 → 30 00000100 04 以此類推,求得其他值

  48. Final Round Final Round Byte Sub Shift Row Add Round Key

  49. 加密範例 加密的文件訊息為(D49F42BC01F2D4DBBC0FD12F0CFD0240)16 初始的狀態值矩陣其內容為

  50. 步驟一: 回合金鑰RK0 狀態值矩陣與回合金鑰RK0透過回合金鑰加密函數 (Add Round Key)的運算過程

More Related