Keys
為什麼 Feistel 密碼需要圓形密鑰?
查看 Feistel 密碼的設計,他們使用了一個輪密鑰列表,這些密鑰是使用相關分組密碼的密鑰調度從主密鑰生成的。一些分組密碼需要這個來防止重複,但是為什麼 Feistel 網路需要它呢?
如果 $ F $ 是一個很好的 PRF,那麼在前幾輪之後輸出應該與隨機無法區分。在隨機預言機模型下,人們會期望 $ L_0 $ 在第一輪之後是偽隨機的,那麼 $ R_0 $ 在此之後立即成為偽隨機。繼續這樣做不應該在合理的時間內讓你回到明文。
所以我的問題是為什麼在 Feistel 網路中使用輪密鑰而不是使所有輪密鑰都相同?我的推理有什麼問題嗎?
迭代密碼需要輪次之間的可變性來抵抗所謂的滑動攻擊。阻止這種攻擊的一種常見方法是使用密鑰計劃為每一輪生成不同的輪密鑰。
滑動攻擊通過在一個輸入明文和對其他明文進行一輪加密後的中間值之間找到衝突來利用密碼的重複輪次。這種碰撞給出了一個“滑動對”,並為攻擊者提供了兩個已知的輪函式輸入/輸出對,在許多情況下這足以恢復至少部分密鑰。
在這個問題中,我們有一個平衡的 Feistel 密碼,其中每一輪都使用相同的輪函式和密鑰。由於生日悖論,我們希望找到一對 $ 2^{n/4} $ 選擇明文或 $ 2^{n/2} $ 已知明文,破解密碼。