Aes
為什麼在 TLS 1.3 中刪除了 AES CBC?
我不太明白為什麼在 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 和填充的等效組合那樣擴展消息的大小。