Salt
Una sal es un valor aleatorio que se añade durante el hash de contraseñas para que contraseñas idénticas produzcan hashes distintos, anulando las tablas arcoíris y la detección de contraseñas repetidas.
Propósito
Hacer que el hash de cada contraseña de usuario sea único incluso para contraseñas idénticas, impidiendo la precomputación y la comparación masiva.
Mecanismo
Se genera una sal aleatoria única (≥16 bytes) por contraseña y se aplica hash a la concatenación: H(password || salt). La sal se almacena junto al hash (no requiere secretismo); en la verificación se vuelve a aplicar hash con la sal almacenada y se compara. Con el salado, las tablas arcoíris tendrían que precomputarse por cada usuario, lo cual es inviable.
Casos de uso
- Almacenamiento de hashes de contraseñas
- Entrada de KDF (PBKDF2/scrypt)
- Analogía con el IV de cifrado
- Generación de tokens
Ejemplos
- entrada
password + random saltOutputUnique hashDifferent per user
Errores comunes
- A global fixed salt (equivalent to no salt)
- Generate a unique random salt per password
Términos relacionados
Pepper
Un pepper es un secreto del lado servidor añadido durante el hash de contraseñas (a diferencia de una sal, se comparte globalmente y se mantiene en secreto), elevando la dificultad de los ataques offline. GLOSARIO
Hash Salting
El salting de hash añade una sal aleatoria a la entrada del hash para que entradas idénticas produzcan hashes distintos, frustrando las tablas arcoíris y la detección de colisiones. GLOSARIO
Rainbow Table
Una tabla arcoíris es una tabla precalculada que mejora el método de Martin Hellman para invertir funciones hash, intercambiando espacio por tiempo para romper hashes de contraseñas. GLOSARIO
PBKDF2
PBKDF2 (Password-Based Key Derivation Function 2) es el KDF estandarizado en PKCS#5 que deriva claves de contraseñas mediante HMAC iterado, muy usado para hash de contraseñas y derivación de claves. GLOSARIO
Herramientas relacionadas
Derivación de claves PBKDF2
Derive a key from a password using PBKDF2 (RFC 2898) with Web Crypto API. Gratis, privado y 100% del lado del cliente. HERRAMIENTA
Derivación de claves scrypt
Derive a key from a password using scrypt (memory-hard KDF). Gratis, privado y 100% del lado del cliente. HERRAMIENTA
Generador de hash bcrypt
Hash passwords with bcrypt or verify bcrypt hashes. Gratis, privado y 100% del lado del cliente. HERRAMIENTA