TOTP: por qué el autenticador genera códigos sin Internet

  • seguridad

Una aplicación autenticadora puede producir códigos aunque el teléfono esté en modo avión. Durante la configuración, un QR entrega un secreto y parámetros de la cuenta. El teléfono conserva ese secreto y el verificador dispone del mismo material para validar códigos. El QR no establece una conexión permanente: aprovisiona una credencial.

Del reloj a un contador

TOTP significa Time-based One-Time Password. Utiliza HOTP con un contador derivado del tiempo. Con época inicial T₀, hora Unix t e intervalo X, se calcula:

Pseudocódigo
C = floor((t − T₀) / X)
H = HMAC(K, contador C en 8 bytes big-endian)
S = truncado_dinamico(H)       # entero de 31 bits
OTP = S mod 10^d              # d dígitos, con ceros iniciales

Un perfil habitual usa pasos de 30 segundos y seis dígitos. El teléfono y el servidor obtienen el mismo resultado si coinciden el secreto, el contador y los parámetros. RFC 6238 define la variante temporal y admite HMAC con SHA-1, SHA-256 o SHA-512; los dos extremos deben usar la misma opción.

Cada extremo realiza el cálculo. El diagrama no contiene secretos ni códigos reales; la validación de un login sí requiere enviar la respuesta.
Cada extremo realiza el cálculo. El diagrama no contiene secretos ni códigos reales; la validación de un login sí requiere enviar la respuesta.

Qué significa “sin Internet”

Generar el código es local. Enviar un formulario de acceso a un sitio sigue requiriendo conectividad desde el dispositivo con el que te autenticas. La hora del teléfono debe ser suficientemente correcta. El servidor puede aceptar una ventana pequeña de contadores vecinos para compensar desfases, con un equilibrio entre tolerancia y superficie de intento.

Por qué seis dígitos no bastan por sí solos

Un código de seis dígitos tiene un millón de combinaciones. Su seguridad depende del secreto, su corta vigencia, los límites de intentos y el contexto de autenticación. El verificador debe impedir reutilizar un código que ya validó correctamente dentro de su vigencia. Aceptar indiscriminadamente muchos intervalos amplía las oportunidades de adivinación.

El secreto debe protegerse tanto en el dispositivo como en el servidor; no puede sustituirse por un hash de contraseña convencional si el verificador necesita recalcular HMAC. Los respaldos y la recuperación también forman parte de la protección de la cuenta. No se debe publicar el QR real en una guía.

Relación con otras técnicas

Las firmas HMAC de webhooks y solicitudes API comparten la idea de autenticar un mensaje con un secreto. Sin embargo, sus mensajes, formatos y mecanismos contra repetición difieren; no son necesariamente códigos TOTP. Además, un código válido puede ser capturado mediante phishing y retransmitido mientras sigue vigente. TOTP añade un factor, pero no vincula criptográficamente la respuesta al dominio del sitio como otros mecanismos de autenticación.

Referencias