Advanced Encryption Standard,AES
(老師說考描述,跟Block與Key有多大跟size)
Key length = 128 bits Key length = 192 bits Key length = 256 bits |
Block length = 128 bits |
Def:Rijndael是Daemen和Rijmen早期設計密碼的改良
第一種 | 第二種 | 第三種 | |
Block | 128bit | 128bit | 128bit |
Key | 128bit | 192bit | 256bit |
Round | 10 rounds | 12 rounds | 14 rounds |
主要比之前feistel cipher強的地方為硬體軟體執行速度較快!
運算基本前提
加法:
偶1為0,奇1為1
乘法:
﹡irreducible polynomial is : X8+X4+X3+X+1 (超過256即mod 283)
運算有四種類型:
1.Substitute bytes:
Def:利用S-box來轉換每組byte,屬於非線性轉換.
例:95轉換後為2A
首先是找95的反元素(老師說他會給!!!!){95}-1 = 8A
然後將8A帶入這個內容之中,即可求得!
作法:8 A = 1000 1010,那麼依序放入b0~b7
乘上矩陣,再加上最後一排11000110
即可?o到...說實話這真的很難算...因為超過還要mod 283..
2.ShiftRows:
Def:列向前遞移轉換
簡單講就是row向前遞移
例:
遞移前 87 F2 4D 97 EC 6E 4C 90 4A C3 46 E7 8C D8 95 A6
遞移後 87 F2 4D 97 6E 4C 90 EC 46 E7 4A C3 A6 8C D8 95 原則:
第一列不動
第二列Shift 1位
第三列Shift 2 位
第四列Shift 3 位
3.MixColumns:
Def:將行乘上多項式後轉換
例:
運算前 87 F2 4D 97 6E 4C 90 EC 46 E7 4A C3 A6 8C D8 95
運算後 47 40 A3 4C 37 D4 70 9F 94 E4 3A 42 ED A5 A6 BC
舉例來說:
多項式挑選{03}x3 + {01}x2 + {01}x + {02}(此多項式參照FIPS 197.pdf)
那課本是從{02}乘上87開始的所以依序就為
(就好像變成{02}x3 + {03}x2 + {01}x + {01})
{02}•{87}xor{03}•{6E}xor{01}•{46}xor{01}•{A6}={47}
看不懂得其實就是把第一行的87、6E、46、A6分別帶入x3,x2 ,x,1
課本{01}的部份等於是乘1所以課本是不寫
(運算就是(02=0000 0010)•(87=1000 0111)相乘之後超過256除283)xor(03•EC相乘之後超過256除283)xor...etc這樣算出第一個47
第二個37則是將多項式再往右方向遞移一格變為{01}x3 + {03}x2 + {02}x + {01}
所以下個運算就為,{87}xor{02}•{6E}xor{03}•{46}xor{A6}={37}....etc
4.AddRoundKey:
Def:加一額外Round Key轉換
那個Round Key其實就是另外加一道矩陣
例:
Origin 47 40 A3 4C 37 D4 70 9F 94 E4 3A 42 ED A5 A6 BC XOR
Round Key AC 19 28 57 77 FA D1 5C 66 DC 29 00 F3 21 41 6A =
Result EB 59 8B 1B 40 2E A1 C3 F2 38 13 42 1E 84 E7 D2