Điểm:6

TLS 1.3 - Tại sao không có chế độ mã hóa-sau-MAC nào được chỉ định?

lá cờ cn

Tôi đã vò đầu bứt tai một lúc tại sao TLS 1.3 không bao gồm bất kỳ chế độ mã hóa-sau-MAC (EtM) nào. Tất cả các sự cố trước đây trong TLS đều do MAC rồi mã hóa. Trong khi mã hóa thì MAC tránh được tất cả các sự cố do phần đệm gây ra trong quá khứ vì người nhận có thể xác minh tính toàn vẹn của thông báo mà không cần phải giải mã thông báo trước rồi xử lý phần đệm bị xáo trộn một cách chính xác.

Điều khiến tôi khó chịu về điều này là có khá nhiều bộ điều khiển vi mô có khả năng tăng tốc phần cứng AES tích hợp. Tuy nhiên, một cái gì đó giống như bội số ít mang theo cho GCM thực sự chỉ tồn tại trên CPU máy chủ và máy tính để bàn.

Mặc dù có ChaCha20-Poly1305 sử dụng nó thay vào đó có nghĩa là bạn từ bỏ việc sử dụng phần cứng AES trên bộ điều khiển vi mô. Mặc dù ChaCha20 hoạt động tốt với vi mô 32 bit nhưng nó vẫn sẽ sử dụng nhiều năng lượng hơn phần cứng AES tích hợp và có thể chậm hơn tùy thuộc vào vi mô. Ngoài ra, Poly1305 yêu cầu thực hiện một số phép tính mô-đun số lớn so với rất nhiều hàm băm.

Tôi chỉ đang vò đầu bứt tai vì không có gì sai với EtM. Tôi thậm chí đã tìm thấy một dự thảo IETF AES-CBC-HMAC nơi thực hiện EtM.Tuy nhiên, nó chưa bao giờ vượt qua được bản nháp khiến tôi cảm thấy kỳ quặc.

Chỉnh sửa: Vì bộ mật mã CCM đã được đề cập. trong khi chạy AES ở chế độ CTR sẽ tránh được các lời tiên tri đệm. Nó không nằm trong bộ mật mã bắt buộc hoặc một trong các NÊN thực hiện các bộ. Nhìn thấy: Bộ mật mã bắt buộc thực hiện Vì vậy, về cơ bản, người ta không thể tận dụng phần cứng AES trên micro mà không có GCM. (ví dụ: nhiều máy chủ tắt CCM theo mặc định và cả Firefox và Chrome đều không bật CCM). Vì vậy, một lần nữa vẫn có vẻ kỳ lạ, không có gì ở giữa ở đây và tôi thực sự không thấy bất kỳ lý do chính đáng nào tại sao và chế độ EtM có vẻ như là một ứng cử viên sáng giá, nhưng một chế độ thậm chí chưa bao giờ được thêm vào tiêu chuẩn.

Điểm:5
lá cờ in

Đối với các thiết bị nhúng có chế độ CCM, về cơ bản là một cách an toàn để thực hiện AES-CBC-MAC + AES-CTR trong chế độ gói (phức tạp không cần thiết nhưng khá hiệu quả). Lưu ý rằng về cơ bản, đây là MAC-sau đó-mã hóa, nhưng là một phần của chế độ bảo mật tổng thể; các cuộc tấn công tiên tri đệm chắc chắn không được áp dụng vì chế độ bộ đếm không yêu cầu đệm.

Các bộ mật mã có sẵn là:

  • TLS_AES_128_CCM_SHA256
  • TLS_AES_128_CCM_8_SHA256 (như đã định nghĩa trong RFC 6655)

Cái sau cũng có thẻ xác thực hiệu quả hơn (liên quan đến kích thước, không phải nỗ lực tính toán) là 8 byte/64 bit, trong đó nên là đủ.

Vì vậy, tôi đoán họ không nghĩ rằng một thuật toán khác là cần thiết, bởi vì có rất ít hệ thống nhúng có khả năng tăng tốc SHA-1 hoặc SHA-256.

Ghi chú:

  • Hàm băm ở cuối bộ mật mã chỉ được sử dụng để tạo khóa phiên và tương tự (PRF trong TLS), do đó, hàm này không được sử dụng cho mỗi thông báo.
  • AES ở chế độ TLB trong CBC-MAC chỉ được sử dụng ở chế độ chuyển tiếp/mã hóa, vì vậy bạn không cần hỗ trợ phần cứng cho hoạt động giải mã.
kelalaka avatar
lá cờ in
Có lý do cụ thể nào để viết AES-CBC-MAC + AES-CTR thay vì AES-CTR + AES-CBC-MAC ngoài việc chỉ ra MAC được thực hiện trước khi mã hóa không?
Maarten Bodewes avatar
lá cờ in
@kelalaka Không, tôi nghĩ cách này ít gây nhầm lẫn hơn.
kelalaka avatar
lá cờ in
Có thể thêm $$c = \big(\operatorname{AES-CTR}(m)\|(\operatorname{AES-CTR}(m_0) \oplus \operatorname{AES-CBC-MAC}\big(Nonce\mathbin\ |Dữ liệu liên kết \mathbin\|m) \big)\big)$$ sẽ làm cho nó rõ ràng hơn hoặc không rõ ràng.
lá cờ cn
Chắc chắn là có CCM. Chẳng hạn, sẽ ổn thôi nếu bạn điều khiển máy chủ mà thiết bị của bạn đang nói chuyện như yêu cầu api, v.v... Một điều khác mà tôi nhận thấy là các máy chủ khác dường như thường xuyên bị vô hiệu hóa. Ngoài ra, chrome và firefox không kích hoạt lại bộ mật mã đó để giới hạn các tùy chọn.
lá cờ cn
Một điều khác như bạn đã đề cập CCM không phải là EtM, nhưng về cơ bản, việc chạy AES như một mật mã luồng sẽ tránh được các lời tiên tri đệm. Tuy nhiên, như tôi đã đề cập, các chế độ hoạt động của CCM dường như không được kích hoạt rộng rãi. Về cơ bản, buộc một cái gì đó như ChaCha20-Poly1305 để có khả năng tương thích rộng hơn vì GCM sẽ yêu cầu số nhân ít hơn. Nó vẫn khiến tôi cảm thấy kỳ lạ vì có một khoảng trống ở đây. Trong trường hợp có vẻ như một số chế độ EtM sẽ được kích hoạt rộng rãi hơn và có vẻ kỳ lạ là không có chế độ EtM nào cho TLS 1.3.
Maarten Bodewes avatar
lá cờ in
Chắc chắn rồi, nhưng không rõ bằng cách nào, ví dụ: CBC + HMAC cũng vậy. Nó có thể không phải là một bộ mật mã bắt buộc, vì vậy nó cũng sẽ là tùy chọn. CCM đó không phải là EtM là một vấn đề khác ... miễn là nó an toàn. Không có khả năng ai đó sẽ triển khai nó dưới dạng giải mã, sử dụng và sau đó xác minh - ngay cả khi điều đó là có thể.
lá cờ cn
Chà, CBC + HMAC là một cấu trúc nổi tiếng và nếu được vận hành trong cấu trúc EtM thì sẽ tránh được những cạm bẫy chính của MAC sau đó mã hóa. Có vẻ như không phải là vô lý khi ngay cả khi nó là tùy chọn thì nó vẫn sẽ được bật thường xuyên hơn vì đây là một cấu trúc nổi tiếng.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.