Reporte Daily Report Ir
Reporte Colombia Reporte Daily Report Guias
Blog Economia Local Mundo Politica Tecnologia

Qué Es Salting En Seguridad – Guía Completa De Definición Y Prácticas

Santiago Rodriguez • 2026-04-10 • Revisado por Santiago Rodriguez


El salting constituye una de las técnicas más fundamentales en la protección de contraseñas almacenadas en bases de datos. Consiste en agregar una cadena aleatoria única, conocida como sal, a cada contraseña antes de aplicar un algoritmo de hashing, lo que genera hashes irrepetibles incluso cuando dos usuarios comparten exactamente la misma contraseña.

Esta práctica se ha convertido en un estándar reconocido por organizaciones como OWASP y el NIST, y su ausencia en un sistema puede facilitar ataques masivos capaces de comprometer miles de credenciales en cuestión de minutos. A lo largo de este artículo se explica en profundidad qué es el salting, cómo funciona, por qué resulta indispensable y cuáles son las mejores prácticas para implementarlo correctamente.

¿Qué es el salting en seguridad?

El salting, también denominado salado de contraseñas, es una técnica criptográfica que añade un valor aleatorio y único a cada contraseña antes de procesarla mediante una función de hashing. Este valor aleatorio, llamado sal, se concatena con la contraseña del usuario y el resultado conjunto se somete a un algoritmo hash, produciendo un resultado único que no puede obtenerse sin conocer tanto la contraseña original como la sal empleada.

Sin el salting, dos usuarios que elijan la misma contraseña generarán hashes idénticos en el sistema. Un atacante que robe la base de datos podrá reconocer essas coincidencias y descifrar múltiples cuentas simultáneamente. Con el salting, cada hash resulta distinto aunque las contraseñas coincidan, lo que impide los ataques en lote y neutraliza herramientas como las tablas arcoíris.

Información clave

La sal no necesita ser secreta. Su propósito es exclusivamente hacer que cada hash sea diferente, incluso ante contraseñas repetidas. Por eso se almacena junto al hash sin inconveniente alguno.

Definición esencial

Definición
Técnica para agregar un valor aleatorio (sal) a cada contraseña antes de procesarla con hashing.
Propósito
Evitar ataques mediante tablas arcoíris y hashes precalculados que comprometan varias cuentas a la vez.
Funcionamiento
Concatenar sal única más contraseña, aplicar algoritmo hash y almacenar el resultado junto con la sal.
Beneficios clave
Resistencia reforzada ante ataques offline, protección para usuarios que comparten contraseñas idénticas.

Aspectos fundamentales

  • Cada usuario debe recibir una sal diferente, generada de manera criptográficamente segura.
  • El salting no sustituye al hashing fuerte; ambos se complementan de forma necesaria.
  • La longitud mínima recomendada es de 16 bytes, aunque 32 bytes ofrece mayor seguridad.
  • La sal se almacena públicamente junto al hash, sin que ello represente un riesgo.
  • Su origen se remonta a los sistemas Unix de la década de 1970.
  • Estándares actuales como OWASP y el NIST SP 800-63B lo consideran una práctica obligatoria.
Aspecto Detalle
Técnica Agregar cadena aleatoria antes de aplicar hash
Longitud recomendada 16-32 bytes
Uso documentado desde Década de 1970 (Unix crypt)
Algoritmos compatibles SHA-256, bcrypt, scrypt, Argon2
Ventaja principal Neutraliza tablas arcoíris
Error más frecuente Reutilizar la misma sal para todos los usuarios

¿Cómo funciona el salting de contraseñas?

El proceso de salting se ejecuta en cuatro etapas claramente diferenciadas. Cada paso cumple una función específica y debe realizarse con rigor para garantizar la protección efectiva de las credenciales almacenadas.

Etapas del proceso

La primera etapa consiste en generar una sal aleatoria mediante un generador de números aleatorios criptográficamente seguro. Esta sal debe ser única por cada usuario y tener la longitud suficiente para impedir que un atacante pueda predecirla o replicarla. Ejemplos de sales generadas correctamente incluyen valores como “G7^Xth” o “#1Gn%”.

Durante la segunda etapa se realiza la combinación de la sal con la contraseña mediante concatenación. Por ejemplo, si un usuario introduce la contraseña “amarillo” y la sal asignada es “#1Gn%”, el sistema forma la cadena “amarillo#1Gn%” como entrada para el algoritmo hash.

La tercera etapa aplica el hashing sobre la cadena combinada utilizando una función diseñada para ser computacionalmente costosa. Los algoritmos recomendados incluyen bcrypt, Argon2, PBKDF2 y scrypt, que incorporan técnicas de key stretching para ralentizar posibles ataques de fuerza bruta.

Finalmente, el sistema almacena el hash resultante junto con la sal en la base de datos. No es necesario cifrar la sal ni mantenerla oculta; su carácter público no reduce la seguridad del sistema porque su función es únicamente distinguir los hashes entre sí.

Verificación de inicio de sesión

Al momento en que un usuario intenta iniciar sesión, el sistema recupera la sal asociada a su cuenta, la combina con la contraseña que acaba de ingresar y aplica el mismo algoritmo hash. Si el resultado coincide con el hash almacenado, el acceso se concede. Este proceso es rápido para el usuario legítimo pero extremadamente lento para un atacante que intenta millones de combinaciones.

Nota sobre implementación

En la verificación, el sistema extrae la sal almacenada, la concatena con la contraseña ingresada y compara el hash resultante con el registro guardado. Si ambos coinciden, la identidad del usuario se valida correctamente.

Errores frecuentes al implementar salting

  • Reutilizar la misma sal para múltiples usuarios, lo que elimina la protección ante contraseñas idénticas.
  • Emplear sales predecibles basadas en nombres de usuario, fechas o algoritmos deterministas.
  • Utilizar funciones hash rápidas como MD5, SHA-1 o SHA-256 sin key stretching.
  • Almacenar la sal en una ubicación separada del hash sin una relación directa entre ambos.
  • No actualizar el costo computacional de los algoritmos conforme aumenta la capacidad de procesamiento.

¿Por qué se usa la sal en el hashing de contraseñas?

La inclusión de una sal en el proceso de hashing responde a una necesidad concreta: impedir que un atacante pueda aprovechar los patrones comunes en las contraseñas de los usuarios para descifrar credenciales de forma masiva. Sin sal, dos contraseñas idénticas producen hashes idénticos, lo que permite reconocer patrones y comprometer bases de datos completas con un esfuerzo mínimo.

Beneficios principales del salting

El beneficio más inmediato del salting es la generación de hashes únicos para cada usuario. Incluso si cien personas utilizan la contraseña “123456”, sus cien hashes serán completamente diferentes entre sí gracias a las sales individuales. Esto significa que un atacante debe descifrar cada contraseña por separado, sin posibilidad de aprovechar el descifrado de una para acceder a las demás.

Otro beneficio fundamental es la inutilización de las tablas arcoíris. Estas tablas, también conocidas como rainbow tables, son conjuntos de datos precalculados que contienen millones de hashes junto con sus contraseñas originales. Sirven para realizar búsquedas inversas rápidas: dado un hash, se busca su coincidencia en la tabla para revelar la contraseña. El salting vuelve estas tablas completamente inútiles porque cada hash tiene una sal diferente y no existe en ninguna tabla precalculada.

Protección frente a rainbow tables

Una rainbow table contiene valores precalculados para contraseñas comunes. Con salting, el atacante tendría que regenerar la tabla completa para cada sal diferente, lo que hace el ataque computacionalmente inviable.

El salting también ralentiza los ataques de fuerza bruta. Al combinar la sal con cada intento de contraseña, el atacante no puede utilizar tablas precalculadas ni ataques en lotes. Debe realizar el proceso de hash para cada combinación posible, lo que incrementa exponencialmente el tiempo y el costo computacional necesarios para encontrar coincidencias.

Finalmente, el salting refuerza el hashing realizado con algoritmos considerados débiles. Si bien se recomienda siempre utilizar funciones de derivación de claves (KDF) como bcrypt o Argon2, la presencia de una sal añade una capa adicional de seguridad que mitiga algunas vulnerabilidades de los algoritmos hash tradicionales.

Protección contra ataques específicos

Tipo de ataque Efecto del salting
Tablas arcoíris Inutilizadas, ya que cada hash requiere su propia tabla.
Fuerza bruta en lotes Impracticable, porque cada hash debe atacarse por separado.
Ataques por diccionario Desacelerados, al requerir recalcular cada intento con la sal específica.
Rainbow + fuerza bruta combinados Mitigados: la combinación de ambos tipos de ataque se ralentiza más de mil veces.

¿Cuál es la diferencia entre hashing y salting?

El hashing y el salting cumplen funciones distintas y complementarias en la protección de contraseñas. Comprender sus diferencias resulta esencial para implementar sistemas de autenticación seguros y entender por qué no basta con aplicar solo una de estas técnicas.

Hashing: la base de la protección

El hashing es una función criptográfica que transforma una entrada arbitraria en una cadena de longitud fija. Su carácter unidireccional significa que, a partir del hash resultante, resulta prácticamente imposible recuperar la contraseña original. Funciones hash ampliamente utilizadas incluyen MD5, SHA-1, SHA-256 y SHA-512. Sin embargo, estas funciones por sí solas presentan una debilidad crítica: ante entradas idénticas, producen salidas idénticas, lo que facilita los ataques en lote.

Salting: la capa adicional indispensable

El salting no es una alternativa al hashing sino un complemento. Su función consiste en romper la previsibilidad de los hashes al introducir aleatoriedad antes de aplicar la función hash. Dos contraseñas iguales que, sin sal, generarían el mismo hash, producen resultados completamente diferentes al incluir sales independientes.

Comparación directa

Aspecto Hashing sin sal Hashing con sal
Hashes idénticos Sí, si las contraseñas coinciden. Facilita ataques masivos. No, cada hash es único por su sal aleatoria.
Tablas arcoíris Efectivas: precomputan hashes comunes para búsqueda inmediata. Inútiles: la sal única impide cualquier coincidencia.
Fuerza bruta Rápida en lotes simultáneos. Lenta, al debaerse atacar cada hash individualmente.
Ejemplo “amarillo” → hash MD5 idéntico en ambos usuarios. “amarillo#1Gn%” → hash único para cada usuario.
Protección contra coincidencia de contraseñas Ninguna. Completa.
Concepto clave

El hashing transforma datos en un valor fijo; el salting añade aleatoriedad antes de esa transformación. Utilizar hashing sin sal es una práctica insuficiente según los estándares actuales de seguridad.

¿Cuáles son ejemplos prácticos de salting?

Para comprender mejor cómo funciona el salting en la práctica, resulta útil examinar un ejemplo concreto y analizar los algoritmos que incorporan esta técnica de forma nativa.

Ejemplo detallado

Supóngase que un usuario establece la contraseña “sunshine”. El sistema genera la sal “G7^Xth” de forma aleatoria. El valor que se introduce en la función hash no es la contraseña sola sino la concatenación “sunshineG7^Xth”. El hash resultante, que podría parecerse a “a9b3c7d2…”, será almacenado en la base de datos junto con la sal “G7^Xth”.

Cuando ese mismo usuario inicie sesión con “sunshine”, el sistema recuperará la sal “G7^Xth”, la concatenará con la contraseña ingresada y volverá a aplicar el mismo algoritmo hash. Si el resultado coincide con el hash almacenado, el acceso se concederá. Para cualquier atacante que intente descifrar la contraseña sin conocer la sal, el proceso será considerablemente más complejo.

Algoritmos recomendados que integran salting

Algoritmo Descripción Ventaja principal Uso recomendado
bcrypt Basado en Blowfish, con work factor ajustable. Resistente a GPU y ASIC; recomendado por OWASP. Aplicaciones web.
Argon2 Ganador de la Password Hashing Competition (2015); diseño memoria-duro. Mayor resistencia contra ataques paralelos; preferido por NIST. Sistemas modernos.
PBKDF2 Emplea iteraciones múltiples (más de 100.000) con HMAC-SHA. Estándar reconocido por NIST; ampliamente compatible. Sistemas legacy.
scrypt Intensivo en uso de memoria, difícil para hardware especializado. Dificulta ataques con ASIC; eficiente en dispositivos móviles. Almacenamiento sensible.

Código de ejemplo

Un sistema que emplea bcrypt sigue esta secuencia básica: genera una sal de 16 bytes de forma aleatoria, concatena la sal con la contraseña del usuario, aplica bcrypt con un cost factor de 12 o superior, y almacena el hash junto con la sal. Durante la verificación, el sistema repite el proceso con la sal extraída del registro y compara los resultados. Según el Password Storage Cheat Sheet de OWASP, bcrypt con un factor de costo alto constituye una de las opciones más robustas disponibles actualmente.

¿Es el salting suficiente por sí solo?

El salting representa una capa de seguridad esencial, pero no constituye una solución completa por sí mismo. Su eficacia depende de que se combine con funciones de derivación de claves que incorporen key stretching, es decir, algoritmos diseñados para ser deliberadamente lentos y costosos computacionalmente.

Consideración importante

El salting no protege contra keyloggers, ataques de phishing ni interceptación de contraseñas durante la transmisión. Para una seguridad integral, debe combinarse con políticas robustas de contraseñas y autenticación multifactor.

Según NordPass, la práctica recomendada incluye utilizar salting junto con bcrypt, Argon2 o scrypt, actualizar periódicamente el costo computacional de los algoritmos y aplicar políticas de contraseñas que exijan longitud y complejidad razonables. La combinación de estas medidas multiplica la resistencia del sistema frente a ataques sofisticados.

Historia y evolución del salting

La técnica de salting tiene sus orígenes en los primeros sistemas operativos que necesitaban almacenar contraseñas de forma segura. Su evolución refleja la carrera constante entre los métodos de protección y las capacidades de ataque cada vez más potentes.

  1. 1976: Introducción del salting en el sistema Unix crypt, basado en DES, con una sal de 12 bits.
  2. Década de 1990: Expansión del uso de MD5 crypt en sistemas Unix-like, aunque con sales de longitud reducida.
  3. Año 2000: Desarrollo de PBKDF2 por RSA Labs; incorporación de múltiples iteraciones para aumentar la dificultad.
  4. 2009: Lanzamiento de scrypt, diseñado para exigir grandes cantidades de memoria y dificultar ataques por hardware.
  5. 2015: Argon2 gana la Password Hashing Competition y se convierte en el algoritmo preferido por estándares modernos.
  6. Actualidad: Argon2 y las variantes de bcrypt y PBKDF2 conforman los estándares adoptados por OWASP y el NIST.

El sistema Unix crypt evolucionó desde su implementación original basada en DES hasta SHA-512 crypt, que emplea el formato $6$sal$hash para almacenar tanto la sal como el hash en un único campo. Esta evolución ilustra cómo la criptografía ha respondido de forma progresiva a las crecientes capacidades de los atacantes, como documenta LabEx en su análisis sobre John the Ripper y el salting de contraseñas.

¿Qué se sabe con certeza y qué permanece incierto?

El salting es una técnica ampliamente validada por la comunidad de seguridad y respaldada por organizaciones internacionales de referencia. No obstante, como toda medida de protección, presenta matices importantes que conviene reconocer con claridad.

Aspecto Estado del conocimiento
Eficacia contra tablas arcoíris Validada y ampliamente documentada. El salting las vuelve inutilizables sin necesidad de cálculos adicionales.
Protección ante fuerza bruta con GPU Parcialmente mitigada. La resistencia depende del algoritmo de hashing empleado y su costo computacional.
Protección ante contraseñas débiles Limitada. El salting no protege una contraseña como “123456” si el atacante dispone de tiempo y potencia suficientes.
Necesidad de combinar con políticas de contraseñas Establecida por OWASP y NIST. El salting es una capa más dentro de una estrategia de seguridad integral.
Eficacia futura frente a computación cuántica Incierta. El impacto de la computación cuántica sobre las funciones de derivación de claves aún no está completamente definido.
Integración con tecnologías emergentes En desarrollo. La combinación con zero-knowledge proofs y autenticación sin contraseña constituye un área activa de investigación.

El salting en el contexto de la ciberseguridad moderna

En el panorama actual de amenazas digitales, el salting ocupa un lugar irrenunciable dentro de las prácticas de seguridad. Las filtraciones masivas de bases de datos siguen ocurriendo con regularidad, y en muchos casos los atacantes obtienen hashes sin sal que pueden descifrar en cuestión de horas con hardware especializado.

La transición hacia modelos de autenticación basados en protocolos modernos como OAuth y JWT no ha eliminado la necesidad del salting. Por el contrario, estos sistemas también dependen de funciones criptográficas para proteger las credenciales almacenadas en sus backends. La protección adecuada de contraseñas sigue siendo un requisito fundamental independientemente del protocolo de autenticación utilizado en la capa de presentación.

Los errores más habituales en la implementación del salting incluyen la reutilización de sales, la elección de valores predecibles y el uso de algoritmos hash rápidos sin key stretching. Estos fallos comprometen la eficacia de toda la estrategia de protección y facilitan el trabajo de los atacantes. Las directrices de NIST SP 800-63B establecen con precisión los requisitos mínimos que deben cumplirse para considerar una implementación segura.

En el contexto de aplicaciones que requieren generación de códigos QR u otros mecanismos de autenticación, la protección de contraseñas subyacentes sigue siendo prioritaria. Un sistema que genera tokens seguros pero almacena contraseñas sin las medidas adecuadas expone a sus usuarios a riesgos significativos.

Recomendación de estándares

OWASP recomienda utilizar bcrypt, Argon2, scrypt o PBKDF2 con salting integrado y un costo computacional suficientemente alto. El NIST, por su parte, favorece Argon2id y PBKDF2 con al menos 600.000 iteraciones para aplicaciones que manejan información sensible.

Estándares y fuentes de referencia

“Utilice sales específicas por usuario para prevenir ataques mediante tablas arcoíris. No reutilice valores de sal entre diferentes bases de datos ni entre distintos sistemas.”

OWASP Password Storage Cheat Sheet

“Las funciones de derivación de claves deben aplicarse con un número de iteraciones suficiente para que el cálculo del código de verificación de autenticación tome al menos un segundo en el entorno de producción previsto.”

RFC 2898 – PKCS #5: Password-Based Cryptography Specification

Además de OWASP y el NIST, el RFC 2898 publicado por el IETF establece los fundamentos técnicos para la criptografía basada en contraseñas, incluyendo los requisitos para la generación de sales y las especificaciones de las funciones de derivación de claves. La Wikipedia ofrece también un resumen accesible del concepto de sal en criptografía y su evolución histórica.

Resumen

El salting constituye una técnica indispensable en la protección de contraseñas almacenadas en cualquier sistema digital. Su función principal consiste en garantizar que cada hash resultante sea único, independientemente de que las contraseñas originales coincidan entre distintos usuarios. Esto neutraliza las tablas arcoíris, ralentiza los ataques de fuerza bruta y dificulta los descifrados masivos. Para que el salting resulte verdaderamente efectivo, debe implementarse junto con funciones de derivación de claves de alto costo computacional como bcrypt, Argon2 o PBKDF2, siguiendo las recomendaciones de OWASP y el NIST. El salting por sí solo no basta; forma parte de una estrategia integral que incluye políticas de contraseñas robustas, autenticación multifactor y actualizaciones periódicas de los algoritmos criptográficos empleados.

Preguntas frecuentes

¿Qué es una salt en criptografía?

Una salt es una cadena aleatoria y única que se concatena con una contraseña antes de aplicar la función hash. Su propósito es hacer que cada hash resultante sea diferente, incluso si la contraseña es idéntica a la de otro usuario.

¿El salting protege contra tablas arcoíris?

Sí. Las tablas arcoíris contienen hashes precalculados que permiten buscar coincidencias inversas. El salting vuelve cada hash único, lo que impide que cualquier valor de una tabla precalculada coincida con los registros almacenados.

¿Es suficiente el salting por sí solo?

No. El salting necesita combinarse con funciones hash diseñadas para ser lentas y costosas, como bcrypt, Argon2 o scrypt. Sin key stretching, un atacante con hardware potente podría descifrar contraseñas débiles mediante fuerza bruta.

¿La sal debe mantenerse secreta?

No. La sal no necesita ser confidencial. Su único objetivo es diferenciar los hashes; por eso se almacena públicamente junto al hash sin que ello comprometa la seguridad del sistema.

¿Qué longitud debe tener una sal?

Los estándares actuales recomiendan un mínimo de 16 bytes (128 bits), aunque utilizar 32 bytes proporciona mayor margen de seguridad frente a ataques futuros. OWASP y NIST coinciden en esta directriz.

¿Se puede migrar un sistema legacy sin sal a uno con salting?

Sí. El proceso habitual consiste en forzar un cambio de contraseña en el próximo inicio de sesión del usuario, generar una sal única, aplicar un algoritmo moderno y almacenar el nuevo hash. Mientras tanto, la contraseña anterior puede marcarse como pendiente de migración.

¿Qué diferencia hay entre sal y pepper?

La sal es un valor único por usuario que se almacena junto al hash y no necesita ser secreto. El pepper es un valor secreto global que se añade durante el proceso de hashing y no se almacena en la base de datos, lo que añade una capa adicional de protección si la base de datos es comprometida.



Santiago Rodriguez

Sobre el autor

Santiago Rodriguez

Publicamos cobertura diaria basada en hechos con revision editorial continua.