Glosario

¿Qué es Salt (criptografía)?

Un salt criptográfico es un valor aleatorio que se combina con una contraseña u otra entrada antes de que sea procesada por una función hash o una función de derivación de claves, garantizando que entradas idénticas produzcan salidas diferentes y frustrando las tablas de ataque precalculadas.

También conocido como: salt, cryptographic salt

Sin un salt, las contraseñas idénticas producen siempre hashes idénticos. Un atacante con una tabla precalculada que asigna contraseñas comunes a sus valores hash (una tabla arcoíris) puede buscar al instante cualquier hash coincidente en una base de datos robada. El salting frustra este ataque anteponiendo o mezclando un valor aleatorio único en cada contraseña antes del hashing. Aunque dos usuarios tengan la misma contraseña, los salts diferentes garantizan salidas hash diferentes.

Un salt no necesita ser secreto: normalmente se almacena en texto plano junto al hash o la clave derivada. Su propósito es forzar al atacante a calcular cada hash de forma individual en lugar de usar tablas precalculadas. Un salt aleatorio de 16 bytes proporciona 2^128 variaciones posibles para cada contraseña, lo que hace que la precomputación sea totalmente impracticable.

Los salts son esenciales en dos contextos: el hashing de contraseñas (donde protegen los hashes de contraseñas almacenados en bases de datos) y la derivación de claves (donde garantizan que la misma frase de contraseña produzca claves derivadas diferentes para operaciones diferentes). En ambos casos, el salt debe generarse usando un generador de números aleatorios criptográficamente seguro y debe ser único por operación, nunca reutilizado entre usuarios u operaciones de cifrado.

Cómo usa Vaulted Salt (criptografía)

Cuando se añade una frase de contraseña a un secreto de Vaulted, se genera un salt aleatorio de 16 bytes del lado del cliente usando la Web Crypto API. Este salt se introduce en PBKDF2 junto a la frase de contraseña y 100.000 iteraciones para derivar una clave de envoltura AES-KW. El salt se incluye después en el fragmento de la URL para que el navegador del destinatario pueda volver a derivar la clave de envoltura idéntica a partir de la frase de contraseña. Cada secreto con una frase de contraseña obtiene su propio salt único, garantizando que la misma frase de contraseña usada en distintos secretos produzca claves de envoltura diferentes.