One-Time-Pad

根據現代定義,一次性墊是一種安全系統嗎?

  • July 2, 2015

偶爾我會聽到人們說一次性墊“沒用”甚至“壞了”。

“現代密碼學知道更多的安全定義,在其中一些定義下,一次性密碼完全被破壞了。” –我們如何知道密碼原語不會突然失效?

One time pad:為什麼在實踐中沒有用?

“我們不需要(也不應該)使用一次性墊”

“一次性密碼本不是一種語義安全的加密算法。”

“一次性墊在理論上可能是安全的,但在實際意義上它們並不安全。” ——布魯斯·施奈爾

這些“現代……安全定義”具體是什麼,一次性密碼本究竟是如何被徹底破壞的?

現代安全已經超越了僅僅關注被動攻擊(其中攻擊者只是一個試圖了解所說內容的被動竊聽者);攻擊者通常被認為能夠並且願意發起各種類型的主動攻擊(攻擊者可以修改或偽造消息以實現某些目標)。一次性墊極易被修改;如果攻擊者知道一條消息說“支付羅伯特100,000美元”,他們可以簡單地將其更改為“支付約瑟夫999,999美元”。它們與所有流密碼共享此屬性;如果您的密文是明文異或密鑰流,那麼知道的攻擊者 $ P_1 $ 和 $ C_1 $ 可以輕鬆計算 $ C_2=C_1\oplus (P_1\oplus P_2) $ , 解密為 $ P_2 $ . 解決這個問題需要某種方式來驗證消息的真實性,而一次性便箋本不會(也不會嘗試這樣做)。這是由消息身份驗證程式碼 (MAC) 或結合身份驗證和加密的密碼系統(如 AES-GCM)提供的。

此外,許多安全屬性實際上並不適用於 OTP,因為這些屬性類似於“給定使用密鑰加密多個消息的能力,做 X”。

無用性更廣泛:即使您只需要保密,OTP 在可用性方面也存在嚴重問題。這是因為 OTP 密鑰必須與消息一樣長,並且必須秘密傳輸;當您只需要秘密傳輸一些資訊來加密很多東西時,密碼學最有用。OTP 僅與密鑰交換一樣安全,因此為了有用,必須在不依賴密碼學的情況下交換密鑰以確保安全(否則您無法獲得完美的安全性)。在少數情況下它們運作良好(例如親自分發給即將執行任務並且需要通過不安全的渠道將東西發回給您的人),但它們很少見。

fkraiem 的回答是正確的,但我認為需要更多的上下文。

一次性墊(理論裝置)沒有被打破。但是基於一次性便箋簿的現實世界系統在實踐中失敗了。

過去,基於一次性便箋簿的系統失敗了,因為密鑰材料被重複使用,要麼是錯誤的,要麼是因為發送者用完了新的密鑰材料。

請記住,使用一次性密匙,密鑰至少需要與消息一樣長。

因此,現代密碼系統的設計使這個問題不再發生。他們使用一個短密鑰和一個隨機數(https://en.wikipedia.org/wiki/Cryptographic_nonce),並且在流密碼的情況下生成一個只要需要的密鑰流。

請注意,如果在密鑰流中發現循環或已使用所有可能的隨機數,則現代密碼系統理論上可能會發生相同的問題(用完密鑰流或兩次使用相同的密鑰流)。(在某些情況下,由於實施問題,確實如此。)為了防止這種情況,nonce 空間足夠大。不會發生 128 位隨機數空間的耗盡。

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