¿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.
Cuando tengas dudas de si un archivo que vas a bajar de Internet sea legítimo y no te fíes, siempre puedes tener en tus manos la posibilidad de conocer si se ha modificado por ciberdelincuentes. De esta manera, no caerás en la trampa de algún tipo de software malicioso que ya haya sido modificado. Por ello, en RedesZone te vamos a explicar con detalle qué es un hash y para que te puede servir. Y es que esta función te servirá de gran ayuda en diferentes momentos.
¿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.
Este tipo de códigos se utilizan mucho en páginas de apuestas, sorteos, etc, debido a que con el hash podemos verificar que un juego, por ejemplo, es totalmente aleatorio, y que se basa en ese número de hash, y no en uno proporcionado de forma voluntaria por el servidor o los dueños del mismo.
Para qué sirven
Este tipo de utilidades se pueden usar para diferentes momentos. Aunque lo cierto es que la más común está relacionada con las contraseñas. Y todo porque puede facilitar el hecho de llevar a cabo un cambio de la misma si se te olvida. Aunque, lo cierto es que no es el único uso que puedes aprovechar de los hashes. Por tanto, ten en cuenta que los hashes se utilizan para muchos casos, 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. Por tanto, en caso de tener una clave larga y segura, será imposible que acabe descubriéndola.
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.
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.
Tipos de hash
Estas funciones matemáticas, son tremendamente útiles para producir valores únicos. Su aplicación es válida dentro de muchas áreas diferentes dentro del mundo de la informática, donde se encuentra la seguridad, la criptografía y la verificación de la integridad de los datos. Pero esto no es algo que se haga con un solo tipo de hash, sino que nos podemos encontrar varios. Estos son:
- MD5: Fue una de las funciones más utilizadas, debido a que podía producir hashes de 128 bits. Salió a la luz en 1991, y se ha utilizado ampliamente para la seguridad de contraseñas y verificaciones de seguridad para la integridad de archivos. En cambio, cuenta con vulnerabilidades en su diseño, que hacen que hoy en día se considere inseguro. Por lo cual no se recomienda su utilización. Existen webs en las que podréis poner un hash en este formato, y os revelará el texto del mismo, es decir, una contraseña en MD5 a día de hoy es muy poco segura, ya que solo necesitas una de estas páginas para revelarla.
- SHA-1: Este algoritmo es capaz de producir hashes de 160 bits. Ha sido muy utilizado para la seguridad y verificación de archivos, pero también ha caído en desuso debido a diferentes vulnerabilidades que presentaba.
- SHA-2: En este caso estamos ante un grupo de algoritmos, los cuales pueden producir hashes de diferentes longitudes. Tenemos 224, 256, 384 y 512 bits respectivamente. Esta ha reemplazado en gran medida a MD5 y SHA-1, como una opción mucho más segura. Es muy utilizado en la verificación de contraseñas e integridad.
- SHA-3: Este algoritmo es capaz de producir hashes de 224, 256, 384 y 512 bits. Y es actualmente uno de los algoritmos aprobados por el Instituto Nacional de los Estándares y Tecnología (NIST) de Estados Unidos. Es considerado muy seguro, por lo cual también es ampliamente utilizado.
- Blake2: Estamos ante un algoritmo moderno y seguro, que es capaz de producir 256 o 512 bits. Resulta una opción más rápida que SHA-3, por lo cual es muy utilizado para aplicaciones que requieren de un procesamiento más rápido. Como hoy en día, puede ser la minería de criptomonedas.
Romper un hash
La teoría, nos dice que los hashes son irreversibles. Por lo cual, no se debería de poder determinar cuál fue la entrada original En cambio, si hay varias formas en las cuales una atacante podría tratar de romper un hash.
- Fuerza bruta: Es uno de los métodos más simples, pero también más costoso en cuanto al tiempo y los recursos computacionales necesarios. Esto consiste en probar todas las posibles combinaciones hasta que aparezca la adecuada. En cambio, con los algoritmos más modernos y entradas más largas, es prácticamente inviable intentarlo debido al gran número de posibilidades, al igual que la longitud del texto, como bien comentamos, ya que no será lo mismo adivinar un número de 4 cifras, que de 20.
- Ataques de diccionario: Si tenemos sospechas de que una entrada puede estar guardada en algún conjunto de entradas, se le puede dar uso a ese conjunto para poder descubrir la clave hash. En todo caso, de nuevo será necesario realizar la prueba con cada una de las que se incluyen en esa lista, hasta que aparezca la correcta.
- Ataques de colisión: Los hashes cuentan con longitudes fijas, por lo cual hay un número finito de posibles hashes. Pero si tenemos un número infinito de entradas. Esto quiere decir que debe haber diferentes entradas que produzcan el mismo hash, lo cual es conocido como colisión. Si los algoritmos son débiles, se puede dar el caso de encontrar alguna colisión de una forma muy rápida y eficiente. Por lo cual puede ser muy peligroso para los usuarios que los están utilizando.
- Ataque tabla arco iris: Se trata de un tipo de ataque especial de diccionario, el cual utiliza tablas de hashes pre calculados. Esto quiere decir que se pueden invertir los hashes de una forma rápida. En cambio, la creación de una tabla arco iris puede ser muy costosa en cuanto a tiempo y espacio de almacenamiento. Este método es menos efectivo contra algoritmos hash, sobre todo cuando utilizan valores añadidos a las entradas antes de hacer el hash.
A pesar de que romper un hash es teóricamente posible, se trata de una práctica extremadamente complicada con los algoritmos de hash más modernos. En todo caso, para protegerse contra posibles ataques, se recomienda dar uso de los hashes más fuertes posibles, y añadir el valor añadido SAL a las entradas antes de crearlo.
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, y debido a su sencillez, apenas pesan, por lo que no será un problema bajarse y mantener uno de estos.
QuickHash
QuickHash se trata de una una herramienta de hashes de datos de código abierto para los sistemas operativos Linux, Windows y Apple Mac OS, cuenta con una interfaz gráfica de usuario muy amigable y fácil de utilizar. Esta herramienta actualmente soporta los siguientes algoritmos hash: MD5, SHA1, SHA-3 (256 bits), SHA2-256, SHA2-512, xxHash, Blake2B (256 bits) y Blake3, por tanto, es una herramienta realmente completa. Por si todo esto fuera poco, debemos indicar que es totalmente gratuita, y su desarrollo se sostiene gracias a las donaciones de las personas que la usan.
Para descargar la herramienta QuickHash tenemos que pulsar sobre el siguiente enlace para descargar gratis QuickHash. Como ya comentamos anteriormente, podremos utilizar la versión para Windows, Linux y MacOS. En mi caso voy a utilizar la última versión disponible para Windows, la versión en concreto es la 3.2.0. Una vez descargado nos encontraremos un fichero en formato ZIP, el cual procederemos a descomprimir en una carpeta.
Un aspecto muy positivo que tiene esta herramienta, es que no requiere de instalación, por lo tanto, en esa carpeta que acabamos de descomprimir lo único que tenemos que hacer es doble clic sobre el archivo Quickhash-GUI, en el explorador de archivos veréis como tipo aplicación. También tenemos una guía de usuario de la propia herramienta.
La primera vez que lo iniciéis aparecerá una pantalla como esta:
Arriba en el recuadro rojo tenemos las opciones principales del programa que son:
- Text: para hacer hash con fragmentos de texto, como, por ejemplo, párrafos de un archivo.
- File: para seleccionar y luego aplicar hash a un archivo individual.
- FileS: para hacer hash de varios archivos que se encuentren en un directorio.
- Copy: sirve para copiar y pegar, pero con la integridad de datos agregada de hash. Está diseñado para permitir que un usuario copie archivos de un lugar a otro, pero tenga el proceso de copiado verificado y respaldado por valores hash.
- Compare Two Files: compara los hashes de dos archivos diferentes que se encuentran en dos localizaciones diferentes.
- Compare Two Folders: sirve para comparar el contenido del archivo de una carpeta con otra para ver si todos los archivos dentro coinciden según el hash (los nombres de archivo no se comparan).
- Disk: para comprobar el hash de discos físicos y volúmenes lógicos.
- Base64Data: permite al usuario aplicar un hash a un archivo Base64 codificado y generar un hash de su contraparte decodificada, sin que el usuario tenga que crear la versión decodificada. Además, admite la decodificación de datos codificados en Base64, únicamente por conveniencia.
En morado están los algoritmos que podemos utilizar para obtener nuestros hashes, a destacar los algoritmos de SHA2-512, SHA-3 y también BLAKE3.
Vamos a empezar con el apartado Text. Por ejemplo, imaginad que necesitamos el hash del texto RedesZone con el algoritmo SHA-1. Esto se haría así, empezando por seleccionar el algoritmo SHA-1, luego escribimos el texto y abajo finalmente obtendríamos el hash.
Al principio del tutorial hablábamos del archivo de un router que queríamos comprobar si estaba en buen estado tras su descarga, y si no se había corrompido. El fabricante daba la posibilidad de verificar que ese archivo estaba bien utilizando el algoritmo SHA-1. Así ofrecía el siguiente valor para la verificación: 88F69E6FBC7C52B3DA9DEC8EB718CFF06232C409.
Para comprobarlo, nos dirigimos al aparatado File. En Select File seleccionamos el archivo del firmware, ponemos el algoritmo SHA-1 y entonces podemos comprobar que el hash es idéntico. Eso significa que el archivo está bien, y podemos flashear el firmware con total tranquilidad.
Ahora vamos a comparar dos archivos utilizando el algoritmo SHA2-512. Para ello, nos dirigimos a Compare Two Files. Primero vamos a poner un ejemplo con dos archivos distintos. Empezamos seleccionando el algoritmo y luego los dos archivos. El primer archivo lo pondríamos en Select File A y el segundo archivo para realizar la comparación en Select File B. A continuación, damos a Compare Now y en rojo saldrá MIS-MATCH indicando que son diferentes.
Por el contrario, si cogemos dos archivos iguales y repetimos el proceso siguiendo los mismos pasos y dando a Compare Now obtenemos este resultado:
Aquí pone escrito en negro MATCH!, que quiere decir que coinciden.
El siguiente apartado que va a utilizar es FileS, que se utiliza para ver el hash de los archivos que hay en un directorio. En Select Folder seleccionamos la carpeta. Como podéis apreciar, detecta los archivos que se encuentran en los subdirectorios. También tiene la opción de buscar directorios ocultos con la opción Hidden folders too? Además, tenéis una barra estilo reproductor multimedia para ir moviéndonos entre los archivos.
Ahora llega el turno del apartado Copy, que sirve para copiar archivos y que verifique que lo ha hecho de forma correcta comprobando su hash. Empezaremos como siempre, eligiendo un algoritmo. Luego, en el lado de la izquierda, elegimos la carpeta de origen que queremos copiar. En la derecha elegimos la de destino, en este caso creé una carpeta vacía llamada Prueba. Una vez hecho pulsamos en Go! para que inicie el proceso.
Entonces nos sale una pantalla como esta. Aquí vemos la ruta de ambas, tanto de origen y de destino con sus correspondientes hashes. En este caso se aprecia que coinciden y que se han copiado 5 archivos.
Si salimos de aquí, vemos cómo indica un resumen del trabajo realizado y que el proceso de copiado ha finalizado.
El siguiente apartado que vamos a ver es Compare Two Folders que sirve para comparar los hashes de los archivos de dos directorios. Para ello, seleccionamos el algoritmo, en Select Folder A ponemos una carpeta y en Select Folder B la otra. A continuación, pulsamos en Compare Now.
Aquí vemos las rutas de ambas con sus correspondientes hash y se aprecia que coinciden.
Si volvemos a la pantalla donde comenzamos abajo en el recuadro rojo nos pone en inglés que los dos directorios coinciden.
Por último, como podéis ver, Quickhash se convierte en una útil herramienta con la que podremos trabajar con los hashes de muchas maneras.
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. Al igual que este software en particular también permite comprobar el MD5.
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.
Lo bueno de este programa en concreto es que su uso es bastante intuitivo. Los usuarios que vayan a utilizar por primera este programa en concreto solamente deben arrastrar los archivos que tengan en su PC en la ventana del programa que se abrirá al ejecutar la aplicación. De esta manera, se podrá tener acceso visual a la numeración de los diferentes tipos de algoritmos criptográficos que se tengan seleccionados, que en su defecto, lo cierto es que aparecen todos.
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. Para que te hagas una idea, esta aplicación cuenta con compatibilidad con CRC32, MD5, RIPEMD-160, SHA-1, SHA-256, SHA-384 y SHA-512. Por lo que son varios tipos que te pueden interesar.
El proceso de instalación de esta herramienta no presenta ningún tipo de inconveniente. Además, su interfaz es sencilla, por lo que no resulta complejo llegar a usarla por primera vez. Dentro de su menú, se pueden encontrar diferentes funcionalidades ya integradas con las que podrás comparar sumas de comprobación, guardar la lista en un archivo, elegir los algoritmos, etc. Por lo que presenta varias alternativas para que el usuario tenga todas las herramientas a su alcance.
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 o, si se prefiere, de varios archivos. Por lo que es un detalle que hay que tener en cuenta a la hora de usar una aplicación de estas características.
Entre las diferentes opciones que permite esta aplicación en concreto, también hay destacar que permite verificar 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. Además, los hashes que se generen se pueden copiar o guardar como archivo CSV/HTML/TXT.
Otros programas
Además de los anteriores programas, resulta que hay muchas más opciones disponibles para que los usuarios puedan generar hashes sin inconvenientes y, sobre todo, de manera gratuita. Por lo tanto, no es mala idea conocer de cerca cuáles son el resto de aplicaciones que puedes instalar en tu ordenador sin pagar ni un solo euro:
- HashCalc: 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.
- 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.
- Hasher Lite: esta alternativa en particular tiene un uso realmente fácil y rápido, ya que se basa en el uso de arrastrar y soltar. Por otro lado, hay que señalar que su valor de hash es hasta 10 algoritmos. Esta opción tiene una versión gratuita con la que se pueden llegar a procesar los hashes de hasta 100 archivos a la vez. Por lo que es un punto que hay que tener en cuenta.
- DeadHash: otra de las opciones que tienes de manera legítima para descargar en tu PC es Deadhash. Su funcionamiento es de lo más sencillo, además de que hay que tener en cuenta que esta alternativa admite algoritmos de hash como MD4, MD5, SHA1, SHA-224, SHA-256, SHA-384, SHA-512, RIPEMD160 y CRC32. Por lo que es una buena opción para generar hash de archivos. No obstante, en función del tamaño del archivo, lo cierto es que tardará más tiempo en procesarlo.
- 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.
- FCIV (Microsoft File Checksum Integrity Verifier): Aunque no es una herramienta independiente, es un programa de Microsoft que puedes descargar de forma gratuita. Permite calcular y verificar los hashes de archivos utilizando varios algoritmos como MD5, SHA-1, SHA-256, entre otros.
- Checksum Control: Muy similar a la anterior. Te permite calcular y verificar los hashes MD5 y SHA-1 de los archivos. Sin embargo, es de código abierto, por lo que podremos encontrarla, además de forma gratuita, en las siguientes plataformas: Windows, macOS y Linux. Por tanto, no estaríamos limitados al sistema operativo de Microsoft.
Realizar comprobación de integridad en Windows
En muchas ocasiones solemos recomendar utilizar un software especializado para realizar este tipo de comprobaciones porque por lo general suelen darnos información detallada y precisa sobre lo que estamos haciendo, pero en realidad, existe un método para realizar verificaciones de integridad de archivos de una forma simple utilizando el símbolo de sistema de Windows o PowerShell.
El hecho de que podamos utilizar un comando que se encuentra integrado en una aplicación que ya trae nuestro sistema operativo nos ofrece muchas ventajas, pero la principal cuando nos referimos a seguridad, es que no tenemos la necesidad de instalar software de terceros, y, además, nos permite agregarla con relativa facilidad a los scripts de PowerShell para realizar procesos automáticos.
El comando se llama certutil, y es bastante sencillo de utilizar una vez que lo entendemos, básicamente lo que debemos hacer es ejecutar bien sea nuestro símbolo de sistema o nuestro PowerShell, escribimos el comando certutil –hasfile [nombre_de_archivo] [algoritmo-hash], reemplazando lógicamente nombre del archivo con el que deseamos comprobar y el hash que queramos utilizar.
Aquí podemos ofreceros un ejemplo, es una página de descarga que nos está enumerando un valor de suma de verificación. Lo primero que tuvimos que hacer fue pinchar en un enlace para ver la suma de verificación que es bastante común en las páginas de descargas. En este caso, el valor de la suma de la comprobación realizada es SHA256.
El hecho de ejecutar el comando certutil con sha256 al final de la cadena como algoritmo hash lo que hace es ejecutar la utilidad con el mismo algoritmo hash que la suma de la comprobación que fue proporcionada por el sitio web que hemos utilizado en este ejemplo. Luego, lo único que debemos hacer es comprobar que los valores de la suma de verificación son iguales y de ser así habremos comprobado la integridad de este archivo.
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.