Aes

AES 中的 2 輪如何實現完全擴散?

  • October 11, 2020

我在某處讀到 2 輪是 AES 提供完全擴散。所以我查了一下它的確切含義。在Rijndael 的設計第 41 頁第 3.5 節中,它指出:

兩輪 Rijndael 在以下意義上提供了“完全擴散”:每個狀態位都依賴於兩輪前的所有狀態位,或者一個狀態位的變化可能會在兩輪之後影響一半的狀態位。

怎麼會這樣。我會說這與 MixColumns 是 MDS 的事實有關,但為什麼這是在兩輪中實現的?

AES 擴散由 3 個主要功能負責:

  • 子字節
  • 換行
  • 混合列

SubBytes 作為 8 位 S-box 工作。因此,如果一位更改,則字節的 8 位可能會更改。通過這一步,一個字節的每一位相互依賴。

然後,對字節的這種修改通過 Shift Rows(仍然受影響的 1 個字節)通過狀態轉換,然後通過列(我們從受影響的 1 個字節移動到受影響的 4 個字節)。

因此,在一輪中,我們影響了 4 個字節。

通過再次這樣做,我們將影響 $ 4 \times 4 $ 由於 Shift Rows 和 Mix 列提供的良好覆蓋,字節或完整狀態。

因此,在 2 輪之後,每個位都會對完整狀態產生影響。

這可以通過下圖來概括,其中 $ \star $ 表示對位(然後是字節)的修改。 在此處輸入圖像描述

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