Hashing criptográfico - Protección de contraseñas almacenadas
Lectura de 2 min aprox.
Un hash es una función unidireccional que transforma datos de longitud arbitraria en un valor de longitud fija. Desempeña un papel fundamental en el almacenamiento de contraseñas, ya que se utiliza para guardarlas de forma segura en un formato del que no se puede recuperar la contraseña original. La misma entrada siempre produce el mismo valor hash, pero calcular los datos originales a partir de un valor hash es computacionalmente inviable.
La diferencia entre el hash y el cifrado
El hash y el cifrado son conceptos que se confunden con facilidad, pero existe una diferencia decisiva entre ellos. El cifrado es una transformación bidireccional: con la clave correcta, los datos originales pueden descifrarse. El hash, por el contrario, es una transformación unidireccional que no puede revertirse a los datos originales, y el concepto de descifrado no existe. El hash es adecuado para almacenar contraseñas, ya que el servicio no necesita conservar el texto plano de la contraseña y, aunque la base de datos sufra una filtración, las contraseñas originales no quedan directamente expuestas. Por el contrario, el cifrado es adecuado para proteger los datos en tránsito, pues no tendría sentido si el destinatario no pudiera leer los datos.
Uso en el almacenamiento de contraseñas
En los sistemas seguros, las contraseñas no se almacenan en texto plano, sino como valores con hash. Al iniciar sesión, la contraseña introducida se procesa con hash y se compara con el valor hash almacenado. Entre los algoritmos hash representativos se encuentran SHA-256, bcrypt y Argon2. SHA-256 es rápido, pero demasiado rápido para el uso con contraseñas, por lo que se recomiendan bcrypt y Argon2, que aumentan deliberadamente el costo computacional. A partir de 2025, OWASP posiciona a Argon2id como el algoritmo de hash de contraseñas más recomendado. Cuanto mayor sea el costo computacional, mayor será la resistencia a los ataques de fuerza bruta.libros de introducción a la criptografía y las funciones hash (Amazon) te permiten aprender desde los fundamentos.
Casos de uso reales
«Completamos un proyecto para migrar nuestro método de almacenamiento de contraseñas de MD5 a Argon2id. Implementamos un mecanismo que vuelve a aplicar el hash automáticamente en el siguiente inicio de sesión, y estamos migrando a todos los usuarios de forma gradual.»
El proceso de hash
Errores prácticos y contramedidas
El hash simple por sí solo es vulnerable a los ataques de tabla arcoíris. Como contramedida, el enfoque estándar es añadir una sal (datos aleatorios) antes de aplicar el hash. Un error común en la práctica es usar algoritmos antiguos como MD5 o SHA-1 para el hash de contraseñas. Estos son tan rápidos que un ataque con GPU puede calcular una enorme cantidad de hashes en poco tiempo. Una contraseña larga y aleatoria conserva una fuerte resistencia a los ataques de fuerza bruta incluso en su estado con hash.libros de ingeniería de seguridad (Amazon) también son una referencia útil.
¿Te resultó útil este artículo?