Vernam(一次性密碼)密碼有用嗎?
我的職業是程序員。我不太了解密碼算法是如何實現的,甚至我從哪裡開始,我也不知道密碼分析,但是當我從事區塊鏈技術工作時,我知道如何使用密碼算法。有人可能會說我有一個短暫的興趣。
引起我好奇心的一件事是 Vernam 或 One Time Pad 密碼,因為它可能對許多密碼學新手也有影響。據說 100% 在數學上是不可能破解的,而且實現起來非常簡單。
問題似乎與使用的鍵有關。具體來說:
- 不應重複使用密鑰
- 鍵序列不應重複
- 密鑰需要以某種方式共享
其他加密算法解決(或不遭受)這些問題,但是,如果我們能找到一種合適的、安全的方式來生成和共享唯一密鑰,那麼 Vernam 密碼會變得有用嗎?
在這方面還有什麼需要考慮的嗎?
如您所知,一件事是否有用取決於上下文。如果您餓了,帶有 CAMELLIA256 子密鑰的 4096 位 RSA 密鑰有用嗎?不是真的,除了也許作為思考的食物。
就在此時此刻,世界各地嚴肅且可能很危險的人正在使用一次性衛生巾。OTP 有效。使用一次性密文加密的密文始終可以在 HF 無線電中聽到。有用嗎?當然。問題是:“為誰?”
為什麼一次性便箋簿有用?你沒有隨身攜帶很多設備。紙張不會留下電子痕跡。紙張燃燒。小墊子很容易隱藏。很難將 kleptotrojan 放入鉛筆中。紙很便宜。如果密鑰是真正隨機的、密鑰受到保護並且密鑰與消息一樣長,那麼 Vernam 密碼就是完美的密碼。當您的設備停止工作時,您可以拿出這本小書並想辦法傳遞您的資訊——它的內容將保持私密。您實際上可以看到密鑰被破壞。當你摧毀它時,它就真的消失了。關於使用一次性便箋簿的一切都很容易理解。一次性墊不需要電。如果你失去了你的墊子,那可能會很糟糕,但你不必在所有人面前撤銷它。所有這些聽起來都非常有用,對吧?
所以,直接回答你的問題,“如果我們能找到一種合適的、安全的方式來生成和共享唯一密鑰,那麼 Vernam 密碼會變得有用嗎?”——是的,它已經對全球某些人非常有用,但他們不是在談論它。
“這方面還有什麼需要考慮的嗎?”
是的。
- 並不是說“不應該”再次使用密鑰,就好像它是一個選項一樣。它只能使用一次。
- 密鑰必須至少與明文一樣長。
- 密鑰必須是真正隨機的才能完美。
- 必須保護密鑰免受損壞或洩露。
- 密鑰必須已通過安全方式共享。
需要注意的一件重要事情是 OTP 不提供完整性保護。這非常重要,因為通常有很多已知的明文,如果沒有完整性保護,攻擊者可以隨意更改。
例如,給定 HTML 中的文件結構,對於具有對 OTP 加密的 HTML 數據流的寫訪問權限的攻擊者來說,注入一些惡意 javascript 並不難。
但是,我確實想專注於您的觀點之一
密鑰需要以某種方式共享
如果我們能夠以理論上安全的資訊方式解決這個問題,使得 OTP 變得有用/實用,為什麼我們不直接使用任何方式來傳輸加密消息?這會完全否定 OTP 的任何用處,不是嗎?