Saltar al contenido principal

TOTP - Contraseñas de un solo uso basadas en tiempo para 2FA

Lectura de 2 min aprox.

TOTP (Time-based One-Time Password) es un mecanismo de contraseña de un solo uso que genera códigos basados en la hora actual. Se utiliza ampliamente en aplicaciones de autenticación como Google Authenticator y Microsoft Authenticator. Normalmente se genera un nuevo código de 6 dígitos cada 30 segundos y funciona como un elemento de autenticación de dos factores añadido a la contraseña. A fecha de 2024, TOTP es el método de autenticación de dos factores más adoptado, y la mayoría de los servicios principales como Google, GitHub y AWS lo admiten.

Tres supuestos que persisten tras una obligación

La decisión de exigir su uso suele medirse por el número de personas que han terminado la configuración, pero el estado real lo determinan tres supuestos que quedan detrás. En primer lugar, un registro completado una vez no dura para siempre. Cuando se cambia de dispositivo, cuando se cambia de modelo o cuando se reinstala la aplicación, el registro hay que rehacerlo, y en ese proceso se hace necesario otro medio para demostrar quién eres. Si la vía para rehacer el registro es más sencilla que el procedimiento original, esa vía se convierte en la entrada real. El efecto de la obligación depende, por tanto, menos de si el registro está completo que de lo que se exige cuando se rehace. En segundo lugar, lo que evita un código que cambia en un intervalo corto es su reutilización posterior, no su uso inmediatamente después de recibirlo. El mismo código sigue siendo válido dentro del mismo intervalo, así que si un código ya introducido se usa en otro sitio en ese momento, la velocidad de la rotación no aporta nada. Un mecanismo basado en el tiempo acorta la vida de un código robado; no elimina la vía por la que se roba. En tercer lugar, el alcance en el que se aplica la exigencia no coincide con la lista de personas. Se puede imponer sobre la vía que pasa por la pantalla, pero las credenciales emitidas por separado para intercambios entre máquinas, y las entradas que siguen en pie con procedimientos antiguos, pueden quedar fuera de esa misma exigencia. Un estado en el que se ha hecho que todos lo configuren no equivale a un estado en el que se exige en todas las entradas. Lo primero puede verificarse contra un listado; lo segundo no se puede saber sin enumerar las entradas mismas.

El flujo de generación de TOTP

Clave secreta compartida
Hora actual (intervalos de 30 segundos)
Cálculo HMAC-SHA1
Generar código de 6 dígitos

Cómo funciona TOTP

TOTP es un algoritmo estandarizado en el RFC 6238. Tomando como entradas una clave secreta compartida entre el servidor y el cliente junto con la hora actual, calcula un valor hash con HMAC-SHA1 y extrae de él un número de 6 dígitos. Siempre que los relojes del servidor y del cliente estén sincronizados, se genera el mismo código, por lo que la autenticación se completa.

Escenarios de uso concretos

Un error común es pensar que «la autenticación por SMS y el TOTP ofrecen el mismo nivel de seguridad». La autenticación por SMS conlleva el riesgo de interceptación mediante ataques de intercambio de SIM o la explotación de vulnerabilidades del protocolo SS7. Como el TOTP se procesa por completo dentro del dispositivo, es mucho más seguro frente a estos ataques. El NIST (Instituto Nacional de Estándares y Tecnología de EE. UU.) también recomienda el uso de TOTP o de claves de hardware en lugar de la autenticación por SMS.

Al combinar TOTP con una contraseña robusta generada por un gestor de contraseñas, puedes evitar inicios de sesión no autorizados incluso si la contraseña se filtra. Guarda la clave secreta de TOTP de forma segura junto con tus códigos de respaldo. Por si pierdes el teléfono donde se ejecuta tu aplicación de autenticación, la mejor práctica es imprimir los códigos de respaldo en papel y guardarlos en una caja fuerte, o configurar la aplicación de autenticación en varios dispositivos.

Términos relacionados

¿Te resultó útil este artículo?