Cómo verificar la integridad de archivos descargados

Introducción

Probablemente hayas descargado algún software de código abierto, como una ISO de distribución de Linux, y al lado del enlace de descarga había un enlace para descargar una suma de comprobación/verificación del archivo.

¿Alguna vez te has preguntado para qué sirve ese enlace de suma de comprobación?

Esa suma de comprobación se utiliza para verificar la integridad del archivo que acabas de descargar.

El 20 de febrero de 2016, el sitio web de Linux Mint, una distribución popular de Linux, fue hackeado y la ISO utilizado para instalar la distribución se vio comprometida.

Antes de que se descubriera la ISO comprometida, muchas personas descargaron y posiblemente instalaron una versión de Linux Mint con una puerta trasera incorporada.

Esta instalación peligrosa podría haberse evitado a nivel de usuario si las personas que descargaron la ISO alterada hubiesen realizado la verificación de archivo, para ver si lo que descargaron tenía la misma suma de verificación que, el archivo original.

La ISO hackeada tenía una suma de comprobación completamente diferente a la ISO original.

Aunque la verificación de archivos puede indicar que un archivo puede haber sido alterado, a menudo es más útil para mostrarle al usuario que el archivo que descargó no es del todo correcto o se modificó durante el proceso de descarga.

Si se descartó un paquete TCP durante la descarga, el archivo que has descargado puede ser un obstáculo, y realizar una verificación de archivo te haría saber que lo que descargaste es diferente de lo que está disponible en el servidor de origen.

En este tutorial, aprenderás qué es la verificación de archivos, por qué es importante y cómo hacerlo en varios sistemas operativos utilizando herramientas de línea de comandos.

Prerrequisitos

Para este artículo, usarás las herramientas de línea de comandos para la verificación de archivos que están integradas en cada sistema operativo.

Necesitarás un archivo para verificar, así como las sumas de verificación MD5 y SHA1 para ese archivo.

Usaremos una ISO de instalación de Ubuntu para nuestras verificaciones de archivos.

Debes descargar el CD ISO Ubuntu Minimal para PC de 64 bits (amd64, x86_64).

Mientras lo descargas, debes tomar nota de las sumas MD5 y SHA1 junto al enlace de descarga.

Utilizarás estas sumas de verificación a lo largo del tutorial.

Cómo funciona la verificación de archivos

La verificación de archivos, también conocida como hashing, es el proceso de verificar que un archivo que tienes en tu máquina sea idéntico al archivo de origen.

Cuando le haces hashing a un archivo, te queda una suma de verificación, una cadena alfanumérica aleatoria con un conjunto longitud.

El hashing a un archivo no lo cifra y no puedes tomar una suma de verificación y ejecutarla de nuevo a través de un algoritmo para obtener el archivo fuente original.

El proceso para generar una suma de verificación a menudo se denomina función criptográfica unidireccional.

Cuando realizas un hash en un archivo, se “resume” en una cadena de caracteres aleatorios.

Por ejemplo, supongamos que tienes un documento que contiene 1000 caracteres.

Cuando el archivo se procesa mediante el algoritmo MD5, la suma de comprobación resultante será de 32 caracteres aleatorios.

Si tuviera que segmentar un archivo largo de 2000 caracteres, la suma de comprobación MD5 resultante sigue siendo de 32 caracteres.

Incluso si el archivo de origen tenía solo 10 caracteres, la suma de comprobación MD5 seguiría teniendo 32 caracteres aleatorios.

Cada vez que realices un hash en el mismo archivo, siempre obtendrás la misma cadena de caracteres en el hash, siempre que no hayas cambiado cada parte de ese archivo.

Pero si incluso una cosa es diferente, como un espacio adicional en el archivo, la suma de verificación será completamente diferente.

Tipos de verificación

Hay dos tipos de sumas de verificación que normalmente verás para verificaciones de archivos, MD5 o SHA.

El algoritmo MD5 recibe muchas críticas en el mundo del cifrado por ser fácilmente hackeable, pero esto no es una preocupación cuando se trata de la verificación de archivos.

Cuando se trata de verificar la integridad de un archivo, la debilidad de la herramienta para el cifrado no importa.

Eso es bueno para nosotros porque MD5 es una especificación madura y más rápida que otros métodos para realizar hashes.

Recientemente, ha habido un aumento en el uso del algoritmo de hash SHA para las sumas de verificación, ya que es el algoritmo de hash utilizado en algunos cifrados modernos.

Sin embargo, a diferencia de MD5, SHA tiene diferentes versiones y es importante usar la versión correcta al verificar.

La versión se identifica como un número como 1, 2, 3 o por la cantidad de veces que SHA se ejecuta en sucesión, como 256, 384 o 512.

La suma de comprobación que uses debe especificar qué versión de SHA usar.

Si el sitio solo especifica un hash con la etiqueta SHA, sin número, entonces es seguro asumir que están usando SHA1.

Para fines de verificación de archivos, ambos métodos son igualmente válidos.

Aunque el algoritmo es diferente, ambos devolverán una cadena aleatoria con una longitud establecida, aunque los hashes MD5 son más cortos que cualquiera de los hashes SHA.

Nota:

A veces las firmas PGP/GPG también se proporcionan para fines de verificación de archivos. Ese tipo de firmas no es muy común y es más complicado verificarla.

Requieren que descargues la suma de verificación, la clave pública del sitio, y que gpg ya esté configurado tu sistema para realizar la verificación.

Esos pasos están más allá del alcance de este tutorial.

Importancia de verificar

Verificar el hash en los archivos descargados proporciona dos garantías diferentes que valen la pena.

Primero, con una suma de verificación coincidente, puedes estar seguro de que el archivo que acabas de descargar es idéntico a la fuente y no ha sido alterado por un tercero.

Y segundo, sabes que el archivo no ha sido dañado o modificado durante el tránsito.

Ambos casos son importantes ya que, si ocurriera algo, la descarga que tengas podría ser perjudicial para tu máquina o podría no funcionar en absoluto.

Ahora que sabes qué es una suma de comprobación y por qué deberías realizar una comprobación de tus archivos, veamos cómo hacerlo para tu sistema operativo.

Iniciaremos usando Linux.

Realizar la verificación de archivos en Linux

La mayoría de las distribuciones de Linux tienen herramientas de línea de comandos para cada algoritmo de hashing.

El patrón del nombre de la herramienta es ‘HASH-TYPE’ más la palabra ‘sum’.

Entonces, para hacer hash con MD5, el nombre del programa es md5sum. Para hacer hash con SHA 256, el comando es sha256sum.

Si no estás seguro de cuál es el nombre exacto, escribe el nombre del algoritmo hash y luego presiona tab dos veces y la mayoría de las distribuciones mostrarán todos los comandos que comienzan con ese nombre de algoritmo.

Revisaremos un par de verificaciones populares a continuación.

Realizaremos nuestra primera verificación con el algoritmo de hash MD5. Ejecuta el comando md5sum y pásalo a la ruta al archivo que deseas hacer hash:

Los resultados se verán así:

Esa cadena aleatoria, que comienza con ‘8388f’, es la suma de verificación, y esto es lo que necesitarás para comparar con la suma de verificación proporcionada en la página de descargas.

Dado que cualquier modificación en el archivo dará como resultado una suma de verificación completamente diferente, para ahorrar tiempo debes verificar que los primeros caracteres y los últimos son los mismos que la fuente en lugar de cada caracter.

Por ejemplo, si deseas verificar rápidamente que la suma de verificación para ‘mini.iso’ coincide, verifica que ambas sumas de verificación comiencen con ‘8388f’ y terminen con ‘f90da’.

Si ambos coinciden, es muy probable (casi el 100%) que el hash completo sea el mismo.

Si deseas estar 100% seguro, simplemente copia y pega la suma de verificación del sitio web debajo de la salida de la verificación local para ver si cada carácter se alinea:

SHA

Ahora echemos un vistazo a la comprobación de hashes SHA.

Los comandos de hashing SHA más comunes son sha1sumsha256sum. Ejecuta el comando sha1sum pasándole la ruta al archivo:

Los resultados serán similares a esto:

Debes comparar el valor resultante con el valor en la página web para verificar que coincidan.

Ahora echemos un vistazo a la verificación de archivos en macOS.

Realizar la verificación de archivos en macOS

A diferencia de Linux, macOS solo tiene dos comandos hash (md5 y shasum), en lugar de uno para cada algoritmo. Pero aún podemos realizar todas las verificaciones que necesitamos con solo estas herramientas.

A pesar de las diferentes aplicaciones y diferentes sistemas operativos, el hash resultante de estas herramientas es el mismo en todos los sistemas operativos.

Dado que md5 es un algoritmo independiente, es su propio comando en macOS. Ejecuta el comando md5, pasándole la ruta al archivo que deseas verificar:

Los resultados se verán así:

Como puedes ver, la salida en macOS no es exactamente la misma que la salida en Linux.

Empero, aún muestra el nombre de archivo y la cadena aleatoria de 32 caracteres.

Debes comparar los caracteres con la suma de comprobación MD5 original y asegúrate de que coincidan.

Ahora echemos un vistazo a la verificación de las sumas de verificación SHA.

macOS tiene una herramienta utilizada para realizar cualquier verificación SHA llamada shasum.

Cuando la ejecutas, proporciona el tipo de comprobación SHA que deseas como argumento.

Ejecuta el siguiente comando, especificando SHA1 utilizando el indicador –a:

Los resultados se verán así:

Compara este valor con el hash SHA1 del archivo original. Si no coinciden, debes intentar descargar el archivo y verificar su hash nuevamente.

Si necesitaras realizar una comprobación SHA 256, el comando sería shasum -a 256 mini.iso. En caso de no proporcionar el tipo, el valor predeterminado es SHA1.

A continuación, echemos un vistazo a la verificación de archivos en Windows.

Realizar la verificación de archivos en Windows

Windows 7 y versiones posteriores incluyen la aplicación certutil que puede manejar todas nuestras necesidades de hash.

La salida se ve muy diferente de Linux y macOS, pero la suma de verificación será la misma e igual de válida.

Los dos ejemplos que siguen usan PowerShell.

El formato del comando es certutil -hashfile path/to/file ALGORITHM

El comando ‘certutil’ no distingue entre mayúsculas y minúsculas, por lo que ‘CertUtil’, ‘certUtil’ y ‘certutil’ son válidos.

Sin embargo, el algoritmo distingue entre mayúsculas y minúsculas, lo que significa que ‘md5’ no funcionará y que necesitarás escribir ‘MD5’.

Para verificar el hash MD5 del archivo mini.iso, ejecuta este comando:

Los resultados se verán así:

Para el algoritmo SHA, ejecutaremos el mismo comando, pero usaremos en SHA1 lugar de MD5.

El número después SHA especifica las diferentes versiones o iteraciones de SHA.

Entonces usamos SHA o SHA1para el hash SHA1, o SHA256 si necesitábamos el algoritmo SHA 256.

Los resultados se verán así:

Compara el hash resultante con el de la página de descarga para asegurarte de que coincidan.

Conclusión

Ya sea que se estés asegurándote de que un archivo que acabas de descargar no esté dañado durante la descarga o estés verificando que una persona malintencionada no ha hackeado el servidor de descarga, el tiempo extra que lleva verificar el hash de un archivo bien vale la pena.

Si la línea de comandos es demasiado inconveniente para una fácil verificación de archivos, aquí hay algunas herramientas basadas en la interfaz gráfica de usuario (GUI) que puedes usar: