¿Qué longitud de hash es más segura?

21

Si un algoritmo de hash tiene una opción para seleccionar la longitud de hash de salida (por ejemplo, 128 vs. 512 bits), y todos los demás aspectos de la función de hash son los mismos, la longitud de hash es probablemente más segura / útil , y por que?

    
pregunta rpach17 17.04.2017 - 19:08
fuente

4 respuestas

44

Cómo funcionan los hash

El concepto detrás de los hashes es muy simple: tome un mensaje de tamaño arbitrario y produzca de manera determinista una salida de apariencia aleatoria de un tamaño determinado. Para una función hash criptográfica bien construida, la única forma de romperla es probar entradas aleatorias hasta obtener el valor de hash que desee (colisión o imagen previa, etc.).

¿Cuál es más seguro?

Todas las demás cosas son iguales (es decir, es el mismo algoritmo, solo que con un tamaño de salida diferente, ej .: SHA2-224 vs SHA2-512), mientras más grande sea la salida del hash, más seguro será. Motivo: si tienes un hash de 224 bits, entonces esperas que un atacante tenga que hacer 2 223 conjeturas (en promedio) para romperlo, mientras que un 512 bits requiere que el atacante haga 2 511 conjeturas (en promedio).

¿Cuál es más útil?

Este no lo puedo responder, depende de muchos factores sobre la aplicación que lo está utilizando. Por ejemplo, si tiene memoria, ancho de banda o restricciones de procesamiento, si es capaz de actualizar fácilmente su infraestructura si el hash de 128 bits queda obsoleto o si la solución que está configurando debe estar preparada para el futuro durante 10 años. etc. Con solo la información que ha proporcionado, no puedo responder esto por usted.

    
respondido por el Mike Ounsworth 17.04.2017 - 19:16
fuente
5

El hash más largo es el más seguro, ya que la probabilidad de encontrar una colisión aleatoria es menor. Pero un hash más largo también toma más tiempo para calcular, verificar, especialmente si un humano tiene que comprobarlo, por lo que puede que no valga la pena tener un hash más largo para la pequeña mejora de seguridad.

    
respondido por el user2233709 17.04.2017 - 19:17
fuente
2

La primera respuesta obvia es, por supuesto, "El hash de 512 bits es mejor" .

Una respuesta más considerada se agregaría a eso: "... si la entrada es lo suficientemente larga" . La razón es que si bien deseamos que el mundo y los hashes dentro de ese mundo sean perfectos, generalmente es más difícil generar una distribución casi perfecta, de apariencia aleatoria, en una salida mayor dada una pequeña entrada. Por lo tanto, un hash más largo puede tener propiedades indeseables en comparación con uno más corto si se le da una entrada demasiado corta.

Una respuesta más práctica preguntaría: ¿estás obligado a cumplir años? Si no es así, olvídate del problema y solo usa el hash de 128 bits, que es más rápido y usa menos almacenamiento.

Si un ataque de cumpleaños puede ser un problema para usted (¿firmas?) definitivamente no querrá usar un hash de 128 bits (o menor) porque 2 64 es un número que es bastante factible como un ataque.

Aparte de eso, a menos que parte de la información involucrada sea tan inmensamente valiosa que una o varias de las naciones más grandes del mundo dedicarán la mayor parte de sus recursos y sus supuestas computadoras súper cuánticas durante varios años para forzar la fuerza bruta de una sola persona. Uno de sus hashes (¿qué tan importante es usted?), cualquier hash no roto es, en la práctica, tan bueno como cualquier otro en cuanto a la longitud.

No importa si un atacante tiene que realizar 2 pasos 127 o 2 511 o 2 10000000 .

2 127 es, por todos los medios, poco práctico e inasequible (para cada escenario realista), si es posible.

    
respondido por el Damon 18.04.2017 - 16:38
fuente
0

Un uso de hashes es la firma de datos o suma de comprobación.

Suponga que le proporciono un archivo para descargar, y una vez que descargó el archivo, es posible que deba asegurarse de que no se toque (por el hombre en el medio, la red defectuosa, etc.), por lo que aquí viene la solución. / p>

Le proporciono la suma de comprobación / hash del archivo (digamos en SHA-512), ahora verifica la suma de comprobación / hash del archivo descargado y ambos archivos hash deben ser los mismos ahora (pero si asume los datos hash siempre que no esté tocado también.

Podría sorprenderse de que MD5 ahora sea un algoritmo hash obsoleto. Como las leyendas de la seguridad podrían piratearlo de una manera muy impresionante, podrías tener dos datos completamente diferentes con exactamente el mismo tamaño y exactamente el mismo valor de hash de md5.

Así que ahora no tengo miedo de que tal vez el próximo año, 10 o 100 el próximo año otra leyenda pueda hacer lo mismo con la familia SHA.

HMAC s son la forma segura de hashes. Como es necesario agregar más datos secretos para hacer el hash. De vuelta en el ejemplo de descarga de archivos anterior, ahora necesita hacer un HMAC-SHA-512 para verificar la integridad de los datos con un valor secreto que solo usted y yo sabemos (el valor secreto conocido como sal también).

¿Más seguridad? no se puede confiar en nadie en el mundo? HMAC no funciona
Así que el último enfoque es su propio algoritmo hash personalizado. Sí, hazlo tú mismo. Pero obviamente necesitas hacerlo muy bien.

    
respondido por el user7859067 20.04.2017 - 23:42
fuente

Lea otras preguntas en las etiquetas