Contraseñas de ingeniería inversa para sistemas de autenticación de dos factores

8

Dado un generador de contraseñas de un solo uso que está basado en el tiempo (como Google Authenticator), ¿cuántos instantes de pares (de tiempo, PIN) se necesitarían para debilitar significativamente el algoritmo hasta un punto en el que sería posible reducir ¿Posibles semillas para la función original? Si uno enviara los PIN a los clientes a través de SMS o correo electrónico (en lugar de usar un llavero o la aplicación real Google Authenticator que no le permite ver los PIN anteriores), un compromiso que revele los PIN anteriores sería una amenaza importante para el sistema ( tenga en cuenta que tanto los correos electrónicos como los SMS llevan información de tiempo relativamente precisa)?

La pregunta está relacionada con el diseño de un sistema de autenticación de dos factores sobre si debe incluir un almacenamiento de las contraseñas de un solo uso generadas con la hora. Si esto debilita significativamente la seguridad del sistema, entonces se podría argumentar que el diseño no debe incluir ningún almacenamiento de OTP anteriores (correos electrónicos, SMS u otros).

  • Detalles del algoritmo OTP: enlace
  • Implementación de referencia de Java: enlace

Por consejo de la gente sobre stackoverflow, esto se vuelve a preguntar aquí: enlace (la pregunta apuntará a esta aquí)

    
pregunta Clement P 28.01.2012 - 00:43
fuente

3 respuestas

5

Si el algoritmo de generación de OTP es bueno (y HOTP es bueno):

  • el mejor ataque al conocer la contraseña generada por uno , y tratar de adivinar la siguiente, debe ser una búsqueda exhaustiva de la clave (y la búsqueda exhaustiva no es factible si la clave es lo suficientemente grande, por ejemplo, Clave de 128 bits);
  • conocer muchas contraseñas anteriores no debería dar ninguna ventaja adicional al atacante.

El Apéndice A de RFC 4226 detalla el análisis de seguridad de HOTP; en su núcleo se encuentra la hipótesis de que HMAC / SHA-1 es una función aleatoria seleccionada por teclas:

  

Para ser más precisos, los mapas (c, n) denotan el conjunto de todas las funciones      mapeo de {0,1} ^ c a {0,1} ^ n. El algoritmo idealizado tiene clave.      Mapas espaciales (c, n), de modo que una "clave" para tal algoritmo es una función      h de {0,1} ^ c a {0,1} ^ n. Imaginamos que esta tecla (función) sea      dibujado al azar.

Este es el random oracle modelo. HMAC con una función hash segura, o incluso HMAC con una función hash ligeramente débil como SHA-1, es la mejor aproximación práctica de un oráculo aleatorio que los criptógrafos tienen en la tienda.

Para resumir la prueba de seguridad de HOTP:

  • con un oráculo aleatorio, no sabes nada de la salida para una entrada dada hasta que lo pruebas en esa entrada exacta ;
  • las contraseñas generadas son (derivadas de) la salida de HMAC / SHA-1, que se cree que son indistinguibles de un oráculo aleatorio, sobre un valor de contador;
  • por lo tanto, nadie sabe nada de una contraseña que se generará hasta que el valor de contador correspondiente se ingrese realmente como entrada de HMAC / SHA-1, algo que no ocurrió anteriormente (para las contraseñas generadas más antiguas) porque es un contador y no se "envuelve".

Hay detalles que cuidar, por supuesto, pero los escritores de RFC son criptógrafos conocidos y la prueba detallada en el apéndice A es sólida y clara (y ha sido revisada por muchos otros criptógrafos, que es la verdadera prueba de seguridad) .

    
respondido por el Tom Leek 28.01.2012 - 20:03
fuente
3

Según el RFC:

  

El análisis demuestra que estos pasos finales introducen una      sesgo insignificante, que no afecta a la seguridad del HOTP      algoritmo, en el sentido de que el mejor ataque posible contra el      La función HOTP es el ataque de fuerza bruta.      Asumiendo que un adversario es capaz de observar numerosos intercambios de protocolo.      y recopilar secuencias de valores de autenticación exitosos. Esta      adversario, tratando de construir una función F para generar valores HOTP basados      En sus observaciones, no tendrá una ventaja significativa sobre un      conjetura aleatoria      La conclusión lógica es que la mejor estrategia será una vez      una vez más, realizar un ataque de fuerza bruta para enumerar e intentar todo el      valores posibles.

De acuerdo con el análisis de seguridad, prácticamente no hay diferencia si almacena o tiene acceso a los antiguos valores de OTP. Básicamente, no puede usarlos para aumentar las posibilidades de encontrar un valor OTP correcto.

    
respondido por el Yoav Aner 28.01.2012 - 16:49
fuente
2

La seguridad del generador de contraseñas de un solo uso, obviamente, no debe debilitarse al conocer las contraseñas anteriores.

El punto clave es que el uso de criptografía simétrica con un key known only to the token and the validation service ( RFC 4226 ) no le permite limitar lo que llama posibles semillas debajo de espacio de búsqueda para la combinación de clave / algoritmo simétrico utilizada para el cifrado, que a su vez se debe elegir lo suficientemente grande / seguro para hacer que un ataque de fuerza bruta no sea práctico.

    
respondido por el syneticon-dj 28.01.2012 - 14:22
fuente

Lea otras preguntas en las etiquetas