
La contraseña de un solo uso basada en 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 basado en HMAC (HOTP), se ha adoptado como estándar RFC 6238 del Grupo de trabajo de ingeniería de Internet (IETF). [1]
TOTP es la piedra angular de la Iniciativa para la Autenticación Abierta (OATH) y se utiliza en varios sistemas de autenticación de dos factores [1] (2FA).
Historia
Gracias a la colaboración de varios miembros de OATH, se desarrolló un borrador de TOTP para crear un estándar respaldado por la industria. Complementa el estándar único basado en eventos HOTP y ofrece a las organizaciones y empresas de usuarios finales más opciones para seleccionar las tecnologías que mejor se adapten a sus requisitos de aplicación y pautas 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 función de 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 se comienzan 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 30 segundos).
Tanto el autenticador como el autenticado calculan el valor TOTP y luego el autenticador verifica si el valor TOTP proporcionado por el 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 tener en cuenta pequeños desfases de reloj , latencia de red y demoras 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 contador donde
- 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 usa el tiempo Unix , entonces T 0 es 0),
- T X es la longitud de una duración única (por ejemplo, 30 segundos).
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 genera la posibilidad de ataques de phishing . Debido al breve período en el que los códigos TOTP son válidos, los atacantes deben utilizar proxy para las credenciales en tiempo real. [3]
Las credenciales TOTP también se basan en un secreto compartido que conocen tanto el cliente como el servidor, lo que crea múltiples ubicaciones desde las que se puede robar un secreto. Un atacante con acceso a este secreto compartido podría generar nuevos códigos TOTP válidos a voluntad. Esto puede ser un problema particular si el atacante viola una gran base de datos de autenticación. [4]
Véase también
- Biblioteca de programación Botan
- OTP libre
- Autenticador de Google
- multi-OTP
- Comparación de aplicaciones TOTP
Referencias
- ^ abc 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 desde el original el 11 de julio de 2011. Consultado el 13 de julio de 2011 .
- ^ Alexander, Madison. "OATH presenta TOTP: especificación de contraseña de un solo uso basada en tiempo a IETF". Autenticación abierta . Archivado desde el original el 9 de abril de 2013. Consultado el 22 de febrero de 2010 .
- ^ Umawing, Jovi (21 de enero de 2019). "¿Se ha derrotado la autenticación de dos factores? Un vistazo al último desafío de la 2FA". Malwarebytes Labs . Archivado desde el original el 25 de septiembre de 2020. Consultado el 9 de agosto de 2020 .
- ^ Zetter, Kim. «RSA acepta reemplazar tokens de seguridad después de admitir un compromiso». WIRED . Archivado desde el original el 12 de noviembre de 2020. Consultado el 17 de febrero de 2017 .