iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 21
1

https://ithelp.ithome.com.tw/upload/images/20191007/201150608KL1u4p2ox.jpg

AES(Advanced Encryption Standard) 進階加密標準

AES 是美國國家標準技術局於 2001 年 12 月所發布的「對稱式區塊加密法」。

基本概念

  • 對稱式區塊加密法
  • 用來取代 DES
  • AES 是一種「非 Feistel 加密法」
    • 區塊長度 128 bits

    • 運算回合數可為十二十四個回合

    • 金鑰長度取決於回合數

      回合數 金鑰長度
      10 128 bits
      12 192 bits
      14 256 bits

圖解

加密端每回合結構

轉換

  • AES使用了四種類型的轉換,分別是取代、排列、混合以及加入金鑰

    • 取代 SubBytes

      • AES 像 DES 一樣使用取代
      • AES 使用兩個可逆的轉換
      • 第一種轉換是在加密端使用,稱為 SubBytes
      • 取代一個位元組的時候,首先將位元組表示成兩個十六進位的數字
      • SubBytes 運算總共有 16 個獨立的位元組與位元組的轉換
    • 排列 ShiftRows

      • 在加密時,這種轉換稱為 ShiftRows
    • 混合 MixColumns

      • 我們需要一個位元組間(inter‐byte)的轉換
      • 依據鄰近位元組的內容改變目前位元組內的位元
      • 藉由混合位元組,以提供位元的擴散效果
      • MixColumns 轉換是以行矩陣為單位來執行
      • 加入金鑰 AddRoundKey
        • 一次處理一行
        • 將回合金鑰加入狀態矩陣行
        • 使用矩陣加法
        • AddRoundKey 轉換為自己的反向
  • 金鑰擴展

    • AES 使用金鑰擴展(Key‐expansion)來建立每一回合中所使用的回合金鑰
    • 假設回合數為N_r,則金鑰擴展將從一個長度為 128bits 的加密金鑰,產生N_r+1個長度為 128bits 的回合金鑰
    • AES 中每個回合金鑰都是由上一個回合金鑰算出來的
    • 因為計算中使用SubWord轉換,所以回合金鑰之間的關係是非線性
    • 加入回合常數的步驟也確保了每個回合金鑰都不會和上一個相同
  • AES‐192 和 AES‐256 的金鑰擴展

    • AES‐192 和 AES‐256 的金鑰擴展和 AES‐128 非常相近,不同的地方只有以下幾點
      • 在 AES‐192 中,一次產生六個字組而非四個
      • 在 AES‐256 中,一次產生八個字組而非四個
  • 金鑰擴展分析

    • AES 的金鑰擴展機制設計有幾個特性可以抵抗破密分析
  • 加密法

    • 原始設計的加密法與反向加密法
  • AES安全性分析

    • 安全性
      • 暴力攻擊
        • 單就金鑰長度來看,AES最少 128bits 的金鑰絕對比 DES 的 56bits 金鑰要安全得多
      • 統計攻擊
        • 已經有很多的測試都無法對 AES 所產生的密文進行統計攻擊
      • 差異攻擊與線性攻擊
        • AES 目前仍然沒有任何已知的差異攻擊或線性攻擊存在
    • 實現性
      • AES 的設計非常具有彈性,可以在軟體、硬體和韌體上實作,並利用查表或是使用完整定義的算術結構
    • 簡單性與成本
      • AES 設計所使用的演算法都非常簡單,可以很容易地在非常便宜的處理器和非常小的記憶體條件下實作

上一篇
『 Day 20』密碼卷宗 現代篇 對稱章 - DES
下一篇
『 Day 22』密碼卷宗 現代篇 非對稱章 - 介紹
系列文
到處挖坑,現在該來還(填)願(坑)ㄌ !!!30

尚未有邦友留言

立即登入留言