Encryption

AES添加輪密鑰(K0)的重要性是什麼?

  • November 25, 2020

AES 的高級概述是根據 Wikipedia

  1. 密鑰擴展;
  2. 初始輪密鑰添加;
  3. 9、11 或 13 輪;
  4. 最後一輪(總共進行 10、12 或 14 輪)。

我可以理解除第 2 步之外的所有步驟,即所謂的密鑰擴展

關鍵加寬步驟的重要性是什麼?它對 AES 的整體安全性有何貢獻?這一步的重要性是什麼?它對 AES 的整體安全性有何貢獻?

$$ EDIT $$我聽說它有助於遞歸地實施加密,但看不出這怎麼可能。因為這僅在加密開始和解密結束時完成。在遞歸函式中實現這一點將導致​​每一輪用 2 個鍵對輸入進行異或。 那麼這個初始添加關鍵步驟究竟有什麼好處呢?

AES-128 由 10 輪組成。每一輪都包括一個公共排列(由公共排列 SubByte ShiftRows MixColumns 組成,除了最後一輪省略 MixColumns )和秘密轉換 AddRoundKey(由一個 XOR 與密鑰相關和輪相關值組成)之前第一輪,中間輪,最後一輪之後。因此有 11 個 AddRoundKey。問題問:為什麼是第一個AddRoundKey?

因為沒有第一個 AddRoundKey,第一輪的公共排列將在明文上執行,因此在涉及已知明文的攻擊中沒有密碼價值。

考慮最基本的攻擊:使用已知的明文/密文對進行暴力密鑰搜尋。對於第一個 AddRoundKey,第一個公共轉換的輸入會隨著每個鍵的變化而變化,攻擊者必須為每個測試的鍵計算該排列,並且每個測試的鍵的輸出都非常不同。但是如果沒有第一個 AddRoundKey,第一個公共排列的輸出是一個常數,對手可以以可忽略的成本計算一次;本質上,一輪 AES 被浪費了。


加法:出於同樣的原因,最後一個 AddRoundKey 在這裡。並且最後一輪的 MixColumns 被刪除,因為如果它存在,則可以交換最後一輪的 MixColumns 和最後一個 AddRoundKey(在最後一個子鍵的線性變換之後),然後最後一輪的 MixColumns 將是一個公共排列對密文進行操作,因此沒有密碼價值。


補充:我看不出“第一個 AddRoundKey 有助於遞歸實現加密”的說法有任何實質內容。

引用自:https://crypto.stackexchange.com/questions/86234