Lesson 03: Digital Signatures & PKI
RSA Sign/Verify · ECDSA k-reuse Attack · PKI Chain of Trust · Sony PS3 Hack
1. RSA Sign & Verify (số nhỏ)
Nhập RSA key (n, e, d) và hash H(m). Ký bằng private key d, verify bằng public key e. Xem từng bước fast exponentiation.
2. ECDSA k-reuse Attack — Recover Private Key
⚠ Demo tấn công: Nếu k bị dùng lại cho 2 signatures → attacker recover private key d. Đây chính là lỗi Sony PS3.
Sony PS3 Hack (2010) — fail0verflow
Sony dùng k = CONSTANT (không random!) cho mọi lần ký firmware. Kết quả: hai chữ ký bất kỳ đều có cùng r. fail0verflow thu thập 2 firmware packages:
Bước 1: Nhận thấy r₁ = r₂ trong hai firmware signatures → cùng k!
Bước 2: k = (H₁−H₂)·(s₁−s₂)⁻¹ mod n → tính ra k cụ thể
Bước 3: d = (s₁·k−H₁)·r⁻¹ mod n → recover master signing key
Bước 4: Ký bất kỳ game homebrew trông như Sony official → jailbreak!
Fix: Dùng Ed25519 (deterministic k = hash(privkey‖message)), hoặc dùng CSPRNG đúng cách.
3. Certificate Chain of Trust
Mỗi khi bạn truy cập HTTPS, browser verify một chuỗi certificate. Nhấn vào từng cert để xem chi tiết.
Phương thức revocation
CRL
Certificate Revocation List — danh sách serial bị thu hồi
✓ Đơn giản, offline capable
✗ CRL có thể lớn (>1MB)
✗ Cập nhật chậm (24h–7d)
✗ Lộ domain khi download
OCSP
Online Certificate Status Protocol — query real-time
✓ Real-time check
✗ Privacy: lộ domain cho CA
✗ OCSP down → browser lơ lửng
✗ Latency mỗi kết nối
OCSP Stapling
Server đính kèm OCSP response đã ký vào TLS handshake
✓ Không lộ domain cho CA
✓ Không latency cho client
✓ Server cache OCSP response
✗ Server phải support
Certificate Transparency
Append-only public log mọi cert — detect mis-issuance
✓ Phát hiện cert giả mạo
✓ Public, auditable
✓ Required by Chrome từ 2018
✗ Không ngăn immediate attack
4. So sánh thuật toán chữ ký
| Thuật toán | Cơ sở | k | Ký/s | Verify/s | Sig size | Trạng thái |
|---|---|---|---|---|---|---|
| RSA-PKCS1v1.5 | Factoring | N/A | ~500 | ~15,000 | 256 B | ⚠ Legacy |
| RSA-PSS | Factoring | N/A | ~500 | ~15,000 | 256 B | ✓ Current |
| ECDSA-P256 | ECDLP | Random | ~15,000 | ~12,000 | 64 B | ⚠ k-reuse risk |
| Ed25519 | ECDLP | Deterministic | ~140,000 | ~70,000 | 64 B | ✓ Recommended |
| Dilithium-3 (PQ) | Lattice | N/A | ~8,000 | ~10,000 | 3,293 B | ✓ PQ safe |
Dilithium-3 là một trong các thuật toán NIST PQC — chống quantum. Xem chi tiết ở T3-L04: TLS & Frontier.