Resumen
En criptografía, un pepper es un secreto agregado a una entrada como una contraseña durante el hashing con una función hash criptográfica. Este valor difiere de una sal en que no se almacena junto con un hash de contraseña, sino que el pepper se mantiene separado en algún otro medio, como un Módulo de Seguridad de Hardware. Tenga en cuenta que el Instituto Nacional de Estándares y Tecnología se refiere a este valor como una clave secreta en lugar de un pepper. Un pepper es similar en concepto a una sal o una clave de cifrado. Es como una sal en que es un valor aleatorio que se agrega a un hash de contraseña, y es similar a una clave de cifrado en que debe mantenerse en secreto.
Un pepper desempeña un papel comparable al de una sal o una clave de cifrado, pero mientras que una sal no es secreta (solo única) y puede almacenarse junto con la salida hasheada, un pepper es secreto y no debe almacenarse con la salida. El hash y la sal suelen almacenarse en una base de datos, pero un pepper debe almacenarse por separado para evitar que un atacante lo obtenga en caso de una violación de la base de datos. Mientras que la sal solo tiene que ser lo suficientemente larga como para ser única por usuario, un pepper debe ser lo suficientemente largo como para permanecer en secreto ante intentos de fuerza bruta para descubrirlo (el NIST recomienda al menos 112 bits).
Historia
La idea de una sal específica del sitio o servicio (además de una sal por usuario) tiene una larga historia, con Steven M. Bellovin proponiendo un parámetro local en una publicación de Bugtraq en 1995. En 1996 Udi Manber también describió las ventajas de tal esquema, denominándolo sal secreta. El término pepper se ha utilizado, por analogía con salt, pero con una variedad de significados. Por ejemplo, al analizar un esquema de desafío-respuesta, pepper se ha utilizado para una cantidad similar a una sal, aunque no para el almacenamiento de contraseñas; se ha utilizado para una técnica de transmisión de datos en la que se debe adivinar un pepper; e incluso como parte de chistes.
El término pepper se propuso para un parámetro secreto o local almacenado por separado de la contraseña en un debate sobre la protección de contraseñas contra ataques de tablas arcoíris. Este uso no se adoptó de inmediato: por ejemplo, Fred Wenzel agregó soporte al hashing de contraseñas de Django para el almacenamiento basado en una combinación de bcrypt y HMAC con nonces almacenados por separado, sin utilizar el término. Desde entonces, su uso se ha vuelto más común.
De Wikipedia (CC BY-SA 4.0).