¿Cuál es el riesgo del hash de puntos / ciclos fijos?

5

Se ha establecido la sabiduría de hash de la contraseña varias veces con una sal para aumentar el tiempo que toma la iteración de fuerza bruta . Al mismo tiempo (a menos que el algoritmo garantice lo contrario) hay una posibilidad mínima pero no nula de terminar con un punto fijo o ciclo , donde (por ejemplo)

hash(hash(hash_so_far + salt) + salt) = hash(hash_so_far + salt)

o

hash(hash(hash(hash_so_far + salt) + salt) + salt) = hash(hash_so_far + salt)

etc.

Tales identidades o ciclos cortos * serían agujeros negros de seguridad (más iteraciones no significarían más difíciles de descifrar) y un algoritmo donde estos ciclos son comunes sería peor que inútil, lo que lleva a un par de preguntas obvias:

  • ¿Se conocen las duraciones media y media de los ciclos para algoritmos comunes como MD * y SHA- *?
  • ¿Existen algoritmos * útiles que garanticen que el ciclo más pequeño es todo el espacio de salida?

* AFAICT, cualquier algoritmo de hashing útil (salida finita, determinista) tendrá al menos un ciclo "trivial", cuando se haya agotado el espacio de salida.

    
pregunta l0b0 27.12.2012 - 14:30
fuente

1 respuesta

6

Supongamos que tiene una función pseudoaleatoria con una salida de n bits. Una buena función de hash con una sal dada debería comportarse como un PRF.

La estructura promedio general de un PRF, con respecto a la aplicación repetida, es tener un gran "ciclo": si hash y rehash repetidamente, en algún punto, ingresará un ciclo y obtendrá un valor que ya encontrado. La duración promedio del ciclo será aproximadamente 2n/2 . La cantidad de pasos que deberá realizar antes de alcanzar el ciclo también será sobre 2n/2 . Casi todos los valores iniciales lo llevarán, en última instancia, a este ciclo interno. Puede haber algunos valores iniciales que no lo llevarán a este ciclo; incluso podría haber algunos puntos fijos (hay una probabilidad del 63,2% de que exista al menos un punto fijo); pero el número de tales potencialmente Los puntos problemáticos no serán más, en promedio, que 2n/2 .

Para resumir, si n es lo suficientemente grande como para que se descuide una probabilidad de 2-n/2 , entonces las cosas están bien . En particular, si n = 256 (está usando SHA-256), entonces puede dejar de preocuparse. Incluso con MD5 ( n = 128 ), los ciclos cortos son lo suficientemente raros como para que no impliquen ningún problema de seguridad real.

Un ciclo de espacio completo significaría que su función hash no es un PRF, sino una permutación, y una permutación con un solo ciclo. Es posible construir una permutación unidireccional, pero es mucho más difícil que una función unidireccional para la que parece que puede juntar algunas operaciones y rotaciones a nivel de bits; para una permutación, necesita matemáticas (por ejemplo, con exponentiation modulo un entero no primo) y esto implicará algunos problemas adicionales (la permutación será en promedio de una sola vía, pero puede haber valores para los que no lo será).

    
respondido por el Thomas Pornin 27.12.2012 - 19:14
fuente

Lea otras preguntas en las etiquetas