¿Debe haber hash hash hash hash hash o no?

1

Debido a que el estiramiento de las teclas se reduce básicamente al hash hashes una y otra vez (donde sal, pimienta y contraseña individualizan la función hash, pero el principio sigue siendo el mismo), me pregunto acerca de esta pregunta.

Por un lado, los hashes deben estar tan libres de colisiones como sea posible. Para los hashes en sí, eso es teóricamente alcanzable debido a la misma longitud, pero esto daría lugar a la existencia de un mapa biyectivo, es decir, para cada hash h₁ se podría dar otro hash h₂, cuyo hash es el hash original h otra vez, por lo que Puede invertir el hash. Luego, puede "simplemente" usar la inversión para invertir toda la cadena de hashes y crear una contraseña válida; aún peor, si la sal / pimienta y la contraseña influyen en la derivación clave de la misma manera, esto podría inutilizar la salada desde que se elaboró. La contraseña podría compensar su influencia.

Por otra parte, si hashes hashes hash, esto significa que algunos hashes son más seguros que otros, algunos hashes no se pueden obtener mediante hash otro hash, pero otros hashes se pueden obtener a partir de múltiples hashes. Y estos hashes serían atractivos y serían mucho más propensos a ocurrir después de muchas rondas de hash que los inalcanzables, reduciendo efectivamente el posible espacio clave.

Entonces, ¿cuál de estas dos posibilidades es peor y cuál es el caso real en realidad? Dado que la elección de la contraseña y la sal / pimienta modifican la función de hash, ¿depende la respuesta de eso? ¿Podría resolverse este problema concatenando toda la cadena de hashes en lugar de solo la final? (Si eso no tiene un nombre, ¿puedo proponer hash cat?)

    
pregunta Tobias Kienzler 08.03.2013 - 14:24
fuente

2 respuestas

1

Dado que las funciones hash tienen un espacio de entrada mucho más grande que el espacio de salida, las colisiones son una característica normal, y se espera que cada salida posible corresponda a muchas coincidencias entradas.

Como regla general, las colisiones no son un problema para el hashing de contraseñas . El párrafo anterior significa que, para cada salida de hash (en particular la que está almacenada en la base de datos del servidor), hay muchas contraseñas coincidentes que son todas equivalentes. Sin embargo:

  • para encontrar una contraseña única que coincida con la salida almacenada, debe romper resistencia de preimagen de la función hash;
  • para encontrar una segunda contraseña que genere el mismo hash que una contraseña conocida, debe romper segunda resistencia de preimagen de la función de hash.
Una función hash "criptográficamente segura" con una salida de n debe ofrecer resistencia 2n a ambos tipos de ataques, por lo que No hay problema real aquí. Una colisión conocida in abstracto no le da mucho poder a ningún atacante: el atacante puede usar una contraseña determinada y tiene un "repuesto" con el mismo efecto; ¿y qué?

En cuanto a la reducción de espacio al iterar la función, vea esta respuesta anterior . Resumen: se produce una reducción de espacio, pero no debajo de un espacio interno de tamaño 2n/2 , que además:

  • requiere mucho esfuerzo para ser alcanzado;
  • no se puede caracterizar de manera eficiente (no se puede saber fácilmente si un valor dado es parte de ese espacio interior o no).

Usa SHA-256 y sé feliz.

    
respondido por el Thomas Pornin 08.03.2013 - 15:30
fuente
1

Si cualquier nivel del hash choca, todos los niveles adicionales también chocarán. Sin embargo, el espacio es tan grande que a menudo no tendrá un problema si utiliza un hash criptográficamente seguro.

Por ejemplo, si hash ABC y obtuviste 123 y luego hiciste 123 para obtener 456. Si hash DEF y obtuviste 123, tu segunda ronda de hashing sería la misma cosa que tu primer ejemplo. Los espacios de teclas son tan grandes que no es un problema práctico. El problema también podría ser mitigado por el hash del resultado de las 2 últimas iteraciones (por lo tanto, es probable que el hash de ABC123 sea diferente del hash de DEF123).

    
respondido por el AJ Henderson 08.03.2013 - 15:37
fuente

Lea otras preguntas en las etiquetas