Eine Datenbank wird gestohlen
Die Mitgliederdatenbank eines Fitnessstudios wird kopiert. Sie enthält 40.000 E-Mail-Adressen und Passwörter.
Viele Mitglieder nutzen dasselbe Passwort auch für ihr Bankkonto. Sind die Passwörter lesbar, trifft der Schaden weit mehr als das Studio.
Ein gut gebautes System speichert das Passwort gar nicht. Diese Lektion zeigt, was es stattdessen speichert.
Am Ende dieser Lektion
Notiz
Ich kann erklären, warum Passwörter als Hash gespeichert werden.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Klartext | Text, den jede Person so lesen kann, wie er ist | |
| Hash | ein Code fester Länge, der aus einem Text berechnet wird, nur in eine Richtung | |
| Hashfunktion | die Rechenschritte, die aus Text einen Hash machen | SHA-256 |
| Salz | zufälliger Text, der vor dem Hashen an das Passwort kommt (englisch: Salt) | |
| Datenleck | Daten, die in falsche Hände geraten sind |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Hash ist eine Einbahnstraße
Eine Hashfunktion macht aus beliebigem Text einen Code fester Länge. Dieser Code ist der Hash.
Derselbe Text ergibt immer denselben Hash. Ändern Sie einen Buchstaben, sieht der Hash völlig anders aus.
Aus dem Hash kommt man nicht zum Text zurück, man kann nur Texte raten und vergleichen. Deshalb ist ein Hash viel sicherer zu speichern als das Passwort.
Probieren Sie es aus: Passwörter hashen
import hashlib
def hash_von(text):
# encode() macht aus dem Text Bytes, die hashlib braucht
return hashlib.sha256(text.encode()).hexdigest()
print(hash_von("Sommer2026"))
print(hash_von("Sommer2026"))
print(hash_von("sommer2026"))
print(len(hash_von("a")), len(hash_von("ein deutlich längeres Passwort")))
# Ändern Sie einen Buchstaben in "Sommer2026" und starten Sie erneut.
Bei der Anmeldung werden zwei Hashes verglichen
Bei der Registrierung berechnet das System den Hash Ihres Passworts und speichert nur ihn.
Bei der Anmeldung hasht es, was Sie eintippen. Dann vergleicht es den neuen Hash mit dem gespeicherten. Stimmen sie überein, sind Sie drin.
Das System muss Ihr Passwort nie kennen. Wer die Tabelle stiehlt, erbeutet nur Hashes.
Ein Salz macht gleiche Passwörter unterscheidbar
Zwei Personen mit demselben Passwort haben denselben Hash. Das lässt sich erkennen. Auch fertige Listen häufiger Hashes helfen Angreifenden.
Ein Salz löst das und macht solche Listen unbrauchbar. Das System hängt vor dem Hashen zufälligen Text an jedes Passwort. Das Salz wird neben dem Hash gespeichert. Es muss nicht geheim sein.
Probieren Sie es aus: ein Salz hinzufügen
import hashlib
def hash_von(text):
return hashlib.sha256(text.encode()).hexdigest()
# Zwei Mitarbeitende haben dasselbe Passwort gewählt
print("Amira:", hash_von("Sommer2026")[:16])
print("Bernd:", hash_von("Sommer2026")[:16])
# Jetzt bekommt jede Person ihr eigenes Salz, es liegt neben dem Hash
print("Amira:", hash_von("x7Q2" + "Sommer2026")[:16])
print("Bernd:", hash_von("k9Lp" + "Sommer2026")[:16])
# Geben Sie Bernd das Salz "x7Q2". Was passiert mit seinem Hash?
Ein häufiger Fehler
Warnung
Viele halten Hashing und Verschlüsselung für dasselbe. Verschlüsselte Daten lassen sich mit einem Schlüssel zurückholen. Ein Hash lässt sich von niemandem zurückholen. Speichern Sie Passwörter als Hash, denn niemand, auch nicht Sie, soll sie lesen können.
Im Berufsalltag
Tipp
SHA-256 ist schnell, und das hilft Angreifenden, die Milliarden Passwörter ausprobieren. Echte Systeme nutzen ein langsames Passwort-Verfahren wie bcrypt oder Argon2. Es erzeugt das Salz selbst.Die Idee bleibt wie in dieser Lektion.