HOTP

HOTP (mật khẩu một lần dựa trên HMAC, RFC 4226) là anh em dựa trên bộ đếm của TOTP. Trong khi TOTP tiến theo đồng hồ, HOTP tiến theo một bộ đếm chung mà cả token lẫn máy chủ đều tăng mỗi khi sử dụng mã. HOTP là chế độ chuẩn cho YubiKey OATH, token phần cứng cũ và một số luồng ngân hàng khi máy chủ không thể dựa vào đồng hồ đồng bộ.

Tài liệu đặc tả:RFC 4226, HOTP: An HMAC-Based One-Time Password Algorithm (2005).
URI scheme:Google Authenticator Key URI Format, scheme otpauth:// mà mọi ứng dụng xác thực đồng thuận.
Đặc tả liên quan:TOTP (RFC 6238), biến thể dựa trên thời gian xây dựng trên HOTP.

Tổng quan

QR đăng ký HOTP là URL theo scheme otpauth:// với hotp là loại. Nó mang bí mật HMAC chia sẻ và giá trị bộ đếm mà cả hai bên phải giữ đồng bộ. Định dạng:

otpauth://hotp/LABEL?secret=SECRET&issuer=ISSUER&counter=N&digits=N&algorithm=ALG

HOTP vs TOTP, nên dùng cái nào

Thuộc tínhHOTP (RFC 4226)TOTP (RFC 6238)
Tiến theoBộ đếm (mỗi lần sử dụng thành công)Đồng hồ (mỗi 30 giây)
Cần đồng bộ đồng hồKhôngCó, trong ~30 giây
Đồng bộ lại khi lệchMáy chủ chấp nhận N giá trị bộ đếm tiếp theoMáy chủ chấp nhận ±1 cửa sổ
Triển khai điển hìnhYubiKey, token phần cứng cũ, ngân hàng ngoại tuyếnMọi 2FA người tiêu dùng, Google, Microsoft, 1Password, Authy
Tái sử dụng bộ đếmThảm họa, tiết lộ bí mật theo thời gianKhông áp dụng
Lỗ hổng nếu bí mật bị lộMọi mã tương lai có thể đoán trướcMọi mã quá khứ và tương lai có thể đoán trước

Test vector chuẩn

RFC 4226 Phụ lục D cung cấp giá trị HOTP tham chiếu cho bí mật 12345678901234567890 (20 byte, Base32 GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ) với đầu ra 6 chữ số:

Bộ đếmHOTP (6 chữ số)
0755224
1287082
2359152
3969429
4338314
5254676
6287922
7162583
8399871
9520489

Payload QR tối giản để đăng ký tại bộ đếm 0:

otpauth://hotp/Example:test?secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ&issuer=Example&counter=0

Trình xác thực bí mật Base32 trực tiếp

Cùng trình xác thực như trang TOTP. Bí mật HOTP dùng bảng chữ cái Base32 giống nhau (RFC 4648 §6: A-Z, 2-7). Chạy trên trình duyệt, không cần đến máy chủ.

Nhập bí mật để xác thực.

Những điểm dễ sai

Tương thích ứng dụng xác thực

Ứng dụng / tokenHOTPSHA256/5128 chữ sốGhi chú
YubiKey Authenticator (iOS/Android/desktop)HOTP là chế độ chuẩn của YubiKey OATH. Hỗ trợ RFC 4226 đầy đủ.
Google AuthenticatorBỏ qua (SHA1 only)Bỏ qua (6 only)Chuẩn mực thực tế. An toàn cho HOTP nhưng chỉ 6 chữ số SHA1.
1PasswordHỗ trợ RFC đầy đủ. Bộ đếm được lưu và xuất cùng với mục.
BitwardenHỗ trợ RFC đầy đủ.
Microsoft AuthenticatorHỗ trợ RFC đầy đủ.
AuthyKhông,,Đã bỏ HOTP trong phiên bản gần đây. Chỉ TOTP.
Duo MobileKhông,,Dùng luồng push riêng; chỉ TOTP làm fallback.
Token phần cứng OATH (Feitian, Token2 v.v.)TùyTùyThị trường HOTP phần cứng chuẩn; luôn là 6 chữ số SHA1 trừ khi datasheet nói khác.

Xem thêm

Tham chiếu đặc tả đã xác minh 2026-04-19. RFC 4226 (2005), Google Key URI Format.