Teclas TOTP de hardware programables con la capacidad de sincronizar el tiempo

Nos complace anunciar la nueva línea de teclas TOTP de hardware programable de TOKEN2. La principal innovación es la capacidad de sincronizar el reloj del sistema de las teclas de hardware a través de la API NFC mediante aplicaciones especiales: actualmente se está preparando un lanzamiento para Android y Windows 10.

Todavía no hay aplicaciones para iOS: a pesar de que los chips NFC están físicamente presentes en los últimos modelos de iPhone, Apple aún no proporciona una API pública para su uso.


¿Para qué es esto?


A diferencia de las aplicaciones TOTP móviles, en las teclas de hardware no hay forma de sincronizar la hora a través de NTP, a través de una red celular o una señal de radio: las teclas de hardware del dispositivo están completamente aisladas y son independientes, y usan el reloj en su placa como fuente de hora precisa. En los años 1933-1934. Los físicos Scheibe y Adelsberger del Instituto Imperial de Física y Tecnología de Berlín aprovecharon las posibilidades de utilizar el efecto piezoeléctrico para medir el tiempo. Es este efecto el que subyace al reloj del sistema de las llaves de hardware. La precisión de estos relojes varía de ± 0.3 a ± 1.1 s / día, dependiendo de la calidad. Si esta precisión es suficiente para un reloj de pulsera convencional, en las llaves de hardware una diferencia de tiempo mayor que un cierto límite puede conducir a un rechazo de la activación y / o autenticación. Este límite depende del sistema específico (por ejemplo, Microsoft Azure MFA permite hasta 600 segundos de sesgo en ambas direcciones) cuando se trata del primer registro de una clave de hardware. Además, el proceso de sincronización de desplazamiento durante el uso de la tecla para ingresar ya se describe claramente en RFC 6238

RFC 6238 / 6. Resincronización
Debido a posibles desviaciones de reloj entre un cliente y una validación
servidor, RECOMENDAMOS que el validador se configure con un límite específico
a la cantidad de pasos de tiempo que un probador puede estar "fuera de sincronización" antes
siendo rechazado

Este límite se puede establecer tanto hacia adelante como hacia atrás desde el cálculo
paso de tiempo al recibir el valor OTP. Si el paso del tiempo es
30 segundos como se recomienda, y el validador está configurado para aceptar solo
dos pasos hacia atrás, entonces la deriva máxima del tiempo transcurrido sería
alrededor de 89 segundos, es decir, 29 segundos en el paso de tiempo calculado y
60 segundos para dos pasos de tiempo hacia atrás.

Esto significaría que el validador podría realizar una validación contra el
hora actual y luego dos validaciones más para cada paso hacia atrás
(para un total de 3 validaciones). Tras una validación exitosa, el
el servidor de validación puede registrar la deriva del reloj detectada para el token
en términos del número de pasos de tiempo. Cuando se recibe una nueva OTP
Después de este paso, el validador puede validar la OTP con el actual
marca de tiempo ajustada con el número registrado de derivaciones de reloj de pasos de tiempo
por la ficha

Además, es importante tener en cuenta que cuanto más tiempo no haya enviado un probador
una OTP para un sistema de validación, cuanto más (potencialmente) sea el
deriva acumulada del reloj entre el probador y el verificador. En tal
casos, la resincronización automática descrita anteriormente puede no funcionar
si la deriva excede el umbral permitido. Adicional
las medidas de autenticación se deben utilizar para autenticar de forma segura
Probar y resincronizar explícitamente la deriva del reloj entre
probador y el validador.

Es decir, si el servidor de autenticación cumple con todos los requisitos del RFC, y si la clave no se usa muy raramente para la autenticación, por ejemplo, al menos un par de veces al año (el número exacto se puede calcular teniendo en cuenta la precisión del oscilador y la compensación de tiempo permitida por el servidor), entonces se tendrán en cuenta las compensaciones de tiempo en el lado del servidor y no deberían surgir problemas. Cuando se usan teclas en esas condiciones, la función de sincronización horaria no es, en principio, necesaria.

Sin embargo, la función de sincronización horaria puede ser útil en los siguientes casos:

  • Si la implementación del servidor de TOTP no sigue la Recomendación RFC6238 # 6. Un ejemplo de tal implementación es DUO :
    La deriva de token TOTP y la resincronización no son compatibles. Como resultado, los tokens TOTP importados pueden no funcionar para la autenticación con Duo Security, o pueden no funcionar para la autenticación después de un período de tiempo variable ...

  • Si se compró un lote de llaves de hardware durante mucho tiempo, pero tuvieron que activarse solo después de un tiempo, en este caso simplemente no existe un mecanismo de sincronización en muchos sistemas.
  • Si el dongle se usa para iniciar sesión con menos frecuencia de la necesaria para la sincronización. Por ejemplo, si un usuario quiere "copiar" el mismo perfil TOTP (más precisamente, un secreto compartido) en dos dispositivos: a) en una aplicación móvil en el teléfono para uso diario yb) en una llave de hardware programable como respaldo, para un día lluvioso . Por lo tanto, si este día lluvioso llega en 3-4 años, el token de hardware ya no se puede usar precisamente debido a la diferencia horaria. Además, la batería del token, que no se encendió durante mucho tiempo, casi no pierde capacidad. Por lo tanto, en este caso, es bastante simple "traerles" el reloj para que vuelvan a funcionar.

Análisis de seguridad
Como siempre, este tipo de innovación siempre se basa en un equilibrio entre comodidad / conveniencia y nivel de seguridad. Las teclas programables con la capacidad de sincronizar el tiempo de los ataques de red (phishing, personas en el medio, etc.) son, en la mayoría de los casos, nuestros clientes usan tokens TOTP precisamente para protegerse contra tales ataques), ciertamente protegerán completamente, pero Esta posibilidad implica una probabilidad insignificante y puramente teórica de un ataque mediante un ataque de repetición (ataque de repetición) con la condición de que los atacantes puedan:

  1. Obtenga el primer factor (contraseña).
  2. Tenga acceso físico a la clave de hardware sin el conocimiento del propietario durante un tiempo suficientemente largo (consulte el paso 3.).
  3. Usando la aplicación, a través de NFC, traduzca el tiempo en la tecla hacia adelante a una fecha específica, y registre un número suficiente de códigos generados. Esto no funcionará con un script, porque para generar códigos debe hacer clic en el botón físico, y el código actual solo se puede ver en la pantalla (no se transmite a través de NFC).
  4. Devuelva el tiempo ( para que el propietario no adivine nada ).
  5. Y finalmente, inicie sesión con la contraseña (paso 1) y uno de los códigos recibidos en el paso 3.

Este riesgo, como vemos, solo puede surgir bajo la condición de acceso físico al dispositivo, por ejemplo, un colega que se encuentre cerca y, por alguna razón, también conozca la contraseña. Pero en tales condiciones, el uso de tokens TOTP clásicos conducirá al mismo riesgo. Por cierto, el riesgo de comprometer los tokens con la función de sincronización horaria es comparable al riesgo de los dispositivos fido u2f: si un atacante obtiene acceso temporal e imperceptible a una clave u2f mientras tiene una contraseña, puede iniciar sesión en el sistema con esta clave y agregar otra (su) clave y entonces, igual de silencioso, devuelva la clave original al propietario: de acuerdo con la especificación, una cuenta puede tener más de una clave u2f, y cualquiera puede usarse para inicio de sesión paralelo. Factores como las contraseñas perfectas de papel corren el mismo riesgo.
Como puede ver, el ataque es bastante complejo e improbable, y en general, el nivel de riesgo de usar tales tokens se puede comparar con el uso de una aplicación como Google Authenticator en un teléfono inteligente sin un código PIN, sin acceso a la red y que el usuario siempre lleva consigo.
Para los clientes que aún consideran que incluso este riesgo es bastante grande, nuestras recomendaciones sobre este tema son las siguientes:
  1. Limitar el acceso físico a este tipo de claves es aproximadamente el mismo que para las tarjetas bancarias (por cierto, nuestras claves están en el formato de tarjetas bancarias).
  2. Utilice teclas programables sin función de sincronización horaria ( miniOTP-1 )
  3. Utilice teclas programables con una función de sincronización horaria, combinada con la eliminación de la clave secreta. Es decir, cuando el tiempo del token cambia, la semilla se restablecerá y será necesario volver a ingresarla (miniOTP-3, la fecha de lanzamiento del modelo se anunciará adicionalmente)


Dónde comprar
El pedido anticipado está abierto en nuestro sitio web. Use el código promocional HABR2019 para obtener un 10% de descuento (número limitado de cupones). Entrega por correo ordinario (SwissPost o La Poste France). Con la entrega a los países de la CEI todavía no hay problemas.

Source: https://habr.com/ru/post/es435858/


All Articles