¿Qué son los hash MD5, SHA-1 y SHA-256, y cómo puedo verificarlos?

A veces verá hash MD5, SHA-1 o SHA-256 junto con las descargas durante sus viajes por Internet, pero no sabrá realmente cuáles son. Estas cadenas de texto aparentemente aleatorias le permiten verificar que los archivos que descarga no estén dañados o manipulados. Puede hacer esto con los comandos integrados en Windows, macOS y Linux.

Cómo funcionan los hash y cómo se utilizan para la verificación de datos

Los hash son el producto de algoritmos criptográficos  diseñados para producir una cadena de caracteres. A menudo, estas cadenas tienen una longitud fija, independientemente del tamaño de los datos de entrada. Eche un vistazo a la tabla anterior y verá que tanto «Zorro» como «El zorro rojo salta sobre el perro azul» producen la misma longitud de salida.

Ahora compare el segundo ejemplo de la tabla con el tercero, cuarto y quinto. Verá que, a pesar de un cambio muy pequeño en los datos de entrada, los hashes resultantes son muy diferentes entre sí. Incluso si alguien modifica una parte muy pequeña de los datos de entrada, el hash cambiará drásticamente.

MD5, SHA-1 y SHA-256 son todas funciones hash diferentes. Los creadores de software a menudo toman la descarga de un archivo, como un archivo .iso de Linux o incluso un archivo .exe de Windows, y lo ejecutan a través de una función hash. Luego ofrecen una lista oficial de los hash en sus sitios web.

De esa manera, puede descargar el archivo y luego ejecutar la función hash para confirmar que tiene el archivo original real y que no se ha dañado durante el proceso de descarga. Como vimos anteriormente, incluso un pequeño cambio en el archivo cambiará drásticamente el hash.

Estos también pueden ser útiles si tiene un archivo que obtuvo de una fuente no oficial y desea confirmar que es legítimo. Supongamos que tiene un archivo .ISO de Linux que obtuvo de algún lugar y desea confirmar que no ha sido manipulado. Puede buscar el hash de ese archivo ISO específico en línea en el sitio web de la distribución de Linux. Luego puede ejecutarlo a través de la función hash en su computadora y confirmar que coincide con el valor hash que esperaría que tuviera. Esto confirma que el archivo que tiene es exactamente el mismo archivo que se ofrece para descargar en el sitio web de la distribución de Linux, sin modificaciones.

Tenga en cuenta que se han encontrado “colisiones” con las funciones MD5 y SHA-1. Se trata de varios archivos diferentes, por ejemplo, un archivo seguro y un archivo malicioso, que dan como resultado el mismo hash MD5 o SHA-1. Es por eso que debería preferir SHA-256 cuando sea posible.

Cómo comparar funciones hash en cualquier sistema operativo

Con eso en mente, veamos cómo verificar el hash de un archivo que descargó y compararlo con el que le dieron. Estos son métodos para Windows, macOS y Linux. Los hash siempre serán idénticos si está utilizando la misma función de hash en el mismo archivo. No importa qué sistema operativo uses.

Ventanas

Este proceso es posible sin ningún software de terceros en Windows gracias a PowerShell.

Para comenzar, abra una ventana de PowerShell iniciando el acceso directo «Windows PowerShell» en su menú Inicio.

Ejecute el siguiente comando, reemplazando «C: \ ruta \ a \ archivo.iso» con la ruta a cualquier archivo cuyo hash desee ver:

Get-FileHash C: \ ruta \ a \ file.iso

Llevará algún tiempo generar el hash del archivo, según el tamaño del archivo, el algoritmo que esté utilizando y la velocidad de la unidad en la que se encuentra el archivo.

De forma predeterminada, el comando mostrará el hash SHA-256 de un archivo. Sin embargo, puede especificar el algoritmo hash que desea utilizar si necesita un MD5, SHA-1 u otro tipo de hash.

Ejecute uno de los siguientes comandos para especificar un algoritmo hash diferente:

Get-FileHash C: \ ruta \ a \ file.iso -Algorithm MD5
Get-FileHash C: \ ruta \ a \ file.iso -Algorithm SHA1
Get-FileHash C: \ ruta \ a \ file.iso -Algorithm SHA256
Get-FileHash C: \ ruta \ a \ file.iso -Algorithm SHA384
Get-FileHash C: \ ruta \ a \ file.iso -Algorithm SHA512
Get-FileHash C: \ ruta \ a \ file.iso -Algorithm MACTripleDES
Get-FileHash C: \ ruta \ a \ file.iso -Algorithm RIPEMD160

Compare el resultado de la función hash con el resultado que esperaba ver. Si tiene el mismo valor, el archivo no ha sido dañado, manipulado o alterado de otra manera del original.

img_5894fdde80f06

Mac OS

macOS incluye comandos para ver diferentes tipos de hashes. Para acceder a ellos, inicie una ventana de Terminal. Lo encontrará en Finder> Aplicaciones> Utilidades> Terminal.

El md5comando muestra el hash MD5 de un archivo:

md5 / ruta / a / archivo

El shasumcomando muestra el hash SHA-1 de un archivo de forma predeterminada. Eso significa que los siguientes comandos son idénticos:

shasum / ruta / a / archivo
shasum -a 1 / ruta / a / archivo

Para mostrar el hash SHA-256 de un archivo, ejecute el siguiente comando:

shasum -a 256 / ruta / a / archivo

Linux

En Linux, acceda a una Terminal y ejecute uno de los siguientes comandos para ver el hash de un archivo, según el tipo de hash que desee ver:

md5sum / ruta / a / archivo
sha1sum / ruta / a / archivo
sha256sum / ruta / a / archivo

Algunos hashes están firmados criptográficamente para ofrecer aún más seguridad

Si bien los hash pueden ayudarlo a confirmar que un archivo no fue manipulado, todavía hay una vía de ataque aquí. Un atacante podría hacerse con el control del sitio web de una distribución de Linux y modificar los hash que aparecen en él, o un atacante podría realizar un ataque man-in-the-middle y modificar la página web en tránsito si accede al sitio web a través de HTTP en lugar de HTTPS cifrado .

That’s why modern Linux distributions often provide more than hashes listed on web pages. They cryptographically sign these hashes to help protect against attackers that might attempt to modify the hashes. You’ll want to verify the cryptographic signature to ensure the hash file was actually signed by the Linux distribution if you want to be absolutely sure the hash and file weren’t tampered with.

RELATED: How to Verify a Linux ISO’s Checksum and Confirm It Hasn’t Been Tampered With

Verifying the cryptographic signature is a more involved process. Read our guide to verifying Linux ISOs haven’t been tampered with for full instructions.

Image Credit: Jorge Stolfi/Wikimedia