Encryption
更改一輪內的步驟順序是否會影響 AES 的安全性?
我試圖了解 AES(高級加密標準)的內部結構
一輪內的標準步驟順序:
- 替代字節
- 換行
- 混合列
- 添加圓鍵
替換字節、移位行和混合列滿足安全密碼所需的兩個最重要的屬性,即混淆和擴散
Substitute Bytes``Confusion
即,密文的每個二進制數字(位)都應依賴於密鑰的幾個部分。
Shift Rows
連同Mix Column
提供,Diffusion
即如果我們更改明文的一位,那麼(統計上)密文中的一半應該更改
Step 1
更改and的順序Step 2
不會有任何影響。但是我們可以在多大程度上改變其他步驟的順序呢?它是否會削弱 的安全性AES
,如果是,如何?
簡短的回答
改變操作順序不會削弱安全性 $ \mathop{AES} $ (也不會增加它)。
長答案
備註: While
ShiftRows
和SubBytes
是可交換的 ( $ f\ g : A \rightarrow A,\ f \circ g = g \circ f $ )。它們不是可交換的MixColumns
。因此,更改操作順序不會產生相同的結果。但這無關緊要,因為我們是從安全的角度來看的。輪函式內部的操作順序無關緊要。這可以通過觀察字節依賴性在輪函式的 2 次應用中的傳播來證明。
在這個分析中,我忽略了關鍵添加,因為這個操作可以放在所有操作之間的任何地方,只要進行一些調整。因此,我們可以看到差異的擴散與原始規範中的擴散相同。這個結果的主要原因是由於 Rijndael 中的強對齊。
他們的實現者在The Design of Rijndael的第 3 章和第 5 章中進一步解釋了這一點。