AES 在什麼伽羅瓦域上真正起作用?
我試圖理解 GF 理論,但每次我遇到有關 AES 的資訊時,這一切都毫無意義。
在我看來 $ GF(2^8) $ 定義任何形式的多項式:
$ a_{7} x^7 + a_{6} x^6 + a_{5} x^5 + a_{4} x^4 + a_{3} x^3 + a_{2} x^2 + a_{1} x^1 + a_{0} $
在哪裡 $ a_{i} $ 可以是 0 或 1。無論我在哪裡遇到 AES 工作的資訊 $ GF(2^8) $ . 但是在 AES $ a_{i} $ 是字節,對吧?所以 $ a_{i} $ 可以是從 0 到 7 的每一個數字。這意味著我們在這裡 $ GF(8^8) $ . 和它無關 $ GF(2^8) $ .
要麼我仍然不理解 GF,要麼他們都在做某種與事實相去甚遠的簡化,不應該這樣做。那麼 AES 真正使用的伽羅瓦域是什麼?
不,在 AES 中 $ a_i $ 不是字節。它們是比特。8位 $ a_i $ 一起形成一個字節,並且被認為是伽羅瓦域的單個元素 $ {\operatorname{GF}\left(2^8\right)} $ , 也注意到 $ \mathbb F_{2^8} $ .
該字節的值可以通過計算整數的多項式來計算 $ x=2 $ , 用普通的加法和乘法。在相反的方向,位 $ a_i $ 是字節整數值的二進製表示,超過 8 位二進制數字,其中 $ a_0 $ 最低有效位。
AES 明文、密文或輪密鑰中有 16 個字節。這些可以看作是集合的元素 $ {\left({\operatorname{GF}\left(2^8\right)}^{4}\right)}^{4} $ . 這將 16 個字節組織為 4×4 的元素矩陣 $ {\operatorname{GF}\left(2^8\right)} $ . 特別是這個集合是場加法定律外延下的一個群 $ {\operatorname{GF}\left(2^8\right)} $ ,當應用於字節時是按位異或。這在 AddRoundKey 中使用。在這個框架中可以表達 ShiftRows、SubBytes 甚至是 MixColumns。
對於 MixColumns,還有另一種可能的視圖,其中所述 4×4 矩陣的列是 4 個係數 $ {\operatorname{GF}\left(2^8\right)} $ 小於 4 次的多項式。這樣的多項式可以乘以約簡模 4 次約簡多項式。我對此並不熟悉,這是另一個答案和這個評論的核心。我的閱讀是,這個視圖優雅地簡化了具有 4 個元素的向量 $ {\operatorname{GF}\left(2^8\right)} $ MixColumns 中的正常 4×4 矩陣,並簡化了解密所需的逆矩陣的推導,但在加密或解密中都不允許計算捷徑。