Página principal » cómo » ¿Qué son los hash MD5, SHA-1 y SHA-256 y cómo los verifico?

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

    En ocasiones, verá hashes MD5, SHA-1 o SHA-256 junto con las descargas durante sus viajes por Internet, pero en realidad no se sabe qué son. Estas cadenas de texto aparentemente aleatorias le permiten verificar que los archivos que descargue 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 hashes son productos 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. Echa un vistazo a la tabla anterior y verás que tanto "Fox" como "El zorro rojo saltan sobre el perro azul" producen la misma longitud de salida.

    Ahora compara el segundo ejemplo en 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á dramáticamente.

    MD5, SHA-1 y SHA-256 son funciones hash diferentes. Los creadores de software a menudo toman un archivo de descarga, 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 hashes en sus sitios web..

    De esa manera, puede descargar el archivo y luego ejecutar la función hash para confirmar que tiene el archivo real y original 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. Digamos que tienes un archivo .ISO de Linux que obtuviste de algún lugar y quieres confirmar que no se ha 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 de hash que espera tener. Esto confirma que el archivo que tiene es exactamente el mismo que se ofrece para descargar en el sitio web de la distribución de Linux, sin ninguna modificación.

    Tenga en cuenta que se han encontrado "colisiones" con las funciones MD5 y SHA-1. Estos son 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 prefieres SHA-256 cuando sea posible.

    Cómo comparar las funciones de hash en cualquier sistema operativo

    Con eso en mente, veamos cómo verificar el hash de un archivo que descargaste y compararlo con el que te han dado. Aquí hay métodos para Windows, macOS y Linux. Los hashes siempre serán idénticos si está utilizando la misma función de hashing en el mismo archivo. No importa qué sistema operativo uses.

    Windows

    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 del que desee ver el hash:

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

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

    De manera predeterminada, el comando mostrará el hash SHA-256 para un archivo. Sin embargo, puede especificar el algoritmo de 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 de hashing diferente:

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

    Compare el resultado de la función hash con el resultado que esperaba ver. Si es el mismo valor, el archivo no se ha corrompido, manipulado o alterado de otro modo desde el original.

    Mac OS

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

    los md5 comando muestra el hash MD5 de un archivo:

    md5 / ruta / a / archivo

    los shasum El comando muestra el hash SHA-1 de un archivo por defecto. 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 hash están firmados criptográficamente para una seguridad aún mayor

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

    Es por eso que las distribuciones modernas de Linux a menudo brindan más que los hash listados en las páginas web. Ellos firman criptográficamente estos hashes para ayudar a proteger contra los atacantes que pueden intentar modificarlos. Querrá verificar la firma criptográfica para asegurarse de que el archivo hash haya sido firmado por la distribución de Linux si quiere estar absolutamente seguro de que el hash y el archivo no fueron manipulados.

    La verificación de la firma criptográfica es un proceso más complicado. Lea nuestra guía para verificar que las ISO de Linux no hayan sido manipuladas para obtener instrucciones completas.

    Crédito de la imagen: Jorge Stolfi / Wikimedia.