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.

¿Qué es un hash y para qué sirve?

Un hash es una función criptográfica que funciona solamente en un solo sentido, es decir, es un algoritmo matemático que transforma cualquier bloque de entrada de datos en una nueva serie de caracteres de salida con una longitud fija o variable. Por lo tanto, una función hash es el resultado de una función que se encarga de convertir un valor en otro. Un detalle muy importante es que, generalmente los hash proporcionan una salida de longitud fija, sin embargo, hay algoritmos de hash que están específicamente diseñados para «proteger» las contraseñas, y en este caso la longitud de la salida es variable.

Uno 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.

Los hashes se utilizan para muchos usos, como los siguientes:

  • Comprobar la integridad de un archivo: si hacemos la función hash de un archivo en cuestión y lo copiamos a otro ordenador o a cualquier otro sitio, si se vuelve a hacer la función hash de este archivo copiado, debe salir exactamente el mismo resultado que la función hash original. En cuanto en un archivo cambia un bit, la salida del hash que hayamos utilizado es completamente diferente. Por este motivo, es muy importante el hash en los protocolos seguros de cifrado, como el HTTPS o FTPES, donde se comprueba que efectivamente los datos no han sufrido ninguna variación en la comunicación. Los hash también son muy usados en el mundo forense informático, para realizar la cadena de custodia de un disco duro o una imagen de disco adecuadamente, y garantizar que no se ha modificado nada del contenido.
  • Guardar las contraseñas de forma segura: si hacemos la función hash de una contraseña, y almacenamos el resultado de esta función hash en una base de datos, un posible atacante si accede a esta base de datos no podrá recuperar la contraseña. Debemos recordar que las funciones hash solamente van en un sentido, no se puede «revertir» una función hash, por lo que si un ciberdelincuente quiere crackear la contraseña, tendrá que hacer un ataque de fuerza bruta y diccionario, comparando el hash de cada contraseña probada con la contraseña que ha conseguido en la filtración.

Tal y como podéis ver, las funciones hash son muy importantes en el mundo de la seguridad informática, y también de las redes, porque nos permite comprobar la integridad de los datos transmitidos, no solamente los almacenados en un disco duro o unidad SSD. A continuación, os vamos a enseñar cómo comprobar la integridad de un archivo utilizando diferentes algoritmos de hash.

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.
  • MD5 & SHA Checksum Utility: Es un software gratuito que genera tipos de hash SHA-512, SHA-1, MD5, SHA-256 a partir de un archivo determinado. También verifica la integridad del archivo. Para la verificación del hash, o para generar un hash, debe seleccionar el archivo deseado, luego seleccionar uno de estos dos hashes SHA-1 o MD5. Después de eso, debe hacer clic en verificar o copiar para verificar la integridad del archivo o generar el hash.

Software gratuito que genera tipos de hash

  • ashCalc: También gratuito y sirve para calcular valores hash, sumas de comprobación y hmac para cadenas hexadecimales, archivos y texto. Admite muchos algoritmos de suma de comprobación: CRC32, TIGER, PANAMA, RIPEMD 160, MD2, MD4, MD5, SHA1, SHA2, SHA256, SHA384, SHA512. Admite una variedad de formatos de datos: cadena de texto, archivo y cadena hexadecimal. Admite archivos de gran tamaño. Te permite verificar muchos tipos de archivos: video, imagen, compresión, sonido, audio, música, icono y texto.

Programa gratuito para calcular valores hash

  • MD5 Hash Check: Práctico programa, también gratuito, para generar y verificar valores hash de archivos MD5, Whirlpool, CRC16, Panama, Tiger, RIPEMD320, RIPEMD 256, RIPEMD160, SHA512, SHA384, SHA256, SHA224, SHA1, CRC32. Con la ayuda de este software, puede verificar fácilmente la integridad de dos archivos. Se puede agregar fácilmente al menú contextual y, además, compara fácilmente los valores hash de dos archivos proporcionados.
  • Hash Generator: Genera rápidamente hashes de la familia MD5, MD2, MD4, CRC32, ADLER32, WHIRLPOOL, RIPEMD 160, HAVAL256-4 y SHA. Este software ayuda a verificar la integridad del archivo. El principal inconveniente de este programa es que no se pueden comparar hashes con él. También está disponible en una versión portable.

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.

Por último, aunque algoritmos de hash como MD5 o SHA-1 no son seguros porque se han encontrado colisiones, es muy habitual su utilización conjunta. Cuando necesitamos realizar la función hash de MD5 y SHA-1 a un conjunto de datos de varios cientos de GB, el tiempo empleado en hacer estas dos funciones hash es inferior a hacer una función SHA-256. Esto es vital para las Fuerzas y Cuerpos de Seguridad del Estado, ya que tienen un tiempo limitado para recoger todas las pruebas y realizar la cadena de custodia de forma correcta.

¡Sé el primero en comentar!