CHAP là gì?
CHAP (Challenge-Handshake Authentication Protocol) là giao thức xác thực dùng trong kết nối Point-to-Point Protocol (PPP). Khác với PAP gửi mật khẩu dạng rõ (cleartext), CHAP sử dụng cơ chế thách thức-phản hồi (challenge-response) với hàm băm một chiều (hash) để xác thực mà không truyền mật khẩu qua đường truyền.
Cơ chế hoạt động CHAP (3-way Handshake)
- Challenge: Server (Authenticator) gửi giá trị ngẫu nhiên (challenge/nonce) cho Client
- Response: Client tính hash = MD5(Challenge + Shared Secret + ID) → Gửi Response + ID về Server
- Verify: Server tính hash tương tự với Shared Secret lưu trữ → So khớp → Accept/Reject
- Periodic Re-authentication: Server gửi challenge mới định kỳ trong phiên kết nối
So sánh CHAP vs PAP (Password Authentication Protocol)
| Tiêu chí | PAP | CHAP |
| Bảo mật | Thấp: Gửi username/password rõ (cleartext) | Cao: Không truyền secret, dùng hash MD5 |
| Xác thực | Một lần (khi kết nối) | Định kỳ (periodic) trong phiên |
| Chống replay | Không có | Có (challenge ngẫu nhiên mỗi lần) |
| Chống MITM | Không | Tốt hơn (secret không đi qua đường truyền) |
| Tốc độ | Nhanh hơn (đơn giản) | Chậm hơn (tính hash) |
| Ứng dụng | Hệ thống cũ, đơn giản | PPP, VPN, ISP dial-up, RADIUS |
Các biến thể CHAP
- MS-CHAP v1: Microsoft implementation, dùng DES, đã deprecated (dễ brute-force)
- MS-CHAP v2: Cải tiến: Mutual authentication, khóa phiên mạnh hơn, vẫn có lỗ hổng (dictionary attack)
- EAP-CHAP: CHAP trong khung EAP (Extensible Authentication Protocol) cho 802.1X
Tính năng an ninh quan trọng của CHAP
- Secret (mật khẩu chung) không bao giờ truyền qua mạng
- Challenge ngẫu nhiên mỗi lần → Chống Replay Attack
- Xác thực định kỳ → Phát hiện session hijacking
- Cần biết secret ở cả Client và Server (shared secret)
Trạng thái hiện tại
- CHAP chuẩn (RFC 1994): Vẫn dùng trong PPP, một số VPN cũ
- MS-CHAP v1: Deprecated (Microsoft KB 926170), dễ bị Man-in-the-Middle
- MS-CHAP v2: Vẫn gặp trong VPN cũ, Wi-Fi Enterprise (PEAP-MSCHAPv2) - nên chuyển sang EAP-TLS, EAP-TTLS, PEAP-GTC
- Thay thế hiện đại: EAP-TLS (chứng chỉ), EAP-PEAP, EAP-TTLS, SAML/OIDC, FIDO2/WebAuthn
Ứng dụng thực tế
- Kết nối Dial-up/ISDN cũ
- VPN PPTP (đã lỗi thời, không an toàn)
- Một số ISP broadband (PPPoE dùng PAP/CHAP)
- RADIUS authentication cho network access
Lưu ý bảo mật
- CHAP dùng MD5 → coi là yếu theo tiêu chuẩn hiện đại
- Shared secret phải mạnh, ngẫu nhiên, quản lý bí mật
- Không dùng CHAP/PAP cho hệ thống mới → Dùng EAP-TLS, Certificate-based auth
- Nếu buộc dùng MS-CHAPv2: Bắt buộc dùng trong tunnel bảo mật (PEAP/TTLS), mật khẩu phức tạp, rotation định kỳ