OTP - 為什麼不重用密鑰?已編輯!
這聽起來可能很愚蠢,但為什麼在一次性鍵盤上兩次使用相同的密鑰是不好的/不安全的?
**問題:**為什麼以及如何使用兩次密鑰使其不安全。(在一次性墊中)。
**編輯:**我已經閱讀了“可能”重複的內容,但它們與這個問題的觀點不同。
編輯:但是如果我使用額外的密鑰呢?重複使用的密文可以保存嗎?我們說,如果你有一個明文 (5) 和一個密鑰 (6),你會做6 + 5 + 127 mod 127來獲取密文,下次你將再次使用密鑰,但有額外的密鑰,額外的密鑰將是添加的鍵完全一樣(6 + 5 + “extra key” + 127 mod 127)。每次加密文本時,密鑰都是相同的。您加密的每個字元的額外密鑰都相同,但每次傳輸都會更改。
那這樣安全嗎?
首先,如果您重複使用密鑰,您將不再將其稱為一次性鍵盤。
其次,只有當密鑰與消息一樣長時,才能證明 OTP 的安全性。(如果您重用密鑰,情況就不會如此)第三,OTP 通常使用 XOR 操作來組合密鑰和消息。如果密鑰從未被重複使用,那麼您是安全的,但如果攻擊者可以發起已知的明文攻擊,他可以獲得您的部分密鑰流並解密使用這部分密鑰流加密的任何內容。
第四,一旦您開始重複密鑰流,攻擊甚至可以注意到僅在密文中進行攻擊,因為他可以簡單地對兩個密文進行異或( $ c_1=k\oplus m_1 \wedge c_2=k\oplus m_2 \Rightarrow c_1\oplus c_2 = k\oplus k\oplus m_1 \oplus m_2 = m_1 \oplus m_2 $ ) 對此,攻擊者可以進行簡單的頻率分析。
編輯回答編輯:
即使在您編輯之後,該方案仍然是易碎的。觀察以下等式成立(我省略了 (mod n)):
- $ m_1+k_1+IV_1=c_1 $ (第一條消息,第一封信)
- $ m_2+k_1+IV_2=c_2 $ (第二條消息,第一個字母)
- $ m_3+k_2+IV_1=c_3 $ (第一封信,第二封信)
- $ m_4+k_2+IV_2=c_4 $ (第二條消息,第二封信)
現在觀察您可以製定以下方程式:
- $ c_2-c_1=(IV_2-IV_1)+(m_2-m_1) $
- $ c_4-c_3=(IV_2-IV_1)+(m_4-m_3) $
最後,您可以建構關係: $ (c_4-c_3)-(c_2-c_1)=(m_4-m_3)-(m_2-m_1) $ .
現在你們之間的關係很好 $ c $ 和 $ m $ 你可以分析你收集的數據,看看你在頻率分析方面做得如何(同樣,這只是密文,已知明文會更容易)
編輯 2 以回答重新制定的問題(評論):
即使在您編輯之後,該方案仍然是易碎的。觀察以下等式成立(我省略了 (mod n)):
- $ m_1+k+IV_1=c_1 $ (第一條消息,第一封信)
- $ m_2+k+IV_1=c_2 $ (第二條消息,第一個字母)
- $ m_3+k+IV_2=c_3 $ (第一封信,第二封信)
- $ m_4+k+IV_2=c_4 $ (第二條消息,第二封信)
現在觀察您可以製定以下方程式:
- $ c_2-c_1=(m_2-m_1) $
- $ c_4-c_3=(m_4-m_3) $
現在您可能會看到,這與上述 XOR 構造的問題完全相同。您可以再次執行頻率分析以僅破解此密文或使用此關係將其破解為已知明文。