HTTPS là phiên bản bảo mật của giao thức HTTP, nhờ có sự hỗ trợ của SSL/TLS, được sử dụng để truyền tải dữ liệu giữa trình duyệt web và máy chủ web. HTTPS đã trở thành một tiêu chuẩn bảo mật không thể thiếu cho các website. Bài viết này sẽ giải thích về HTTPS, SSL/TLS, cơ chế hoạt động và tầm quan trọng của chúng trong việc bảo vệ thông tin người dùng trên Internet.
1. HTTPS là gì?
1.1 HTTP là gì?
HTTP, viết tắt của HyperText Transfer Protocol (Giao thức Truyền tải Siêu văn bản), là nền tảng kết nối máy chủ (Server) và máy khách (Client) trong hệ thống World Wide Web (WWW). Giao thức này cho phép truyền tải siêu văn bản, góp phần tạo nên sự liên kết và trao đổi thông tin trên Internet.
Giao thức (Protocol) là tập hợp các quy tắc chuẩn hóa để duy trì việc việc giao tiếp giữa các thiết bị, máy tính hoặc hệ thống trong mạng máy tính. Nôm na, nó như "ngôn ngữ chung" giúp các thiết bị hiểu nhau, đảm bảo dữ liệu được truyền đi chính xác và hiệu quả
HTTP gửi dữ liệu đến máy chủ theo dạng văn bản thuần túy, nên nếu bạn bị theo dõi, những dữ liệu quan trọng như thông tin cá nhân, tài khoản ngân hàng,… có thể bị rò rỉ. Do đó, HTTPS ra đời để giải quyết các lỗ hổng đang tồn tại của HTTP
1.2 Sự ra đời của HTTPS
HTTPS (HyperText Transfer Protocol Secure - Giao thức truyền siêu văn bản bảo mật), là phiên bản nâng cấp và an toàn hơn của HTTP. Sự khác biệt nằm ở chữ "S" - Secure, đại diện cho lớp bảo mật được bổ sung. Nó hoạt động như một lớp mã hóa, bảo vệ thông tin trao đổi giữa trình duyệt của bạn và máy chủ website, giúp ngăn chặn việc nghe lén, đánh cắp hoặc thay đổi dữ liệu.
1.3 Tầm quan trọng của HTTPS
HTTPS sử dụng một giao thức mã hóa gọi là SSL/TLS để mã hóa thông tin trao đổi giữa trình duyệt và máy chủ web. Điều này đồng nghĩa với việc:
- Dữ liệu được mã hóa: Thông tin truyền giữa trình duyệt và máy chủ web sẽ được mã hóa thành một chuỗi ký tự ngẫu nhiên, và chỉ có thể được giải mã bằng một khóa mã hóa tương ứng, ngăn chặn việc đọc lén.
- Kết nối được xác thực: HTTPS đảm bảo rằng bạn đang kết nối với đúng máy chủ web mà bạn muốn, chứ không phải một trang web giả mạo. Việc này được thực hiện thông qua chứng chỉ SSL, tương tự như một "hộ chiếu" điện tử xác nhận danh tính của trang web.
- Dữ liệu được bảo toàn: HTTPS đảm bảo thông tin không bị thay đổi hoặc giả mạo trong quá trình truyền tải.
1.4 So sánh HTTP và HTTPS
Yếu tố | HTTP | HTTPS |
---|---|---|
Bảo mật | Không có mã hóa dữ liệu | Mã hóa dữ liệu bằng SSL/TLS |
Port | 80 | 443 |
Chứng chỉ số | Không yêu cầu chứng chỉ số | Yêu cầu chứng chỉ số (SSL/TLS) |
Tốc độ | Nhanh hơn do không có mã hóa | Chậm hơn do cần mã hóa/giải mã dữ liệu |
Ứng dụng | Thường dùng cho các trang không cần bảo mật, ví dụ: blog, diễn đàn công cộng. | Thường dùng cho các trang cần bảo mật như: ngân hàng, mua sắm trực tuyến, hệ thống quản lý thông tin cá nhân. |
2. SSL/ TLS là gì?
2.1 SSL là gì?
SSL (Secure Sockets Layer) là một giao thức bảo mật được phát triển để thiết lập một kết nối mã hóa giữa máy chủ và máy khách. SSL được Netscape phát triển lần đầu tiên vào năm 1995 với mục đích đảm bảo quyền riêng tư, tính xác thực và tính toàn vẹn của dữ liệu trong truyền thông Internet.
Tuy nhiên, giống như bất kỳ công nghệ nào, SSL cũng bộc lộ những hạn chế về bảo mật theo thời gian. Các phiên bản SSL 2.0 và 3.0 dần trở nên lỗi thời, tạo cơ hội cho các lỗ hổng bảo mật bị khai thác.
2.2 TLS là gì?
Nhận thức được những hạn chế của SSL, TLS (Transport Layer Security) ra đời như một phiên bản nâng cấp, kế thừa những ưu điểm và khắc phục những lỗ hổng của SSL. Năm 1999, IETF đề xuất một bản cập nhật cho SSL. TLS được xây dựng dựa trên nền tảng của SSL 3.0, đồng thời được bổ sung thêm nhiều tính năng bảo mật tiên tiến, đảm bảo an toàn cho dữ liệu trong môi trường Internet ngày càng phức tạp.
Ngày nay, TLS đã thay thế hoàn toàn SSL, trở thành tiêu chuẩn bảo mật không thể thiếu cho các website và ứng dụng trực tuyến. Khi truy cập một website, bạn hãy chú ý đến biểu tượng ổ khóa trên thanh địa chỉ, đó chính là dấu hiệu cho thấy website đó đang sử dụng TLS để bảo vệ thông tin của bạn.
Khi giao thức SSL được tổ chức IETF chuẩn hóa, nó được đổi tên thành Transport Layer Security (TLS). Mặc dù nhiều người sử dụng tên gọi TLS và SSL thay thế cho nhau, nhưng về mặt kỹ thuật, chúng khác biệt vì mỗi tên đại diện cho một phiên bản khác nhau của giao thức.
3. SSL sử dụng phương thức mã hóa nào?
Mã hóa (Encryption) là quá trình chuyển đổi thông tin từ dạng ban đầu thành dạng không đọc được bằng cách sử dụng thuật toán và khóa mật mã.
Dữ liệu + Khóa >>> Thuật toán mã hóa >>> Dữ liệu được mã hóa
Giải mã (Decryption)là quá trình chuyển dữ liệu đã được mã hóa trở lại dưới dạng thông tin có thể đọc được
Dữ liệu được mã hóa + Khóa >>> Thuật toán giải mã >>> Dữ liệu
3.1 Mã hóa đối xứng (Symmetric Cryptography)
Mã hóa đối xứng là một kỹ thuật mã hóa cho phép cả mã hóa và giải mã bằng một khóa duy nhất
- Ưu điểm: Mã hóa và giải mã nhanh chóng, phù hợp để xử lý lượng lớn dữ liệu.
- Nhược điểm: Việc trao đổi chìa khóa tiềm ẩn rủi ro bị đánh cắp.
3.2 Mã hóa bất đối xứng (Asymmetric Cryptography)
Mã hóa bất đối xứng được đặc trưng bởi mã hóa và giải mã với hai khóa khác nhau. Hai khóa được sử dụng lần lượt gọi là khóa công khai (public key) và khóa riêng (private key).
- Khóa công khai (Public Key): Được chia sẻ công khai, ai cũng có thể biết.
- Khóa riêng (Private Key): Chỉ có chủ sở hữu mới biết.
Dữ liệu được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa riêng. Vì vậy, ngay cả khi ai đó chặn khóa công khai ở giữa, dữ liệu cũng không thể được giải mã hoàn toàn vì họ không biết khóa riêng
Ví dụ: Client có Public Key của server và sử dụng nó để mã hóa thông tin muốn gửi, chẳng hạn "1234". Sau đó, gửi dữ liệu đã mã hóa (như là text "!@#$") đến server. Server sẽ sử dụng Private Key để giải mã và lấy lại thông tin gốc "1234".
- Ưu điểm: Trao đổi chìa khóa an toàn hơn, phù hợp để xác thực và trao đổi khóa.
- Nhược điểm: Quá trình mã hóa và giải mã phức tạp hơn, dẫn đến tốc độ chậm hơn.
Tại sao SSL phải kết hợp cả khóa đối xứng và bất đối xứng?
Bằng cách kết hợp cả khóa đối xứng và bất đối xứng, SSL đã tận dụng điểm mạnh và giải quyết được những hạn chế của từng loại khóa
- Tốc độ: Khóa đối xứng có tốc độ mã hóa và giải mã rất nhanh, giúp cho quá trình truyền dữ liệu diễn ra mượt mà, không bị gián đoạn.
- Bảo mật: Khóa bất đối xứng đảm bảo tính xác thực và bảo mật cho việc trao đổi khóa đối xứng. Nhờ đó, kẻ tấn công sẽ rất khó để đánh cắp dữ liệu, ngay cả khi chúng ta truyền nó qua mạng.
4. Chứng chỉ SSL là gì?
Để sử dụng giao thức SSL / TLS, máy chủ web cần phải có chứng chỉ SSL do tổ chức bên thứ ba cấp được gọi là cơ quan chứng nhận (CA - Certificate Authority). Chứng chỉ SSL này chứa thông tin về chủ sở hữu máy chủ, khóa cần thiết để liên lạc được mã hóa và dữ liệu chữ ký của nhà phát hành.
Các trang web đã được chứng nhận bởi cơ quan cấp chứng chỉ sẽ có dấu khóa ở phía bên trái của URL và bạn có thể kiểm tra nội dung của chứng chỉ bằng cách nhấp vào dấu khóa.
5. SSL hoạt động như thế nào?
SSL sử dụng cả mã hóa bất đối xứng (Asymmetric Cryptography) và mã hóa đối xứng (Symmetric Cryptography) để bảo mật dữ liệu trong quá trình giao tiếp giữa hai hệ thống. Quá trình này diễn ra theo hai bước chính: SSL handshake và Data Transfer. Trong bước SSL handshake, mã hóa bất đối xứng được áp dụng. Sau khi bắt tay hoàn tất, mã hóa đối xứng sẽ được sử dụng để truyền tải dữ liệu.
5.1 SSL Handshake
Quá trình handshake này bao gồm nhiều bước, trong đó máy chủ và trình duyệt trao đổi thông tin cần thiết để hoàn tất việc handshake và cho phép việc "trò chuyện" diễn ra sau đó.
Các bước cụ thể trong quá trình TLS Handshake 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 trong các phiên bản trước TLS 1.3, tuy nhiên, hiện nay được coi là không an toàn. Quá trình này diễn ra đại khái như sau:
1. Client (Máy khách)gửi một thông điệp "Hello" đến Server (Máy chủ). Thông điệp này chứa các thông tin như:
- Phiên bản SSL/TLS: Chỉ ra phiên bản giao thức mà Client hỗ trợ.
- Cipher suites: Các bộ mã hóa mà Client có thể sử dụng.
- Client random: Một chuỗi byte ngẫu nhiên để tạo khóa phiên sau này.
2. Server nhận được yêu cầu và gửi lại một thông điệp "Hello" với các thông tin tương tự:
- Phiên bản SSL/TLS: Phiên bản mà Server đồng ý sử dụng.
- Cipher suite: Bộ mã hóa được chọn.
- Server random: Chuỗi byte ngẫu nhiên của Server.
Server cũng gửi kèm chứng chỉ SSL của mình. Chứng chỉ này được cấp bởi một Cơ quan cấp chứng chỉ (CA) đáng tin cậy và chứa public key của Server.
3. Client nhận được chứng chỉ và tiến hành xác thực. Client sẽ kiểm tra xem chứng chỉ có hợp lệ không, có được ký bởi một CA đáng tin cậy không.
4. Sau khi xác minh chứng chỉ hợp lệ, client và server cần thống nhất một "ngôn ngữ bí mật" mà chỉ hai bên hiểu được. Để làm điều này, client sẽ gửi cho server một chuỗi byte chỉ có thể được giải mã bằng private key ở phía Server, được gọi là Premaster secret. (Premaster secret này đã được mã hoá bằng public key của Server có trong chứng chỉ.)
5. Server dùng private key của mình (không bao giờ được gửi đi) để giải mã Premaster secret.
6. Lúc này, cả phía Server và Client đều đã có client random, server random, premaster secret và tạo ra một key mới, gọi là Session key. Session key sẽ được sử dụng để mã hoá và giải mã dữ liệu trong quá trình giao tiếp về sau
7. Client gửi tin nhắn "finished" được mã hóa bằng session key.
Khi kết thúc SSL handshake, cả client và server đều có session key hợp lệ mà họ sẽ sử dụng để mã hóa hoặc giải mã dữ liệu thực tế. Public key và private key sẽ không được sử dụng nữa sau này.
5.2 Data Transfer
Đây là quá trình truyền dữ liệu giữa hai hệ thống, Symmetric Cryptography sẽ được sử dụng ở bước này, cả hai đều sử dụng Session Key để mã hóa và giải mã dữ liệu.
6. Kết luận
Tóm lại, HTTPS, với nền tảng là SSL/TLS, là giải pháp bảo mật thiết yếu cho việc bảo vệ thông tin trực tuyến. Nhờ sự kết hợp mạnh mẽ giữa mã hóa và xác thực, HTTPS mang đến một môi trường Internet đáng tin cậy hơn và giúp chúng ta an tâm hơn khi thực hiện các giao dịch trực tuyến
Nếu bạn quan tâm các chủ đề khác liên quan, bạn có thể tham khảo một số bài viết dưới đây:
Bài viết liên quan
Cách Discord Lưu Trữ Hàng Nghìn Tỷ Tin Nhắn Với ScyllaDB
Dec 06, 2024 • 9 min read
Idempotent Consumer: Xử lý thông điệp trùng lặp trong Microservices
Dec 04, 2024 • 7 min read
Hướng dẫn tích hợp Redux và React Query trong dự án React Vite
Nov 22, 2024 • 8 min read
Giới thiệu Kiến trúc Backend for Frontend (BFF)
Nov 16, 2024 • 10 min read
Flask là gì? Hướng dẫn tạo Ứng dụng Web với Flask
Nov 15, 2024 • 7 min read
Webhook là gì? So sánh Webhook và API
Nov 15, 2024 • 8 min read