AES
1.AES根據金鑰長度不同分別有10、12、14個回合,每個回合各有一把128位元的金鑰
2.明文區塊(block)與狀態(state) 上的轉換
- 將明文block轉換為16進位編碼,填入矩陣(State)
- 同樣的,每把鑰匙也能用state表示
- State為16進位的數字
- 1.SubBytes : 假設state是19,則找第一列,第九行,取代state
- 2.Shiftrow :第一列不移位,第二列移一位,第三列移兩位,第四列移三位
- 3.MixColumn : 把每一個行乘一個矩陣
- 4.AddRoundKey : 讓State跟回合金鑰做XOR
- 以上步驟進行10、12、14次,依金鑰長度而定
- 利用主金鑰產生回合金鑰
- 每個欲加入的字元w[i]由前一個跟往前第四個字元決定
- 若i為4的倍數,將上述兩值XOR
- 否則將w[i-1]進行函數g運算後,再與w[i-4]做XOR
- 函數g
- 將w[i-1]做旋轉後與取代
6.破解AES
- 128位元的密鑰,要2^128次
- 差異攻擊、線性攻擊與統計攻擊對AES無效
- 矩陣中相乘會不會導致state的值越來越大?
- 思考什麼是有限體 (GF)
- 有限體能以多項式來表示有限運算元集合
- AES的運算是基於GF(2^8)
- 在GF(2^8)下,加法運算被列入XOR
- 為了使乘法有封閉性,要mod多項式x^8+x^4+x^3+x+1
沒有留言:
張貼留言