¿Usando MD5 para verificar la integridad de los archivos?

10
  

General

     

Compruebe siempre los hashes MD5 de los ensamblados de .NET Framework para evitar la posibilidad de rootkits en el marco. Los ensamblajes alterados son posibles y simples de producir. La comprobación de los hashes MD5 evitará el uso de conjuntos modificados en un servidor o en una máquina cliente.

Fuente: enlace

¿No está el MD5 completamente roto para este propósito?

    
pregunta H M 17.04.2013 - 16:24
fuente

3 respuestas

13

Se ha demostrado que el algoritmo hash MD5 es débil para los ataques de colisión . Esto significa que un atacante puede generar dos archivos que producirán el mismo valor hash. Esto no tiene relación con las verificaciones de integridad del archivo.

Para crear un archivo que coincida con un hash conocido anteriormente, el algoritmo debe ser débil contra los ataques de preimage . Si bien MD5 tiene algunas debilidades teóricas en este aspecto, los ataques actuales aún no son computacionalmente factibles.

Por supuesto, nuevos ataques podrían surgir en el futuro. MD5 ha demostrado tener varias debilidades evidentes. En su lugar, intente utilizar una función hash como SHA256.

    
respondido por el Ayrx 17.04.2013 - 16:30
fuente
6

Para completar la respuesta de @Terry: MD5 está a fondo roto por colisiones, pero solo muy débilmente debilitado por preimágenes y segundas preimágenes. El mejor ataque conocido ha costado 2 123.4 (consulte el artículo ), lo cual es increíblemente inviable con la tecnología existente, pero, desde un punto de vista académico, es algo mejor que la resistencia esperada de 2 127 que una función hash perfecta con una salida de 128 bits debería ofrecer.

SHA-256 es la "función hash predeterminada" actual que debe usar para cualquier cosa que requiera una función hash, a menos que algunas características de contexto específicas justifiquen otra función. Sin embargo, reemplazar el MD5 por controles de integridad no es una emergencia crítica; no hay necesidad de preocuparse por eso.

Si bien MD5 aún está bien para el propósito de la verificación de integridad, debe darse cuenta de que esto solo se traduce en el problema: aún debe asegurarse de utilizar el valor hash correcto . Por ejemplo, asegúrese de obtener el valor hash de un sitio web HTTPS (de un servidor de buena reputación). Los valores de hash son lo suficientemente pequeños como para permitir algunos mecanismos adicionales: puede escribirlos en papel o dictarlos por teléfono, por ejemplo, lo que no podría hacer con un archivo de 3 GB.

    
respondido por el Tom Leek 17.04.2013 - 16:49
fuente
2

Las otras dos respuestas tienen razón acerca de que MD5 es seguro para la integridad de los archivos. El punto en el que divergí es que no necesariamente debe usar SHA-256 por defecto. La elección criptográfica se trata de compensaciones Después de la integridad, el rendimiento es mi mayor preocupación con las funciones hash para verificar archivos. He visto el hash MD5 cuatro veces más rápido que el SHA-256. Una lista de hashes resultantes también ocupa la mitad del espacio con MD5, lo que podría ayudar en sistemas con memoria limitada.

Por lo tanto, MD5 es seguro para esta área de aplicación y es desde un poco hasta varias veces más rápido. Por lo tanto, lo usaría.

Nota: He sustituido HAVAL por MD5 en el pasado b / c, también es rápido. La competencia de SHA-3 también se realiza, por lo que tenemos más que perfilar el rendimiento y quizás reemplazar el MD5 en un futuro cercano para el hashing de alto rendimiento. Además, el VIA Padlock Engine acelera SHA-256, así que lo uso en una plataforma de este tipo. Hay muchas cosas que considerar, pero siempre digo que el enfoque más fuerte es el punto fuerte, la red y la seguridad de las aplicaciones, ya que el cifrado de B / C es el enlace más fuerte.

    
respondido por el Nick P 18.04.2013 - 02:18
fuente

Lea otras preguntas en las etiquetas