Volver al glosario

Salt

2 min de lectura

En almacenamiento de contraseñas, un salt es un valor aleatorio único que se guarda junto a cada hash de contraseña para que dos contraseñas iguales no produzcan hashes iguales y para que las tablas precalculadas no sirvan de nada. Un salt no es secreto, y no ralentiza a un atacante: de eso se encarga el coste de la función de derivación de clave. Los algoritmos modernos lo generan y lo guardan por ti.

24 de julio de 2026
Compartir:

Cómo funciona

Cuando se guarda una contraseña, el sistema genera un valor aleatorio para esa contraseña concreta, lo combina con ella, y pasa el resultado por una función de derivación de clave. El salt se guarda al lado del hash resultante, en claro, porque hace falta otra vez para verificar el siguiente acceso. Como cada contraseña recibe un salt distinto, dos usuarios que eligieron la misma contraseña acaban con valores guardados distintos, y un atacante no puede romper las dos a la vez ni contrastar ninguna contra una tabla precalculada. Ese es el trabajo entero del salt: elimina el atajo del precálculo y obliga al atacante a atacar cada contraseña por separado.

Qué sale mal

El fallo habitual no es que falte el salt, sino un salt haciendo un trabajo para el que nunca estuvo pensado. «SHA-256 con salt» aparece constantemente en los sistemas que auditamos, y es un hallazgo: una función hash de propósito general es rápida por diseño, así que un hash rápido con salt sigue cayendo ante un diccionario a toda velocidad. El salt solo elimina el precálculo; lo que encarece el crackeo es el coste en memoria y en tiempo de una función de derivación de clave en condiciones, como Argon2id. Vemos otras dos cosas: un único salt reutilizado en todas las cuentas, que restaura exactamente el atajo que el salt existe para eliminar, y un salt tratado como secreto. El valor que sí debe ser secreto y guardarse aparte es un pepper, que es otro control distinto.

Dónde aparece esto en una auditoría

El almacenamiento de contraseñas se revisa siempre que tenemos acceso al código o a la base de datos, y el hallazgo se escribe contra el algoritmo, no contra el salt. Lo que anotamos es qué función deriva la clave, con qué parámetros de coste, si cada hash lleva su propio salt único, y si esos parámetros se han subido desde que se construyó el sistema. Un salt correcto y único delante de un hash rápido se informa igual, porque no hace nada contra un ataque de fuerza bruta a toda velocidad. En la práctica, en 2026 casi ningún desarrollador debería estar manejando salts a mano: los algoritmos modernos generan el salt, lo incrustan en la cadena guardada y lo vuelven a leer al verificar.

¿Quieres ver cómo trabajamos en Asperis Security?

Agenda 30 minutos con uno de nuestros especialistas. Revisamos tu stack y te decimos qué conviene probar primero.