Cómo comprobar la integridad de nuestros archivos con el hash

Cómo comprobar la integridad de nuestros archivos con el hash

Lorena Fernández

¿Cómo es posible saber fácilmente si el archivo que estoy recibiendo es legítimo? ¿Es posible saber si se ha corrompido mientras lo descargaba de Internet? Sí, es posible mediante su hash. Funciona como un código de identificación del dato con el cual estamos trabajando. Si llega a alterarse un determinado dato de origen, este código alfanumérico de salida se altera por completo. A continuación, te mostramos todo lo que necesitas saber y qué herramientas recomendamos para generar hashes cuando lo necesites.

Recordemos que el hash, es el resultado de una función que se encarga de convertir un valor en otro. Una de los propósitos principales de dicha función hash, es el poder comprobar si un archivo se ha modificado o no. La huella hash de cada archivo es única, el hash genera una especie de código que sirve como una identificación del dato en cuestión. Además, con el hash de un determinado archivo no se puede recuperar el archivo original, por este motivo, una buena práctica de seguridad es almacenar los hashes de las contraseñas en las bases de datos, para que nadie pueda obtener la información en texto plano. No obstante, para crackear este «hash» lo que se hace es probar miles de combinaciones y comparar si los hashes son iguales.

El hash acostumbra a ser de menor tamaño que el dato original. Esto es así porque el hashing simplemente genera un código de determinada longitud fija, aunque existen funciones hash que su salida es variable.

Algoritmos SHA

Las siglas de SHA responden a Secure Hash Algorithm. Fue desarrollado por la NIST, que es la National Institute for Standards and Technology. Es uno de los algoritmos estandarizados más populares en la actualidad. Una de las ventajas es que ante el mínimo cambio en la integridad de los datos, el hash varía por completo. SHA2-256, por ejemplo, es un estándar que está siendo empleado a nivel nacional en los Estados Unidos, y actualmente se considera seguro. Éste se denomina tal cual ya que el hash que genera es de 256 bits de longitud.

No solamente puedes contar con los hashes de SHA2-256 y otros estándares para comprobar la integridad de los archivos. El que mencionamos, también tiene aplicación en protocolos populares de autenticación y encriptación: SSL, TLS, IPSec, SSH y PGP. En Linux y otros sistemas operativos, así como en aplicaciones que almacenan contraseñas en una base de datos, este algoritmo se utiliza para hashear las contraseñas, y almacenar dicho hash y no la contraseña en texto claro. La popular criptomoneda Bitcoin se vale de este algoritmo para verificar cada una de las transacciones que se da en su red.

Herramientas para generar hashes online

Ahora que ya tenemos un panorama más claro acerca de lo que es un hash y para qué sirve, ahora puedes probar alguna de las herramientas que generan hashes. Esto es lo primordial para revisar la integridad de los datos que deseas. Así, podrás comprobar con facilidad la integridad de los datos con los cuales estás trabajando.

  • File Checksum: Es una sencilla herramienta web que permite la generación de hashes. Tan solo es necesario arrastrar el archivo desde la ubicación en donde está, hasta el sitio web. O bien, puedes hacer clic en el cuadro donde dice «Drop File Here» y subes el archivo. No solamente puedes generar hashes en SHA2-256 sino también con otras funciones hash que existen. Específicamente, 29 algoritmos de hash tanto para Hashes de Archivos como de texto plano. Una ventaja importante es que no necesitas realizar registro previo, sólo accede a la web y ya podrás utilizarlo.
  • HTML5 File Hash Online Calculator: Es otro sitio web que no necesita de registro previo para generar hashes de archivos. Los algoritmos que soporta son MD5, SHA-1, SHA-256, SHA-384 y SHA-512. También cuenta con un algoritmo que se describe como la implementación más rápida de los algoritmos SHA (WebCryptoAPI), el cual se aplica para archivos de menos de 512 GB de peso.
  • Defuse Online Text & File Checksum Calculator: Otra herramienta más que puedes encontrar en Internet para generar hashes. Es compatible con texto tipo ASCII o UNICODE y en cuanto a archivos, no tiene limitaciones en cuanto a formato, pero sí de tamaño (5 MB). Una de sus ventajas es que ni los datos ni los hashes que se generan son almacenados en el servidor del sitio.

Programas para generar hashes (gratis)

No solamente existen soluciones web para este propósito, si no también programas ejecutables que acostumbran a ser muy sencillos de usar. Además del hecho de que la descarga e instalación no tiene coste alguno:

  • HashMyFiles: Es un programa portable que permite la generación de hashes en forma masiva. Es decir, puedes seleccionar más de un archivo a la vez para que pueda generar los hashes para cada uno. Soporta los algoritmos SHA (todas sus variantes) y CRC32. Es posible crear un acceso a HashMyFiles en el menú contextual para que cada vez que selecciones archivos o incluso carpetas, puedas contar con este programa para poder importarlos a este y crear los hashes. Es compatible con Windows a partir de la versión 2000.
  • QuickHash: Es un programa de código abierto multiplataforma (disponible para Windows, Mac y Linux) y se caracteriza por ser una de las soluciones más completas. A pesar de que solamente soporta los algoritmos populares como por ejemplo MD5 y SHA2-256, tiene particularidades como generar hash a una carpeta entera, además de comparar dos archivos, directorios e incluso un disco de almacenamiento por completo. En el caso de que necesites generar hash a todo el contenido de un documento, línea por línea, esta aplicación lo puede hacer.
  • MultiHasher: Consiste en otra herramienta super compacta y sencilla de usar. Se especializa en generar hashes masivamente, por carpetas y subcarpetas e incluso, indicando la ruta de lo que queremos generar. Soporta todos los algoritmos conocidos.

Comparando hashes

En verdad, la tarea de comparar los hashes acostumbra a dejarse en manos del usuario. Gracias a estas herramientas citadas, podemos generar rápidamente los hashes y compararlos con los que nos han facilitado. Ahora bien, existen algunas soluciones que permiten realizar las comparaciones algo más fácilmente para evitar realizar esa revisión «a ojo». La mayoría de algoritmos de hashes permiten que, ante la mínima alteración del dato, el hash cambie por completo. Esto significa que se podría percibir la diferencia entre un código y otro sin realizar demasiadas revisiones.

Más abajo, vemos una captura de la página web oficial de Kali Linux. Si nos fijamos en el apartado de descargas, todas las versiones que tiene disponibles para descargar cuentan con un hash SHA2-256. Entonces, una vez que hayamos descargado Kali (o el archivo que ya tenga un hash previamente generado), podemos acceder a una de las herramientas que hemos recomendado y volver a generar el hash. Debería ser el mismo, si es que no hubo alteraciones en el archivo.

 

Un punto importante a considerar es que, una vez generado un hash, éste no puede ser revertido. Esto es así porque dos mensajes (siempre en el contexto de datos) podrían tener el mismo valor de hash (colisión). Sin embargo, con los algoritmos disponibles hoy en día, las posibilidades de que eso ocurra son cada vez más remotas, y si ocurre, ese algoritmo como MD5 o SHA-1 ya dejan de ser seguros porque se han encontrado colisiones.

Otro punto más es que las funciones hash como SHA2-256 no son las mejores para usarlas para almacenar las contraseñas en una base de datos, esto es debido a que se pueden generar con rapidez, y por tanto, en poco tiempo podrían «crackear» dicha clave. Sin embargo, existen algoritmos hash específicamente diseñados para almacenar las contraseñas, como bcrypt o Argon2 entre otras.