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

Qué es un código TOTP

Un TOTP (Time-based One-Time Password) es el código de seis cifras, renovado cada treinta segundos, que se emplea en la verificación en dos pasos para añadir una segunda comprobación al usuario y la contraseña. Se calcula a partir de una clave compartida llamada secreto, registrada de antemano, combinada con la hora actual: por eso el servidor y la aplicación de autenticación que tiene en la mano llegan al mismo código sin comunicarse entre sí. Google Authenticator, Microsoft Authenticator, Authy y las demás aplicaciones principales siguen todas la misma norma, la RFC 6238.

Pegue la clave de configuración que aparece bajo el código QR al activar la verificación en dos pasos —el secreto, en formato Base32— y esta herramienta reproduce en el navegador el mismo código de seis cifras que mostraría su aplicación. La decodificación del secreto Base32 y el cálculo del HMAC se realizan mediante la Web Crypto API, y nada se envía a un servidor. Resulta útil para volver a configurar una aplicación, contrastar un código o comprobar el comportamiento en varios dispositivos.

Cómo generar un código

  1. Introduzca el secreto Pegue en el campo del secreto la clave de configuración en Base32 emitida al activar la verificación en dos pasos (por ejemplo JBSWY3DPEHPK3PXP).
  2. Compruebe el algoritmo de resumen La mayoría de los servicios usan SHA-1. Si el código no coincide, pruebe a cambiar a SHA-256 o SHA-512.
  3. Lea el código de seis cifras El código correspondiente al momento actual se calcula mientras escribe y se muestra junto a una barra con los segundos restantes.
  4. Cópielo si lo necesita El botón de copiar lo lleva al portapapeles. Evite usarlo en los últimos instantes antes de que cambie.

Consejos para aprovecharla mejor

  • 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.

Cuándo ayuda este generador

Comprobar o migrar una aplicación de autenticación

Antes de cambiar de dispositivo y volver a registrarse, puede verificar aquí que el secreto que guardó es correcto, sin descubrirlo ya en el teléfono nuevo.

Probar inicios de sesión en un entorno de desarrollo

Al añadir la verificación en dos pasos a su propio servicio, genere códigos desde el secreto de una cuenta de prueba siempre que los necesite para ejercitar la lógica de autenticación.

Verificar un secreto de respaldo

Confirme rápidamente que un secreto guardado en un gestor de contraseñas sigue funcionando, sin abrir la aplicación del móvil.

Reforzar la seguridad de la cuenta en general

Si además quiere revisar la solidez de la propia contraseña, merecen un vistazo el generador de contraseñas y el generador de frases de paso memorizables.

Explorar el cálculo de resúmenes que hay detrás

Si le interesan el HMAC y las funciones de resumen en que se apoya el TOTP, la calculadora de resumen SHA-256 muestra esa pieza por separado.

Términos relacionados con el TOTP

TOTP (Time-based One-Time Password)
Esquema (RFC 6238) que genera una contraseña de un solo uso a partir de un contador derivado de la hora actual. El código cambia de forma automática a intervalos fijos, normalmente de treinta segundos.
HOTP (HMAC-based One-Time Password)
Norma anterior (RFC 4226) sobre la que se construye el TOTP. En lugar del reloj, emplea un contador que avanza una unidad con cada uso.
Secreto (clave compartida)
Clave privada que conservan tanto el servicio como su aplicación de autenticación. Se emite como cadena Base32 al activar la verificación en dos pasos, y de ella y la hora se calcula el código.
Verificación en dos pasos (2FA)
Método de acceso que combina algo que se sabe, la contraseña, con algo que se posee, normalmente una aplicación de autenticación en el móvil. Aunque se filtre uno de los dos, el acceso no autorizado sigue siendo mucho más difícil.
Paso de tiempo
Intervalo con el que cambia un código TOTP. La RFC 6238 fija treinta segundos por defecto, y la mayoría de servicios y aplicaciones lo mantienen.
Base32
Codificación que representa una secuencia de bytes usando solo los 32 caracteres A–Z y 2–7. Los secretos TOTP se distribuyen así porque resultan fáciles de leer y de transcribir.
Truncamiento dinámico
Paso que toma cuatro bytes de la larga salida del HMAC según una regla fija y los convierte en un número de seis cifras. Está definido en la RFC 4226 y es común a HOTP y TOTP.

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.
Tool-kun

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.