El hash es un concepto fundamental en criptografía y seguridad de la información. Nuestra guía explora los principios del hash, explicando cómo funcionan las funciones hash criptográficas y su importancia en la protección de datos confidenciales.
Conozca los diferentes tipos de funciones hash, sus propiedades y aplicaciones comunes, como el almacenamiento de contraseñas, la verificación de la integridad de los datos y las firmas digitales. Descubra cómo elegir la función hash adecuada para su caso de uso específico e implemente prácticas de hash seguras en su organización.
¿Qué es un algoritmo de hash?
Los hash son el resultado de un algoritmo de hash como MD5 (Message Digest 5) o SHA (Secure Hash Algorithm). Estos algoritmos tienen como objetivo esencial producir una cadena única de longitud fija, el valor hash o "resumen del mensaje" — para cualquier dato o "mensaje" dado. Dado que todos los archivos de un ordenador son, en última instancia, datos que pueden representarse en formato binario, un algoritmo hash puede tomar esos datos, realizar un cálculo complejo con ellos y generar una cadena de longitud fija como resultado del cálculo. El resultado es el valor hash o resumen del mensaje del archivo.
Para calcular el hash de un archivo en Windows 10, utilice el cmdlet integrado en PowerShell Get-FileHash cmdlet y proporciónele la ruta de acceso al archivo cuyo valor hash desea generar. De forma predeterminada, utilizará el algoritmo SHA-2 256:
Puede cambiar a otro algoritmo especificándolo después de la ruta del archivo con el conmutador -Algorithm . Al pasar el resultado a Format-List también se obtiene un resultado más fácil de leer:
Para los usuarios de Mac y Linux, las herramientas de línea de comandos shasum y md5 tienen la misma finalidad. Como veremos en un momento, independientemente de si utiliza Windows, Mac o Linux, el valor hash será idéntico para cualquier archivo y algoritmo hash.
Cómo establecen la identidad los hash
Los hash no se pueden revertir, por lo que el simple hecho de conocer el resultado del hash de un archivo a partir de un algoritmo hash no permite reconstruir el contenido del archivo. Sin embargo, lo que sí permite es determinar si dos archivos son idénticos o no sin saber nada sobre su contenido.
Por esta razón, la idea de que el resultado es único es fundamental para todo el concepto de los hash. Si dos archivos diferentes pudieran producir el mismo resumen, tendríamos una "colisión" y no podríamos utilizar el hash como identificador fiable de ese archivo.
La posibilidad de producir una colisión es pequeña, pero no inaudita, y es la razón por la que algoritmos más seguros como SHA-2 han sustituido a SHA-1 y MD5. Por ejemplo, el contenido de los dos archivos siguientes, ship.jpg y plane.jpg son claramente diferentes, como se puede comprobar con una simple inspección visual, por lo que deberían producir resúmenes de mensajes diferentes.
Sin embargo, cuando calculamos el valor con MD5 obtenemos una colisión, lo que indica falsamente que los archivos son idénticos. Aquí el resultado es de la línea de comandos en macOS utilizando Terminal.app, pero se puede ver que el valor hash ship.jpg es el mismo que obtuvimos anteriormente con PowerShell:
Calculemos el valor hash con SHA-2 256. Ahora obtenemos un resultado más preciso que indica que los archivos son realmente diferentes, tal y como esperábamos:
¿Para qué se utiliza el hash?
Dado un identificador único para un archivo, podemos utilizar esta información de varias maneras. Algunas soluciones antivirus heredadas se basan completamente en valores hash para determinar si un archivo es malicioso o no, sin examinar el contenido o el comportamiento del archivo. Para ello, mantienen una base de datos interna de valores hash pertenecientes a malware conocido. Al escanear un sistema, el motor antivirus calcula un valor hash para cada archivo ejecutable en la máquina del usuario y comprueba si hay alguna coincidencia en su base de datos.
Esto debió de parecer una solución ingeniosa en los primeros días de la ciberseguridad, pero no es difícil ver los defectos de confiar en los valores hash en retrospectiva.
En primer lugar, dado que el número de muestras de malware se ha disparado, mantener una base de datos de firmas se ha convertido en una tarea que simplemente no es escalable. Se estima que cada día aparecen más de 500 000 muestras únicas de malware. Es muy probable que esto se deba en gran parte a que los autores de malware se han dado cuenta de que pueden engañar fácilmente a los motores antivirus que se basan en hash para que no reconozcan una muestra. Todo lo que tiene que hacer el atacante es añadir un byte adicional al final de un archivo y se producirá un hash diferente.
Se trata de un proceso tan sencillo que los autores de malware pueden automatizarlo de tal manera que la misma URL entregará el mismo malware a las víctimas con un hash diferente cada pocos segundos.
En segundo lugar, el defecto de los antivirus tradicionales siempre ha sido que la detección requiere un conocimiento previo de la amenaza, por lo que, por su diseño, una solución antimalware que se basa en una base de datos de valores hash conocidos siempre va un paso por detrás del siguiente ataque.
La respuesta a eso, por supuesto, es una solución de seguridad que aproveche la IA conductual y que adopta un enfoque de defensa en profundidad.
Sin embargo, eso nosignifica que los valores hash no tengan valor. Al contrario, poder identificar un archivo de forma única sigue teniendo importantes ventajas. Verá valores hash proporcionados en firmas digitales y certificados en muchos contextos, como la firma de código y SSL, para ayudar a establecer que un archivo, sitio web o descarga es auténtico.
Los valores hash también son de gran ayuda para los investigadores de seguridad, los equipos SOC, los cazadores de malware y y los ingenieros inversos. Uno de los usos más comunes de los hash que verás en muchos informes técnicos aquí en SentinelOne y en otros lugares es compartir indicadores de compromiso. Mediante valores hash, los investigadores pueden hacer referencia a muestras de malware y compartirlas con otros a través de repositorios de malware como VirusTotal, VirusBay, Malpedia y MalShare.
Ventajas de los hash en la búsqueda de amenazas
La búsqueda de amenazas también se simplifica gracias a los valores hash. Veamos un ejemplo de cómo un administrador de TI podría buscar amenazas en toda su flota utilizando valores hash en la consola de administración de SentinelOne.
Los hash son muy útiles cuando se identifica una amenaza en un equipo y se desea consultar toda la red para comprobar si existe ese archivo. Haga clic en el icono Visibilidad de la consola de administración de SentinelOne e inicie una nueva consulta. En este caso, solo utilizaremos el hash SHA1 del archivo y buscaremos su existencia en los últimos 3 meses.
Genial, podemos ver que ha habido algunos casos, pero la magia no se detiene ahí. La búsqueda de hash nos ha llevado a TrueContext ID, que podemos utilizar como punto de partida para profundizar en el tema y ver exactamente qué hacía este archivo: qué procesos creaba, qué archivos modificaba, con qué URL se conectaba, etc. En resumen, podemos reconstruir toda la historia del ataque con solo unos pocos clics a partir del hash del archivo.
Ciberseguridad basada en IA
Mejore su postura de seguridad con detección en tiempo real, respuesta a velocidad de máquina y visibilidad total de todo su entorno digital.
DemostraciónConclusión
Los hash son una herramienta fundamental en la seguridad informática, ya que pueden indicarnos de forma fiable cuándo dos archivos son idénticos, siempre y cuando utilicemos algoritmos de hash seguros que eviten colisiones. Aun así, como hemos visto anteriormente, dos archivos pueden tener el mismo comportamiento y funcionalidad sin tener necesariamente el mismo hash, por lo que basarse en la identidad del hash para la detección antivirus es un enfoque erróneo.
A pesar de ello, los hash siguen siendo útiles para los analistas de seguridad en tareas como compartir IOC y la búsqueda de amenazas, y sin duda los encontrará a diario si trabaja en cualquier ámbito de la seguridad informática y de redes.
¿Te gusta este artículo? Síganos en LinkedIn, Twitter, YouTube o Facebook para ver el contenido que publicamos.
Más información sobre ciberseguridad
- El enemigo interno: las 7 violaciones de datos más inquietantes de 2018
- 5 maneras en que un CISO puede abordar la escasez de habilidades en ciberseguridad ahora mismo
- Cómo el malware puede burlar fácilmente la seguridad del macOS de Apple
- ¿Qué es Windows PowerShell (y podría ser malicioso)?
Preguntas frecuentes sobre hash
El hash es una técnica de cifrado unidireccional que convierte los datos en una cadena de caracteres de longitud fija. No es posible revertir este proceso para recuperar los datos originales. Funciona como una huella digital: la misma entrada siempre produce el mismo hash, pero entradas diferentes crean salidas completamente diferentes. El hash protege las contraseñas, verifica la integridad de los archivos y garantiza que los datos no hayan sido manipulados. Es esencial para la tecnología blockchain y las firmas digitales.
Un ejemplo común es el hash SHA-256 de la palabra "hola" para producir "2cf24dba4f21d4288094c30e2ede82c380cac19544bb5c4ab02f5b2db38500d3”. Si cambia solo un carácter a "Hola", obtendrá un hash completamente diferente. Los sistemas de contraseñas utilizan el hash: cuando creas una contraseña, se le aplica un hash y se almacena. Cuando inicias sesión, la contraseña que introduces se somete a un hash y se compara con el hash almacenado. La comprobación de la integridad de los archivos también utiliza el hash para detectar cambios.
El hash garantiza la integridad de los datos al detectar cualquier cambio no autorizado. Protege las contraseñas al hacerlas ilegibles incluso si se produce una violación de las bases de datos. Puede verificar que las descargas de archivos no se hayan corrompido ni infectado con malware. El hash permite las firmas digitales y los protocolos de comunicación seguros. Es fundamental para la tecnología blockchain y la seguridad de las criptomonedas. Sin el hash, no se podría confiar en que los datos permanezcan inalterados durante la transmisión o el almacenamiento.
Las principales familias de hash son MD (Message Digest), SHA (Secure Hash Algorithm) y RIPEMD. MD5 produce hash de 128 bits, pero ahora se considera inseguro. SHA-256 es actualmente el más utilizado y produce hash de 256 bits. SHA-3 es el estándar más reciente, diseñado para sustituir a los algoritmos antiguos. Cada tipo varía en cuanto a la seguridad, la longitud del hash y los requisitos computacionales. Los sistemas modernos prefieren SHA-256 o SHA-3 para aplicaciones críticas en materia de seguridad.
El hash es unidireccional e irreversible, mientras que el cifrado es bidireccional y reversible. El hash siempre produce una salida de longitud fija, independientemente del tamaño de la entrada. La longitud de la salida del cifrado varía en función de los datos de entrada. El hash verifica la integridad de los datos, mientras que el cifrado protege la confidencialidad de los datos. Se pueden descifrar los datos cifrados con la clave adecuada, pero no se pueden deshacer los datos hash. Ambos tienen diferentes fines de seguridad y a menudo funcionan juntos.
El hash mantiene los datos seguros al hacer imposible la ingeniería inversa de la información original. Incluso si los atacantes roban contraseñas hash, no pueden determinar fácilmente las contraseñas reales. Cualquier cambio en los datos originales produce un hash completamente diferente, lo que hace que la manipulación sea detectable. El hash no requiere claves de cifrado, por lo que no hay ninguna clave que pueda comprometerse. Proporciona una verificación de la integridad de los datos sin exponer el contenido real. Esto lo hace ideal para el almacenamiento de contraseñas y la verificación de archivos.
El hash proporciona una rápida recuperación y verificación de datos. Garantiza la integridad de los datos sin exponer el contenido original. La seguridad de las contraseñas mejora significativamente cuando se utilizan técnicas de hash adecuadas. La comprobación de la integridad de los archivos se vuelve sencilla y fiable. El hash permite la tecnología blockchain y las transacciones seguras. Es computacionalmente eficiente y no requiere gestión de claves. Las firmas digitales y los sistemas de autenticación dependen del hash para su seguridad. La deduplicación de datos y la gestión eficiente del almacenamiento también se benefician del hash.

