Aes
AES 中的 2 輪如何實現完全擴散?
我在某處讀到 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 輪之後,每個位都會對完整狀態產生影響。