Saltar al contenido
>_ITDITDPlataforma de seguridad web

Glosario

¿Qué es una sal? El 'condimento' por usuario que se añade a un hash de contraseña

Una sal (salt) es un valor aleatorio y distinto por usuario que se añade antes de aplicar el hash a una contraseña. Así la misma contraseña se almacena distinta para cada uno, derrotando las tablas arcoíris. Diferencia con una pimienta (pepper).

Publicado 2026-06-27 Actualizado 2026-06-27 3 min de lectura

La «sal» aparece en cuanto hablas del hashing de contraseñas. Como la sal en la cocina, añadir una pizca al hash cambia drásticamente el panorama de seguridad. Aquí tienes cómo funciona y los puntos clave (sin pasos de ataque).

Por qué funciona el «condimento»

Sin una sal, los usuarios con la misma contraseña obtienen el mismo hash almacenado. Eso entrega al atacante dos atajos: una tabla de búsqueda precalculada (una tabla arcoíris) acierta directamente, y «romper una cuenta se reutiliza en todos los que tienen la misma contraseña».

Añade una sal y la misma "password123" se almacena como algo completamente distinto para cada usuario.

Sin sal: "password123" → mismo hash para todos (la tabla acierta al instante)
↓ añade una sal por usuario
Alice: sal_a + password123 → hash X
Bob: sal_b + password123 → hash Y (≠ X)
Misma contraseña, sales distintas → valores almacenados distintos para cada uno. Las tablas precalculadas dejan de funcionar.

Conceptos erróneos comunes frente a la verdad

Concepto erróneo

  • Una sal debe mantenerse en secreto
  • Una sola sal compartida para todos los usuarios está bien
  • Una sal hace seguras incluso las contraseñas débiles

La verdad

  • Una sal puede ser pública (guárdala con el hash)
  • Un valor aleatorio distinto por usuario (idealmente por contraseña)
  • Una sal defiende contra «la precomputación y el cracking por reutilización»; la fuerza bruta la maneja un hash lento

La visión de este sitio: una sal no es una pimienta

A menudo se confunde con una sal la pimienta: un valor secreto añadido de forma general, guardado en un lugar distinto de la base de datos (la configuración de la aplicación o un gestor de claves). Una sal (pública, por usuario) y una pimienta (secreta, global) tienen trabajos distintos; ninguna sustituye a la otra. En la práctica, no obstante, la primera prioridad es simplemente usar sal + un hash lento correctamente mediante bcrypt/Argon2.

Sigue leyendo

FAQ

Q¿Una sal tiene que mantenerse en secreto?
A

No. Una sal no es una 'clave secreta': está bien guardarla junto al hash. Su propósito no es el secreto; es hacer que la misma contraseña se almacene distinta para cada usuario, lo que derrota la precomputación (tablas arcoíris) y el cracking masivo por reutilización. Lo que sí mantienes en secreto es un concepto distinto, una 'pimienta' (ver más abajo).

Q¿Puedo reutilizar la misma sal para todos los usuarios?
A

No. La sal debe ser un valor aleatorio que difiera por usuario (idealmente por contraseña). Una sal compartida hace que los usuarios con la misma contraseña almacenen hashes idénticos, así que un atacante puede romper muchas cuentas con una sola ejecución de fuerza bruta. Genera una nueva con un generador de números aleatorios criptográfico cada vez.

Q¿Necesito implementar la sal yo mismo?
A

Normalmente no. Los hashes diseñados a propósito como bcrypt, Argon2 y scrypt generan y guardan la sal por ti (a menudo incrustada dentro de la cadena del hash). En lugar de añadir una sal a mano, apóyate en estas implementaciones estándar: es más seguro y más fiable.