Mit Pfeffern meint man das Kombinieren einer geheimen Zeichenfolge mit dem Passwort, bevor man
den Hash-Wert berechnet.
$scharfesPasswort = $passwort + "p8empspher3ocm1yUwiq";
$hash = bcrypt($scharfesPasswort, $salt);
Der Pfeffer (Pepper) ist geheim und wird, im Gegensatz zum Salt, nicht in der
Datenbank gespeichert. Stattdessen wird er an einem möglichst sicheren Ort hinterlegt, der gleiche
Pepper gilt normalerweise für alle Passwörter.
- Hat der Angreifer nur Zugriff auf die Datenbank (SQL-Injection / Backups), so kennt er zwar
die Hash-Werte, diese stammen aber nicht mehr von schwachen Passwörtern.
Es sind Hash-Werte von langen Kombinationen von Passwort und einem starken Pepper. Kein
Wörterbuch enthält je solche Passwörter, ein Wörterbuchangriff ist darum sinnlos.
- Hat der Angreifer Kontrolle über den Server, so kennt er auch den Pepper, und dieser bringt
keinerlei Vorteile mehr. Rechte auf einem Server zu erlangen ist aber
wesentlich schwieriger, als nur Lesezugriff auf die Daten zu erhalten (SQL-Injection genügt nicht mehr).