Entendiendo que es un Hash

Un hash es un código alfanumérico, compuesto por números y letras (la imagen del título :), que es el resultado de aplicar una formula matemática (criptográfica) a los datos que se introducen.
Estos métodos se usan para cifrar o encriptar datos, que encriptar no es meter a gente en criptas ;) Se usan en combinación con tecnologías diferentes que los hacen muy útiles en muchos casos de uso, que vamos a ver.
Estos códigos hash, que según la formula matemática que se aplique pueden tener longitud variable, tienen unas características que las hacen ideales para muchos casos de uso, como por ejemplo, toda la tecnología Blockchain, la base de las criptomonedas, están basadas en el uso de códigos hash.
¡Vamos a ver qué es un hash y cómo podemos crear uno!
Hash
Vamos a ver y hacer pruebas, te dejo una página web para que puedas hacer las mismas pruebas y comprobaciones que te propongo:
Para que puedas jugar y probar los ejemplos que te he puesto esta, que es una entre muchas otras web que existen para poder crear hashes:
Vamos a hacer una prueba base, y luego vamos viendo como testear las diferentes características que tienen estos códigos:
Este es el hash resultante de la frase: ¡Sigue aprendiendo!
Hash MD5:
a40085cad1561ae6e2ccaa34b20674f8
Hash SHA1:
ab074b9f55df01ef5f6fc8112a5cbe9dd7818d1a
Estos dos códigos hash son resultados de introducir la frase ¡Sigue aprendiendo!, y que en cada una de ellas se le aplica una formula matemática distinta, de ahí sus diferentes nombres.
Como puedes ver, las longitudes varian un poco entre ellos. Estos códigos tienen las siguientes características:
Determinísticos: El resultado siempre va en función de los datos introducidos. Siempre, y digo siempre, al introducir los mismos datos, siempre, por si no había quedado claro, devuelven el mismo resultado.
Prueba a poner la frase: ¡Sigue aprendiendo! y compara el resultado con este, y verás que es el mismo.
MD5:
a40085cad1561ae6e2ccaa34b20674f8
- Longitud fija: La longitud del código, que como he dicho, es variable entre las diferentes algoritmos matemáticos, pero, la longitud de cada uno de ellos, es siempre la misma, independientemente de la cantidad de datos que se introduzcan. Puede ser un libro entero, o una palabra, la longitud es siempre la misma.
Introduce el siguiente texto:
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry’s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
MD5:
01aad0e51fcd5582b307613842e4ffe5
- Grandes cambios: Un pequeño cambio en los datos, crea un gran cambio en el resultado del código que se crea, por lo que podemos descubrir cualquier mínimo cambio en los datos.
Introduce el mismo párrafo del ejemplo anterior y añadele otro carácter de punto ‘.’ al final, así que acabará con …Lorem Ipsum..
MD5:
0278164396c97f6ce114f645daa4563d
Como puedes ver, el resultado no tiene nada que ver con el anterior y tan solo hemos añadido un punto, dentro de todos esos caracteres.
- Irreversible: Estos algoritmos matemáticos no se pueden revertir a partir del código, por lo que garantiza la seguridad y la integridad de los datos que se cifran con ellos.
- Unívoco: Cada uno del los hash que se crean son únicos, esto no es 100% verdad, pero en muchos de ellos, las posibilidades de que ocurra son tan ínfimas, que se puede considerar imposible en la práctica.
Casos de uso
Los códigos hash se usan en muchas areas, vamos a ver diferentes categorías en las que son útiles:
- Autenticación: Verificar la integridad de los datos y asegurarse de que no han sido modificados. Gracias a la creación del hash es posible verificar que un fichero no se ha corrompido. Muchas web a la hora de descargar ficheros, te facilita el hash del mismo para que compruebes que es el original y que no ha sido alterado.
- Cifrado: Proteger la información confidencial y evitar que sea accedida por personas no autorizadas. Hay muchos hashes que dependen de una clave para poder descifrarse y cifrarse, así que podemos, asegurar que nadie puede ver la información en texto plano, por ejemplo, sin la clave.
- Firma digital: Verificar la autenticidad de un documento o mensaje. Usando los códigos hash, se puede verificar que se un mensaje ha sido firmado por alguien en concreto.
- Blockchain: Crear cadenas de bloques de transacciones seguras y transparentes. Las cadenas de bloques de las criptomonedas, hacen un uso intensivo de los hash en muchos procesos de su flujo de vida, es la base de esta tecnología.
Conclusiones
Los códigos hash, se han vuelto un recurso criptográfico indispensable para que mucha de la tecnología que usamos diariamente funcione correctamente y de manera segura. Si eres programador, administrador de sistemas, o estás pensando o empezando a usar el sistema financiero de las criptomonedas, vas a tener que trabajar con códigos hash, así que se ha vuelto un conocimiento indispensable, así que te recomiendo que profundices sobre el tema ya que hemos visto la base para que entiendas el concepto.
¡Felicidades, te has sumergido, aunque sea unos pocos centímetros, en el mundo de la criptografía entendiendo que es un hash!