
La contraseña de un solo uso basada en el tiempo ( TOTP ) es un algoritmo informático que genera una contraseña de un solo uso (OTP) utilizando la hora actual como fuente de unicidad. Como extensión del algoritmo de contraseña de un solo uso basada en HMAC (HOTP), ha sido adoptada como estándar RFC 6238 por el Grupo de Trabajo de Ingeniería de Internet (IETF) . [ 1 ]
TOTP es un pilar fundamental de la Iniciativa para la Autenticación Abierta (OATH) y se utiliza en varios sistemas de autenticación de dos factores (2FA).
Historia
Mediante la colaboración de varios miembros de OATH, se elaboró un borrador de TOTP con el fin de crear un estándar respaldado por la industria. Este complementa el estándar HOTP, basado en eventos y de una sola vez, y ofrece a las organizaciones usuarias finales y a las empresas más opciones para seleccionar las tecnologías que mejor se adapten a los requisitos de sus aplicaciones y a sus directrices de seguridad . En 2008, OATH presentó una versión preliminar de la especificación al IETF. Esta versión incorpora todos los comentarios y sugerencias que los autores recibieron de la comunidad técnica en relación con las versiones anteriores presentadas al IETF. [ 2 ] En mayo de 2011, TOTP se convirtió oficialmente en RFC 6238. [ 1 ]
Algoritmo
Para establecer la autenticación TOTP, el autenticado y el autenticador deben preestablecer tanto los parámetros HOTP como los siguientes parámetros TOTP:
- T 0 , el tiempo Unix desde el cual comenzar a contar los pasos de tiempo (el valor predeterminado es 0),
- T X , un intervalo que se utilizará para calcular el valor del contador C T (el valor predeterminado es de 30 segundos).
Tanto el autenticador como el usuario autenticado calculan el valor TOTP. A continuación, el autenticador comprueba si el valor TOTP proporcionado por el usuario autenticado coincide con el valor TOTP generado localmente. Algunos autenticadores permiten valores que deberían haberse generado antes o después de la hora actual para compensar pequeñas desviaciones del reloj , latencia de la red y retrasos del usuario.
TOTP utiliza el algoritmo HOTP, reemplazando el contador con un valor no decreciente basado en la hora actual:
Valor TOTP( K ) = Valor HOTP ( K , C T ),
calculando el valor del contadordónde
- C T es el recuento del número de duraciones T X entre T 0 y T ,
- T es el tiempo actual en segundos desde una época particular ,
- T 0 es la época especificada en segundos desde la época Unix (por ejemplo, si se utiliza la hora Unix , entonces T 0 es 0),
- T X es la duración de un único evento (por ejemplo, 30 segundos).
otpauth://esquema URI

Algunas implementaciones de TOTP para teléfonos inteligentes permiten a los usuarios escanear códigos QR para agregar tokens HOTP y TOTP a sus aplicaciones de autenticación. Estos códigos QR contienen identificadores uniformes de recursos (URI) con el esquema otpauth://. [ 3 ]
Las URI TOTP otpauth://comienzan con otpauth://totp/una etiqueta y deben contener una clave secreta. La etiqueta se codifica como parte de la ruta, mientras que la clave secreta se codifica como parámetros de consulta. La URI puede contener opcionalmente otros campos, como el número de dígitos (que por defecto es 6), el algoritmo utilizado (que por defecto es SHA1), el período (que por defecto es 30 segundos) y el nombre del emisor.
El secreto está codificado como RFC 4648 Base32 , omitiendo el relleno. Por ejemplo, la URI otpauth://totp/Wikipedian?secret=JBSWY3DPFQQHO33SNRSCCrepresenta un token TOTP etiquetado como "Wikipedian" con el secreto Hello, world!codificado como ASCII.
Seguridad
A diferencia de las contraseñas , los códigos TOTP solo son válidos por un tiempo limitado. Sin embargo, los usuarios deben ingresar los códigos TOTP en una página de autenticación, lo que crea la posibilidad de ataques de phishing . Debido al corto período de validez de los códigos TOTP, los atacantes deben obtener las credenciales en tiempo real. [ 4 ]
Las credenciales TOTP también se basan en un secreto compartido conocido tanto por el cliente como por el servidor, lo que crea múltiples puntos desde donde se puede robar dicho secreto. Un atacante con acceso a este secreto compartido podría generar nuevos códigos TOTP válidos a su antojo. Esto puede ser un problema grave si el atacante logra vulnerar una base de datos de autenticación de gran tamaño. [ 5 ]
Véase también
Referencias
- 1 2 m'Raihi, David; Rydell, Johan; Pei, Mingliang; Machani, Salah (mayo de 2011). "RFC 6238 – TOTP: Algoritmo de contraseña de un solo uso basado en el tiempo" . Archivado del original el 11 de julio de 2011. Recuperado el 13 de julio de 2011 .
- ↑ Alexander, Madison. "OATH presenta TOTP: Especificación de contraseña de un solo uso basada en el tiempo a la IETF" . Autenticación abierta . Archivado del original el 9 de abril de 2013. Recuperado el 22 de febrero de 2010 .
- ^ Habets, Thomas (26 de noviembre de 2018). "Formato de URI de clave" . GitHub . Consultado el 24 de mayo de 2026 .
- ↑ Umawing, Jovi (21 de enero de 2019). "¿Ha sido derrotada la autenticación de dos factores? Un análisis del último desafío de la 2FA" . Malwarebytes Labs . Archivado del original el 25 de septiembre de 2020. Consultado el 9 de agosto de 2020 .
- ↑ Zetter, Kim. "RSA acepta reemplazar los tokens de seguridad tras admitir una vulneración" . WIRED . Archivado del original el 12 de noviembre de 2020. Consultado el 17 de febrero de 2017 .
- Protocolos de Internet
- Control de acceso informático
- Algoritmos criptográficos