Aes

S-Box 仿射變換的 AES 替代方程

  • August 17, 2018

AES S-Box的Wikipedia 文章為 S-Box 變換的仿射部分提供了一個替代方程:

$$ b_{out} = (b_{in} \times 31_d) \operatorname{mod} 257_d \oplus 99_d $$ 文章中不是很清楚,但從論文中可以看出(如文章中所引用),乘法將在具有多項式的有限域上進行 $ 257 = 100000001_b $ 用於模組化減少。

既然AES 規範沒有提到使用這個其他有限域多項式,怎麼會得出這樣的恆等式 $ 100000001_b $ ? 有沒有更多關於它來自哪裡的資訊?

我認為,這種替代形式比標準形式更令人困惑。

由於所涉及的矩陣是循環的,AES S-box 的仿射部分可以表示為

$$ b_o = b_i \oplus (b_i \lll 1) \oplus (b_i \lll 2) \oplus (b_i \lll 3) \oplus (b_i \lll 4) \oplus 99,, $$ 在哪裡 $ \oplus $ 是異或 $ \lll $ 是位左旋轉。到目前為止,一切都很好。但在數學上,將旋轉描述為“移動位”是很尷尬的。 因此,我們可以將一個字節視為係數模為 2 的多項式,即 $ \mathbb{F}_{2}[x] $ , 一個字節是 $ x^7\cdot c_7 + \ldots + x \cdot c_1 + c_0 $ , 其中 $ c_i $ 係數是字節的位。當我們乘以時會發生什麼 $ x $ ? 這只是一個左移操作:

$$ x(x^7\cdot c_7 + \ldots + x \cdot c_1 + c_0) = x^8\cdot c_7 + \ldots + x^2 \cdot c_1 + x\cdot c_0 + 0,. $$ 現在,如果我們將這個多項式簡化為 $ x^8 + 1 $ ,這意味著我們替換 $ x^8 $ 經過 $ 1 $ 只要有,我們就得到 $$ 1\cdot c_7 + \ldots + x^2 \cdot c_1 + x\cdot c_0 + 0 = x^7 \cdot c_6 + \ldots + x^2 \cdot c_1 + x\cdot c_0 + c_7 ,, $$ 這恰好是由 $ 1 $ . 您可以驗證相同的原理是否適用於任何旋轉值:乘以 $ x^k $ 並減少 $ x^8 + 1 $ 旋轉多項式 $ k $ 職位。 因此,我們可以將 AES S-box 的仿射變換理解為環中的乘法 $ \mathbb{F}_{2}[x]/(x^8 + 1) $ :

$$ b_o = b_i \cdot (1 + x + x^2 + x^3 + x^4) + 99 \in \mathbb{F}_{2}[x]/(x^8 + 1),. $$ 換句話說,這個模數只存在於以代數方式清晰地描述位旋轉。 轉換為十進制,這變成 $ b_o = b_i \cdot 31 \bmod 257 \oplus 99 $ ,但對我來說,這種形式失去了所有的描述價值。

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