Aes

的優勢GF(28)GF⁡(28)operatorname{GF}(2^8)超過從/28從從/28從mathbb Z/2^8mathbb Z在 AES/Rijndael

  • January 7, 2017

伽羅瓦域用於mixColumnsRijndael 算法的步驟。超過 $ \operatorname{GF}(2^8) $ (不可約多項式: $ x^8 + x^4 + x^3 + x + 1 $ ),矩陣乘法的第一個值(所有數字都是十六進制數字)將是:

$$ \begin{bmatrix} \mathtt{1e}\\mathtt{27}\\mathtt{98}\\mathtt{e5}\end{bmatrix}\cdot\begin{bmatrix} 2 & 3 & 1 & 1\…&…&…&…\end{bmatrix} = \begin{bmatrix} \mathtt{28}\…\…\…\end{bmatrix} $$ 如果我在自然數領域計算相同的矩陣乘法,結果是:

$$ (\mathtt{1e}\cdot2)+(\mathtt{27}\cdot3)+\mathtt{98}+\mathtt{e5} = \mathtt{22e} $$ 好的, $ \mathtt{22e} $ 大於 $ 2^8-1 $ , 但我們可以取 $ \mathtt{22e} \bmod 2^8 = \mathtt{2e} $ 結果將在一個字節的邊界內。

作為一個非數學家,我想知道計算在 $ \operatorname{GF}(2^8) $ 用自然數取模過度計算 $ 2^8 $ ,因為這兩種方法似乎都是可行的。我腦子裡有兩個想法,但沒有找到任何證實或反駁。是否與效率有關,因為 $ \operatorname{GF}(2^8) $ 完全符合電腦的字節架構?還是 $ \operatorname{GF}(2^8) $ 提供比通過自然數計算更好的擴散?或者是別的什麼?

mixColumns 步驟的一個重要屬性是它是最大距離可分離(MDS)。也就是說,如果 $ M $ 是我們的乘法矩陣,如果你取任意兩個不同的輸入向量 $ V $ 和 $ V’ $ , 併計算 $ M \cdot V $ 和 $ M \cdot V’ $ , 中不同的字節總數 $ V $ 和 $ V’ $ 加上不同的字節總數 $ M \cdot V $ 和 $ M \cdot V’ $ 將始終至少為 5(矩陣的維度 $ M $ 加 1)。

事實證明,這是用於證明 AES 對差分和線性密碼分析的安全性的重要屬性。

現在,如果你更換 $ GF(2^8) $ MDS 矩陣中的乘法 $ Z/256 $ 乘法,事實證明你不能擁有 MDS 屬性;AES 中使用的矩陣和任何其他矩陣都沒有 MDS 屬性。

這很容易展示;首先,考慮 $ V = {0,0,0,0} $ 和 $ V’={128,0,0,0} $ ; 這些顯然在 1 個字節上有所不同,因此要保持 MDS 屬性,所有這些值都是 $ M \cdot V $ 和 $ M \cdot V’ $ 必須不同。但是,如果 lsbit 的 $ M[0,0] $ 為 0,則第一個字節 $ M \cdot V $ 和 $ M \cdot V’ $ 將是相同的,因此 MDS 將不成立,因此 lsbit $ M[0,0] $ 必須是 1。沿著同一行,如果我們考慮其他字節 $ M \cdot V $ 和 $ M \cdot V’ $ ,此外, $ V’={0,128,0,0}, {0,0,128,0}, {0,0,0,128} $ ,我們發現所有字節 $ M $ lsbit 必須為 1。最後,我們考慮 $ V’={128,128,128,128} $ . 如果所有 lsbits $ M $ 是 1,那麼 $ M \cdot V = M \cdot V’ $ ; 這也違反了 MDS 屬性(以及使解密變得困難……)

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