Salting ist das Anhängen eines zufälligen Werts an ein Passwort, bevor der Prüfwert gebildet wird. Der Wert selbst heißt Salt und wird je Passwort neu gewürfelt.
- Salting
Das Anhängen eines zufälligen Werts an ein Passwort, bevor der Prüfwert gebildet wird.
Beispiel: „Durch das Salting haben zwei Nutzer mit demselben Passwort trotzdem verschiedene Prüfwerte.“Auch: Salt heißt der Wert, Salting das Verfahren. Das BSI beschreibt ihn als Wert, der einem Eingabewert vor der weiteren Verarbeitung angehängt wird.
Abgrenzung zum Peppering: Der Salt steht im Klartext neben dem Prüfwert und ist je Passwort anders. Der Pepper ist für alle gleich und liegt gerade nicht in der Datenbank.
Warum der Salt im Klartext gespeichert wird
Weil er kein Geheimnis ist und keines sein muss. Beim Prüfen eines Passworts braucht der Server genau denselben Salt wie beim Anlegen; er steht deshalb neben dem Prüfwert in der Datenbank, bei den heutigen Verfahren sogar in derselben Zeichenkette. Seine Wirkung beruht allein darauf, dass er für jedes Passwort ein anderer ist; geheim halten muss ihn niemand.
Was Salting leistet
Es macht vorberechnete Angriffe wertlos und verhindert Rückschlüsse zwischen Konten. Eine Rainbow Table passt nur zu ungesalzenen Prüfwerten; mit Salt müsste der Angreifer für jeden einzelnen Eintrag eine eigene Tabelle bauen. Und weil zwei gleiche Passwörter zu verschiedenen Prüfwerten führen, verrät die Datenbank nicht mehr, welche Nutzer dasselbe Passwort benutzen.
Was Salting nicht leistet
Es macht ein schwaches Passwort nicht stark. Wer gezielt ein einzelnes Konto angreift, kennt den Salt aus der erbeuteten Datenbank und rechnet damit; gegen diesen Fall hilft allein ein langsames Verfahren zum Hashen, siehe Passwort-Hashing. Salting und ein langsames Verfahren gehören deshalb immer zusammen, und keines ersetzt das andere.
Worauf in der Umsetzung zu achten ist
Auf drei Dinge, die die verbreiteten Bibliotheken von selbst richtig machen. Der Salt kommt aus einem Zufallsgenerator, der für kryptografische Zwecke taugt, und nicht aus der Uhrzeit oder der Nutzerkennung. Er ist lang genug, in der Praxis mindestens sechzehn Byte. Und er wird je Passwort neu erzeugt, auch beim Ändern eines bestehenden. Wer eine fertige Funktion benutzt, bekommt alle drei Punkte geschenkt; wer selbst baut, baut hier den Fehler ein.