TLS là gì? HTTPS là gì? Cách hoạt động của chúng ra sao? Hãy cùng tìm hiểu trong bài viết dưới đây nhé!
TLS là gì? HTTPS là gì?
TLS (Transport Layer Security) là một giao thức bảo mật được sử dụng để bảo vệ việc truyền thông an toàn qua mạng. Nó đã phát triển từ phiên bản trước đó là SSL (Secure Sockets Layer) và hiện được sử dụng rộng rãi để đảm bảo tính bảo mật trong việc trao đổi dữ liệu giữa các máy tính trên internet.
HTTPS (Hyper text Transfer Protocol Secure) là một biến thể bảo mật của giao thức truyền tải siêu văn bản (HTTP) được sử dụng để truyền tải dữ liệu qua internet. HTTPS sử dụng giao thức TLS (Transport Layer Security) hoặc phiên bản cũ hơn là SSL (Secure Sockets Layer) để bảo mật dữ liệu trong quá trình truyền tải.
Không có HTTPS thì trao đổi giữa trình duyệt và máy chủ chỉ là thuần văn bản. Có nghĩa là mật khẩu, hay số thẻ tín dụng mà bạn gửi qua internet có thể được đọc bởi bất kì ai có khả năng can thiệp vào quá trình gửi dữ liệu.
HTTPS được thiết kế để giải quyết vấn đề này, khiến dữ liệu gửi qua internet không thể đọc được bởi bất kì ai ngoài người gửi và người nhận.
HTTPS là một phần mở rộng của giao thức HTTP. Với HTTPS dữ liệu gửi đi một dạng đã mã hóa sử dụng TLS (Transport Layer Security). Nếu dữ liệu bị can thiệp bởi hacker thì tất cả những gì họ có thể thấy là dữ liệu lộn xộn.
Cách TLS hoạt động
Bước 1: Giống như HTTP, trình duyệt thiết lập kết nối TCP với server (máy chủ).
Bước 2: Thiết lập “bắt tay” TLS: client gửi lời chào đến server. Trong thông điệp này, trình duyệt thông báo tới server các thông tin sau:
- Phiên bản TLS nó có thể hỗ trợ (có thể là TLS 1.2, TLS 1.3…)
- Nó hỗ trợ Cyber Suite nào (Cyber Suite là một tập các thuật toán mã hóa sử dụng để mã hóa dữ liệu)
Sau khi nhận được thông điệp “hello” từ client, server chọn phiên bản Cyber Suite và TLS để sử dụng. Sau đó server gửi lại thông điệp “hello” cho client gồm các thông tin trên.
Tiếp theo server gửi chứng chỉ cho client. Chứng chỉ này bao gồm nhiều thứ khác nhau. Trong đó thứ quan trọng là public key cho server. Client sử dụng public key để thực hiện mã hóa bất đối xứng (asymmetric encryption). Tức là một dữ liệu được mã hóa bởi public key thì chỉ có thể giải mã bằng private key. Và việc này đã hoàn thành bước 2.
Sau bước này, client có chứng chỉ (certificate) và client và server đã thống nhất về phiên bản TLS và Cyber Suite.
Bước 3: client và server đi đến việc chia sẽ key mã hóa được sử dụng để mã hóa dữ liệu. Dữ liệu được mã hóa phía client sử dụng public key từ server chỉ có thể được giải mã bởi server. Đây là cách client gửi một key mã hóa đến server một cách an toàn qua mạng internet. Tất cả việc này được hoàn thành qua thông điệp trao đổi key (Client Key Exchange message)
Bước 4: client và server sử dụng session key để thống nhất về Cyber Suite để gửi dữ liệu được mã hóa qua lại.
Cách https hoạt động
- Yêu cầu SSL/TLS Handshake
Quá trình bắt đầu khi người dùng truy cập một trang web bằng cách nhập URL bắt đầu bằng “https://”. Máy tính của người dùng gửi yêu cầu kết nối bảo mật đến máy chủ web.
- Chuẩn bị SSL/TLS Handshake
Máy chủ web phản hồi bằng việc gửi một chứng chỉ SSL/TLS (Secure Sockets Layer/Transport Layer Security) kèm theo. Chứng chỉ này chứa thông tin về máy chủ và được ký bởi một tổ chức uy tín (CA – Certificate Authority).
- Xác thực máy chủ
Máy tính của người dùng kiểm tra chứng chỉ được gửi bởi máy chủ để đảm bảo tính xác thực của nó. Quá trình này đảm bảo rằng người dùng đang giao tiếp với máy chủ thật sự, không phải là một máy chủ giả mạo.
- Trò chuyện mã hóa
Sau khi xác thực máy chủ thành công, máy tính của người dùng và máy chủ sử dụng quy ước mã hóa để mã hóa dữ liệu trao đổi giữa chúng. Điều này đảm bảo rằng bất kỳ ai đánh cắp thông tin cũng sẽ không thể đọc được nó.
- Truyền tải dữ liệu mã hóa
Tất cả dữ liệu giữa máy tính của người dùng và máy chủ đều được mã hóa trong suốt quá trình truyền tải. Ngay cả khi ai đó có thể nghe trộm giao tiếp, họ cũng không thể giải mã dữ liệu vì không có khóa giải mã.
- Hoàn tất SSL/TLS Handshake
Cuối cùng, máy tính của người dùng và máy chủ hoàn tất quá trình bắt đầu kết nối bảo mật. Bây giờ, giao tiếp giữa họ hoàn toàn mã hóa và an toàn.
Qua quá trình này, HTTPS đảm bảo rằng thông tin được truyền tải giữa người dùng và máy chủ được bảo vệ khỏi các mối đe dọa như nghe trộm, đánh cắp dữ liệu và thay đổi nội dung trong quá trình truyền tải.
Bài viết có tham khảo: System Design Interview by Alex Xu & Sahn Lam
Bộ môn Ứng dụng Phần mềm
Trường Cao đẳng FPT Polytechnic cơ sở Đà Nẵng