Aes

為什麼在 TLS 1.3 中刪除了 AES CBC?

  • September 27, 2020

我不太明白為什麼在 TLS1.3 中刪除了 AES CBC。

據我所知,CBC 是 AES 分組密碼最安全的操作模式(如果你可以這樣說的話)。

它只需要一個 TRND IV 並且沒有被破壞。如果您將它與體面的 HMAC 配對,我猜它至少和 AES-GCM 一樣安全。

那麼為什麼首選 AES-GCM 並且刪除了 CBC 支持呢?

簡短:TLS 協議上下文中的 CBC 模式存在安全問題,必須重新設計。

AES-CBC 模式結合體面的 HMAC 可以像 AES-GCM 一樣安全。然而,在實踐中發現安全地結合密碼和 MAC 說起來容易做起來難。此外,AES-CBC 模式所需的填充使事情變得複雜。

特別是在 SSL 和 TLS 協議的歷史中,由於濫用 CBC 模式或 CBC 和 MAC 的組合(例如 BEAST 和 Lucky13)而導致的安全漏洞由來已久。

在 Lucky13 攻擊(由 MAC-then-encrypt 引起的時間預言)之後,人們認為 TLS 應該改變操作的順序。更改操作順序會影響與先前實現的向後兼容性,因此畢竟認為僅切換到經過身份驗證的加密更實用。

除了安全方面,AES-GCM 相比 AES-CBC 和 HMAC 還有其他一些實際優勢:

  • 在大多數帶有硬體加速或 AES-NI 指令的平台上,AES-GCM 比帶有 HMAC 的 AES-CBC 快很多倍。這是因為 AES-GCM 被設計為更可並行化。
  • 隨機位的生成相對較慢。這也是 AES-GCM 擅長的地方。與 AES-CBC(在 TLS 1.1+ 中)相比,很少需要隨機位。
  • 平均而言,AES-GCM 不會像 AES-CBC、HMAC 和填充的等效組合那樣擴展消息的大小。

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