¿Con qué propósito de seguridad sirven los hashes de los archivos?

10

Muchos sitios web que ofrecen descargas también proporcionan los hashes MD5 o SHA1 de los archivos que están disponibles para descargar.

Un ejemplo-

¿Cuál es el propósito de seguridad detrás de proporcionar dicha instalación al usuario final?

    
pregunta pnp 25.03.2013 - 06:26
fuente

4 respuestas

8

Una función hash criptográfica es una función que todos pueden calcular de manera eficiente (no hay nada de secreto), y que ofrece algunas características interesantes:

  • Acepta como entrada una secuencia de su (o bytes) de longitud arbitraria (en la práctica sin ningún límite superior).
  • Su salida tiene un tamaño fijo y pequeño (128 bits para MD5, 160 bits para SHA-1).
  • Es determinista (hash de la misma entrada dos veces, posiblemente con diferentes máquinas o implementaciones, y aún así obtendrá la misma salida dos veces).
  • Está tan enredado que resiste colisiones , preimágenes y segundas preimágenes .

Para el escenario en cuestión, las colisiones no son un problema. La resistencia de preimagen se trata de la imposibilidad de encontrar un mensaje m que, cuando se utiliza el hash, produce una salida determinada. La segunda resistencia de preimagen es similar: conoces el mensaje m , que, cuando se utiliza el hash, produce un resultado x , y no puedes encontrar otro mensaje < em> m ' (distinto de m ) que produce el mismo resultado. Cómo se logra esta imposibilidad es un tema bastante complejo (consulte this ).

El pequeño tamaño de salida es la razón por la que los usamos para las descargas. Si obtiene el hash MD5 de una fuente confiable (el sitio web SSL-enabled del editor), puede descargar los datos reales desde cualquier lugar, por ejemplo. una red P2P como BitTorrent . Una vez que tenga los datos, haga un hash (en su máquina) y luego verifique que el valor de hash MD5 o SHA-1 coincida con el que obtuvo de una fuente confiable. En la coincidencia, usted sabe que tiene el archivo correcto, hasta el último bit, porque, para poder darle un archivo alterado mientras mantiene el valor hash correcto, un atacante malintencionado tendría que rompa la segunda resistencia de preimagen de la función hash y, en este momento, nadie sabe cómo hacerlo.

Si descarga el archivo desde la misma fuente que el valor hash, entonces el valor hash es un poco inútil. El valor agregado para seguridad del MD5 o SHA-1 publicado se encuentra en la situación en la que los datos generales se obtienen a través de un medio "débil", mientras que el valor hash se transfiere de forma segura.

Los valores de hash también son excelentes para detectar errores. Están diseñados para resistir las modificaciones de los datos por parte de atacantes inteligentes que saben lo que están haciendo; esto también los hace robustos contra la alteración aleatoria de un universo sin mente. Las funciones de hash son sumas de comprobación muy buenas. Si descarga un archivo grande, diga una imagen ISO, la grabe en un DVD, luego lea el DVD en otra máquina, entonces hay un amplio margen para alteraciones no maliciosas, en particular, mala memoria RAM en cualquiera de las máquinas (se producen bits volteados) más a menudo de lo que generalmente se asume). En cualquier momento, puede volver a calcular el hash en los datos y ver si coincide con el valor esperado.

    
respondido por el Thomas Pornin 25.03.2013 - 18:24
fuente
6

El hash MD5 / SHA1 que se proporciona sirve como checksum para verificar la integridad del archivo. Especialmente en los sistemas Linux / Unix, las utilidades md5sum y sha1sum proporcionan un medio conveniente para verificar que el archivo no ha sido manipulado.

Por supuesto, los hashes proporcionados solo son útiles SI puede asegurarse de que no se haya alterado el hash. Esto significa que los hashes deben transmitirse al usuario final de forma segura, tal vez a través de HTTPS o un canal diferente.

    
respondido por el Ayrx 25.03.2013 - 06:43
fuente
3
  1. Simplemente le ayuda a verificar la integridad del archivo que está descargando.
  2. Los hashes se calculan utilizando "datos correctos" y le ayuda a verificar la corrupción del archivo. Los archivos pueden estar dañados debido a un mal almacenamiento o errores en la transmisión.
  

¿Cuál es el propósito de seguridad detrás de proporcionar dicha instalación al usuario final?

Existe la posibilidad de que cuando intentas descargar un archivo / software, alguien malo pueda tener éxito haciendo una Man in The Middle attack y reemplaza el software real con una versión maliciosa . Los hashes le ayudan a asegurarse de que ha descargado el software original.

En entornos basados en Linux, tiene las utilidades md5sum y sha1sum. En caso de que estés usando Windows puedes usar algo como cryptool.

    
respondido por el Shurmajee 25.03.2013 - 07:26
fuente
3

El punto de un hash es que si los datos cambian, el hash cambia. Entonces, si sabe que el hash es correcto (es decir, hash(data_you_have) = announced_hash ), y si sabe que el hash es bueno (es decir, announced_hash = hash(genuine_data) ), entonces sabe que tiene los datos correctos ( data_you_have = genuine_data ).

Entonces, ¿por qué enviarías un hash por separado? En caso de que alguien pueda modificar los datos pero no el hash. Esto tiene sentido si envía los datos a través de un canal que tiene un gran ancho de banda pero puede estar sujeto a corrupción de datos, y el hash a través de un canal que es más confiable pero tiene poco ancho de banda.

Los torrentes son un buen ejemplo. El archivo .torrent contiene un hash de cada archivo en el torrent. Son solo unos pocos kilobytes y se pueden descargar fácilmente a través de la web. Las piezas del torrente, por otro lado, se descargan de máquinas desconocidas al azar en algún lugar de Internet, en las que no tiene motivos para confiar. Entonces, una vez que se hayan descargado los datos, tu software de torrent verificará que los hash coincidan y rechazarán cualquier pieza cuyo hash no coincida.

Aquí, proporcionar los hashes por separado en la página web es una comodidad adicional si obtiene el archivo .torrent de la misma fuente: en ese caso no es necesario verificar el hash por separado. Si obtiene el archivo .torrent de una fuente diferente (como un rastreador), esa fuente puede estar dañada o ser maliciosa, y los hashes le permiten verificar que lo que descargó es la información original.

Si descarga los hashes de un sitio web a través de HTTP, debe confiar en las siguientes partes:

  • el sitio desde el que está descargando (para proporcionar datos "buenos" y hashes coincidentes);
  • su ISP, el host del sitio y, en general, cualquier infraestructura de Internet en el medio;
  • cualquier persona que pueda haber instalado software (malware) en su máquina, en el sitio o en la infraestructura de Internet.

Sin embargo, no es necesario que confíe en ninguna persona involucrada para obtener los datos reales: solo los hashes.

Depende de usted decidir si confiar en el sitio (tanto para proporcionar datos útiles como para no ser afectado por el malware) y si confiar en que su propia computadora está libre de malware. En cuanto a la infraestructura de Internet, ese es un riesgo muy bajo en la práctica, a menos que esté utilizando wifi público.

Si descarga los hashes sobre un sitio web HTTPS cuyo certificado es bueno, esto elimina el riesgo de la infraestructura de Internet. Aún debe confiar en el propietario del sitio web, su propia máquina y la parte de la infraestructura de Internet involucrada en la entrega del certificado (proveedor del navegador, autoridad de certificación).

    
respondido por el Gilles 25.03.2013 - 11:47
fuente

Lea otras preguntas en las etiquetas