OTP (One-Time Password) là gì?
Là mật khẩu chỉ dùng được một lần trong một phiên xác thực hoặc khoảng thời gian ngắn. Thay thế/tăng cường mật khẩu tĩnh (static password) dễ bị keylogger, phishing, replay attack, credential stuffing.
Cơ chế hoạt động
Thuật toán sinh OTP dựa trên 2 yếu tố: Secret Key (Shared Secret) + Moving Factor (Yếu tố thay đổi).
- HOTP (HMAC-based OTP - RFC 4226): Moving Factor = Counter (đếm số lần sinh). Client và Server đồng bộ counter. Ví dụ: YubiKey OTP, RSA SecurID (cũ).
- TOTP (Time-based OTP - RFC 6238): Moving Factor = Thời gian (Unix timestamp / 30s). Không cần đồng bộ counter, chỉ cần đồng hồ đúng (±30-60s). Ví dụ: Google Authenticator, Authy, Microsoft Authenticator, 1Password, TOTP trong app ngân hàng.
Các dạng OTP phổ biến
| Loại | Mô tả | Độ an toàn |
|---|---|---|
| TOTP App (Authenticator) | App sinh mã 6-8 số, đổi 30s. Secret lưu trên thiết bị. | ⭐⭐⭐⭐⭐ Cao (không qua mạng, phishing-resistant nếu dùng WebAuthn/FIDO2) |
| SMS/Voice OTP | Mã gửi qua tin nhắn/điện thoại. | ⭐⭐ Thấp (SIM swap, SS7 intercept, malware đọc SMS, phishing real-time) |
| Email OTP | Mã gửi qua email. | ⭐⭐ Thấp (email bị takeover, không real-time) |
| Hardware Token (YubiKey, RSA) | Thiết bị vật lý sinh OTP (HOTP) hoặc FIDO2/WebAuthn. | ⭐⭐⭐⭐⭐ Rất cao (phishing-resistant, không clone được secret) |
| Push Notification | App nhận request approve/deny (Duo, Okta Verify, Microsoft Authenticator). | ⭐⭐⭐⭐ Cao (number matching, location context, phishing-resistant) |