不平衡 feistel 密碼是否總能提高安全性?它是否提高了安全性?
因此,根據維基百科,不平衡 feistel 密碼提供了更大的可證明安全性。具體來說,他們指出:
Thorp shuffle 是不平衡 Feistel 密碼的一個極端情況,其中一側是單個位。這比平衡的 Feistel 密碼具有更好的可證明安全性,但需要更多輪次。
這是論文“如何在小域上加密消息 - 確定性加密和 Thorp Shuffle ”的摘要。
請原諒我要問的問題的簡單性,但作為一個業餘愛好者,對我來說這似乎違反直覺。如果對於每個明文塊,我們有:
$$ L_{i+1} = R_i $$ 和
$$ R_{i+1} = L_i \oplus F(R_i, K_i) $$ 圓形函式在哪裡
F
,那麼也不約束 $ L_i $ 或者 $ R_i $ 到單個或更少的位(假設哪一側更小,它們將在下一輪交換)意味著每個xor
更容易反轉,因為一次只更改單個位(我們可靠地知道這一點,因為算法不是秘密…)?這不會使密碼更容易受到側通道攻擊,本質上變得更像流式操作嗎?那麼,事實是否如此,如果是,為什麼?是否應該避免不平衡 feistel 密碼的任何特定實現 - 例如,是否存在大於單個位的數據大小的最佳大小?
實際上,您連結到的文章並沒有說平衡的 Feistel 密碼不如不平衡的密碼安全。它說不平衡的 Feistel 密碼的安全性更容易證明,只要有足夠的輪數。
Luby 和 Rackoff在 1988 年表明,只要輪函式“足夠隨機”,只有 4 輪的平衡 Feistel 方案是“完全”安全的。這值得澄清:Luby 和 Rackoff 使用n位塊,並且他們的結果至少支持 $ 2^{n/4} $ 查詢(允許攻擊者送出最多該數量的塊來加密或解密到一個知道密鑰的黑匣子,但他仍然無法以不可忽略的機率預測另一個值的加密或解密)。Maurer 和 Pietrzak,然後是 Patarin,後來表明,通過更多輪次,一個人可以盡可能接近 $ 2^{n/2} $ 限制(6 輪就足夠了,正如 Patarin 所展示的那樣)。(當然,“足夠隨機”的輪函式是存在不明確的理想對象;現有的基於 Feistel 的密碼使用更快的函式,當然不是“足夠隨機”,並通過增加更多輪來彌補。)
通過使n足夠大, $ 2^{n/2} $ 足夠大以實現足夠的安全性(例如使用 $ n = 256 $ ).
Morris、Rogaway 和 Stegers 研究加密非常小的塊的問題;因此,他們不能使 $ n $ “足夠大”。他們必須應付一個小 $ n $ . Feistel 方案(平衡與否)的最大理論安全性為 $ 2^n-3 $ 查詢(有 $ 2^n $ 可能的塊值;如果攻擊者知道所有保存兩個的加密,那麼他可以 100% 準確地猜出剩下的兩個,因為 Feistel 方案總是偶排列;這是 Feistel 密碼唯一已知的結構弱點)。作者說得很清楚(第 4 頁結尾),沒有已知的對 Feistel 密碼的實際攻擊具有足夠的輪次,即使是小塊,所以 $ 2^n-3 $ 在實踐中達到了安全限制。但他們想要的不僅僅是實際的安全性,他們想要經過驗證的安全性。安全證明的工作原理是假設輪函式在資訊理論上是安全的,並查看整個密碼在該假設下如何站起來。平衡 Feistel 密碼的問題在於,這樣的證明無法超越 $ 2^{n/2} $ .
另一方面,使用不平衡密碼和多輪(遠遠超過 6 輪;文章中的數字大約為 64 輪),可以獲得接近於 $ 2^n $ . 這並不意味著非平衡 Feistel 密碼“更安全”,只是資訊論工具更容易用於證明非平衡 Feistel 密碼的安全性。並且單個不平衡輪肯定不比單個平衡輪更安全;恰恰相反:安全方面,一個不平衡的回合很糟糕。但是,如果您積累了足夠多的此類輪次,則可以將安全證明提高到更高的水平。