Cbc

CBC模式下的一個時間墊?

  • May 31, 2015

我一直在尋找在 OTP 中使用 CBC 模式是否更安全,但我找不到任何讓人感到悲傷的地方,因為它更安全。

問題: OTP 中的 CBC 模式是否更安全?

因為我一直在閱讀諸如“ https://stackoverflow.com/questions/22212407/how-to-alter-cbc-encrypted-text-to-change-the-message ”之類的文章,我一直想知道它是否使 OTP 更多保護該攻擊。

例如,假設您有一條消息:“應該移動 100 美元”。然後你用 OTP 加密它。然後每個人都可以只取第一個字元“1”並將其更改為 9,通過對密文中的 1 進行異或運算,然後與您獲得的密鑰異或“9”。

但是,如果您將其置於 CBC 模式下,是否可以使其免受此類攻擊?(已知明文攻擊和選擇明文攻擊)。

例如,假設您有一條消息:“應該移動 100 美元”。然後你用 OTP 加密它。然後每個人都可以只取第一個字元“1”並將其更改為 9,通過對密文中的 1 進行異或運算,然後與您獲得的密鑰異或“9”。

您所描述的是如果攻擊者通過中間人攻擊在密文中引入更改會發生什麼。這種攻擊不受 OTP 保護。OTP 僅提供機密性,而不提供完整性和真實性。要添加完整性和真實性,您需要在密文中添加消息驗證碼或 MAC。

不幸的是,MAC 不會提供完美的完整性或真實性。在實踐中,這並不重要——例如——HMAC 非常安全。然而,它不能像 OTP 一樣被*證明是安全的。*AES 等密碼具有相同的屬性;它們相當安全,但無法證明它們是安全的。通常,它們被認為足夠安全,並且比 OTP 更實用。

OTP 不會傳播引入密文的錯誤。CBC 確實傳播錯誤。如果您可以可靠地檢測到此類錯誤,那麼您將獲得完整性保護。然而事實並非如此:

  • CBC 錯誤傳播局限於目前塊和下一個塊的單個位;
  • CBC解密總是成功,你只是得到不正確的明文;
  • 如果明文是填充消息,則填充可能會觸發填充錯誤,但它也可能 - 偶然 - 創建有效的填充方案;
  • 如果明文是填充消息,則可能會應用明文/填充 oracle 攻擊,這不僅會破壞完整性,還會破壞機密性(使您無法獲得任何保護)。

現在我們不太關心錯誤傳播。我們在 IV 和密文上應用 (H)MAC,或者應用經過身份驗證的操作模式(AEAD 密碼),例如 GCM。在這種情況下,如果對 IV、密文或身份驗證標籤進行任何更改,身份驗證標籤的驗證將失敗。

CBC 操作模式是為密鑰分組密碼定義的。但是 OTP 不是分組密碼,因此 CBC 不能直接應用於它。在 CBC 中,對每個明文塊執行分組密碼。由於您永遠不應該將密鑰重複用於一次性密碼,因此 CBC 不能適用於 OTP。

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