Saltar al contenido principal

Salting de contraseñas - Por qué el hashing solo no es suficiente

Lectura de 2 min aprox.

La sal (salt) son datos aleatorios que se añaden al aplicar un hash a una contraseña. Como una misma contraseña genera un valor hash distinto cuando la sal es diferente, la sal neutraliza los ataques de tablas arcoíris y los ataques de precálculo. La sal se genera de forma única para cada usuario y se almacena junto con el valor hash.

Cómo funciona la sal, con un ejemplo numérico

Al aplicar el hash a una contraseña, la sal se genera con un generador de números aleatorios criptográficamente seguro y se combina con la contraseña antes de introducirla en la función hash. Por ejemplo, añadir una sal de 16 bytes (128 bits) a la contraseña «mypassword» produce un valor hash completamente distinto para cada usuario, incluso con la misma contraseña. La longitud recomendada de la sal es de al menos 16 bytes; el estándar es de 128 bits en bcrypt y de al menos 128 bits en Argon2. A fecha de 2025, las directrices de OWASP recomiendan combinar Argon2id con una sal de al menos 16 bytes. La sal no necesita mantenerse en secreto y se almacena en la base de datos junto con el valor hash. Lo importante es usar una sal diferente para cada usuario.libros sobre hash de contraseñas (Amazon) lo explican en detalle.

Casos de uso reales

«Durante una auditoría de seguridad, descubrimos que un sistema heredado almacenaba las contraseñas sin usar ninguna sal. Migrar a Argon2id con una sal de 16 bytes es ahora nuestra tarea de máxima prioridad.»

Por qué es necesaria la sal

Sin una sal, todos los usuarios que usan la misma contraseña terminan con el mismo valor hash. Un atacante puede usar una tabla arcoíris para descifrar grandes cantidades de contraseñas a la vez. En cifras concretas, sin una sal un atacante puede atacar la contraseña de cada usuario con una sola tabla arcoíris (del orden de unos cientos de GB). Sin embargo, al usar una sal de 16 bytes, en teoría se necesitarían 2 elevado a la 128 tablas, lo que hace que los ataques de precálculo sean prácticamente imposibles.

Errores frecuentes en la práctica

Un error común es usar la misma sal para todos los usuarios, lo que reduce enormemente la eficacia para neutralizar las tablas arcoíris. Asimismo, si la sal es demasiado corta (como de 4 bytes o menos), un atacante puede crear tablas que cubran todos los patrones de sal. Otro error es intentar mantener la sal en «secreto» guardándola en un lugar aparte. El propósito de la sal es garantizar la unicidad, no el secreto, por lo que no hay problema en almacenarla en la misma base de datos que el valor hash. Las contraseñas generadas aleatoriamente ya son difíciles de adivinar de por sí, pero combinarlas con una implementación de sal adecuada en el lado del servicio logra una protección aún más robusta.libros de introducción a las tecnologías de autenticación (Amazon) también son referencias útiles.

Términos relacionados

¿Te resultó útil este artículo?

XHatena