從單個偽隨機排列構造密碼
1997 年的一篇論文從單個偽隨機排列構造密碼提出了一種密碼,其中消息塊在應用 F 之前與 K1 進行異或$$ a single random permutation $$,結果與 K2 異或。作者指出*,我們證明生成的密碼是安全的(當排列是隨機或偽隨機時)*
我發現了一篇論文Limitations of the Even-Mansour Construction描述了它的嚴重限制,但它仍然引發了一些問題:
- 有什麼方法可以使類似簡單的密碼安全(即使在理論上)?如何?
- 重複更多輪次是否可以使其免受 DCA 攻擊?
- 是否有類似的密碼按現代標準“有用”?
Even-Mansour 並沒有你說的那麼嚴格。Even-Mansour 攻擊者的成功機率已在 各種 論文中顯示為充其量
$$ \text{Adv}^{SPRP}{EM{K_1, K_2}}(q, p) \le \frac{2qp}{2^n},, $$ 在哪裡 $ q $ 是您對密碼進行的黑盒查詢的數量(閱讀:已知或選擇的明文), $ p $ 您對排列進行的查詢次數(閱讀:bruteforce),以及 $ n $ 排列的位寬。相同的安全界限適用於單鍵變體 $$ \text{SEK}_K(x) = P(x \oplus K) \oplus K. $$ 現在,這意味著,與最佳分組密碼不同,無論您收集多少數據,您仍然期望 $ 2^n $ 計算努力來打破它,在這里通過收集 $ q $ 明文的努力歸結為 $ 2^n/q $ . 現在,回答您的問題:
- Even-Mansour已經是安全的,只要您充分處理上述注意事項。例如,如果您將排列選擇為 512 位寬,那麼您無需擔心任何現實的攻擊者。
- 是的,迭代幾個排列確實可以為您提供更好的安全性。例如,密鑰交替密碼(或迭代的 Even-Mansour)
$$ \text{KAC}{K_0, K_1, K_2,\dots,K_t}(x) = P_t(P_1(x \oplus K_0) \oplus K_1) \dots) \oplus K_t $$ 實現更好的安全性 $$ \text{Adv}^{SPRP}{\text{KAC}_{K_0, K_1, K_2,\dots,K_t}}(q,p_1,p_2,\dots,p_t) \le \frac{4^tqp_1p_2\dots p_t}{2^{nt}},, $$ 快速收斂到最優 $ t $ 成長。
- 如上所示,迭代 Even-Mansour 是加強密碼的有效方法。然而,在實踐中,擁有多個獨立的排列和密鑰是不方便的,因此您會看到使用單個排列和多個輪密鑰的設計,每個輪密鑰都派生自一個主密鑰。AES 就是這樣一種設計,其公共排列(即輪函式)比隨機排列弱,但計算效率高。這是一個非常成功的設計原則,您會發現許多其他密碼都遵循相同的策略。