HOTP

HOTP (HMAC-based One-Time Password, RFC 4226) es la variante basada en contador de TOTP. Donde TOTP avanza en un reloj, HOTP avanza en un contador compartido que tanto el token como el servidor incrementan con cada código usado. HOTP es el modo canónico para YubiKey OATH, tokens de hardware heredados y algunos flujos bancarios donde el servidor no puede confiar en la sincronización del reloj.

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.

Qué es

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, cuándo usar cada uno

PropiedadHOTP (RFC 4226)TOTP (RFC 6238)
Avanza enContadorReloj (cada 30 s)
Requiere sincronización de relojNoSí, margen de ~30 s
Resincronización al desvíoEl servidor acepta los próximos N valores de contadorEl servidor acepta ±1 ventana
Despliegue típicoYubiKey, tokens de hardware heredados, banca offlineTodo 2FA de consumidor, Google, Microsoft, 1Password, Authy
Reutilización del contadorCatastrófico, filtra el secreto con el tiempoN/A
Vulnerabilidad si el secreto se filtraTodos los códigos futuros predeciblesTodos los códigos pasados + futuros predecibles

Vectores de prueba 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 secreto Base32 en 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.

Introduce un secreto para validar.

Errores comunes

Compatibilidad de apps de autenticación

App / tokenHOTPSHA256/5128 dígitosNotas
YubiKey Authenticator (iOS/Android/escritorio)HOTP es el modo canónico de YubiKey OATH. Soporte completo RFC 4226.
Google AuthenticatorIgnorado (solo SHA1)Ignorado (solo 6)La línea base de facto. Seguro para HOTP pero solo con 6 dígitos SHA1.
1PasswordSoporte RFC completo. El contador se almacena y exporta con la entrada.
BitwardenSoporte RFC completo.
Microsoft AuthenticatorSoporte RFC completo.
AuthyNo,,Eliminó HOTP en versiones recientes. Solo TOTP.
Duo MobileNo,,Usa su propio flujo push; solo TOTP como fallback.
Tokens de hardware OATH (Feitian, Token2, etc.)VaríaVaríaMercado canónico de hardware HOTP; siempre 6 dígitos SHA1 salvo que el datasheet diga lo contrario.

Ver también

Spec references verified Referencias de especificaciones verificadas el