Stream-Cipher

如果重複使用密鑰,是否可以在 One time pad 中獲取密鑰?

  • January 1, 2019

在一個時間墊中,如果$$ \text{cipherText1} \oplus \text{cipherText2} = \text{plainText1} \oplus \text{plainText2} $$那麼是否可以通過 2 cipherText 和 plainText 的 X-or 找出密鑰?

嚴格按照要求回答問題:

是否可以通過 2 cipherText 和 plainText 的 xor 找出密鑰?

的,在Ciphertext = Plaintext XOR Pad的 One Time Pad 中,計算Ciphertext和匹配的Plaintext的 XOR 會顯示Pad(“密鑰”)。這不是一個安全問題,因為這需要明文知識,並且相應的Pad從未在 One Time Pad 中重複使用,正如其名稱所述。

對於通過比較/異或密文來查找墊的不同問題,請參閱其他答案

注意:將Pad稱為“key”是不恰當的,因為通常一個 key 可以重複使用,而 OTP 的 pad 不能。出於這個原因,OTP 與密碼的現代定義不匹配,這意味著能夠使用相同的密鑰對多個消息進行加密。

不,即使一次性的便箋簿被錯誤地重複使用,僅通過密文對比也無法直接找出便箋簿的內容。

事實上,由於使用同一個一次性密文加密的兩個密文的 XOR 是獨立於密文的,因此知道它實際上不會給您關於密文的額外資訊。

但是,如果使用同一個 pad 加密的兩個(或多個)明文消息的內容不是完全隨機的,您可以通過檢查它們的 XOR來猜測最可能的消息內容。這個解決方案永遠不會是唯一的(事實上,不同的可能解決方案與不同的 pads 一樣多),但通常一個解決方案顯然看起來更合理(例如,是明智的英文文本,而不是隨機垃圾) 比其他人。一旦你正確猜出了至少一條消息的明文,你當然可以將它與相應的密文進行異或運算來獲得密碼。

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