Os habrá pasado más de una vez, que al ir a descargar un software o sistema operativo de internet, la web de turno os ha propuesto verificar el hash correspondiente tras la descarga. 

Por ejemplo, esta es la captura correspondiente a la descarga de Ubuntu desde su web oficial:

Y esta la correspondiente al programa VLC:

Y esto qué quiere decir? 

Bueno, pues vamos a empezar contando que es el hash o “huella digital” de un software, básicamente a través de procesos que implican algoritmos criptográficos conocidos como SHA (Secure Hash Algorithm) o MD5 (Message Digest Algorithm 5), se calcula un código único único para ese fichero concreto que queremos descargar, y su comprobación nos permite tener la certeza de haber descargado un fichero seguro.

Es decir, el desarrollador de turno genera el hash y lo publica en la web o en un sitio seguro para que esté disponible para todo el mundo, cuando tu descargas el software, puedes obtener el hash de lo que te has descargado (básicamente un churro de caracteres), y compararlo con que proporciona el desarrollador, si no coincide, es que algo feo ha pasado.

Y qué cosas malas pueden haber pasado? 

Pues por ejemplo que un atacante haya interceptado la descarga, y modificado el software que pretendías obtener por una copia con malware, o que el repositorio de descarga que estás utilizando haya sido hackeado, y realmente hayas descargado un fichero malicioso.

Y aunque parezca complicado, los anteriores supuestos han sucedido, sucederán y conllevan consecuencias graves. Por ejemplo, en 2019 el reconocido sitio de software de código abierto apache.org sufrió un ataque, a través del cuál comprometieron las descargas de su web, y en concreto reemplazaron las imágenes ISO del sistema operativo CentOS con versiones infectadas con malware, que posteriormente permitían a los atacante obtener acceso a esos sistemas y robar información confidencial.

Bien es cierto, que en aquel caso concreto la comprobación de hash no hubiera servido para nada, ya que los atacantes proporcionaron huellas falsas MD5 junto a las descargas.

En todo caso, no está de más intentar verificar siempre que podamos la autenticidad de un software descargado, es algo que simplemente nos va a llevar 5 segundos, y que básicamente consiste en ejecutar un comando a través de consola.

Por ejemplo, para verificar un fichero con sha, últimamente más habitual porque se considera más seguro que md5, y en concreto con sha256 que es el algoritmo más habitual, simplemente hay que ejecutar:

sha256 [ruta del archivo descargado]

El resultado será un churro de caracteres, que simplemente debemos comparar con lo que el desarrollador ha publicado en su web. Pero es que además en muchos sitios, como el ejemplo anterior de Ubuntu, se especifican las instrucciones concretas para comprobarlo, facilitándonos aún más la vida.

Como apuntes añadidos, es habitual en antivirus avanzados, sobre todo de carácter corporativo, y con posibilidad de políticas Zero-trust, que sólo se permita la ejecución de programas “conocidos”, y que las excepciones (programas desarrollados internamente o que no vienen por defecto como permitidos), se añadan con su hash. Esto es una ventaja importante frente a añadir excepciones de ruta, y se puede ver bien con un ejemplo sencillo. Imaginemos que queremos permitir un programa que no viene en la lista de permitidos, pero sabemos es de confianza, si lo añadimos por URL que era lo tradicional, pondremos una excepción del tipo: C:\Archivos de programa\Ejemplo-app\app.exe, el problema de esto, es que ese programa se puede comprometer, y puede estar infectado, sea por el motivo que sea, y para más inri lo tenemos como excepción en nuestro antivirus. Usando la huella en lugar de ruta, nos cercioramos de que el programa es legítimo al 100%.

Y el apunte final, debemos ser conscientes de que comprobar el hash no garantiza al 100% que lo que descargamos esté libre de malware, simplemente es una buena práctica más, que complementa al sentido común. Si decidimos descargar un programa de una web que no sea la oficial, o descargamos un programa pirata, da igual que verifiquemos su hash, porque éste puede estar igual de manipulado que el programa a descargar, y basta ver lo que sucedió en apache.org como ejemplo.