Comprobar ISOs en Linux: checksums, GPG y buenas prácticas

  • Verificar una ISO implica comprobar tanto su integridad mediante checksums como su autenticidad mediante firmas GPG.
  • Las utilidades md5sum, sha1sum y sha256sum permiten calcular y comprobar hashes de forma sencilla desde la terminal.
  • Los archivos SHA256SUMS y SHA256SUMS.gpg son clave para validar que las descargas coinciden con las imágenes oficiales.
  • Generar y publicar ficheros de checksums propios facilita que otros usuarios verifiquen de forma rápida y segura sus descargas.

Verificar ISOs en Linux con checksums y GPG

Cuando descargamos una distribución GNU/Linux, lo habitual es bajar la imagen ISO y lanzarse a crear el USB booteable sin pensar demasiado en lo que puede haber pasado por el camino. Lo cierto es que, aunque muchas veces no pasa nada, estamos confiando a ciegas en que esa ISO es legítima. Que nadie la ha tocado y que la descarga no se ha corrompido.

Si hablamos de un sistema operativo completo, la cosa cambia. Son archivos grandes, tardan en descargarse y sobre todo, un fallo o manipulación en la ISO puede comprometer todo el equipo. Por eso en el mundo Linux es tan común (y tan recomendable) verificar la integridad y la autenticidad de las ISOs usando checksums y firmas GPG antes de grabarlas en un DVD o volcarlas a USB.

Qué significa comprobar una ISO: integridad y autenticidad

Cuando verificas una ISO no estás haciendo un único chequeo, sino dos comprobaciones distintas que conviene no mezclar: la integridad del fichero y la autenticidad de su origen. La integridad te dice si la ISO que tienes en disco es idéntica a la que había en el servidor, bit a bit. La autenticidad te indica si esa ISO y sus checksums proceden realmente del proyecto que dicen representar.

La integridad se comprueba mediante una función hash (checksum) calculada sobre el archivo completo. Si el resultado que obtienes en tu equipo coincide con el que ves publicado por la distribución, significa que la ISO no se ha alterado durante la descarga ni ha sufrido daños en el almacenamiento.

La autenticidad se valida mediante firmas digitales GPG asociadas a claves públicas de los desarrolladores. En la práctica, la distribución firma el archivo que contiene los checksums (por ejemplo, SHA256SUMS) y tú verificas que esa firma corresponda a la clave oficial del proyecto y que no haya sido modificada.

Aunque mucha gente se queda solo con comprobar la suma MD5 o SHA y lo da por bueno, si alguien ha comprometido el servidor de descargas, también podría reemplazar la ISO y publicar un checksum falso. De ahí que la buena práctica pase por validar también la firma GPG del archivo de sumas.

checksum iso linux

Qué es un checksum y por qué se usa en ISOs

Un checksum es el resultado de aplicar a un archivo una función hash criptográfica que genera una cadena única para ese contenido. Esa cadena se suele representar en hexadecimal (caracteres 0-9 y a-f) y tiene longitud fija. Independientemente del tamaño del fichero original.

En el contexto de las distribuciones GNU/Linux, los checksums sirven para verificar que los datos no han cambiado desde que el proyecto publicó la imagen. Si dos archivos producen el mismo hash con el mismo algoritmo, se considera (en la práctica) que son idénticos. Si el hash no coincide, basta con un solo bit diferente para que el valor cambie por completo y podamos detectar el problema.

Existen muchos algoritmos de hash, pero los que verás con más frecuencia asociados a ISOs son MD5, SHA-1 y la familia SHA-2 (SHA-256, SHA-384, SHA-512…). En páginas de descarga de Debian, Ubuntu, Fedora u otras distribuciones suelen ofrecer, al lado de las ISOs, ficheros con nombres del tipo MD5SUMS, SHA1SUMS o SHA256SUMS.

El procedimiento es sencillo: descargas la ISO y su archivo de sumas, calculas el hash de la ISO en tu máquina y compruebas que el resultado coincide con el valor publicado en el fichero de checksums. Si coincide, puedes estar razonablemente seguro de que la imagen no está corrupta ni se ha truncado.

MD5 se considera hoy en día un algoritmo obsoleto para usos de seguridad fuertes, porque se han encontrado colisiones prácticas. Aun así, sigue siendo útil como control de integridad básico. Para descargas importantes, especialmente ISOs, conviene tirar mejor de SHA-256, que es actualmente el estándar recomendado en la mayoría de distribuciones.

Tipos de archivos que encontrarás al descargar una ISO

Al bajar una distribución desde su servidor oficial es habitual encontrar, además de la propia imagen, una serie de archivos adicionales. Cada uno tiene su papel y conviene saber qué función cumple cada tipo de fichero y cómo se relaciona con la verificación que vas a realizar.

Por lo general te encontrarás algo como esto (los nombres pueden variar ligeramente entre distros):

  • nombre-distro-versión-arquitectura.iso: la imagen propiamente dicha, que es la que grabarás en un USB o DVD. Por ejemplo, ubuntu-20.04-desktop-amd64.iso, que indica distribución, versión, edición (escritorio/servidor) y arquitectura.
  • MD5SUMS: archivo de texto que incluye el listado de hashes MD5 de las imágenes disponibles en ese directorio. Cada línea asocia un hash con un nombre de fichero.
  • MD5SUMS.gpg: firma GPG del archivo MD5SUMS, generada con la clave de los desarrolladores. Sirve para comprobar que el fichero de sumas MD5 procede realmente del proyecto y no ha sido alterado.
  • SHA256SUMS: equivalente a MD5SUMS pero usando el algoritmo SHA-256. Es el fichero que deberías priorizar si está disponible.
  • SHA256SUMS.gpg: firma digital GPG de SHA256SUMS, usada para garantizar su autenticidad.

En algunas distribuciones también verás archivos SHA1SUMS, SHA512SUMS o similares. Todos siguen la misma idea: un listado de sumas y, opcionalmente, una firma GPG asociada para que puedas comprobar que ese listado no ha sido manipulado.

Si en lugar de descargar la ISO por HTTP/HTTPS lo haces mediante BitTorrent, la mayoría de clientes ya integran un sistema de verificación interno basado en piezas y hashes parciales, por lo que las probabilidades de acabar con una ISO corrupta se reducen mucho. Aun así, si quieres asegurarte de la autenticidad, sigue teniendo sentido verificar la firma GPG del archivo de sumas.

linux funciones hash

Cómo funcionan las funciones hash (MD5, SHA-1, SHA-256…)

A nivel práctico no necesitas entender las matemáticas que hay detrás de los hashes, pero sí conviene manejar un par de ideas para tener claro por qué son tan útiles para comprobar ISOs. Una función hash criptográfica toma un archivo de cualquier tamaño y devuelve una cadena de longitud fija; cambiar un solo bit del archivo provoca un hash completamente diferente.

Los requisitos de una buena función hash incluyen que sea fácil de calcular en un sentido pero prácticamente imposible de invertir, que sea muy difícil encontrar dos archivos distintos con el mismo hash (colisión) y que sea resistente a intentos de generar contenidos maliciosos que encajen en un hash concreto.

MD5 fue durante años el estándar de facto para este tipo de verificaciones, pero los avances en criptografía han demostrado que es posible construir archivos diferentes con el mismo hash MD5. Por eso, aunque sigue siendo moneda común en algunos proyectos, para cuestiones de seguridad se recomienda usar algoritmos más robustos.

SHA-1 mejoró parte de las debilidades de MD5, pero también se han identificado problemas de colisiones y se considera no adecuado para nuevas implementaciones que requieran alta seguridad. La familia SHA-2 (especialmente SHA-256) es hoy la opción más equilibrada entre seguridad y rendimiento para la verificación de ISOs.

En la práctica, si la distro te ofrece varios archivos de sumas, lo ideal es apostar por SHA-256 o SHA-512 como primera opción, dejar SHA-1 solo para casos donde no haya otra cosa y relegar MD5 a un control de integridad básico cuando no tengas alternativa.

Herramientas en Linux para calcular y verificar checksums

La buena noticia es que no necesitas instalar nada raro: en la mayoría de distribuciones GNU/Linux modernas ya vienen incluidas las utilidades de línea de comandos para calcular y comprobar hashes. Estas herramientas forman parte habitualmente de coreutils u otros paquetes básicos.

Los comandos más habituales con los que te vas a topar son:

  • md5sum: calcula y verifica sumas MD5.
  • sha1sum: calcula y verifica sumas SHA-1.
  • sha256sum: calcula y verifica sumas SHA-256.
  • sha512sum: calcula y verifica sumas SHA-512.

Usarlos es muy directo. Si quieres calcular el hash de un archivo concreto, basta con ejecutar en la terminal, desde el directorio donde tengas la ISO:

cd Descargas
sha256sum nombre-de-tu-imagen.iso

El comando imprimirá una línea con el hash y el nombre del fichero, que podrás comparar con el valor publicado en la web. Si prefieres MD5 o SHA-1, el formato del comando es idéntico cambiando la utilidad (md5sum, sha1sum, sha512sum…).

Además de calcular hashes individuales, estas mismas herramientas permiten verificar de golpe múltiples archivos usando el modo de comprobación con la opción -c. Ahí es donde entra en juego el fichero MD5SUMS o SHA256SUMS que has descargado junto a las ISOs.

Comprobar la integridad de una ISO usando archivos de sumas

En un escenario típico, descargas de la web oficial de la distro tanto la imagen ISO como su archivo SHA256SUMS (y, si está disponible, también MD5SUMS o SHA1SUMS). La estructura de ese fichero es muy simple: cada línea contiene un hash, un espacio, opcionalmente un asterisco o espacio adicional, y el nombre del archivo.

Para comprobar la ISO con el fichero de sumas solo tienes que situarte en la carpeta donde tengas tanto la imagen como el archivo SHA256SUMS y ejecutar:

sha256sum -c SHA256SUMS

La utilidad recorre todas las líneas de SHA256SUMS y compara el hash que calcula localmente para cada archivo listado con el que aparece en el documento. Si todo está en orden, mostrará algo como:

nombre-distro.iso: OK

En caso de que haya discrepancias, ya sea porque la ISO está corrupta o porque el archivo no coincide con el listado de sumas, verás mensajes del estilo:

nombre-distro.iso: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

El mismo procedimiento se aplica a MD5 y SHA-1 sustituyendo la herramienta y el fichero correspondientes, por ejemplo:

md5sum -c MD5SUMS
sha1sum -c SHA1SUMS

Este enfoque es especialmente cómodo cuando descargas varias ISOs o múltiples ficheros a la vez, porque verificas todos los archivos de golpe con un solo comando y el sistema te indica cuáles han pasado la prueba y cuáles no.

Firmas GPG: comprobando la autenticidad de las sumas

Hasta ahora solo hemos hablado de integridad, pero falta el segundo componente: asegurarnos de que el archivo de sumas proviene realmente del proyecto y no de alguien que ha comprometido el servidor. Ahí entra GnuPG (gpg), la herramienta estándar para manejar criptografía de clave pública en GNU/Linux.

La mayoría de distribuciones importantes firman sus archivos de sumas (por ejemplo, SHA256SUMS.gpg) con una clave privada asociada a los desarrolladores. Tú, como usuario, descargas esa firma y usas la clave pública del proyecto para verificar que el archivo SHA256SUMS no ha sido modificado.

El flujo típico con una distro como Ubuntu sería este, una vez tengas gpg instalado y te encuentres en el directorio de las descargas:

gpg --keyid-format long --verify SHA256SUMS.gpg SHA256SUMS

Si tu equipo ya dispone de la clave pública de Ubuntu correctamente importada y confiada, gpg te mostrará un mensaje indicando una firma válida y el identificador de la clave. Pero es muy frecuente que la primera vez que lo ejecutes te diga que no conoce esa clave pública.

En ese caso, el siguiente paso sería importar la clave pública desde un servidor de claves confiable. Por ejemplo, con Ubuntu podrías hacer algo así:

gpg --keyid-format long --keyserver hkp://keyserver.ubuntu.com --recv-keys 0xD94AA3F0EFE21092

Eso descarga la clave con el identificador indicado desde el keyserver oficial. Una vez importada, vuelves a lanzar el comando de verificación de la firma sobre SHA256SUMS y deberías obtener ya una confirmación de que la firma es correcta y está asociada a la clave “Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>” u otra similar según la distro.

Es posible que gpg muestre avisos del tipo “There is no indication that the signature belongs to the owner”, lo que básicamente significa que no has marcado esa clave como de confianza absoluta. No es un error fatal: mientras tú mismo hayas comprobado por otros medios (web oficial, documentación, etc.) que el fingerprint de la clave es el que declara el proyecto, puedes seguir adelante.

Ejemplo práctico: verificar una ISO reciente de Ubuntu

Para ver todo esto de manera clara, puedes imaginar que descargas una ISO de Ubuntu (por ejemplo, una versión LTS reciente) desde la web oficial. En esa página tendrás enlaces a la ISO, al fichero SHA256SUMS y a su firma SHA256SUMS.gpg, todo en el mismo directorio o cercano.

Los pasos que seguirías serían, en esencia, los siguientes:

En primer lugar, descargar la ISO adecuada para tu arquitectura (por ejemplo, la imagen de escritorio AMD64 de 64 bits), además del archivo SHA256SUMS y SHA256SUMS.gpg correspondientes a esa versión.

A continuación, con gpg instalado en tu sistema, verificarías la firma del fichero de sumas con:

gpg --keyid-format long --verify SHA256SUMS.gpg SHA256SUMS

Si gpg te indica que no encuentra la clave, la obtienes de un servidor de claves asociado al proyecto ejecutando un comando similar a:

gpg --keyid-format long --keyserver hkp://keyserver.ubuntu.com --recv-keys 0xD94AA3F0EFE21092

Una vez importada la clave y validada la firma del archivo SHA256SUMS, pasas a comprobar la ISO frente a ese listado utilizando:

sha256sum -c SHA256SUMS

El comando revisará todas las entradas y mostrará un mensaje para cada archivo listado. Para la ISO recién descargada deberías ver algo como “ubuntu-XX.XX-desktop-amd64.iso: La suma coincide” o “OK”, confirmando que la imagen local encaja exactamente con la que han publicado los desarrolladores.

Comprobar un único checksum de manera manual

En ocasiones no tienes el archivo de sumas completo o simplemente te han proporcionado un único hash en la página de descarga. En ese caso, también puedes hacer la verificación “a la antigua”, calculando el checksum local y comparándolo a mano con el valor publicado.

Imagina que has descargado una ISO de Red Hat y en la web solo aparece el hash SHA-1 de esa imagen. En tu directorio de trabajo, ejecutas:

sha1sum redhat7-x64.iso

El comando te devolverá algo como:

2ac2f3368e6c9fe4d7201d85ad85528698aeaf08 redhat7-x64.iso

A partir de ahí, solo tienes que comparar visualmente o con copia/pega ese hash con el que figura en la web o en el pequeño archivo de texto que hayas descargado. Si coinciden carácter por carácter, la integridad del fichero está asegurada; si difieren, toca repetir la descarga.

Verificar muchas ISOs de una sola vez

Hay situaciones en las que vas a descargar varias imágenes a la vez (por ejemplo, distintas versiones o arquitecturas) y no te apetece comprobarlas una a una. Por suerte, los ficheros MD5SUMS, SHA1SUMS o SHA256SUMS suelen agrupar todas las sumas de un directorio en un único documento, justo para que puedas hacer la verificación masiva en un paso.

Supón que tienes seis ISOs distintas en una carpeta y has descargado los archivos MD5SUM, SHA1SUM y SHA256SUM. Para comprobaciones con MD5 harías algo como:

md5sum -c MD5SUM

La salida listará cada ISO junto con un “OK” o “FAILED” según coincida o no la suma. Lo mismo con SHA-1 y SHA-256, cambiando solamente la herramienta y el fichero:

sha1sum -c SHA1SUM
sha256sum -c SHA256SUM

Si en algún momento modificas voluntariamente una ISO, o si se corrompe por un fallo en disco, verás que solo esa entrada concreta marca FAILED mientras el resto sigue en OK. Los programas te avisarán con un mensaje del tipo “WARNING: 1 computed checksum did NOT match”, para que sepas que algo se ha torcido.

Cómo generar tus propios archivos de checksums

Además de verificar lo que otros publican, también puedes crear tus propios ficheros de sumas si piensas compartir ISOs o cualquier otro tipo de archivo con más gente. Es tan sencillo como usar las mismas herramientas, pero redirigiendo la salida estándar a un fichero que luego podrás subir junto a las descargas.

Por ejemplo, si has preparado varias imágenes ISO en un directorio y quieres generar un fichero MD5SUM con todas ellas, podrías hacer:

md5sum *.iso > MD5SUM

El comando recorrerá todas las ISOs de la carpeta y guardará en el archivo MD5SUM la lista de hashes y nombres. De manera análoga, puedes crear documentos con SHA-1 o SHA-256:

sha1sum *.iso > SHA1SUM
sha256sum *.iso > SHA256SUM

Publicando junto a tus archivos estos ficheros de comprobación, cualquier persona podrá ejecutar md5sum -c, sha1sum -c o sha256sum -c sobre ellos y verificar que las descargas han ido bien y que nadie las ha alterado en tránsito.

Si quieres ir un paso más allá y ofrecer garantías de autenticidad, podrías incluso firmar digitalmente esos archivos de sumas con tu propia clave GPG, de forma similar a como hacen los proyectos grandes. Así, quien reciba el material podrá comprobar no solo que los datos son íntegros, sino también que proceden realmente de ti.

Adoptar el hábito de comprobar checksums y firmas GPG antes de instalar una distribución Linux lleva muy poco tiempo y a cambio aporta una capa de seguridad importante, evitando instalaciones con ISOs corruptas o manipuladas y ayudándote a detectar problemas antes de que afecten a tu equipo.

Crear un USB multiboot con Ventoy fácilmente
Artículo relacionado:
Cómo crear un USB multiboot con Ventoy de forma sencilla