Salt bei Passwörtern: Wirkung und sichere Nutzung
Ein Salt ist ein zufälliger, individueller Zusatzwert für das Hashen eines Passworts. Er darf neben dem Hash in der Datenbank stehen. Dadurch erzeugen sogar gleiche Passwörter unterschiedliche Hashwerte. Salt erschwert vorberechnete Angriffe, ersetzt aber weder ein starkes Passwort noch ein langsames Passwort-Hashverfahren.
Hake ab, was du schon kannst — und komm am Ende hierher zurück!
Warum gleiche Passwörter zum Problem werden
Eine Hashfunktion bildet eine Eingabe auf einen Hashwert fester Länge ab. Beim Anmelden muss das System das Klartextpasswort nicht wiederherstellen: Es hasht die Eingabe erneut und vergleicht das Ergebnis mit dem gespeicherten Wert.
Ohne Salt liefert dasselbe Passwort bei demselben Verfahren denselben Hash. Ein Angreifer mit einer gestohlenen Datenbank könnte deshalb:
- gleiche Passwörter an gleichen Hashes erkennen;
- einen berechneten Passwortkandidaten gegen viele Konten gleichzeitig testen;
- vorberechnete Zuordnungen wie Rainbow Tables verwenden.
Rainbow Table
Eine Rainbow Table ist eine vorberechnete Suchstruktur für mögliche Passwörter und zugehörige Hashwerte. Sie soll das erneute Berechnen vieler Kandidaten teilweise ersetzen.
Ein individueller Salt verändert die Eingabe jedes Kontos. Eine Vorbereitung für einen Salt passt dann nicht zu einem anderen Salt.
Anna und Max verwenden beide das Passwort geheim123.
- Anna erhält den Salt
x7Kp2mQs. - Max erhält den Salt
9LnR4tWv. - Das System verarbeitet jeweils Passwort, Salt und Verfahrensparameter.
Obwohl die Passwörter gleich sind, entstehen unterschiedliche gespeicherte Hashwerte. Die verkürzten Beispielwerte a3f2b1... und 8c7d6e... veranschaulichen nur das Ergebnis; sie sind keine vollständige reale Berechnung.
So werden Passwort und Salt gespeichert und geprüft
Beim Anlegen oder Ändern eines Passworts läuft der Vorgang in dieser Reihenfolge ab:
- Eine etablierte Bibliothek erzeugt einen kryptografisch zufälligen Salt.
- Die Passwort-Hashfunktion verarbeitet Passwort, Salt und ihre Kostenparameter.
- Das System speichert den resultierenden Hash zusammen mit Salt und Parametern.
- Das Klartextpasswort wird nicht gespeichert.
Beim Login liest das System Salt und Parameter, verarbeitet die Eingabe auf dieselbe Weise und vergleicht den neu berechneten Hash mit dem gespeicherten Hash.
Der Salt muss verfügbar sein, damit das System eine Eingabe prüfen kann. Deshalb darf er offen beim Hash stehen.
Moderne Bibliotheken speichern Salt und Parameter häufig in einem gemeinsamen Format. Ein bcrypt-Beispiel kann etwa Version, Kostenfaktor, Salt und Hash enthalten. Ein Kostenfaktor von 12 steht im dargestellten bcrypt-Schema für $2^{12}$, also 4096 Rechenschritte des zugrunde liegenden Kostenmodells. Das ist ein Formatbeispiel, keine für jedes System unveränderliche Parameterempfehlung.
Welche Angriffe Salt erschwert – und welche nicht
Salt schützt vor allem gegen die Wiederverwendung von Vorberechnungen. Bei einem eigenen Salt pro Konto muss ein Angreifer jeden Passwortkandidaten für jedes Konto erneut berechnen.
Salt stoppt jedoch keinen Offline-Angriff auf einen einzelnen Hash. Wer Datenbank, Hash, Salt und Parameter besitzt, kann weiterhin Kandidaten ausprobieren. Der Salt ist schließlich nicht geheim.
Offline-Angriff
Bei einem Offline-Angriff prüft ein Angreifer Passwortkandidaten auf eigener Hardware gegen gestohlene Daten. Der angegriffene Server kann die Zahl der Versuche dann nicht begrenzen.
Das unterscheidet sich vom Online-Angriff über ein Loginformular. Dort kann der Server Fehlversuche verzögern, begrenzen oder vorübergehend blockieren.
Salt macht jeden Hash individuell. Eine langsame Passwort-Hashfunktion macht jeden einzelnen Rateversuch teurer.
Für Passwörter sind deshalb eigens dafür entwickelte Verfahren wie Argon2id, scrypt oder bcrypt vorgesehen. Sie können Rechenzeit und teilweise Speicherbedarf gezielt erhöhen. Schnelle allgemeine Hashfunktionen wie MD5 oder die SHA-Familie sind allein für die Passwortspeicherung ungeeignet, weil ein Angreifer damit sehr viele Kandidaten schnell testen kann.
Woran du eine sichere Gestaltung erkennst
Eine sichere Passwortspeicherung verbindet mehrere Maßnahmen:
- Individueller Salt: Jedes Passwort erhält einen eigenen zufälligen Wert.
- Sicherer Zufall: Benutzername, Zeitstempel oder eine kleine feste Werteliste sind keine geeigneten Salts.
- Passwort-Hashverfahren: Eine etablierte, absichtlich aufwendige Funktion verarbeitet Passwort und Salt.
- Passende Kostenparameter: Der Aufwand wird für die vorhandene Serverleistung angemessen eingestellt und später überprüft.
- Neue Berechnung bei Änderung: Bei einem Passwortwechsel wird auch ein neuer Salt erzeugt.
- Bewährte Bibliothek: Erzeugung, Formatierung und Prüfung werden nicht selbst erfunden.
Ein Entwurf speichert für alle Konten den festen Salt SCHULE2026 und verwendet eine schnelle allgemeine Hashfunktion.
Der Entwurf hat zwei Fehler:
- Der feste Salt macht alle Konten wieder vergleichbar und ermöglicht gemeinsame Vorbereitungen für genau diesen Salt.
- Die schnelle Funktion verbilligt jeden Offline-Rateversuch.
Eine geeignete Überarbeitung lässt eine Passwort-Hashbibliothek pro Passwort einen zufälligen Salt erzeugen und nutzt ein dafür vorgesehenes Verfahren mit geprüften Kostenparametern.
Salt, Pepper und Verschlüsselung unterscheiden
Diese drei Begriffe erfüllen unterschiedliche Aufgaben:
| Verfahren | Muss geheim sein? | Typischer Speicherort | Aufgabe |
|---|---|---|---|
| Salt | nein | zusammen mit Hash und Parametern | Hashes individualisieren und Vorberechnungen erschweren |
| Pepper | ja | getrennt von der Passwortdatenbank | bei einem reinen Datenbankdiebstahl einen zusätzlichen unbekannten Faktor schaffen |
| Verschlüsselungsschlüssel | ja | sicherer Schlüsselspeicher | Daten umkehrbar ver- und entschlüsseln |
Ein Pepper ist ein zusätzliches Geheimnis, das in die Verarbeitung einfließt. Sein Nutzen hängt davon ab, dass er nicht gemeinsam mit der Passwortdatenbank gestohlen wird. Er ersetzt weder den individuellen Salt noch das langsame Passwort-Hashverfahren.
Passwort-Hashing ist nicht dasselbe wie Verschlüsselung. Verschlüsselung ist mit einem Schlüssel umkehrbar. Beim Passwort-Hashing ist diese Rückgewinnung nicht nötig: Das System prüft eine Eingabe durch erneutes Berechnen und Vergleichen.
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- Sichere Passwortspeicherung
- Individueller Salt
- unterschiedliche Hashes bei gleichen Passwörtern
- Schutz vor gemeinsamen Vorbereitungen
- Passwort-Hashverfahren
- hoher Aufwand pro Rateversuch
- etablierte Bibliothek und passende Parameter
- Pepper als Zusatzschutz
- geheim
- getrennt von der Datenbank
- Loginprüfung
- Salt und Parameter lesen
- Eingabe hashen und Ergebnis vergleichen
- Grenzen
- Salt verhindert das Raten eines einzelnen Passworts nicht
- schwache Passwörter bleiben ein Risiko
- Individueller Salt
Abschluss-Check
Du kannst einen Speicherentwurf nun mit drei Fragen prüfen: Hat jedes Passwort einen eigenen zufälligen Salt? Nutzt das System ein geeignetes langsames Passwort-Hashverfahren? Werden zusätzliche Geheimnisse wie ein Pepper wirklich getrennt geschützt?
Mit Google fortfahren