對於不能有效可逆的分組密碼有什麼好處?
PRP 的經典定義包括有效的可逆性。
鑑於許多現代密碼模式(基於 CTR,例如 GCM)僅使用分組密碼的前向方向,似乎定義中的有效可逆性部分實際上對於實際目的而言並不是必需的。
這樣的放鬆對我們有什麼好處嗎?即是否有實用的 PRP 結構可以在正向有效計算但不能在反向計算?哪些在前向方向上比目前具有同等安全性的分組密碼更有效?
我會爭辯說,對於許多密碼學家來說,這個論點更進一步。鑑於塊密碼流模式有利於批量加密,是否需要可逆性?如果按照這一構想推理,就會明白為什麼流密碼重新流行起來,ChaCha20 就是一個明顯的例子。儘管 ChaCha20 從 512 位狀態生成 512 位輸出並使用簡單的計數器更新狀態(很像 CTR 和 GCM 模式),但該過程(我們認為)不可逆。確實,ChaCha20 是一個非常高效的設計(假設硬體支持 32 位字的高效添加)。
請注意,對於 AES 的許多實現,解密輪函式的效率低於加密輪函式,因為反轉
MixCol
過程涉及更多計算。
PRP 是偽隨機排列,我們希望它們與隨機排列沒有區別。AES 和所有分組密碼都應該是 PRP。排列意味著有一個逆,它們被設計成有一個並且確實有一個有效的。
我們需要一種分組密碼的操作模式,我們離開了 CBC,因為儘管它具有 Ind-CPA 安全,但發生了許多攻擊。目前,所有 TLS 1.3 密碼在內部都使用 Ind-CPA 安全 CTR 模式(TLS 1.3 密碼套件不止於此,它們都是帶有 Authenticated Data 的 Authenticated Encryption 模式)
這樣的放鬆對我們有什麼好處嗎?
它給了我們很多機會。我們不需要將自己限制在 CTR 模式中的 PRP——它已經為偽隨機函式(PRF) 設計了;CTR 模式不需要反函式。使用 PRF,我們可以使用大量不需要逆函式的函式(有 $ 2^n! $ PRP 和 $ (2^n)^{2^n} $ 用於 n 位分組密碼的 PRF。甚至我們也可以像在Salsa中那樣採用雜湊函式並將其轉換為 CTR 加密。我們也可以以幾乎零成本設計一個關鍵時間表。
在 CTR 模式下使用 PRP 會導致長消息區分符,我們可以通過使用 PRF 來消除這種情況。如果我們在 CTR 模式下使用 PRP,那麼由於 PRP-PRF 切換引理,我們需要限制加密塊的數量。
CTR 模式也不需要填充,因此它們不會受到填充預言攻擊。
ChaCha20 和 Salsa20 是著名的例子,它們具有零密鑰調度成本、對 CPU 友好的 ARX 設計。它們具有內置的 CTR 模式,並且在軟體方面非常快。