Un hash es el resultado de realizar una operación matemática denominada función hash sobre un conjunto de elementos. Como resultado de dicha operación, se obtiene una serie de caracteres de longitud fija independientemente de la longitud de los datos de entrada (El tamaño de la salida variará en función del algoritmo de hash utilizado).
Esto significa que, el hash resultante de una palabra, el de un libro, y el de todos los libros escritos a lo largo de la historia va a tener el mismo tamaño. ¿Alucinante verdad?
El hash MD5 de la palabra hola es: 4d186321c1a7f0f354b297e8914ab240
El hash MD5 del primer capitulo del quijote es: b7ceeedd62ed1d3d08d96269d3494cfb
Ambos hashes generados tienen la misma longitud (32 caracteres o 128 bits)
Los hashes son utilizados para almacenar información sensible como las contraseñas para que, si estas son obtenidas por un atacante, no sea posible conocer su valor original puesto que «si el algoritmo es seguro» no puede ser revertido. En futuros posts explicaremos los principales métodos y programas utilizados para crackear hashes.
Antiguamente el algoritmo de hash más utilizado era MD5, sin embargo, hace unos años se descubrió la primera colisión que demuestra que el algoritmo no es perfecto. Una colisión se produce cuando dos entradas de datos distintas generan la misma salida o hash. Este es un problema de seguridad muy grave, ya que, imagína por un momento que tu contraseña de Facebook es distinta a la de tu vecino, pero al calcular el MD5 se produce una colisión y el hash es igual. Podrías acceder a su cuenta sin necesidad de conocer su contraseña ya que la tuya también va a funcionar.
En la actualidad, se utilizan diversos tipos de algoritmo en función de para qué se necesite. Por ejemplo, para cifrar contraseñas se necesita un algoritmo que sea robusto pero tampoco el que más ya que no podemos hacer esperar al usuario 10 segundos cada vez que quiera iniciar sesión.
Los algoritmos hash más recomendables actualmente para proteger las contraseñas son los siguientes:
- bcrypt
- sha512crypt
- sha256crypt
Te recomendamos que eches un vistazo a la web https://herramientas-online.com/generador-hash-online.html y crees tus propios hashes con distintos algoritmos!