Hash. El guardián de nuestra seguridad.

metadatos

En este mundo de hoy día en el que depositamos prácticamente la totalidad de la información, tanto pública como privada, en formatos electrónicos falsificables, necesitamos poder confiar en ellos.

Los bits digitales son volubles. Tanto física como digitalmente hablando. Las memorias que contienen las celdas electromagnéticas son sensibles por ejemplo a la temperatura. Ya que puede alterar la información contenida. Por otra parte, los datos puedes ser alterados y manipulados de forma inconsciente o con toda intención.

Por lo tanto necesitamos añadir algo a la información que nos permita saber si los datos son veraces. Y lo que se añade es una cadena de caracteres variable llamada HASH pero de longitud constante.

Este hash es el resultado de un algoritmo que recorre la totalidad de los datos de forma lineal creando una salida de caracteres hexadecimales (de 0 9, A, B, C, D, E y F). El hash resultante de aplicar un algoritmo determinado a una información dada, siempre será el mismo. Pero tiene la particularidad de que conocido el hash, es imposible conocer la información procesada. No hay forma de invertir el proceso.

Entonces tenemos un algoritmo que trata una entrada de datos y muestra una cadena de caracteres constante. Ya sea una simple palabra o un documento de texto, imágenes o vídeo, los bits que lo forman pasan por el algoritmo y nos muestran la salida. Un salida que es completamente diferente si cambia un solo bit de la cadena de entrada.

Lo que quiere decir esto es que si un solo bit es modificado, ya sea por un error en el circuito electromagnético de nuestro disco duro, o por un intento de modificación de datos, el hash ya no será el mismo.

Y por eso es que los hash dan tan buenos resultados como clave criptográfica. Determinista, unívoco y muy sensible a los cambios. Cuando firmamos una información con un hash, el futuro lector, puede volver a obtener el hash de la información que posee y compararlo con nuestra firma. Si son iguales, la información está completa. Si no lo son, se ha visto alterada de alguna manera.

Pero claro, dos personas, con o sin comunicación previa, han de ser capaces de obtener el hash mediante el mismo algoritmo. Por lo que estos han de estar estandarizados.

MD5:

El primer estándar su uso popular fue el MD5, Message-Digest Algorithm 5. Diseñado en el MIT en 1991, es la quinta versión de lo que denominaban algoritmos de reducción de mensajes. Genera salidas de 32 caracteres. Coincidió con los la popularización de Internet y fue el sistema utilizado en las primeras capas de seguridad que se implementaron.

Poco después, se documentaron las primeras colisiones, lo que hizo que, como sus predecesoras, perdiera fiabilidad. Una colisión es cuando dos entradas de datos generan una misma salida. Lo que hace posible la falsificación de las claves.

A pesar de ello sigue utilizándose como generador de claves simples que no requieran grandes capas de seguridad.

SHA:

La primera versión de Secure Hash, SHA-1, lanzada en 1995 y diseñada para sustituir a MD5. Mucho más potente con salidas de 40 caracteres y más seguridad en la generación. Su uso se extendió rápidamente hasta que Google documentó la primera colisión.

Ante esta vulnerabilidad no tardaron en liberar una versión más robusta, SHA-256. En la actualidad podríamos decir que es la versión estándar de la industria tecnológica. Genera salidas de 64 caracteres y tiene una buena potencia de cómputo. No se le han detectado vulnerabilidades y el rendimiento es más que aceptable.

Aun así, ya se ha liberado una nueva versión junto con los sistemas Keccak, la SHA-3. Más robusta y con varios niveles de complejidad y de codificación. SHA3-224, SHA3-256, SHA3-384 y SHA3-512 generan diferentes salidas

RIPEMD

La versión europea de los algoritmos de reducción es RIPEMD (RACE Integrity Primitives Evaluation Message Digest). Liberada en 1996, es un equivalente a SHA-1 pero sin colisiones conocidas y con niveles configurables de extensión de bits.

Scrypt

Tanto las familas MD como SHA y el europeo RIPEMD han sido implementadas por instituciones con ayudas gubernamentales. Por contra Scrypt es completamente privada. Fue desarrollada por Colin Percival como respaldo para Tarsnap.

Es considerado el algoritmo más seguro pues gracias al pool de entropía añadido al complejo cálculo matemático. La longitud de la salida es configurable entre 64 y 4096 caracteres y se resiste perfectamente a los ataques de fuerza bruta. Y todo lo consigue sin una penalización en la velocidad de ejecución.

BLAKE

Está basado en la función criptográfica ChaCha de Dan Bernstein y está diseñado para competir con la familia SHA. Presenta unas prestaciones parecidas a SHA3 pero con una velocidad de cómputo mucho más alta.

Estos son los algoritmos más estandarizados. Suelen introducirse en las funciones dentro de las capas de seguridad. Suelen aplicarse directamente o después de añadir una cadena adicional de caracteres conocida que complica el desencriptado al quitar sentido lógico a la información. Esta cadena añadida se denomina SAL.

Un ejemplo de su utilidad es la codificación de un DNI. Sabemos que es un conjunto de 7 dígitos y una letra. Por lo que para obtener el DNI firmado solo tenemos que aplicar el algoritmo a un número determinado de combinaciones, 9999999 por cada letra del abecedario. Pero si la empresa que controla la información, añade por ejemplo una sal de un simple carácter que solo ella conoce, la obtención del hash por combinación se complica exponencialmente. Por lo que cuanto más larga sea la cadena añadida, más complejo será descifrarla.

Los algoritmos hash se aplican tanto a la información como a las claves de codificación previas y a los diferentes pasos intermedios que existen en las comunicaciones actuales. Se utilizan para asegurar la integridad de aplicaciones y sistemas embebidos, de vídeos e imágenes. Todos los datos se pueden hashear.

Pero también tiene otra aplicación. Es la clave del sistema Blockchain en el que se basan los Bitcoins, y que está empezando a expandirse a otros tipos de contratos y transacciones. Se aplica de una forma parecida a la aplicación de la sal pero en sentido inverso. En la cabecera de una hoja de registro se coloca el hash de 64 caracteres de la página anterior del registro. Después van las transacciones, un espacio para la sal y por ultimo el hash de la nueva a hoja. Una hoja se cierra cuando se aplica una sal que hace que el hash coincida en 15 bits con el hash de la página anterior.

Obtener la sal adecuada se realiza con prueba y error, este proceso es la minería de monedas que tan famosa se ha hecho. Los Bitcoins utilizan hash calculados con SHA-256 mientras que su gran rival, Ethereum, creada por Vitalik Buterin, usa Keccak-256.

Por lo tanto las cadenas de caracteres hash son la mejor arma para la salvaguarda de la información digital. Ya sea para verificar claves, información o para firmar documentos u hojas de registro blockchain. Con sal o sin sal. De 32 o de 4096 caracteres. Sea como sea, es la llave de la ciberseguridad.




Referencias:

Deja un comentario