Stream-Cipher
流密碼是否提供完美的保密性?
從這裡的WAR10CK :
如果我確實使用 RC4 或 AES-CTR 創建了一台機器並讓 TRNG 不斷地向它提供穩定的隨機位流。如果在每條消息後清除比特流,它是否滿足 OTP 的完美保密要求?
首先,永遠不要使用 RC4。
其次,這取決於您如何使用該流…
如果您使用 AES-CTR 作為流密碼(在此處查看更多資訊),您將指定一個密鑰 $ K $ (和一個隨機數 $ IV $ )。AES 的 CTR 模式將生成一個比特流,其長度與消息匹配。所需要做的就是將它與消息進行異或。
為了破譯。一個人需要鑰匙 $ K $ (或隨機數 $ IV $ ),重新生成流和 XOR 以檢索明文。
如果發生蠻力攻擊,它將在 nonce + 鍵上(它的大小小於消息)。
另一方面,如果:
- 你要提前生成一個非常長的真正隨機位流,
- 通過安全的方式將其發送給您的合作夥伴,並且
- 僅使用該流的一部分為他加密消息(不重複使用生成的流)。
那麼你正在做的是 Vernam Cipher,而不是流密碼(除非我錯了)。這就是他們在 USA 和 URSS 之間交換消息的方式(交換隨機位磁碟以供一次性使用)。是的,這將是非常安全的。
完美保密的要求之一是密鑰空間必須與消息空間具有相同的大小。因此密鑰和消息必須具有相同的長度。在OTP或 Vernam Cipher 中,就是這種情況。在流密碼中,鑑於密鑰用於生成長度更大的流,它不滿足完美保密要求(但仍然相當安全)。