HOTP con algoritmo de hash HMAC es un hash de la familia SHA-2

5

Estoy estudiando el uso de una solución OTP.

HOTP es una solución OTP que se basa en un HMAC con el algoritmo de hash SHA-1. Los estándares lo definen de esta manera.

Pero ... SHA1 (como sabemos) ha sido una debilidad .

Por lo tanto, ahora estoy considerando usar un algoritmo de hash de la familia SHA-2 como el hash para mi solución HOTP. ¿Tiene alguna idea sobre esto?

Sí, la alternativa podría ser usar TOTP , allí el RFC nos dice que está bien usar diferentes algoritmos de hashing .

¿La forma en que se rompe SHA1 no afecta al HMAC? El contador que HOTP utiliza incrementos cada vez. Así que las colisiones no son realmente un gran problema.

¡Pero algunos comentarios de ustedes, gente, serían muy apreciados!

    
pregunta Lee. M 24.03.2013 - 13:26
fuente

2 respuestas

10

HMAC / SHA-1 no está roto. SHA-1 tiene una debilidad con respecto a colisiones (y sigue siendo "teórico" "ya que producir una colisión para SHA-1, aunque conceptualmente más fácil que el ataque genérico, es todavía tan costoso que nadie ha computado aún una colisión de ese tipo). Pero la resistencia HMAC no se basa en la resistencia a las colisiones.

De hecho, HMAC está probado seguro siempre y cuando la función hash que utiliza sea Merkle-Damgård function que a su vez se basa en una" función de compresión "interna que se comporta como una PRF . Esto es bastante técnico. Para resumir, la debilidad conocida de SHA-1 anula la prueba, pero nadie sabe cómo convertir eso en una debilidad en HMAC / SHA-1. Empíricamente, tenemos el ejemplo de MD4 : MD4 está extremadamente roto con respecto a las colisiones, con un costo cercano a cero (computar una colisión para MD4 toma menos tiempo que en realidad para pegar los dos mensajes en conflicto para verificar que es, de hecho, una colisión), y HMAC / MD4 también está dañado, pero con un costo bastante no trivial de 258 texto simple / pares de MAC (y eso es un ataque de falsificación, ni siquiera un ataque de recuperación clave, lo que lo hace totalmente inaplicable en la práctica. Si tenemos el mismo tipo de relación para SHA-1, HMAC / SHA-1 sigue siendo muy seguro.

Sin embargo, HOTP puede usarse con cualquier función hash, pero esto requiere "adaptaciones". En general, no debes jugar con los algoritmos criptográficos . Dicho esto, es bastante obvio (al menos para un criptógrafo) que reemplazar SHA-1 con "SHA-256 truncado a 160 bits" en HOTP producirá algo que es igualmente seguro (es decir, análisis detallado de seguridad de HOTP se aplica completamente con esa función hash alternativa). Sin embargo, cambiar la función hash significa que ya no puede probar su implementación con respecto a los valores de prueba publicados , y eso es una gran preocupación. Los errores de implementación son una fuente mucho más común de vulnerabilidades prácticas que las debilidades criptográficas.

Por lo tanto, use HOTP con HMAC / SHA-1 y sea feliz . No está roto.

    
respondido por el Thomas Pornin 24.03.2013 - 14:15
fuente
3

Si lo entiendo correctamente, la colisión no es importante en este caso. Desde una cadena grande (su secreto) y la marca de tiempo, está generando un PIN OTP de 6 dígitos, que consiste solo en números. ¡Por supuesto tendrás un inmenso número de colisiones! Lo que lo salvará, es el hecho de que la OTP cambia continuamente, y el atacante necesita adivinar la parte estática de su PIN y nombre de usuario.

    
respondido por el maxadamo 20.10.2015 - 17:43
fuente

Lea otras preguntas en las etiquetas