One-Time-Pad
具有固定明文的 OTP
我剛剛了解了OTP,它如何使用 XOR,以及如果密鑰是隨機的,它是如何安全的。
但是,當相同的明文再次與新密鑰一起使用時會發生什麼?
$ c_1 = k_1 ⊕ p $
$ c_2 = k_2 ⊕ p $
$ c_3 = k_3 ⊕ p $
$ c_n = k_n ⊕ p $
這安全嗎?
如果密鑰都是獨立且接近均勻隨機的,那麼選擇明文攻擊者在 IND-CPA 博弈中的優勢幾乎為零。
在IND-CPA遊戲中,攻擊者可以詢問他們選擇的任何明文的密文(CPA,Chosen-Plaintext Attack),然後送出兩條挑戰消息,並在給定其中一條挑戰消息的密文的情況下贏得遊戲如果他們能分辨出哪一個(IND 表示無法區分)。進攻方的優勢是他們贏得這場比賽的機率高於 1/2。這是未經身份驗證的密碼的標準安全概念。
當然,這只會阻止可以聽但不能觸摸消息的竊聽者。MITM 可以輕鬆地將一種密文轉換為另一種密文,即使在給定密文的情況下他們無法了解有關明文的任何資訊,也可以在不引起任何警報的情況下偽造消息——他們可能先驗地知道明文將是什麼,並可能想用某種東西替換它別的。
因此,對於涉及網際網路的應用程序而言,這通常不夠安全:您需要一個經過身份驗證的密碼,例如附加一次性身份驗證器的一次性密碼,這是 AES-GCM 和 NaCl 的模型crypto_secretbox_xsalsa20poly1305 使短密鑰變得實用,偽隨機擴展為消息長度填充。