Saltar al contenido
Novaz AuthenticatorOBTENER

¿Cómo funcionan los códigos 2FA? TOTP explicado

Por el equipo de Novaz · Actualizado el 29 de octubre de 2026
Pasos de Novaz comprobados con la versión 1.0.5

Traducido de la guía en inglés. En la web del servicio, los botones y menús pueden tener nombres algo distintos en tu idioma.

En esta página
  1. Ingrediente 1: la clave de configuración
  2. Ingrediente 2: la hora, contada en intervalos
  3. Cómo se combinan en un código
  4. Por qué la web lo acepta
  5. Ajustes que un servicio puede cambiar
  6. TOTP y HOTP
  7. De qué no protege TOTP
  8. En Authenticator App - Novaz

Una app de autenticación y una web calculan, cada una por su lado, el mismo número de 6 dígitos a partir de dos cosas que tienen las dos: una clave secreta que compartieron una vez y la hora actual. Al iniciar sesión no se envía nada entre ellas. Por eso el código funciona sin cobertura y cambia cada 30 segundos. El método se llama TOTP, de «time-based one-time password» (contraseña de un solo uso basada en tiempo), y es un estándar abierto (RFC 6238).

Ingrediente 1: la clave de configuración

Cuando activas la 2FA, la web crea un secreto aleatorio y te lo muestra como un código QR, con una versión en texto llamada clave de configuración. Tu app la guarda. A partir de ese momento, la web y tu app tienen la misma clave, y nadie más debería tenerla.

El código QR no es más que un enlace en un formato estándar, otpauth://totp/…, que contiene la clave, el nombre del servicio, el nombre de tu cuenta y, de forma opcional, los ajustes que se describen más abajo. Nuestro decodificador de códigos QR de 2FA muestra lo que hay dentro de uno.

Ingrediente 2: la hora, contada en intervalos

Las dos partes toman la hora actual como los segundos transcurridos desde el 1 de enero de 1970 (tiempo Unix) y la dividen entre 30, descartando el resto. El resultado es un número entero que aumenta en uno cada 30 segundos. El RFC 6238 lo llama T y recomienda un intervalo predeterminado de 30 segundos («a default time-step size of 30 seconds»).

Cómo se combinan en un código

La app pasa la clave y T por HMAC, una función criptográfica, normalmente con SHA-1. Después reduce el resultado a un número corto, con un método definido en el estándar HOTP (RFC 4226, sección 5.3):

  1. Los últimos 4 bits del resultado de HMAC indican una posición dentro de él.
  2. La app toma 31 bits a partir de esa posición, como un número.
  3. Se queda con los últimos 6 dígitos de ese número. Algunos servicios usan 8.

Si cambias la clave o el intervalo, obtienes un código completamente distinto. A partir de un código no se puede averiguar la clave.

Try it: a live TOTP code

Calculated in your browser from an example key. Don't paste a real setup key here.

Current code

…

Previous: …

Next: …

Unix time
…
Time step T = ⌊time ÷ 30⌋
…
Seconds left
…

Por qué la web lo acepta

La web hace el mismo cálculo con su copia de la clave y su propio reloj. Si los números coinciden, entras. Dos detalles hacen que esto funcione en la práctica:

  • Un poco de margen para el retraso. Un código que escribiste al final de un intervalo puede llegar en el siguiente. El RFC 6238 recomienda permitir como máximo un intervalo de retraso de red («at most one time step is allowed as the network delay»), así que muchas webs también aceptan el código inmediatamente anterior al actual.
  • Cada código sirve una sola vez. El estándar dice que un servidor «MUST NOT accept the second attempt» (no debe aceptar el segundo intento) de un código que ya ha aceptado. Las directrices del NIST de EE. UU. dicen lo mismo: los verificadores deben aceptar cada contraseña de un solo uso una única vez mientras sea válida («SHALL accept a given OTP only once while it is valid») (NIST SP 800-63B-4).

Por eso también un reloj mal ajustado hace que los códigos fallen. Si tu iPhone va un minuto desfasado, calcula el código de un intervalo distinto al de la web. Consulta ¿No funciona el código de autenticación?

Ajustes que un servicio puede cambiar

Los estándares permiten algunas variaciones, y un código QR puede incluirlas:

Ajuste Valor habitual También se permite
Hash SHA-1 SHA-256, SHA-512 (RFC 6238, sección 1.2)
Dígitos 6 7 u 8 (RFC 4226, sección 5.3)
Intervalo 30 segundos Otras duraciones

Si un servicio usa algo poco habitual, añádelo escaneando el código QR en lugar de escribir la clave, para que tu app reciba también los ajustes.

TOTP y HOTP

HOTP, el estándar más antiguo, usa un contador que aumenta cada vez que pides un código, en lugar de la hora. TOTP es HOTP con el intervalo de tiempo como contador: «TOTP = HOTP(K, T)». Hoy la mayoría de las webs usan TOTP.

De qué no protege TOTP

Como el código lo escribes tú, una página de inicio de sesión falsa y convincente puede pedírtelo y usarlo al instante. El NIST lo dice claramente: «OTP authentication is not phishing-resistant» (la autenticación con contraseñas de un solo uso no resiste el phishing). Las llaves de acceso y las llaves de seguridad sí lo resisten. Más información en App de autenticación o SMS.

En Authenticator App - Novaz

Novaz genera códigos TOTP estándar en tu iPhone:

  • Con un código QR: SHA-1, SHA-256 o SHA-512; de 6 a 8 dígitos; intervalos de 1 a 300 segundos.
  • Con una clave escrita a mano: siempre 6 dígitos, 30 segundos y SHA-1.

No genera códigos HOTP. También comprueba el reloj de tu iPhone y te avisa cuando va desfasado 15 segundos o más.