HOTP

HOTP (HMAC-based One-Time Password, RFC 4226) é a variante baseada em contador do TOTP. Onde TOTP avança em um relógio, HOTP avança em um contador compartilhado que tanto o token quanto o servidor incrementam a cada código usado. HOTP é o modo canônico para YubiKey OATH, tokens de hardware legados e alguns fluxos bancários onde o servidor não pode depender de sincronização de relógio.

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.

O que é

An HOTP enrolment QR is a URL in the otpauth:// scheme with hotp as the type. It carries the shared HMAC secret plus a counter value that both sides must keep in sync. Format:

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

HOTP vs TOTP, quando usar cada um

PropriedadeHOTP (RFC 4226)TOTP (RFC 6238)
Avança emContadorRelógio (a cada 30 s)
Requer sincronização de relógioNãoSim, dentro de ~30 s de desvio
Ressincronização ao desvioO servidor aceita os próximos N valores de contadorO servidor aceita ±1 janela
Implantação típicaYubiKey, tokens de hardware legados, banco offlineTodo 2FA de consumidor, Google, Microsoft, 1Password, Authy
Reutilização do contadorCatastrófico, vaza o segredo ao longo do tempoN/A
Vulnerabilidade se o segredo vazarTodos os códigos futuros previsíveisTodos os códigos passados + futuros previsíveis

Vetores de teste canônicos

RFC 4226 Appendix D provides reference HOTP values for the secret 12345678901234567890 (20 bytes, Base32 GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ) with 6-digit output:

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

Minimal QR payload for enrolment at counter 0:

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

Validador de segredo Base32 ao vivo

Same validator as the TOTP page, HOTP secrets use the identical Base32 alphabet (RFC 4648 §6: A-Z, 2-7). Runs in your browser, no server round-trip.

Insira um segredo para validar.

Armadilhas comuns

Compatibilidade de apps de autenticação

App / tokenHOTPSHA256/5128 dígitosNotas
YubiKey Authenticator (iOS/Android/desktop)SimSimSimHOTP é o modo canônico do YubiKey OATH. Suporte RFC 4226 completo.
Google AuthenticatorSimIgnorado (somente SHA1)Ignorado (somente 6)A linha base de facto. Seguro para HOTP mas somente com 6 dígitos SHA1.
1PasswordSimSimSimSuporte RFC completo. O contador é armazenado e exportado com a entrada.
BitwardenSimSimSimSuporte RFC completo.
Microsoft AuthenticatorSimSimSimSuporte RFC completo.
AuthyNão,,Removeu HOTP em versões recentes. Somente TOTP.
Duo MobileNão,,Usa seu próprio fluxo push; somente TOTP como fallback.
Tokens de hardware OATH (Feitian, Token2, etc.)SimVariaVariaMercado canônico de hardware HOTP; sempre 6 dígitos SHA1 a menos que o datasheet diga diferente.

Veja também

Spec references verified Referências de especificações verificadas em