Qué hace
Las apps de autenticación en dos pasos como Google Authenticator, Microsoft Authenticator y 1Password muestran códigos de seis dígitos que cambian cada 30 segundos. Cada código es una contraseña de un solo uso calculada a partir de un secreto compartido: TOTP (RFC 6238) usa la hora y HOTP (RFC 4226) usa un contador. Esta herramienta calcula los mismos códigos a partir del secreto, para probar una configuración 2FA, depurar una implementación en el servidor o comprobar cuál debería ser un código.
Muestra el código actual con una cuenta atrás en vivo, además del código anterior y el siguiente, que los servidores suelen aceptar para cubrir pequeñas diferencias de reloj.
Cómo se usa
- Pega el secreto Base32 (letras A–Z y dígitos 2–7; los espacios y las mayúsculas no importan) o una URI
otpauth://completa de un código QR. Pulsa Ejemplo para probarlo. - Elige TOTP o HOTP y ajusta el algoritmo, los dígitos y el intervalo para que coincidan con la cuenta. Los ajustes de una URI otpauth tienen prioridad.
- Para HOTP, escribe el contador y usa Contador +1 para avanzar entre códigos.
- Copia el código actual. La cuenta atrás indica cuánto tiempo sigue siendo válido.
Ejemplo
El secreto de demostración JBSWY3DPEHPK3PXP es la forma Base32 de los bytes “Hello!” seguidos de 0xDEADBEEF. La URI siguiente, tal como se codifica en un código QR, describe una cuenta que lo usa con los ajustes por defecto:
otpauth://totp/Example:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example&algorithm=SHA1&digits=6&period=30
En el tiempo Unix 1700000000 este secreto da el código 324 550, y a la ventana le quedan 10 segundos.
Cómo se calcula el código
El secreto se decodifica de Base32 a bytes. En TOTP, el contador es el tiempo Unix en segundos dividido entre el intervalo y redondeado hacia abajo. El contador se escribe como 8 bytes y se firma con HMAC usando el secreto. El truncamiento dinámico elige 4 bytes de la salida HMAC según su último nibble, y el número se reduce a la cantidad de dígitos pedida, conservando los ceros iniciales.
Preguntas frecuentes
› ¿Por qué mi código no coincide con el de mi app de autenticación?
Los códigos TOTP dependen del reloj, así que primero comprueba que la hora del dispositivo se ajusta automáticamente. Después comprueba que el algoritmo, los dígitos y el intervalo coinciden con la cuenta. La mayoría de servicios usa SHA-1, 6 dígitos y 30 segundos, y las apps de autenticación ignoran otros ajustes salvo que el código QR los indique.
› ¿Qué diferencia hay entre TOTP y HOTP?
TOTP (RFC 6238) usa como contador la hora actual dividida entre el intervalo, por lo que el código cambia cada 30 segundos. HOTP (RFC 4226) usa un contador que aumenta en uno cada vez que se usa un código. Ambos pasan el secreto y el contador por HMAC y conservan los últimos 6 a 8 dígitos.
› ¿Se guarda o se envía mi secreto?
No. Los códigos se calculan en tu navegador con la API Web Crypto. El secreto no se guarda, no se escribe en la barra de direcciones y no se incluye en los enlaces para compartir; un enlace compartido solo lleva los ajustes. Aun así, un secreto 2FA da acceso completo al segundo factor, así que pega solo secretos que sean tuyos.
› ¿Puedo usarlo para añadir autenticación en dos pasos a mi aplicación?
Sí. Pulsa Secreto aleatorio para crear un secreto Base32 de 160 bits, ponlo en una URI otpauth:// o en un código QR para tus usuarios y compara los códigos que genera tu servidor con los que se muestran aquí. Los servidores suelen aceptar también el código anterior y el siguiente para tolerar desfases de reloj.