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) que utiliza la hora actual como fuente de singularidad. Una extensión del algoritmo de contraseña de un solo uso (HOTP) basado en HMAC , 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 Initiative for Open Authentication (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 desarrolló un borrador de TOTP para crear un estándar respaldado por la industria. Complementa el HOTP estándar de una sola vez basado en eventos y ofrece a las organizaciones de usuarios finales y a las empresas más opciones en la selección de 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 opiniones que los autores recibieron de la comunidad técnica en base a las versiones anteriores enviadas 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 a partir del 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 30 segundos).
Tanto el autenticador como el autenticado calculan el valor TOTP, 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 las ligeras desviaciones del reloj , la latencia de la red y los retrasos del usuario.
TOTP utiliza el algoritmo HOTP, sustituyendo el contador con un valor no decreciente basado en la hora actual:
Valor TOTP ( K ) = valor HOTP ( K , C T ),
calcular el valor del contador
dó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 en particular ,
- T 0 es la época especificada en segundos desde la época de Unix (por ejemplo, si se usa la hora de Unix , entonces T 0 es 0),
- T X es la duración de una sola vez (por ejemplo, 30 segundos).
El tiempo de Unix no aumenta estrictamente. Cuando se inserta un segundo intercalar en UTC, la hora Unix se repite un segundo. Pero un solo segundo intercalar no hace que la parte entera del tiempo Unix disminuya, y C T tampoco es decreciente siempre que T X sea un múltiplo de un segundo. [ investigación original? ]
Seguridad
Los valores de TOTP pueden ser phishing como contraseñas , aunque esto requiere que los atacantes usen las credenciales en tiempo real. [3]
Un atacante que roba el secreto compartido puede generar nuevos valores TOTP válidos a voluntad. Esto puede ser un problema particular si el atacante viola una gran base de datos de autenticación. [4]
Debido a la latencia , tanto de red como humana, y relojes no sincronizados , la contraseña de un solo uso debe validarse en un rango de tiempo entre el autenticador y el autenticado. Aquí, el tiempo se reduce a duraciones más grandes (por ejemplo, 30 segundos) para permitir la validez entre las partes. Para que funcionen las autenticaciones posteriores, los relojes del autenticado y el autenticador deben estar aproximadamente sincronizados (el autenticador generalmente aceptará contraseñas de un solo uso generadas a partir de marcas de tiempo que difieren en ± 1 intervalo de tiempo de la marca de tiempo del autenticado). [1] Los valores TOTP suelen ser válidos durante más de 30 segundos, por lo que se tienen en cuenta los retrasos de tiempo del cliente y del servidor. [1]
Ver también
Referencias
- ^ a b c d "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 envía TOTP: Especificación de contraseña única basada en el tiempo al IETF" . Autenticación abierta . Archivado desde el original el 23 de enero 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 foco en el último desafío de 2FA" . Malwarebytes Labs . Archivado desde el original el 25 de septiembre de 2020 . Consultado el 9 de agosto de 2020 .
- ^ Zetter, Kim. "RSA acuerda reemplazar los tokens de seguridad después de admitir un compromiso" . CON CABLE . Archivado desde el original el 12 de noviembre de 2020 . Consultado el 17 de febrero de 2017 .
enlaces externos
- RFC 6238
- Implementación de Python paso a paso en un Jupyter Notebook
- Diseño de la autenticación de dos factores de Docker Hub , (sección "Uso de la autenticación de contraseña única basada en el tiempo (TOTP)").