Lesson 47 — TLS & Crypto Basics

Ba module tương tác: (1) xem từng message của TLS 1.3 handshake giữa client và server; (2) lần theo certificate chain leaf → intermediate → root; (3) so sánh tốc độ & nguy cơ của MD5 / SHA-256 / bcrypt để hiểu vì sao mỗi hàm hash dùng cho mục đích khác nhau.

1. TLS 1.3 Handshake

Bấm Bước tiếp → để đi qua từng message. TLS 1.3 chỉ cần 1 round-trip trước khi gửi data; session key được derive bằng ECDHE nên có forward secrecy.

💻
Client
chưa biết gì về server
🖥️
Server (bank.com)
đợi ClientHello
Nhấn Bước tiếp → để bắt đầu handshake.

2. Certificate Chain Visualizer

Server gửi leaf + intermediate (không gửi root — client đã có sẵn). Client verify từng chữ ký đi lên cho tới root nằm trong trust store của OS/browser. Click vào mỗi cert để xem chi tiết.

Leaf · end-entity
CN = bank.com
do server trình ra · chứa public key của bank.com
Intermediate · CA
CN = GlobalSign RSA OV SSL CA 2018
cũng do server gửi kèm
Root · trust anchor
CN = GlobalSign Root CA - R3
KHÔNG gửi qua mạng
🔒 Root nằm sẵn trong trust store OS / browser → cả chuỗi được tin
Thử nghĩ: một self-signed cert chính là leaf tự ký cho mình (issuer = subject), không có cha trong trust store → browser báo NET::ERR_CERT_AUTHORITY_INVALID.

3. Hash Compare — MD5 / SHA-256 / bcrypt

Nhập text rồi bấm Hash. Bảng so sánh tốc độ (nhanh = tốt cho checksum nhưng tệ cho password) và nguy cơ. Lưu ý: digest ở đây tính bằng JS minh hoạ — bcrypt hiển thị định dạng mẫu, không thực thi vòng lặp cost.

Thuật toánTốc độ (hash/giây)Nguy cơDigest
MD5
128-bit · 1991
~10 tỉ/s (GPU)
Collision đã bị phá
cấm dùng cho security
SHA-256
256-bit · 2001
~1 tỉ/s (GPU)
An toàn cho checksum
nhưng quá nhanh cho password
bcrypt
cost 10 · adaptive
~12/s (cố tình chậm)
Tốt cho password
có salt + cost
Điểm mấu chốt: hash nhanh tốt cho integrity/checksum (kiểm tra file tải về), nhưng tệ cho password — attacker brute-force hàng tỉ candidate/giây. Password cần hash cố tình chậm + có salt: bcrypt, scrypt, argon2id.