Cryptanalysis

這是 Feistel 網路的結構性弱點嗎?

  • September 25, 2013

我正在閱讀有關Feistel 網路的大量資訊。不久前我想到了一些我以前沒有意識到的事情,即在任何 Feistel 結構中,都有一些明文在沒有與前一個輪函式的輸出混合的情況下從未作為輪函式的輸入給出。

例如,在第一輪平衡的 Feistel 網路中 $ L_0 $ 與 $ F_k(R_0) $ 要得到 $ R_1 $ . 因此, $ L_0 $ 永遠不會單獨用作輸入 $ F_k $ ,這可能違反密碼的擴散特性。

是否有可能繞過這個限制,也許通過修改第一輪?

我不認為這是 DES 或 Blowfish 中的真正漏洞,記錄在案。相反,我想知道這是否可以用來在遊戲中針對此類密碼的減少輪次變體製造成功的攻擊者。

如果這樣的網路只有一輪,那麼您可能有一個合理的擔憂。這就是為什麼需要至少三輪的原因,以便 L 中的每一位都可能影響 L 中的所有其他位(通過第二輪中的 R)。

這不是結構性缺陷,因為假設了多輪。更改此輪結構將意味著它不再是 Feistel 網路,並且您將失去每一輪的可逆性(當密鑰已知時)。

不,這不是 Feistel 網路的結構性弱點。例如,我們知道它不會損害擴散特性。實際上,我們知道這不是結構性弱點。我們怎麼知道?因為我們有 Feistel 網路的安全證明(在某些條件和假設下)。這些證據表明,Feistel 方法不存在結構性缺陷。

安全性證明從不依賴於聲稱“每個輸入位都直接用作某些 F 函式的輸入,而沒有與任何其他 F 函式的輸出混合”。事實證明,這種情況對於安全來說並不是必需的。我不確定你為什麼認為這個條件是必要的(這讓我更難幫助你理解為什麼這不是問題),所以我只能說:我們知道這個條件對於安全來說不是必需的。

因此,無需對 Feistel 框架進行修改。方法很好。這裡沒有實際的漏洞。

引用自:https://crypto.stackexchange.com/questions/10555