Block-Cipher
一次性修改公鑰
讓 $ k $ 由隨機生成的 $ n $ 位串,和 $ m $ 一個 $ n $ 位消息。然後放 $ c = m \oplus k $ 是一次性墊,非常安全。現在假設發送者和接收者想要共享更多消息:那麼他們可以公開選擇一個隨機的 $ n $ 位串 $ b $ ,然後把 $ k’ = b \oplus k $ 他們獲得了一個新的隨機密鑰,他們可以再次使用它來加密一條新消息 $ m’ $ 完全保密。
我想知道為什麼不使用這樣的密碼?我能想到的唯一原因是,如果攻擊者獲得一條明文消息,他們可以解密所有過去和未來的顯然不好的消息,因此沒有使用它的原因。我失踪還有其他原因嗎?
此外,這不能用於創建隨機位生成器嗎?也就是說,種子是隨機的 $ n $ 位串,公知的生成器將異或 $ k $ 隨機但為公眾所知 $ n $ 帶有種子的比特串 $ k $ , 生成一個隨機的長度序列 $ kn $ . 自然地,我假設這不是一個好的隨機數生成器的原因是,同樣,如果攻擊者了解內部狀態,他們可以獲得所有過去和未來的位。有沒有其他原因這不好?
正如@kelalaka 指出的那樣,OTP 不是“差異安全”。此外,它與所有通過密鑰流的模組化添加工作的加法密碼一樣,具有密鑰流和明文具有對稱角色的特性。
我的意思是您建議添加字元串 $ b $ 到關鍵 $ k $ 本質上等同於在 VENONA 中重用明文導致的弱點。
常數 $ b $ 對不同的攻擊可見,例如嬰兒床拖動。在這種情況下,密鑰流存在差異化缺陷。