Giải ngố Cryptography – Phần 8: TLS 1.3 và con hàng Authenticated Encryption with Associated Data (AEAD) Ciphers

Tiếp theo nội dung Phần 7, kỳ này tôi sẽ tiếp tục với nội dung so sánh TLS 1.2TLS 1.3 còn đang dang dở trước đó. Ngoài phần rút gọn Cipher Suites như tôi đề cập trước đó, thực tế TLS 1.3 còn có khá nhiều điểm hay ho (và hại não) khác cũng cần lưu ý. Một trong những điểm tôi nghĩ khá quan trọng đó là sự xuất hiện của Authenticated Encryption with Associated Data (hay vắn tắt là AEAD Ciphers) trong TLS 1.3.

#1 Ngoài rút gọn cấu trúc Cipher Suites thì TLS 1.3 còn có gì hot

Nói ngắn gọn, so với TLS 1.2, TLS 1.3 sẽ:

  1. Giảm số thuật toán trong Cipher Suites xuống còn 2 (như tôi đã đề cập trong Phần 7);
  2. Loại bỏ việc hỗ trợ các thuật toán đã bị dính phốt bảo mật;
  3. Bỏ RSA Key ExchangePerfect Forward Secrecy là bắt buộc với TLS 1.3;
  4. Loại bỏ Block Mode CipherAEAD bulk encryption là bắt buộc;
  5. Thu gọn quá trình “đàm phán” trong TLS Handshake;
  6. Sử dụng HKDF cryptographic extraction and key derivation;
  7. Đề xuất 1-RTT modeZero Round Trip Resumption;
  8. Ký toàn bộ TLS Handshake;
  9. Hỗ trợ thêm các dạng Elliptic Curves.

Thú thật đọc xong các list này tôi đã muốn lẹo lưỡi luôn rồi chứ đừng nói chi đến chuyện hiểu rõ. Vì xác định nội lực có hạn nên trong nội dung kỳ này tôi chỉ xin chiến đến mục dAEAD bulk encryption thôi. Vì kỳ trước tôi đã bàn về mục ac nên kỳ này tôi sẽ tập trung vào mục bd.

#1.1 Các thuật toán bị loại bỏ hỗ trợ

Danh sách các thuật toán đã bị dính phốt bảo mật bị loại bỏ bao gồm

  • RC4 Stream Cipher
  • RSA Key Exchange
  • SHA-1 Hash Function
  • CBC (Block) Mode Ciphers
  • MD5 Algorithm
  • Dòng họ non-ephemeral Diffie-Hellman
  • EXPORT-strength ciphers
  • DES
  • 3DES

#1.2 AEAD bulk encryption là cái của nợ gì

Trong các kỳ trước đó, khi tôi nói Bulk Encryption tương ứng với Symmetric Encryption (với đại diện AES), mọi thứ có vẻ vẫn êm đẹp. Đùng một cái, chuyển sang TLS 1.3, mấy đại ca lại tuyên bố xanh rờn “Dẹp mịa cái đó đi, thay bằng AEAD Bulk Encryption cho anh”. Thiệt tình khi mới đọc qua tôi cũng nóng mặt lắm, muốn kiếm ngay mấy ông nội hay vẽ vời này để chơi khô máu…

Nhưng ở đời cái gì cũng có lí do của nó. Trước hết, bạn sẽ cần nhớ lại các dạng TLS 1.2 sử dụng phương án Mac-then-Encrypt (hay chính xác hơn là MAC-then-Pad-then-Encrypt) để xác thực message. Phương án này dính phải 2 vấn đề:

  • Có thể bị Padding Oracle Attacks (cái này là gì thì tạm thời cho tôi xin khất lại để trao đổi trong dịp khác nhé)
  • Kém hiệu quả vì phải giải mã rồi mới có thể xác định message integrity để biết message có xài được không (tình huống này giống như bạn bỏ cả buổi chiều ngồi mông má trang điểm xong rồi mới tính xem nên đi ăn cưới hay ở nhà cuốc đất!)

Đọc đến đây tôi nghĩ 99.99% bạn sẽ nghĩ “Đổi lại thành Encrypt-then-MAC là xong thôi chứ có gì đâu mà căng”. Vâng trên lý thuyết thì đây là phương án ngon ăn nhưng thực tế triển khai mã hóa rồi sau đó hash thì khó méo mặt.

Chính vì lẽ đó, ở đây phọt ra thêm một phương án thứ 3 nữa là triển song song MAC-and-Encrypt hay còn có tên gọi khác nữa là Authenticated Encryption (AE thôi nhé, chưa phải AEAD). Nhờ sự xuất hiện của AE này, TLS 1.3 tránh được Padding Oracle Attacks cũng như giải được bài toán quản lý hiệu quá nói trên.

Thế còn cái cục Associated Data (AD) trong Authenticated Encryption with Associated Data thì sao? Phần AD thường sẽ là đám thông tin như Address, Port, Protocol version hay Sequence number được đổ thêm vào nồi lẩu MAC Algorithm. Và sau quá trình này bạn sẽ có một thứ gọi lại AEAD của TLS 1.3.

MAC-and-Encrypt
MAC-and-Encrypt

#2 MAC có phải là HMAC không?

Đọc từ đầu đến đây chắc bạn cũng nhận ra có 1 điểm lấn cấn là sao mấy kỳ trước tôi toàn đề cập HMAC sao sang kỳ này xén đâu mất chữ H mà chỉ còn MAC không thôi. Do vậy tôi nghĩ cũng cần nhắc lại HMACHash-based Message Authentication Code. Nghĩa là HMAC là một dạng của MAC sử dụng Hashing Algorithm (ví dụ SHA-256) và hiển nhiên có thể có dạng MAC khác nữa ví dụ như Galois Message Authentication Code (GMAC). Như vậy nói HMAC là một dạng MAC thì được chứ bảo MACHMAC thì không ổn lắm.

Giải ngố Cryptography – Phần 2: Đảm bảo Integrity với Hashing Algorithm

Điểm quan trọng thứ 2 tôi muốn nhấn mạnh là vai trò của MAC đối với chữ Authenticate trong Authenticated Encryption. Nếu xem xét kỹ thì cái Key (K) đề cập bên dưới sẽ tương ứng với shared secret key xác định từ key exchange protocol giữa người gửi và người nhận. Điều này đồng nghĩ với việc Authenticate (xác thực) cả 2 phía đều là chính chủ chứ không phải hàng đểu.

MAC principle
MAC principle

Do vậy có thể thấy MACDigital Signature có cách hoạt động khá tương đồng với nhau ngoại trừ khác biệt quan trọng là  MAC dùng Symmetric Encryption Key trong khi Digital Signature sử dụng Asymmetric Encryption Key.

Phù, tới đây tôi nghĩ chắc tạm nghỉ cái Series Giải ngố Cryptography được rồi. Sắp tới tôi sẽ quay trở lại với các nội dung khác hy vọng sẽ ngon ăn hơn cái đống Cryptography đầy ngán ngẫm này.

Leave a Reply

Your email address will not be published. Required fields are marked *