Salt
Ein Salt ist ein Zufallswert, der beim Passwort-Hashing hinzugefügt wird, damit identische Passwörter unterschiedliche Hashes erzeugen; dadurch werden Rainbow-Tabellen und die Erkennung gleicher Passwörter unwirksam.
Zweck
Dafür sorgen, dass der Hash jedes Benutzerpassworts eindeutig ist – auch bei identischen Passwörtern –, um Vorabberechnung und Massenvergleich zu verhindern.
Mechanismus
Pro Passwort wird ein eindeutiger Zufalls-Salt (≥ 16 Bytes) erzeugt und die Verkettung gehasht: H(Passwort || Salt). Der Salt wird zusammen mit dem Hash gespeichert (keine Geheimhaltung nötig); bei der Verifizierung wird mit dem gespeicherten Salt neu gehasht und verglichen. Durch Salting müssten Rainbow-Tabellen pro Benutzer neu vorberechnet werden, was unpraktikabel ist.
Anwendungsfälle
- Speicherung von Passwort-Hashes
- Eingabe für KDFs (PBKDF2/scrypt)
- Analogie zum Verschlüsselungs-IV
- Token-Erzeugung
Beispiele
- Eingabe
password + random saltOutputUnique hashDifferent per user
Häufige Fehler
- A global fixed salt (equivalent to no salt)
- Generate a unique random salt per password