Generador de TOTP (contraseña de un solo uso)

Genera la misma contraseña de un solo uso de 6 dígitos (RFC 6238) que usan Google Authenticator y aplicaciones similares, a partir de un secreto TOTP en formato Base32, todo dentro de tu navegador. El secreto nunca se transmite.

Esta herramienta nunca envía tu secreto a ningún servidor. La decodificación Base32 y el cálculo HMAC se realizan por completo dentro de tu navegador (Web Crypto API), por lo que puedes introducir credenciales de autenticación con total seguridad.

Sobre el algoritmo TOTP

TOTP (contraseña de un solo uso basada en el tiempo) es un algoritmo definido en la RFC 6238 para generar contraseñas de un solo uso a partir del tiempo. Convierte un secreto compartido y la hora actual en un contador que avanza a intervalos fijos, y luego deriva un código numérico con el mismo algoritmo de truncamiento dinámico que HOTP (RFC 4226).

Algoritmo HMAC Puedes elegir entre SHA-1 (predeterminado), SHA-256 o SHA-512
Longitud del código 6 dígitos (la misma longitud estándar que usan Google Authenticator y la mayoría de las apps de 2FA)
Intervalo de actualización Se genera un nuevo código cada 30 segundos

Consejos

  • El secreto es la cadena de "clave de configuración" que aparece debajo del código QR al registrar por primera vez la autenticación de dos factores (2FA). Si ya lo registraste en la app de autenticación de tu teléfono, introduce aquí el mismo secreto para comprobar que el código coincide.
  • Algunos servicios usan un algoritmo hash distinto de SHA-1 (SHA-256 o SHA-512). Si el código generado no coincide con el de tu aplicación, prueba a cambiar el algoritmo.
  • El código se actualiza automáticamente cada 30 segundos, con una barra de progreso que muestra el tiempo restante. Ten cuidado al copiar un código justo antes de que expire, ya que podría invalidarse antes de llegar al servicio donde te autenticas.
  • Al cerrar esta pestaña del navegador, el secreto se descarta por completo y no se guarda en ningún sitio. Si quieres conservarlo como copia de seguridad, guarda el secreto en un lugar seguro, como un gestor de contraseñas.

Preguntas frecuentes

Sí. La decodificación Base32 y el cálculo HMAC se ejecutan por completo dentro de tu navegador mediante la Web Crypto API y nunca se envían a ningún servidor. Puedes comprobarlo tú mismo inspeccionando el tráfico de red: el secreto que introduces nunca se transmite.

Esto suele deberse a un algoritmo hash distinto (la mayoría de los servicios usan SHA-1, pero algunos usan SHA-256 o SHA-512) o a un reloj desincronizado. Primero, prueba a cambiar el algoritmo; si sigue sin coincidir, comprueba que el reloj de tu dispositivo esté configurado para sincronizarse automáticamente.

Por lo general, TOTP se considera más seguro. Los mensajes SMS pueden interceptarse mediante la usurpación del número de teléfono (fraude de intercambio de SIM), mientras que TOTP se calcula por completo en tu dispositivo y no es vulnerable a ese tipo de ataque.

La mayoría de los servicios emiten "códigos de recuperación" al configurar la 2FA por primera vez. Si has perdido el secreto en sí, deberás pasar por el proceso de recuperación de cuenta del servicio (verificación de identidad) para volver a registrar la autenticación de dos factores.
ツールくん

A propósito — Por qué los códigos de doble factor se quedaron en 6 dígitos

OATH (la Iniciativa para la Autenticación Abierta), que redactó la especificación de TOTP (RFC 6238), simplemente reutilizó el algoritmo de truncamiento dinámico de HOTP (RFC 4226) y dejó la longitud del código a criterio de cada implementación. Los 6 dígitos se convirtieron en el estándar de facto de la industria principalmente porque Google Authenticator adoptó esa longitud en su implementación original de 2010, y muchos otros servicios y bibliotecas la siguieron después.

Seis dígitos también resultan ser un punto de equilibrio perfecto. Con un millón de combinaciones posibles (10^6) y una ventana de validez de tan solo 30 segundos, forzar un código por fuerza bruta se vuelve prácticamente imposible, mientras que una longitud mayor resultaría poco práctica para que una persona la memorice y la escriba. No es casualidad que la mayoría de los códigos SMS también tengan 6 dígitos: la industria convergió en esta longitud para cualquier "código numérico desechable de corta duración".

HOTP (RFC 4226, 2005), el predecesor de TOTP, usaba un contador que debía incrementarse en uno cada vez que se utilizaba un código. En la práctica esto provocaba frecuentes problemas de sincronización, con usuarios que olvidaban pulsar un botón, o el contador del dispositivo y del servidor desincronizándose. TOTP, estandarizado en 2011, sustituyó el contador por la hora actual, un valor de referencia que todos pueden compartir, simplificando enormemente la operación.