cuando la gente dice que un archivo tiene un hash md5 comprobado, ¿qué significa eso exactamente?

7

ok, acababa de leer este sitio: enlace

y pensé en algo que siempre quise preguntar pero nunca hice.

cuando la gente dice que un archivo tiene un hash md5 comprobado, ¿qué significa eso exactamente? ¿Disolvieron seriamente el programa en bits y hicieron un hash en los bits?

    
pregunta Pacerier 11.07.2011 - 16:21
fuente

4 respuestas

6

Cuando las personas dicen que han verificado que el hash MD5 del archivo es, de hecho, el mismo que el host del archivo dice que el hash debería ser. Si son los mismos, sabes que nada ha desordenado el archivo intermedio.

La forma en que se hace esto en la práctica es simplemente ejecutar una herramienta como md5sum (wikipedia) en el archivo que descargó y comparó contra lo que el anfitrión dice que la suma md5 debería ser. Por lo general, los proveedores de archivos compartirán la suma md5 en su página, de fácil acceso desde donde la descargó.

Esto aumenta la seguridad al saber que nadie ha manipulado el archivo a través de la red y que el repositorio donde se almacena el archivo no ha sido manipulado. Sin embargo, la suma no sirve de nada si el sitio web que muestra el md5 ha sido comprometido.

    
respondido por el Chris Dale 11.07.2011 - 17:49
fuente
9

La idea del hash md5 es que es un hash de todo el archivo, que será diferente si se cambia algún bit. No estoy seguro de lo que quieres decir con 'disuélvelo en bits' porque eso es todo lo que es un archivo: una serie de bits.

Cuando descarga un archivo, puede obtener el hash md5 en su propia máquina, y al compararlo con el md5 proporcionado en línea, puede asegurarse de tener el archivo correcto y sin modificar.

Eche un vistazo a esta pregunta sobre el valor de un hash de un archivo.

    
respondido por el Rory Alsop 11.07.2011 - 17:02
fuente
3
  

cuando la gente dice que un archivo tiene un hash md5 comprobado, ¿qué significa eso exactamente?

Para que quede claro, el artículo de su enlace menciona firmas digitales y tiene una sección que muestra una figura con un valor MD5.

Las firmas digitales y los hashes MD5 son cosas diferentes.

MD5 es un algoritmo que genera un valor de hash criptográfico. MD5, al igual que otras funciones hash criptográficas, toma como entrada una secuencia de bits y produce una salida de tamaño fijo independientemente del tamaño de la entrada. La secuencia de bits puede ser un archivo. Para simplificar, de ahora en adelante solo usaré el archivo en lugar de la secuencia de bits.

Cuando desee verificar si tiene el mismo archivo que otra persona, puede generar un hash MD5 del archivo y comparar con un hash MD5 que ha creado la otra persona.

Advertencia : ¡El siguiente ejemplo es inseguro y es solo para ilustración!

Alicia le envía a Bob un archivo:

  • Alice calcula un hash_alice hash MD5 para file_a
  • Bob le pide a Alice que le envíe file_a
  • Alice envía file_a a Bob
  • Bob recibe file_a
  • Bob calcula un hash_bob hash MD5 para file_a

Si hash_bob es el mismo que hash_alice, entonces el archivo que recibe Bob es el mismo que envió Alice. Bob ha revisado el hash MD5 para verificar que recibió el archivo correcto.

Ahora asumamos que Mallory es un atacante y quiere darle un virus a Bob. Ella tiene la capacidad de monitorear intercambios e interceptar archivos.

  • Alice calcula un hash_alice hash MD5 para file_a
  • Bob le pide a Alice que le envíe file_a
  • Alice envía file_a a Bob
  • Mallory incursiona en el archivo_a de Alice
  • Mallory copia su archivo de virus file_v y le cambia el nombre a file_a
  • Mallory envió su archivo de virus_a a Bob
  • Bob recibe file_a
  • Bob calcula un hash_bob hash MD5 para file_a

Ahora hash_bob no debería ser lo mismo que hash_alice, y Bob debería darse cuenta de que alguien ha enviado el archivo incorrecto.

  

Si el programa tiene varios archivos, ¿cómo hacemos para calcular el hash simple de md5 para ese programa?

Para cada archivo en el programa, usted calcula un valor de hash.

Si tengo: main.exe libabc.dll release.txt y iconabc.gif

Calculo hash_main.exe, hash_libabc.dll, hash_release.txt y hash_iconabc.gif

Cada valor de hash debe ser único.

Sección intermedia:

El problema con el primer ejemplo es que no muestra cómo Bob obtiene hash_alice para poder compararlo con hash_bob. Si hash_alice se envía de la misma manera que file_a, un atacante lo modificaría de forma similar a como lo hizo Mallory en el segundo ejemplo.

Hay dos soluciones básicas para el problema: use un canal seguro (o fuera de banda) para enviar el hash, o haga firmar un hash con un certificado de confianza (@nealmcb credit here). Fuera de banda significa usar un medio físico de transmisión diferente. Un ejemplo de fuera de banda sería imprimir el valor hash y enviarlo por correo postal. Canal seguro significa usar algo como una red privada virtual (VPN) o IPSec.

El problema con el hash firmado es que Bob necesita el certificado de Alice para verificar la firma. Si Alice le envía el certificado a Bob de la misma manera que envía el archivo, entonces el certificado podría ser interceptado al igual que el archivo (@nealmcb credit here).

Reflexiones sobre la transmisión:

Si piensa en las dos soluciones por un minuto, puede plantear una pregunta.

Si tengo un canal seguro para enviar el hash, ¿por qué no uso el mismo canal para enviar el archivo?

Las razones por las que usaría Internet normal para enviar el archivo y un canal seguro para enviar el hash:

  • El canal seguro es muy lento (es decir, el acceso telefónico) y el hash es corto, por lo que se transfiere rápidamente, pero el archivo es grande y tomaría demasiado tiempo.
  • El canal seguro es caro. O te cobran por el tiempo usado o por los bytes transferidos.
  • El propietario del canal limita su uso del canal seguro a solo enviar o recibir hashes.
respondido por el this.josh 12.07.2011 - 02:21
fuente
1

Si entiendo su pregunta, sí, es posible verificar un archivo con el MD5 (o cualquier algoritmo de hash).

De hecho, cada archivo procesado por el algoritmo de hash es bits y no depende del tipo de datos de entrada. Otra cosa, el hash puede tener cualquier longitud de entrada, pero genera un valor de tamaño fijo.

    
respondido por el M'vy 11.07.2011 - 17:02
fuente

Lea otras preguntas en las etiquetas