¿Qué es Hashing de contraseñas?
El hashing de contraseñas es la práctica de aplicar una función criptográfica de un solo sentido y computacionalmente costosa a una contraseña —combinada con una sal única— para producir un resumen de longitud fija que permite verificar la contraseña sin almacenarla de forma recuperable.
También conocido como: password hash, password digest
Almacenar contraseñas en texto plano es una de las prácticas más peligrosas en el desarrollo de software. Cuando se vulnera una base de datos, las contraseñas en texto plano quedan inmediatamente disponibles para el robo de cuentas, no solo en el servicio vulnerado, sino en cualquier otro servicio donde los usuarios reutilizaran la misma contraseña. El hashing de contraseñas reemplaza el almacenamiento en texto plano por resúmenes irreversibles que pueden verificar un intento de contraseña pero no pueden revertirse para recuperar la contraseña original.
No todas las funciones de hash son adecuadas para contraseñas. Las funciones de hash de propósito general como SHA-256 son demasiado rápidas: las GPU modernas pueden calcular miles de millones de hashes SHA-256 por segundo, lo que hace triviales los ataques de fuerza bruta. Los algoritmos de hashing de contraseñas se diseñan deliberadamente para ser lentos, requiriendo un tiempo de CPU, memoria o ambos significativos por cada cálculo de hash. Esta lentitud es configurable mediante parámetros como el número de iteraciones (PBKDF2), el factor de coste (bcrypt) o los ajustes de memoria y paralelismo (Argon2).
La evolución del hashing de contraseñas refleja la carrera armamentística entre defensores y atacantes. PBKDF2 (2000) añadió un número de iteraciones configurable. bcrypt (1999) introdujo un requisito de memoria fijo que resiste la aceleración por GPU. scrypt (2009) añadió un endurecimiento de memoria configurable. Argon2 (2015), ganador del Password Hashing Competition, ofrece tiempo de CPU, memoria y paralelismo ajustables. Cada generación aborda nuevas capacidades de ataque, y la elección depende del entorno de despliegue y del modelo de amenazas.
Cómo usa Vaulted Hashing de contraseñas
Vaulted no almacena contraseñas de usuario porque no tiene cuentas de usuario. Sin embargo, los principios del hashing de contraseñas informan directamente su función de protección con frase de contraseña. Cuando un usuario establece una frase de contraseña en un secreto, se usa PBKDF2 —un algoritmo de hashing de contraseñas— para derivar una clave a partir de la frase de contraseña. La lentitud deliberada de 100.000 iteraciones de PBKDF2 hace impracticable adivinar la frase de contraseña por fuerza bruta, protegiendo la clave envuelta incluso si un atacante obtiene el texto cifrado y la sal.