Bắt tay TLS là gì?
Bắt tay TLS (TLS handshake) là quá trình khởi đầu khi hai bên máy chủ và máy khách thiết lập một kết nối bảo mật sử dụng giao thức TLS (Transport Layer Security) hoặc SSL (Secure Sockets Layer). Quá trình này đảm bảo tính toàn vẹn và bảo mật của dữ liệu truyền tải qua kết nối. Giống như trong cuộc sống, quá trình bắt tay luôn là sự bắt đầu cho các cuộc trao đổi.
Bắt tay TLS là một loạt các biểu đồ dữ liệu hoặc thông điệp, được trao đổi bởi một máy khách và một máy chủ. Bắt tay TLS bao gồm nhiều bước, vì máy khách và máy chủ trao đổi thông tin cần thiết để hoàn thành quá trình bắt tay và giúp cho cuộc trò chuyện tiếp theo có thể thực hiện được.

Nguồn ảnh: wikipedia.org
Các bước chính xác trong quá trình bắt tay TLS sẽ khác nhau tùy thuộc vào loại thuật toán trao đổi khóa được sử dụng và bộ mật mã được cả hai bên hỗ trợ. Thuật toán trao đổi khóa RSA được sử dụng thường xuyên nhất diễn ra như sau:
- Tin nhắn "client hello": Máy khách bắt đầu bắt tay bằng cách gửi thông báo "hello" tới máy chủ. Thông báo sẽ bao gồm phiên bản TLS mà máy khách hỗ trợ, bộ mật mã được hỗ trợ và một chuỗi các byte ngẫu nhiên được gọi là “client random”.
- Tin nhắn "server hello": Để trả lời thông báo chào máy khách, máy chủ sẽ gửi một thông báo có chứa chứng chỉ SSL của máy chủ, bộ mật mã đã chọn của máy chủ và một chuỗi byte ngẫu nhiên khác do máy chủ tạo là "server random".
- Xác thực: Máy khách xác minh chứng chỉ SSL của máy chủ với Cơ quan cấp chứng chỉ (CA - Certificate Authority) để xác nhận rằng máy chủ là chính xác của nó và máy khách đang tương tác với chủ sở hữu thực sự của tên miền.
- Premaster secret: Ứng dụng khách gửi thêm một chuỗi byte ngẫu nhiên gọi là "premaster secret". Bí mật trước đó được mã hóa bằng khóa công khai và chỉ có thể được máy chủ giải mã bằng khóa riêng tư. (Máy khách lấy khóa công khai từ chứng chỉ SSL của máy chủ.)
- Khóa riêng tư được sử dụng: Máy chủ giải mã bí mật trước đó.
- Khóa phiên (session key) được tạo: Cả máy khách và máy chủ đều tạo khóa phiên từ các giá trị ở trên client random, server random và premaster secret và sẽ đi đến cùng một kết quả.
- Máy khách sẵn sàng: Máy khách gửi một tin nhắn "finished" được mã hóa bằng khóa phiên.
- Máy chủ sẵn sàng: Máy chủ gửi một tin nhắn "finished" được mã hóa bằng khóa phiên.
- Đã đạt được mã hóa đối xứng an toàn: Quá trình bắt tay hoàn tất và các giao tiếp tiếp tục bằng các khóa phiên.
Cipher suite là gì?
Cipher suite là một tập hợp các thuật toán và cấu hình mật mã được sử dụng trong quá trình bắt tay TLS (Transport Layer Security) để thiết lập một kết nối bảo mật. Mỗi cipher suite bao gồm các thành phần sau:
- Thuật toán mã hóa Key Exchange (Key Exchange Algorithm): Xác định cách mà máy chủ và máy khách trao đổi thông tin khóa mã hóa. Ví dụ bao gồm RSA, Diffie-Hellman (DHE hoặc ECDHE), và PSK (Pre-Shared Key).
- Thuật toán mã hoá dữ liệu (Data Encryption Algorithm): Xác định cách dữ liệu được mã hóa trước khi truyền qua mạng. Ví dụ bao gồm AES (Advanced Encryption Standard), DES (Data Encryption Standard), và Camellia.
- Thuật toán mã hoá số học (Hashing Algorithm): Xác định thuật toán được sử dụng để tạo mã băm của dữ liệu, đảm bảo tính toàn vẹn của thông tin. Ví dụ bao gồm SHA-256 (Secure Hash Algorithm 256-bit) và SHA-384.
- Các thông tin bổ sung (Extensions): Các thông tin bổ sung khác nhau có thể bao gồm trong cipher suite, như các thông tin về cấu hình bổ sung hoặc các yêu cầu đặc biệt.