HOTP

HOTP (HMAC-based One-Time Password, RFC 4226), счётчик-базированный аналог TOTP. Там где TOTP продвигается по часам, HOTP продвигается по общему счётчику, который и токен, и сервер увеличивают с каждым использованным кодом.

Canonical spec:RFC 4226, HOTP: An HMAC-Based One-Time Password Algorithm (2005).
URI scheme:Google Authenticator Key URI Format, the otpauth:// scheme every authenticator agrees on.
Sibling spec:TOTP (RFC 6238), time-based variant that builds on HOTP.

Что это такое

QR-код регистрации HOTP, это URL в схеме otpauth:// с hotp в качестве типа. Он содержит общий секрет HMAC плюс значение счётчика, которое обе стороны должны держать синхронизированным. Формат:

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

HOTP против TOTP, когда использовать что

СвойствоHOTP (RFC 4226)TOTP (RFC 6238)
Продвигается поСчётчику (каждое успешное использование)Часам (каждые 30 с)
Требует синхронизации часовНетДа, в пределах ~30 с дрейфа
Ресинхронизация при дрейфеСервер принимает следующие N значений счётчикаСервер принимает окно ±1
Типичное применениеYubiKey, устаревшие аппаратные токены, офлайн-банкингЛюбая потребительская 2FA, Google, Microsoft, 1Password, Authy
Повторное использование счётчикаКатастрофически, со временем раскрывает секретНе применимо
Уязвимость при утечке секретаВсе будущие коды предсказуемыВсе прошлые + будущие коды предсказуемы

Канонические тестовые векторы

RFC 4226 Приложение D содержит контрольные значения HOTP для секрета 12345678901234567890 (20 байт, Base32 GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ) с 6-значным выводом:

CounterHOTP (6-digit)
0755224
1287082
2359152
3969429
4338314
5254676
6287922
7162583
8399871
9520489

Минимальная полезная нагрузка QR для регистрации при счётчике 0:

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

Живой валидатор секрета Base32

Тот же валидатор, что на странице TOTP, секреты HOTP используют идентичный алфавит Base32 (RFC 4648 §6: A-Z, 2-7). Работает в браузере, без обращения к серверу.

Введите секрет для проверки.

Распространённые ошибки

Совместимость аутентификаторов

Приложение / ТокенHOTPSHA256/5128 цифрПримечания
YubiKey Authenticator (iOS/Android/desktop)YesYesYesHOTP, канонический режим YubiKey OATH. Полная поддержка RFC 4226.
Google AuthenticatorYesИгнорируется (только SHA1)Игнорируется (только 6)De facto базовый уровень. Безопасен для HOTP, но только с 6-значным SHA1.
1PasswordYesYesYesПолная поддержка RFC. Счётчик хранится и экспортируется вместе с записью.
BitwardenYesYesYesПолная поддержка RFC.
Microsoft AuthenticatorYesYesYesПолная поддержка RFC.
AuthyNo,,Удалил HOTP в последних версиях. Только TOTP.
Duo MobileNo,,Использует собственный push-поток; только TOTP как запасной вариант.
OATH hardware tokens (Feitian, Token2, etc.)YesVariesVariesКаноничный рынок аппаратного HOTP; всегда 6-значный SHA1, если в техническом паспорте не указано иное.

Смотрите также

Spec references verified 2026-04-19. RFC 4226 (2005), Google Key URI Format.