Aes
了解 AES 規範中的乘法
我正在閱讀 AES 規範,但無法理解乘法定義(第 4.2 節)。
{01}{1b}
在第 4.2 節中,為什麼選擇模數作為 $ 283 $ 並不是 $ 255 $ ? 不可約多項式是 $ m(x)=x^8 +x^4 +x^3 +x+1 $ . 這個看似隨機的選擇有什麼意義嗎?在後面的解釋中,它還說模運算產生的值可以用單個字節表示。如果模數被執行,這怎麼可能 $ 283 $ ?- 稍後在範例中的同一部分
{57} • {83}
計算為 $ x^{13} +x^{11} +x^9 +x^8 +x^6 +x^5 +x^4 +x^3 +1 $ - 這是 $ 11129 $ . 使用計算器,這似乎是錯誤的。它的出現 $ 11397 $ . 我錯過了什麼?- 在第 4.2.1 節中(乘以 $ x $ )它說 - 它遵循乘以 $ x $ (即,
{00000010}
或{02}
)可以在字節級別實現為左移和隨後的條件按位異或{1b}
。又來了,我不明白。據我了解,它應該是左移,然後是模數
{01}{1b}
。有人可以向我解釋一下嗎?
011b
是多項式的十六進製表示 $ m(X) = X^8 + X^4 + X^3 + X + 1 $ (所以你永遠不應該把它當作一個整數)。該多項式在有限域中具有係數 $ \mathrm{GF}(2) $ ,這只是說它的係數在 $ {0,1} $ :hex | 0 1 1 b bin | 0000 0001 0001 1011 x^n | 8 7654 3210
-
1
位表示哪個功率的係數為 $ 1 $ . 當你取任何多項式並將其除以 $ m(x) $ , 有度 $ 8 $ ,餘數的度數小於 $ 8 $ ,所以使用與上面相同的表示方案,它可以用一個字節表示。 2.57
並且83
同樣是使用相同方法的多項式的表示,我將留給您檢查當您將這兩個多項式相乘時,您確實找到了斷言的結果。 3. 你的理解是正確的,這兩個操作是一樣的。但同樣,請記住,您正在研究多項式,而不是整數。*編輯:*了解 AES 操作的對象與您習慣的對象之間的區別很重要。當你想到一種只佔用一個字節的數據類型時,你會想到整數 $ {0,\dots,255} $ 使用通常的加法和乘法模數 $ 256 $ . 這些數字的問題在於,雖然它們具有我們習慣於進行加法的所有優良特性,但它們在乘法中卻失敗了:您可以取兩個非零數(哪些數?),將它們相乘,然後得到 $ 0 $ !
這對 AES 來說是不可接受的:它需要一個“不錯的”乘法運算,這意味著當您將兩個非零元素相乘時,您想要獲得一個非零元素。這個奇怪的多項式系統 $ m(X) $ 正是這樣做的。