¿Es más fácil calcular una colisión SHA256 parcial que una completa?

0

Pregunta: Sin tener en cuenta la fuerza bruta, ¿es más fácil calcular una colisión hash parcial, en la que solo coincida un cierto número de bits?

Razonamiento: En muchos sitios web, encuentra hashes para la descarga de archivos. Eso es bueno para las verificaciones de integridad del sitio web original, y muy bueno cuando se descarga desde espejos para verificar que el archivo no se haya cambiado.

Acabo de enviar una nueva descarga de archivos a un sitio web y también agregué el hash SHA256. Al comprobarlo, noté que realmente no presté atención al hash completo, y que nunca lo hice. En su lugar, por lo general miro los primeros dígitos y los últimos dígitos, e ignoro la mayoría de los valores intermedios, pensando que si coinciden, los otros probablemente también lo harán.

No, me pregunto si ese es un posible vector de ataque "social". Ofrezca una descarga manipulada de un archivo que solo coincida con la suma de comprobación parcial.

El cálculo de una colisión hash completa de SHA256 no se ha demostrado hasta donde sé. Así que esto se reduce a la pregunta, si desde el lado matemático es más fácil calcular una colisión de hash parcial para SHA256, preferiblemente en ciertas ubicaciones de bits en la parte delantera y trasera.

Consideremos que la fuerza bruta sigue siendo demasiado costosa, ya que, por supuesto, se volverá más fácil con menos y menos bits para que salga bien.

    
pregunta Jens 13.12.2018 - 14:20
fuente

3 respuestas

2

Sí. Este es un "problema" conocido. Para estar seguro, debe verificar una cantidad de bits apropiados para su nivel de seguridad. En el código, debe comprobar todo el asunto. Para los humanos, podría valer la pena acortar el hash para que sea menos desagradable de verificar (por lo tanto, es más probable que la gente realmente lo verifique).

Para protegerse contra los ataques plausibles actualmente, debe verificar al menos ~ 180 bits, porque una colisión requiere solo 2 bits n / 2 para calcular (ver Wikipedia ). Por ejemplo, con SHA-256, puede elegir revisar tres cuartas partes de la misma (192 bits): actualmente nadie puede ejercer esa fuerza bruta, y nadie (por lo que sabemos) tiene un ataque a SHA-2 que sea lo suficientemente bueno como para Fake 192 bits de la misma. O, si te sientes con suerte, escoges unos cuantos bytes al azar y esperas que el atacante no haya tomado clases de psicología para predecir cuáles comprobarás.

Esto también puede ser usado para propósitos benignos. Consulte Bitcoin y Tor, donde las personas generan direcciones de bitcoin de vanidad y nombres de dominio de vanidad . Estos son ejemplos de uso de una fuerza bruta parcial para obtener valores divertidos.

    
respondido por el Luc 13.12.2018 - 16:27
fuente
4

Para aclarar, el ataque que le preocupa (alguien que sustituye un archivo diferente que contiene el mismo hash conocido) es en realidad un segundo ataque de preimagen, no un ataque de colisión. Un segundo ataque previo a la imagen es mucho más difícil de lograr que un ataque de colisión.

Dicho esto, en su escenario descrito de solo hacer coincidir un número indefinido (y presumiblemente pequeño) de caracteres en un hash, un segundo ataque de preimagen es ciertamente posible, e incluso si alguien hace el esfuerzo suficiente. Entonces, sí , es (¿obviamente?) Más fácil hacer coincidir menos caracteres de un hash, que más.

Como nota al margen, si alguien pudiera acceder de alguna manera a su servidor e intercambiar el archivo con otro, parece razonable que también puedan cambiar el valor hash establecido, lo que podría decirse que sería mucho más fácil y un ataque más efectivo que generar un archivo que coincida parcialmente con el hash indicado.

    
respondido por el TTT 13.12.2018 - 17:33
fuente
0
  

Consideremos que la fuerza bruta sigue siendo demasiado costosa, ...

El principio de su pregunta es incorrecto.

Digamos que eres perezoso y solo verificas diez dígitos hexadecimales. Eso es de 40 bits, por lo que el atacante debe probar en promedio 2 40 = 10 12 . Si puede agregar basura aleatoria al final de su archivo modificado, es barato calcular nuevos hash, ya que no tendrá que hacerlo todo el archivo varias veces. En una GPU, puedes obtener fácilmente 10 10 hashes por segundo ( fuente ). Por lo tanto, llevaría aproximadamente un minuto generar una coincidencia.

Por supuesto, si marca más dígitos, el tiempo crece exponencialmente. Pero el atacante puede compensar (hasta cierto punto) usando más / mejor hardware.

    
respondido por el Anders 15.12.2018 - 11:30
fuente

Lea otras preguntas en las etiquetas