Tôi chỉ có thể nghĩ về một điểm yếu của AES-CBC trong TLS 1.1 trở lên, đó là Lucky Thirteen tấn công. Đây là một cuộc tấn công vào một cách được thiết kế kém để đệm các tin nhắn khiến nó đặc biệt dễ bị tổn thương đến một tấn công tiên tri đệm do sử dụng MAC-sau đó-mã hóa (với sơ đồ đệm khiến cuộc tấn công khá dễ dàng).
Cuộc tấn công ban đầu dựa vào việc có được một decryption_failed
cảnh báo khi phần đệm bị sai, đó là đã sửa trong TLS 1.1 bằng cách tiếp tục với một khóa phiên ngẫu nhiên do lỗi đệm (và việc triển khai TLS 1.0 cũng đã áp dụng biện pháp đối phó này). Tuy nhiên, việc triển khai TLS 1.2 ngây thơ tiếp tục dễ bị tấn công thông qua thời gian: điều mà kẻ tấn công cần biết là có bao nhiêu byte đệm chính xác và thời gian cần thiết để xử lý thông báo làm rò rỉ thông tin này trừ khi người triển khai rất cẩn thận .
Các phiên bản hiện đại của triển khai TLS chính thống bảo vệ chống lại Lucky Thirteen, vì vậy nhìn chung bạn có thể sử dụng bộ mật mã CBC một cách an toàn. Tuy nhiên, có một chi phí thực hiện cho biện pháp đối phó này: việc thực hiện về cơ bản phải xử lý tất cả các độ dài đệm có thể, trong đó có tới 256, sau đó kết hợp các kết quả. Xin lưu ý rằng các triển khai cũ hơn hoặc triển khai không được thiết kế để bảo mật cao vẫn có thể dễ bị tấn công.
Một số triển khai TLS (ít nhất là OpenSSL, GnuTLS và Mbed TLS) hỗ trợ phần mở rộng mã hóa-then-MAC mà hoàn toàn bảo vệ chống lại lỗ hổng này.
Trong mọi trường hợp, lý do duy nhất để sử dụng Bộ mật mã CBC là nói chuyện với các hệ thống cũ không hỗ trợ bộ mật mã AEAD (sử dụng GCM, CCM hoặc Chacha-Poly). Bộ mật mã AEAD nhanh hơn và ít gặp rủi ro bảo mật hơn. Thông thường, lý do bộ mật mã CBC vẫn tồn tại là vì lợi ích của các hệ thống có công cụ mã hóa không thể nâng cấp một cách hiệu quả (ví dụ: vì nó đã được chứng nhận và không ai muốn trả tiền để chứng nhận việc triển khai GCM hoặc CCM). Nếu lý do để tránh GCM và Chacha-poly là do khả năng tăng tốc AES, thì CCM sẽ tận dụng lợi thế đó và thường sẽ nhanh hơn bộ mật mã CBC (yêu cầu tính toán HMAC).
Bộ mật mã CBC đã bị xóa trong TLS 1.3 bởi vì chúng khó triển khai chính xác (và không thể triển khai với cả hiệu suất cao và tính bảo mật cao) và lý do duy nhất để giữ chúng là khả năng tương thích với các hệ thống cũ hơn. Với phiên bản giao thức mới hơn, không có lý do quan trọng nào để giữ chúng. Và bởi vì TLS 1.3 nhằm mục đích loại trừ tất cả các cơ chế mật mã khó thực hiện một cách an toàn, bộ mật mã CBC chắc chắn phải ra đời.