Saltar al contenido
uencoder

Salt

Una sal es un valor aleatorio que se añade durante el hash de contraseñas para que contraseñas idénticas produzcan hashes distintos, anulando las tablas arcoíris y la detección de contraseñas repetidas.

Propósito

Hacer que el hash de cada contraseña de usuario sea único incluso para contraseñas idénticas, impidiendo la precomputación y la comparación masiva.

Mecanismo

Se genera una sal aleatoria única (≥16 bytes) por contraseña y se aplica hash a la concatenación: H(password || salt). La sal se almacena junto al hash (no requiere secretismo); en la verificación se vuelve a aplicar hash con la sal almacenada y se compara. Con el salado, las tablas arcoíris tendrían que precomputarse por cada usuario, lo cual es inviable.

Casos de uso

  • Almacenamiento de hashes de contraseñas
  • Entrada de KDF (PBKDF2/scrypt)
  • Analogía con el IV de cifrado
  • Generación de tokens

Ejemplos

  • entrada
    password + random salt
    Output
    Unique hash

    Different per user

Errores comunes

A global fixed salt (equivalent to no salt)
Generate a unique random salt per password

Términos relacionados

Herramientas relacionadas

References