Salt es una cadena aleatoria que se utiliza para mitigar los ataques de diccionario.
+-------+------------+-----------------------+
| id | salt | hashed_pw |
+-------+------------+-----------------------+
| user1 | 9060d63fe0 | hash(pass19060d63fe0) |
| user2 | 39b3cdd660 | hash(pass239b3cdd660) |
+-------+------------+-----------------------+
Pepper es una cadena fija que es más secreta que la sal, y esto mitiga los ataques de fuerza bruta en contraseñas con sal.
¿Un pimiento está simplemente concatenado al principio o al final de una contraseña con sal? ¿Está concatenado a la contraseña con sal, que luego se vuelve a hash?
Los pimientos no deben simplemente ser concatenados porque su objetivo es hacer imposible el forzamiento de la carne bruta. También debe ser hash.
Supongamos que las contraseñas abcd1234 y salt 9060d63fe0 . Si esos dos hash con bcrypt con round 9 , el resultado será $2a$09$T.FYSHNRG5W.EiS3ieAU/OqdnNLXtou3yZk98/ZJ0Y7JXAoFlVWKS .
Si de alguna manera el hacker brute fuerza la contraseña y logra encontrar el valor abcd12349060d63fe0 , el hacker sabrá que el valor de sal es 9060d63fe0 y la contraseña es abcd1234 porque salt está almacenado en la base de datos.
Pero supongamos que se aplica un pimiento. pimienta abab4321 , contraseña abcd1234 y sal 9060d63fe0 . Si el hacker logra con éxito las fuerzas brutas.
y encontrado abab4321abcd12349060d63fe0 , el hacker no podrá saber qué parte es el pimiento y cuál es la contraseña.
Los pimientos se pueden aplicar antes de hacer este tipo de hash:
+-------+------------+-----------------------------+
| id | salt | hashed_pw |
+-------+------------+-----------------------------+
| user1 | 9060d63fe0 | hash(pepperpass19060d63fe0) |
| user2 | 39b3cdd660 | hash(pepperpass239b3cdd660) |
+-------+------------+-----------------------------+
O después de hash como este
+-------+------------+--------------------------------------+
| id | salt | hashed_pw |
+-------+------------+--------------------------------------+
| user1 | 9060d63fe0 | hash(pepper + hash(pass19060d63fe0)) |
| user2 | 39b3cdd660 | hash(pepper + hash(pass239b3cdd660)) |
+-------+------------+--------------------------------------+