具有不同字節替換步驟實現的 AES
我已經嘗試回答這個問題已經有一段時間了。但是我仍然無法完全直覺地理解:
建議 AES 的新實現:
字節替換步驟將被以下函式替換: $$ s(b_0b_1b_2b_3b_4b_5b_6b_7),=,b_7b_0b_1b_2b_3b_4b_5b_6 $$
(循環右移一位)問題是:這種變化如何影響 AES 的安全性,需要多少對 (p,c) 才能成功攻擊?
注意:我理解替換步驟的目的是在字節級別減少輸入位和輸出位之間的相關性,並且上述實現削弱了安全性,但我不明白如何以及為什麼更深入..
如果這是 Sbox 的映射,那麼 $$ S(a\oplus b)=S(a)\oplus S(B), $$ 即,我們有一個線性Sbox。如果將兩個向量相加並移位,則結果與先移位然後相加的結果相同。
結合ShiftRows和MixColumns以及AddRoundKey階段,整個 AES 現在是線性的(嚴格來說是仿射的,由於 MixColumns 中的附加常數)。
**編輯:**更準確地說,如果明文甚至具有漢明權重,則需要額外的已知明文(全零明文),如評論中所指出的那樣。
這意味著,例如,如果您可以發起選擇的明文攻擊,其中只有 $ 128 $ 明文 $$ e_1=(1,0,0,\ldots,0,0),\ e_2=(0,1,0,\ldots,0,0),\ e_3=(0,0,1,\ldots,0,0),\ \vdots\ e_{127}=(0,0,0,\ldots,1,0),\ e_{128}=(0,0,0,\ldots,0,1), $$ 與他們相應的密文,說 $ f_i=E_K(e_i) \in {0,1}^{128}, $ 足以獲得映射(對於給定的密鑰 $ K $ )。這是因為任何明文都只是這些明文的線性組合。例如 $$ (p_1,\ldots,p_{128})=\sum_{i=1}^{128} p_i e_i=\sum_{i=1:p_i=1}^{128} e_i $$ 對應的密文是 $$ \sum_{i=1:p_i=1}^{128} f_i. $$ 因此,您可以通過求解線性方程組直接從密文中獲得任何未知的明文。由於 AES 在設計上對於固定密鑰是雙射的,因此這將起作用。
也許我可以問我的老師KIRIL😜