2014年10月12日 星期日

現代加密 - AES

AES



1.AES根據金鑰長度不同分別有10、12、14個回合,每個回合各有一把128位元的金鑰

2.明文區塊(block)與狀態(state) 上的轉換
  • 將明文block轉換為16進位編碼,填入矩陣(State)
  • 同樣的,每把鑰匙也能用state表示
  • State為16進位的數字
3.操作
  • 1.SubBytes : 假設state是19,則找第一列,第九行,取代state
  • 2.Shiftrow :第一列不移位,第二列移一位,第三列移兩位,第四列移三位
  • 3.MixColumn : 把每一個行乘一個矩陣
  • 4.AddRoundKey : 讓State跟回合金鑰做XOR
  • 以上步驟進行10、12、14次,依金鑰長度而定 
4.回合金鑰如何產生?
  • 利用主金鑰產生回合金鑰
  • 每個欲加入的字元w[i]由前一個跟往前第四個字元決定
    • 若i為4的倍數,將上述兩值XOR
    • 否則將w[i-1]進行函數g運算後,再與w[i-4]做XOR
  •  函數g
    • 將w[i-1]做旋轉後與取代

6.破解AES
  • 128位元的密鑰,要2^128次
  • 差異攻擊、線性攻擊與統計攻擊對AES無效 
7.補充:Mixcolumn
  • 矩陣中相乘會不會導致state的值越來越大?
  • 思考什麼是有限體 (GF)
  • 有限體能以多項式來表示有限運算元集合
  • AES的運算是基於GF(2^8)
    • 在GF(2^8)下,加法運算被列入XOR
    • 為了使乘法有封閉性,要mod多項式x^8+x^4+x^3+x+1

沒有留言:

張貼留言