De la verificación de contraseña a la firma electrónica: el secreto está en el 'hash'
Casi la mitad de los directivos empresariales esperan un aumento de los ataques cibernéticos, especialmente los dirigidos a datos contables y financieros, de acuerdo con un informe de Deloitte. En la batalla por la seguridad de la información, las funciones 'hash' destacan como guardianas de los datos en primera línea. Desde la verificación de contraseñas hasta la firma electrónica, estos códigos son la base desde la que se construye el fortín de la seguridad.
Detrás de casi todas las gestiones y transacciones 'online', hay un gran desconocido para la mayoría de usuarios: un algoritmo 'hash'. Este versátil método criptográfico, en las bambalinas de muchas aplicaciones, oculta información de acceso o acreditación de cualquier elemento digital y la transforma en un conjunto de datos único y rastreable. Dado que la causa más común de filtración de datos es el robo de credenciales de usuario, al suponer en torno a un 20% de las brechas de seguridad, según IBM, las funciones 'hash' resultan esenciales para blindar la información. Pero ¿cómo funciona un 'hash' y en qué aplicaciones concretas está presente?
¿Qué es un 'hash'?
Un 'hash' es el resultado de aplicar una función matemática que toma una entrada y la transforma en una cadena de caracteres, generalmente una representación alfanumérica de longitud fija de los datos de entrada. Es decir, es un código formado por letras y números que resume o representa a un conjunto de datos determinados. Por ejemplo, podría ser un código que represente un vídeo, una foto o un documento.
La característica distintiva de una función 'hash' es que, partiendo de un determinado conjunto de datos de entrada, siempre se generará el mismo valor alfanumérico. Es decir, es un código único para esos datos. Adicionalmente, hay dos características importantes a considerar. Por un lado, la probabilidad de identificar dos conjuntos de datos que correspondan al mismo 'hash' es extremadamente baja. Por otro lado, un pequeño cambio en los datos de entrada resultará en un valor completamente diferente del 'hash'.
Estas funciones operan a través de una serie de operaciones matemáticas complejas que transforman la entrada en esa cadena de salida de longitud fija. Además, son unidireccionales, lo que implica que, dada la salida (el 'hash'), computacionalmente es extremadamente costoso determinar la entrada original. Así, a partir de un código 'hash', no se pueden descifrar los datos introducidos inicialmente, lo que es fundamental para garantizar la confidencialidad de la información.
Aplicaciones prácticas de las funciones y algoritmos 'hash'
Las funciones y códigos 'hash' brillan en el campo de la criptografía, donde tienen una gran utilidad en diversas aplicaciones.
Verificación de contraseñas
Uno de los usos más comunes de las funciones 'hash' es la verificación de contraseñas. En lugar de almacenar contraseñas en texto sin formato en una base de datos, las organizaciones almacenan 'hash' de contraseñas. Cuando un usuario intenta iniciar sesión, el sistema calcula el 'hash' de la contraseña ingresada y la compara con el 'hash' almacenado en la base de datos. Si los 'hashes' coinciden, se permite el acceso.
Este enfoque protege las contraseñas cuando los ficheros que las contienen están al alcance de personas, ya sea del personal técnico encargado de la administración de los sistemas como de los ciberdelincuentes que puedan aprovechar vulnerabilidades de seguridad para obtener acceso a este fichero. Dado que el fichero no contiene las contraseñas reales, sino los 'hashes', que no son reversibles, las contraseñas solo se pueden recuperar a través de un costoso y lento proceso de prueba y error denominado fuerza bruta.
Integridad y almacenamiento de datos
Las funciones 'hash' son herramientas esenciales para la verificación de la integridad de los datos. Al transferir archivos o almacenar información en un sistema, se genera un valor 'hash' de los datos originales. Este 'hash' acompaña a los datos durante su envío o se almacena junto a ellos. Al llegar a su destino, o cuando se necesite verificar su integridad, se recalcula el 'hash' y se compara con el valor original. Una coincidencia entre ambos asegura que los datos permanecen sin alteraciones.
Además, las funciones 'hash' desempeñan un papel crucial en la organización y recuperación eficiente de datos en sistemas de almacenamiento y bases de datos, facilitando un acceso rápido y seguro.
Detección de 'malware'
Los códigos 'hash' también se utilizan para detectar determinados programas maliciosos y eliminarlos, por lo que es una tecnología muy presente en la industria de los antivirus. Por ejemplo, las empresas de seguridad crean bases de datos de firmas de 'malware' conocidas, donde cada firma es un valor 'hash' generado a partir del código malicioso. Cuando un sistema de seguridad escanea archivos en busca de 'malware', calcula los 'hashes' de los archivos y los compara con los programas malignos para etiquetarlos como tales si encuentra coincidencias.
Por otro lado, en sistemas operativos y aplicaciones críticas, los archivos importantes se almacenan con sus valores 'hash'. Esto permite detectar si estos archivos críticos han sido modificados de alguna manera, lo que podría indicar un ataque de 'malware'. Es una función importante, dado que estos ataques, junto con los de 'phishing' y 'ransomware', son las más habituales, de acuerdo con Deloitte.
'Hash': aliado de seguridad de criptomonedas y 'blockchain'
La tecnología 'blockchain' en general y las criptomonedas en particular dependen en gran medida de las funciones 'hash' para garantizar la seguridad y la integridad de las transacciones. Destacan algunas aplicaciones concretas:
- Seguridad y autenticación. Las cadenas de bloques utilizan funciones 'hash' criptográficas para garantizar la integridad de las transacciones y la seguridad de las claves privadas. Las transacciones se firman digitalmente y se incluyen en bloques junto con su 'hash' correspondiente. Esto permite a los usuarios verificar que las transacciones no se han alterado y que son auténticas.
- Minería de bloques. En una 'blockchain', cada nuevo bloque que se crea (por ejemplo, en una transacción que consta de varios pasos, como el pago por un servicio 'online'), se añade a la cadena con un 'hash' distintivo, que actúa como una huella digital única. Esta identificación no solo distingue al bloque de manera exclusiva, sino que también incluye el 'hash' del bloque anterior, estableciendo así un enlace seguro entre ellos. Cualquier alteración en los datos de un bloque modificaría su identificación única. Dado que el 'hash' de un bloque es resultado directo de los datos específicos que contiene, cualquier cambio romperá la continuidad de la cadena, revelando la manipulación. Así, esta secuencia de huellas digitales únicas interconectadas asegura la integridad y la seguridad de toda la 'blockchain', ya que cualquier intento de alteración sería fácilmente detectable.
- Árbol de Merkle. En una red 'blockchain' las transacciones se agrupan por pares en una estructura de datos llamada 'Árbol de Merkle'. Cada nodo en el árbol contiene un 'hash' que representa la combinación de los 'hashes' de sus nodos hijos. Esto permite una verificación eficiente de la integridad de las transacciones en un bloque.
- Generación de direcciones de las billeteras. Las direcciones de las billeteras de criptomonedas se generan a partir de 'hashes' de claves públicas, lo que proporciona una capa adicional de seguridad y privacidad.
- Contratos inteligentes. Los contratos inteligentes o 'smart contracts' son programas informáticos autónomos que se ejecutan en la cadena de bloques y realizan acciones específicas cuando se cumplen ciertas condiciones. No se trata solamente de almacenar electrónicamente documentación o permitir la firma electrónica, sino que estos programas realizan análisis y ejecutan alguna de las partes de su lógica interna, según explica Javier Sebastián, responsable de Regulación Digital de DLT de BBVA Research. Para garantizar la inmutabilidad del ‘smart contract’, este lleva un ‘hash’ único que lo identifica.
El alcance de este algoritmo criptográfico es cada vez mayor. Por ejemplo, otra de sus aplicaciones se encuentra en la detección de infracciones de derechos de autor. Cuando determinados servicios detectan contenidos con derechos, pueden asociarlos a un 'hash' que detecte posteriormente nuevos usos de ese contenido de forma automática.
Pese a estar en las bambalinas de multitud de aplicaciones y ser desconocidos para muchos usuarios, su capacidad para garantizar la integridad de los datos, proteger contraseñas, detectar 'malware' o proporcionar autenticación convierte a los 'hash' en protagonistas indiscutibles de gran parte de las acciones digitales cada día.