Usar la terminal Linux para verificar la integridad de archivos descargados

En Tutoriales y Guías por

Hace ya algún tiempo que dedicamos un artículo a cómo verificar la integridad de archivos en Windows, algo que es relativamente sencillo en este sistema operativo. Mi problema era que una vez llegaba a la terminal Linux, perdía esta funcionalidad por desconocer las diferentes herramientas. Esto me ha motivado a escribir este pequeño tutorial donde os enseñaré a verificar la integridad de archivos desde la terminal Linux.

Usar la terminal Linux para verificar la integridad de archivos descargados

Concretamente voy a emplear la terminal en un sistema operativo Linux Ubuntu 16.04. Emplearé las propias herramientas incluidas en el sistema operativo, sin instalar ningún software adicional. Me he topado con ocasiones en las que me gustaría hacer una verificación rápida no sólo de la integridad del fichero, sino que con este método, también podemos comprobar si dos ficheros son iguales.

¿En qué consiste el proceso de verificar la integridad de un archivo?

Cuando hablamos de verificar la integridad de un archivo, estamos hablando de verificar que los datos de una copia son exactamente iguales a los del archivo original. Esta verificación nos permite evitar problemas de corrupción de datos y asegurarnos que los datos han sido almacenados correctamente.

Para realizar esta verificación, existen diferentes algoritmos o funciones hash que nos permiten obtener los llamados checksum (suma de verificación). Muchos protocolos de trasferencia de datos, sistemas de copias de seguridad e incluso compresores de archivos, hacen uso de estas sumas de verificación.

Ejemplo práctico para entender mejor el proceso de verificación.

Para entender mejor todo el proceso, vamos a proponer un ejemplo muy sencillo. Imaginemos que tenemos un archivo muy importante llamado documento.bin y quiero copiarlo en un pendrive USB con el nombre documento_copia.bin, asegurándome de que los datos no han sufrido alteraciones durante el proceso.

Lo único que tendré que hacer, es obtener los checksum del archivo original (documento.bin) y el checksum del archivo copiado (documento_copia.bin) para compararlos. Si ambos checksum son iguales, el archivo es una copia exacta del original y los datos mantienen su integridad. Si por el contrario, ambos checksum son diferentes, los datos se han dañado en el proceso.

Herramientas para verificar la integridad de archivos desde la terminal Linux.

En el mundo GNU/Linux existen muchísimas herramientas y comandos para verificar la integridad de los archivos, incluso gestores de paquetes como APT hacen uso de estas. En nuestro caso, vamos a echar mano de las herramientas más habituales a las que podemos recurrir desde la consola.

cksum.

cksum es la herramienta estándar para calcular el checksum CRC de 32 bits. Existen diferentes implementaciones del algoritmo CRC32 (Código de Redundancia Cíclica), pero la herramienta cksum usa concretamente la implementación del estándar de redes Ethernet.

Si lo que queremos calcular es el CRC de 16 bits (CRC16), la herramienta que debemos usar es sum, pero no es recomendable su uso si podemos usar cksum.

Desde el punto de vista de la seguridad, CRC32 se considera una función hash insegura, pero para comprobar la integridad de archivos de forma doméstica es más que suficiente. Tiene la ventaja de que es un algoritmo con un gran rendimiento y rápido.

Para usar esta herramienta bastaría con ejecutar el siguiente comando en la consola:
cksum archivo

cksum crc32 linux

md5sum.

La herramienta md5sum calcula los hashes MD5 de un archivo o conjunto de datos. Esto nos permite verificar la integridad de archivos y su uso está bastante extendido.

Desde el punto de vista de la seguridad, el algoritmo MD5 no se considera seguro y no se recomienda su uso en situaciones en las que un usuario malicioso pueda modificarlo. Aun así, para verificar la integridad de ficheros en nuestro PC personal cumple su función sin problemas.

Podemos usar esta desde la terminal de la siguiente forma:
md5sum archivo

md5sum md5 linux

sha256sum.

En la actualidad se recomienda utilizar el algoritmo SHA-256 para calcular los checksums de los ficheros y así poder verificar su integridad. SHA-256 es el reemplazo lógico del algoritmo MD5, ya que por el momento no se han descubierto vulnerabilidades.

Para calcular el checksum SHA-256 de un archivo desde la terminal Linux ejecutamos el comando:
sha256sum archivo

sha256sum sha linux

Existen otras variantes del algoritmo SHA que podemos emplear mediante las herramientas: shasum, sha1sum, sha224sum, sha384sum y sha512sum.

Archivos de verificación de checksum con extensión: .sfv, .crc, .md5, etc.

Ya conocemos las herramientas para calcular checksums desde la consola, pero en Linux también existen herramientas para verificar listas de checksums. Esto tiene especial utilidad cuando tenemos que verificar varios archivos.

En ocasiones nos podemos encontrar con ficheros que conforma listas de verificación. Estos ficheros contienen una lista compuesta por el nombre de archivo y su respectivo checksum.

Herramienta cksfv: crear y verificar listas SFV.

Para comprobar o crear archivos con extensión .sfv, en Linux tenemos la herramienta cksfv. En el caso de Ubuntu, esta herramienta no viene instalada por defecto, por lo que tendremos que instalarla con el comando: sudo apt install cksfv.

Una vez instalada la herramienta, podemos verificar archivos .sfv desde la terminal con el comando:
cksfv -g /home/zeokat/lista.sfv

También podemos crear archivos .sfv con el comando:
cksfv fichero1 fichero2 fichero3 > listado.sfv

Herramienta cfv: crear y verificar listas en diferentes formatos.

La herramienta cfv es más completa que cksfv, ya que da soporte a más formatos de archivos. Entre los formatos soportados encontramos los siguientes: .sfv, .sfvmd5, .md5, .par, .par2, .crc, .csv, .torrent, sha1sum y md5sum.

En Ubuntu tampoco viene instalada por defecto, así que tendremos que instalarla con el comando: sudo apt install cfv.

El comando básico para verificar una lista de archivos es:
cfv -f /home/zeokat/test.sfv

Para crear una lista de verificación, el comando básico sería:
cfv -C -flista.sfv -tsfv documento.pdf documento2.jpg
cfv -C -f[nombre de lista] -t[formato de lista] [archivos…]

Para más información, siempre podemos usar el comando cfv --h para ver la pantalla de ayuda.

Dentro del mundo de la verificación de integridad de paquetes existen muchos otros formatos y herramientas según el tipo de distribución. Aquí finaliza el tutorial y espero que hayas aprendido los fundamentos básicos para verificar la integridad de archivos.