¿Es inseguro hacer hash varias veces?

5

Hashing varias veces (rondas) parece ser una práctica estándar en el hashing de contraseñas para aumentar el factor de trabajo.

Seguramente, todos estarán de acuerdo en que aumentar el factor de trabajo para calcular el hash de la contraseña es algo bueno, pero me preguntaba si no estaríamos reduciendo el factor aleatorio del hash al mismo tiempo.

Mi teoría

Tomemos un hash con una salida de n bits.

¿Es posible que nunca obtenga algunos de los valores posibles de n bits cuando ingrese todos los valores posibles de n bits?

Esto significaría que algunos valores de hash son más probables que otros, ya que pueden obtenerse a partir de valores de entrada múltiples. También significa que la función hash está creando un subciclo que puede ser muy malo.

Mi prueba

Quería comprobar si mi teoría tenía algunos méritos pero, obviamente, no tenía la potencia de cómputo necesaria para analizar una función hash real, así que creé una simplista.

Mi función genera los primeros 8 bits de SHA512.

Luego introduzco todos los valores posibles de 8 bits en esta función y guardé los resultados.

Definiciones

  • Raíz: un valor de 8 bits que nunca obtienes
  • Ruta: todos los valores posibles que puede obtener para una sola entrada si hash varias veces
  • Ciclo: valores que se repiten cuando hash varias veces

Los resultados

  • Número de raíces: 97
  • Ruta más larga: 36
  • Longitud promedio de la ruta: 17.21
  • Número de ciclo: 5
  • Ciclo más largo: 6
  • Número de valores en los ciclos: 13
  • Ruta más larga sin valores de ciclo: 30
  • Longitud de ruta promedio sin valores de ciclo: 11.72

Una conclusión alarmante

Estos resultados significan que si hash una vez tienes 159 posibilidades, pero si hash 30 veces solo te quedan 13 posibilidades.

Otras pruebas

Agregué una sal que añadí al valor en cada ronda. Pensé que podría hacer una diferencia, pero obtengo resultados casi similares con diferentes valores de sal.

Mis preguntas

Sé que mi experimento se ha simplificado en exceso, pero:

  • ¿Es posible que el hash reduzca varias veces la seguridad de una función de hash si hash demasiadas veces?
  • ¿Se han realizado estudios sobre este tema?
pregunta Gudradain 25.02.2015 - 23:08
fuente

1 respuesta

2

Consulte esta pregunta para más detalles. En términos generales, al iterar una función hash en un espacio de tamaño N , luego, después de un promedio de aproximadamente sqrt (N) pasos, ingresa un ciclo cuya duración es de tamaño aproximadamente sqrt (N) . Con una, digamos, función hash de 160 bits (por ejemplo, SHA-1), ambos tamaños serán aproximadamente 2 80 , es decir, demasiado grandes para que realmente ocurran problemas.

    
respondido por el Thomas Pornin 25.02.2015 - 23:35
fuente

Lea otras preguntas en las etiquetas