SHA - 256 o MD5 para integridad de archivos


Sé que SHA-256 está favorecido sobre MD5 por seguridad, etc., pero, si voy a utilizar un método para comprobar solo la integridad del archivo(es decir, nada que ver con el cifrado de contraseña, etc.), ¿hay alguna ventaja de usar SHA-256?

Ya que MD5 es de 128 bits y SHA-256 es de 256 bits (por lo tanto el doble de grande)...

  1. ¿Tomaría hasta el doble de tiempo cifrar?

  2. Donde el tiempo no es esencial, como en un programa de copia de seguridad, y la integridad del archivo es todo lo que se necesita, ¿alguien podría argumentar en contra de MD5 por un algoritmo diferente, o incluso sugerir una técnica diferente?

  3. ¿El uso de MD5 produce una suma de comprobación?

Author: Marc.2377, 2013-01-03

7 answers

Tanto SHA256 como MDA5 son algoritmos de hash. Toman sus datos de entrada, en este caso su archivo, y generan un número de 256/128 bits. Este número es una suma de verificación. No hay cifrado porque un número infinito de entradas puede resultar en el mismo valor hash, aunque en realidad las colisiones son raras.

SHA256 toma algo más de tiempo para calcular que MD5, de acuerdo con esta respuesta.

De improviso, diría que MD5 sería probablemente adecuado para lo que necesitar.

 51
Author: dandan78,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:38

A 1): Sí, en la mayoría de las CPU, SHA-256 es aproximadamente un 40% tan rápido como MD5.

A 2): Yo defendería un algoritmo diferente a MD5 en tal caso. Definitivamente preferiría un algoritmo que se considere seguro. Sin embargo, esto es más un sentimiento. Casos en los que esto importa sería más bien construido que realista, por ejemplo, si su sistema de copia de seguridad se encuentra con un caso de ejemplo de un ataque a un certificado basado en MD5, es probable que tenga dos archivos en un ejemplo con datos diferentes, pero sumas de comprobación MD5 idénticas. Para el resto de los casos, no importa, porque las sumas de verificación MD5 tienen una colisión (= las mismas sumas de verificación para datos diferentes) virtualmente solo cuando son provocadas intencionalmente. No soy un experto en los diversos algoritmos de hash (generación de suma de comprobación), por lo que no puedo sugerir otro algoritmo. Por lo tanto, esta parte de la pregunta sigue abierta. Se sugiere otra lectura Criptográfico Hash Función - Archivo o Identificador de Datos en Wikipedia. También más abajo en esa página hay es una lista de algoritmos hash criptográficos.

A 3): MD5 es un algoritmo para calcular sumas de comprobación. Una suma de comprobación calculada utilizando este algoritmo se denomina suma de comprobación MD5.

 13
Author: Daniel S.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-03 13:53:52

Cada respuesta parece sugerir que necesita usar hashes seguros para hacer el trabajo, pero todos estos están ajustados para ser lentos para forzar a un atacante de fuerza bruta a tener mucha potencia informática y, dependiendo de sus necesidades, esta puede no ser la mejor solución.

Hay algoritmos diseñados específicamente para hash archivos lo más rápido posible para comprobar la integridad y la comparación (murmur, XXhash...). Obviamente, estos no están diseñados para la seguridad, ya que no cumplen con los requisitos de un hash seguro algoritmo (es decir, aleatoriedad) pero tienen bajas tasas de colisión para mensajes grandes. Estas características los hacen ideales si no está buscando seguridad sino velocidad.

Ejemplos de estos algoritmos y comparación se pueden encontrar en esta excelente respuesta: ¿Qué algoritmo de hash es el mejor para la singularidad y la velocidad?.

Como ejemplo, en nuestro sitio de preguntas y respuestas usamos murmur3 para hash las imágenes subidas por los usuarios, por lo que solo las almacenamos una vez, incluso si los usuarios suben la misma imagen en varias respuesta.

 9
Author: Marc Climent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-12 07:31:17
  1. No, es menos rápido pero no tan lento
  2. Para un programa de copia de seguridad tal vez sea necesario tener algo aún más rápido que MD5

Con todo, yo diría que MD5 además del nombre del archivo es absolutamente seguro. SHA-256 sería más lento y más difícil de manejar debido a su tamaño.

También podría usar algo menos seguro que MD5 sin ningún problema. Si nadie intenta hackear la integridad de su archivo, esto también es seguro.

 8
Author: Genesis Rock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-10 22:35:38

El algoritmo MD5 subyacente ya no se considera seguro, por lo tanto, aunque md5sum es adecuado para identificar archivos conocidos en situaciones que no están relacionadas con la seguridad, no se debe confiar en él si existe la posibilidad de que los archivos hayan sido manipulados a propósito y maliciosamente. En este último caso, se recomienda el uso de una nueva herramienta de hash como sha256sum.

Por lo tanto, si simplemente está buscando comprobar la corrupción de archivos o diferencias de archivos, cuando la fuente del archivo es confiable, MD5 debe ser suficiente. Si está buscando verificar la integridad de un archivo que proviene de una fuente no confiable, o de una fuente confiable sobre una conexión no cifrada, MD5 no es suficiente.

Otro comentarista señaló que Ubuntu y otros usan sumas de comprobación MD5. Ubuntu se ha movido a PGP y SHA256, además de MD5, pero la documentación de las estrategias de verificación más fuertes son más difíciles de encontrar. Vea la página HowToSHA256SUM para más detalles.

 6
Author: jsears,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-06 00:15:29

Está técnicamente aprobado que MD5 es más rápido que SHA256, por lo que solo verificando la integridad del archivo será suficiente y mejor para el rendimiento.

Puede obtener los siguientes recursos:

 4
Author: SaidbakR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-03 13:30:09
  1. Sí, en la mayoría de las CPU, SHA-256 es dos o tres veces más lento que MD5, aunque no principalmente debido a su hash más largo. Vea otras respuestas aquí y las respuestas a estas preguntas de desbordamiento de pila.
  2. Aquí hay un escenario de copia de seguridad donde MD5 no sería apropiado:
    • Su programa de copia de seguridad hashes cada archivo que se copia de seguridad. Luego almacena los datos de cada archivo por su hash, por lo que si está haciendo una copia de seguridad del mismo archivo dos veces sólo terminas con una copia.
    • Un atacante puede hacer que el sistema haga copias de seguridad de los archivos que controlan.
    • El atacante conoce el hash MD5 de un archivo que desea eliminar del copia.
    • El atacante puede entonces usar las debilidades conocidas de MD5 para crear una nueva archivo que tiene el mismo hash que el archivo a eliminar. Cuando ese archivo es copia de seguridad, que reemplazará el archivo para eliminar, y ese archivo de copia de seguridad los datos se perderán.
    • Este sistema de copia de seguridad podría fortalecerse un poco (y hacerse más eficiente) al no reemplazar los archivos cuyo hash se ha encontrado previamente, pero entonces un atacante podría evitar que un archivo de destino con un hash conocido de siendo respaldado por una copia de seguridad preventiva de un falso especialmente construido archivo con el mismo hash.
    • Obviamente, la mayoría de los sistemas, de copia de seguridad y de otro tipo, no satisfacen condiciones necesarias para que este ataque sea práctico, pero solo quería para dar un ejemplo de una situación en la que SHA-256 sería preferible a MD5. Si este sería el caso para el sistema que está creando depende de más que solo las características de MD5 y SHA-256.
  3. Sí, los hashes criptográficos como los generados por MD5 y SHA-256 son un tipo de suma de comprobación.

Feliz hashing!

 0
Author: dharcourt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-15 08:46:33