Encryption
用密鑰異或隨機字節的弱點
A 方生成 16 個(高質量)隨機字節,並與 16 字節密鑰進行異或,然後將數據傳輸到 B 方,在那裡使用相同的密鑰恢復原始的 16 個隨機字節。
有沒有一種方法可以通過截取雙方之間的異或數據來猜測密鑰?
如果預共享密鑰只使用一次,那麼它就無法解密(我們甚至不需要假設消息是隨機的)。因此,這將是一次性的,並且在資訊理論上是安全的,即使面對具有無限計算能力的對手也是如此。
但是,如果我們用另一個隨機消息和相同的密鑰再次執行此操作,攻擊者可以簡單地異或兩個密文並獲得兩個明文的異或。這已經是嚴重的洩漏,但如果這兩個純文字是隨機選擇的,那麼恢復它們可能是一個挑戰。
當純文字不是隨機的時,有幾種技術攻擊這樣的兩次墊,其中領先的是嬰兒床拖。
對於隨機純文字,問題是:接下來你將如何處理它們?儘管僅發送隨機數據本身並不是非常有用,但如果以後再次使用它,這可能會創建一個攻擊向量,其中知道兩個純文字的 XOR 可能很有價值。
在評論中,您建議將明文用作 AES GCM 的密鑰,因此它打開了一個理論上的攻擊向量,我們知道兩個密鑰是相關的,並且可能還會有這些相關密鑰的明文-密文對。我不知道對全長 AES 的實際相關密鑰攻擊,但它肯定會削弱密碼。
主動攻擊者可以更進一步,在第一次這樣的基於 XOR 的密鑰交換之後,將第二個密鑰設置為與第一個具有任意關係的密鑰。