Los algoritmos hash se encargan, además de proporcionarnos la función de comprobar la integridad de los datos transmitidos, de proteger las contraseñas en un sistema. Cuando nosotros introducimos una contraseña en nuestro ordenador o en un servicio online, se realiza el hash de la contraseña y se compara con el hash de la contraseña que está almacenado en la base de datos.
En los últimos tiempos os hemos informado de que multitud de bases de datos con credenciales han sido publicados en Internet, sin embargo, en la mayoría de ellos se utilizan funciones hash en las contraseñas para no almacenarlas en texto plano, por lo que tenemos un cierto nivel de seguridad, pero es fundamental que esos servicios utilizan funciones criptográficas de hashing seguras, ya que de lo contrario se podrían crackear en poco tiempo. El principal problema es que los crackers pueden hacer el hash de múltiples contraseñas rápidamente para recuperar la correcta en texto plano.
La comunidad de expertos en criptografía han diseñado funciones hash específicamente para contraseñas, más robustas para que crackearlas cuesten bastante más.
Algoritmos HASH recomendados
Los algoritmos hash más recomendables actualmente para proteger las contraseñas son los siguientes:
- scrypt (KDF)
- bcrypt
- Argon2 (KDF)
- sha512crypt
- sha256crypt
- PBKDF2 (KDF)
La diferencia entre KDF (Key Derivation Function) y una función de hash para contraseñas, es que la longitud con KDF es diferente, mientras que una función de hash para contraseñas siempre tendrá la misma longitud de salida. Dependiendo de si estamos hasheando claves de cifrado o contraseñas almacenadas en una base de datos, es recomendable utilizar unos algoritmos de hashing u otros. Por ejemplo, en el caso de las contraseñas almacenadas, es recomendable que el algoritmo hash tarde un tiempo de por ejemplo 5 segundos, pero que luego sea muy robusto y sea muy costoso el poder crackearlo, es decir, utilizar algoritmo de hashing diseñados específicamente para el almacenamiento de contraseñas.
Os recomendamos la lectura de este artículo donde se realiza un completo benchmark a los diferentes algoritmos de hash, con el tiempo que tarda e incluso el consumo de recursos del equipo.
Algoritmos HASH que no debemos nunca utilizar
Hay algunos algoritmos de HASH que ya no debemos nunca utilizar, como por ejemplo MD5, md5crypt, SHA-1 o un algoritmo hash estándar, además, tampoco debemos ser nosotros quienes diseñe un algoritmo hash ya que si no es lo suficientemente complejo se podría crackear. Por último, jamás debemos almacenar las contraseñas en texto en claro ya que los ciberdelincuentes obtendrán fácilmente todas las claves sin necesidad de crackearlas.
Os recomendamos leer nuestro tutorial sobre calcular hash SHA2-512 en Windows 10.