Dein Passwort steht nicht in der Datenbank
Ein Hash ist ein Fingerabdruck aus Zeichen, den eine Rechenvorschrift aus einem Text macht. Gute Seiten speichern von deinem Passwort nur diesen Hash.
So bleibt dein Passwort geheim, auch wenn jemand die Datenbank stiehlt. Eine Regel gilt hier und immer: Du probierst nur an deiner eigenen Lab-Kopie und nie fremde Passwörter oder Konten aus.
Am Ende dieser Lektion
Notiz
Ich kann erklären, warum ein Passwort als Hash gespeichert wird.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Hash | ein kurzer Fingerabdruck, den man nicht zurückrechnen kann | |
| Hash-Funktion | die Rechenvorschrift, die den Hash bildet | SHA-256 |
| Salz | ein zufälliger Zusatz, der vor dem Hashen angehängt wird | |
| Brute Force | alle Möglichkeiten der Reihe nach ausprobieren | |
| Wörterbuchangriff | nur bekannte Wörter und häufige Passwörter probieren | |
| Klartext | ein Text, den jeder direkt lesen kann |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Warum nicht das Passwort selbst speichern?
Stell dir vor, eine Seite speichert alle Passwörter im Klartext. Wird die Datenbank gestohlen, kennt der Dieb sofort jedes Passwort. Viele Menschen benutzen dasselbe Passwort auf mehreren Seiten, also ist dann auch dein Mailkonto in Gefahr.
Darum speichert die Seite nur einen Hash. Beim Anmelden hasht sie dein getipptes Passwort und vergleicht die beiden Hashes.
Was ist ein Hash und was kann er?
Eine Hash-Funktion macht aus jedem Text eine Zeichenfolge fester Länge. Derselbe Text ergibt immer denselben Hash. Ändert sich nur ein Zeichen, sieht der Hash völlig anders aus.
Und man kann ihn nicht zurückrechnen. Das ist der Unterschied zur Verschlüsselung: Verschlüsseln kann man umkehren, hashen nicht.
Die eine Regel
Warnung
Drück oben auf Lab starten und warte, bis die Maschine läuft. Alles hier geschieht in deiner eigenen privaten Kopie. Du hashst nur Wörter, die du selbst tippst. Fremde Konten oder Passwörter gehen dich nichts an.
Das Wort hallo hashen
printf 'hallo' | sha256sumHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Nur ein Buchstabe groß: Hallo
printf 'Hallo' | sha256sumHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Eine Ziffer dazu: hallo1
printf 'hallo1' | sha256sumHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Beispiel: drei Texte, drei ganz andere Hashes
| Text | Der Anfang des Hashs (SHA-256) |
|---|---|
| hallo | d3751d33f9cd5049 |
| Hallo | 753692ec36adb4c7 |
| hallo1 | f80acd7c28c2369a |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Wie knackt man dann einen Hash?
Man rechnet ihn nicht zurück, man rät. Ein Programm hasht sehr viele Texte und vergleicht jeden mit dem gestohlenen Hash. Passt einer, ist das Passwort gefunden.
Bei Brute Force probiert es alle Möglichkeiten. Beim Wörterbuchangriff nur bekannte Wörter und häufige Passwörter. Darum sind lange, ungewöhnliche Passwörter besser.
Wie viele Möglichkeiten gibt es?
| Passwort | Zeichen | Anzahl der Möglichkeiten |
|---|---|---|
| 4 Ziffern (PIN) | 10 | 10.000 |
| 6 kleine Buchstaben | 26 | 308.915.776 |
| 8 kleine Buchstaben | 26 | 208.827.064.576 |
| 8 Buchstaben und Ziffern, groß und klein | 62 | 218.340.105.584.896 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein häufiger Fehler
Warnung
Viele denken, ein Hash sei eine Verschlüsselung mit versteckter Hintertür. Das stimmt nicht. Verschlüsseln kann man mit einem Schlüssel umkehren, hashen nie. Man prüft ein Passwort nur, indem man es neu hasht und die Hashes vergleicht.
Was macht Salz im Hash?
Zwei Menschen mit demselben Passwort hätten denselben Hash. Ein Angreifer könnte dann fertige Tabellen mit Hashes beliebter Passwörter nutzen.
Darum hängt die Seite vor dem Hashen ein zufälliges Salz an, für jedes Konto ein eigenes. Sie speichert das Salz offen neben dem Hash. Dasselbe Passwort ergibt jetzt für jede Person einen anderen Hash.
Hallo mit dem Salz a7x
printf 'a7xhallo' | sha256sumHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Dasselbe Wort mit dem Salz k9q
printf 'k9qhallo' | sha256sumHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Dasselbe in Python rechnen
import hashlib
salz = "a7x"
passwort = "hallo"
# Salz vor das Passwort setzen, dann hashen
hash_wert = hashlib.sha256((salz + passwort).encode()).hexdigest()
print(hash_wert[:16])
# Ändere das Passwort in "Hallo" und starte noch einmal.