Bốn module tương tác: bắt tay TLS từng bước (1.2 vs 1.3), mô hình hybrid mã hóa, chuỗi chứng chỉ & xác thực CA, so sánh HTTP plaintext vs HTTPS mã hóa.
1. Bắt tay TLS từng bước
Chọn phiên bản TLS rồi nhấn từng bước để xem luồng bản tin Client ↔ Server. Chú ý sự khác biệt về số Round-Trip.
RTT hoàn thành: 0
Chọn phiên bản TLS bên trên rồi nhấn "Bước tiếp theo" để bắt đầu.
Tóm tắt so sánh:
TLS 1.2 cần 2 round-trip (client gửi rồi đợi, server phản hồi, client gửi tiếp mới xong).
TLS 1.3 gửi key share ngay trong ClientHello → server trả lời Finished trong cùng 1 trip → tiết kiệm ~30–100ms tùy RTT.
2. Mô hình hybrid: bất đối xứng + đối xứng
TLS kết hợp 2 loại mã hóa: bất đối xứng (để trao khóa an toàn) và đối xứng (để mã hóa dữ liệu thực tế tốc độ cao). Nhấn từng giai đoạn để xem điều gì xảy ra.
Giai đoạn 1 — Bất đối xứng (ECDHE)
Dùng trong handshake để trao session key an toàn. Chậm nhưng không cần gặp trước.
Dùng cho dữ liệu HTTP thực tế. Nhanh và có xác thực toàn vẹn (AEAD).
Tốc độ:
~1–10 GB/s
AES-GCM với AES-NI: 1–10 GB/s trên phần cứng hiện đại. Overhead <1% so với HTTP.
-- Nhấn một trong các nút bên trên để xem demo --
Vì sao kết hợp?
Bất đối xứng giải quyết vấn đề "trao khóa qua kênh công khai" — 2 bên tính ra cùng một session key mà không cần gặp nhau.
Đối xứng mã hóa dữ liệu tốc độ cao bằng session key đó.
Nếu chỉ dùng bất đối xứng: mã hóa 1 MB dữ liệu sẽ mất hàng giây. Nếu chỉ dùng đối xứng: không thể trao khóa an toàn.
3. Chuỗi chứng chỉ & xác thực CA
Click vào từng node trong chuỗi để xem thông tin. Sau đó chọn một kịch bản lỗi để xem trình duyệt phản ứng thế nào.
Cách đọc chuỗi tin cậy:
Click vào một node để xem giải thích chi tiết về vai trò và cách trình duyệt xác minh từng bước.
Root CA được trình duyệt/hệ điều hành tin sẵn. Leaf là chứng chỉ mà server gửi cho client.
Quá trình xác minh (github.com):
Nhận leaf certificate của github.com
Xác minh chữ ký của leaf (bởi Intermediate CA)
Xác minh chữ ký của Intermediate (bởi Root CA)
Root CA có trong danh sách tin cậy của trình duyệt
Kiểm tra tên miền: SAN khớp github.com
Kiểm tra thời hạn: Not After chưa qua
Kiểm tra thu hồi (OCSP): không bị revoke
Kịch bản lỗi — trình duyệt phản ứng thế nào:
4. HTTP plaintext vs HTTPS mã hóa
Nhập thông tin giả lập rồi xem Wireshark sẽ "bắt" được gì khi dùng HTTP và khi dùng HTTPS. Đây chính xác là lý do không nên dùng HTTP trên mạng công cộng.
🔓
HTTP — bắt được (Wireshark)
🔒
HTTPS — bắt được (Wireshark)
Điều kẻ tấn công thấy trên Wi-Fi công cộng:
Với HTTP: toàn bộ username, password, cookie phiên đăng nhập — đọc được như đọc văn bản thường.
Với HTTPS: chỉ thấy địa chỉ IP đích và tên domain (qua SNI trong ClientHello) — nội dung hoàn toàn không đọc được.
HSTS — HTTP Strict Transport Security:
Sau khi kết nối HTTPS lần đầu, server gửi header
Strict-Transport-Security: max-age=31536000.
Trong 1 năm sau, trình duyệt tự dùng HTTPS ngay cả khi bạn gõ http:// —
ngăn downgrade attack trên các lần kết nối tiếp theo.