⭐️ Hashes knacken und würzen
Kryptographische Hashfunktion wie 👉 SHA2 sind also so konstruiert, dass man aus dem Hashwert nicht auf den ursprünglichen Eingabewert (z.B. das Passwort) schliessen kann. Doch ist das wirklich so einfach?
Schauen Sie sich beispielsweise folgenden Ausschnitt aus einer Benutzerdatenbank an:
Benutzername | Passwort-Hash (SHA2) |
---|---|
bob | ca167011d78e1241518bc68ee56176b993b7f1967095d4ebe5bc70f72f89f56b |
alice | e4ad93ca07acb8d908a3aa41e920ea4f4ef4f26e7f86cf8291c5db289780a5ae |
charlie | e4ad93ca07acb8d908a3aa41e920ea4f4ef4f26e7f86cf8291c5db289780a5ae |
tammy | 3700adf1f25fab8202c1343c4b0b4e3fec706d57cad574086467b8b3ddf273ec |
sue | c8f0bb8290089184ffeb3317f1c3185c7ffce3f442e6c2c97e4de489e8f231a5 |
Was fällt Ihnen in dieser Tabelle auf? Wie könnten Sie diese Erkenntnis unter Umständen nutzen, um doch auf das ursprüngliche Passwort zu schliessen?
Diskutieren Sie zu zweit und halten Sie Ihre Beobachtungen fest.
Rainbow Tables
Fassen wir zusammen:
- Gleiche Passwörter führen zu gleichen Hashes (jedenfalls unter Verwendung derselben Hashfunktion).
- Wenn wir für einen bestimmten Hash das dazugehörige Passwort kennen, dann ist die Kenntnis des Hashwerts genauso nützlich wie die Kenntnis des Passworts.
Aus der Sicht eines Angreifers ist damit folgende Strategie interessant:
- Wir nehmen eine Liste von häufig verwendeten Passwörtern, zum Beispiel von 👉 Wikipedia.
- Wir berechnen für jedes Passwort den entsprechenden Hash mit einer häufig verwendeten Hashfunktion (z.B. SHA2) und erstellen daraus eine Tabelle.
- Wenn wir an eine Datenbank mit gehashten Passwörtern gelangen, dann suchen wir für jeden Hash in der Datenbank den passenden Eintrag in unserer Tabelle.
- Wenn der Benutzer ein sicheres Passwort verwendet, dann haben wir Pech gehabt — wir werden in unserer Tabelle dazu keinen Hash finden. Wenn er aber ein häufig verwendetes Passwort gewählt hat, dann taucht der Hash in unserer Tabelle auf und wir kennen sein Passwort.
Eine solche Passwort-Hash-Tabelle bezeichnen wir als Rainbow Table. Wir müssen sie auch nicht selbst erstellen, denn man findet sie problemlos im Internet. Es gibt sogar Online-Tools, mit denen man einen Passwort-Hash in einer solchen Rainbow Table nachschlagen kann.
Alle Benutzer in der obigen Benutzerdatenbank haben ein unsicheres, häufig verwendetes Passwort gewählt: jeder dieser Passwort-Hashes ist in den einschlägigen Rainbow Tables zu finden.
- Verwenden Sie das Online-Tool 👉 CrackStation um die Passwörter von
alice
undcharlie
sowiebob
herauszufinden (siehe Tabelle ganz oben). - Überlegen Sie sich ein weiteres Passwort, von dem Sie glauben, dass es mit CrackStation geknackt werden kann. Verwenden Sie das untenstehende Hashing-Tool um dessen SHA2-Hashwert zu berechnen, welchen Sie dann bei CrackStation überprüfen können.
- Überlegen Sie sich nun auch noch ein Passwort, von dem Sie glauben, dass es auf keiner Rainbow Table erscheint. Verwenden Sie wiederum das Hash-Tool und CrackStation um Ihre Vermutung zu prüfen.
Halten Sie alle Beobachtungen unten im Textfeld fest.
SHA-2 Hash
Input
SHA-2 Hash
Hashes würzen
Entwickler verwenden zwei wichtige Strategien, um ihre Benutzer im Falle eines Datenlecks vor der Verwendung von Rainbow Tables zu schützen: Salts und Peppers. Diese beiden Konzepte werden im folgenden Video erklärt:
Sie kennen bereits die Passwörter von alice
, charlie
und tammy
. Nun wechseln Sie von der bösen auf die gute Seite.
Legen Sie einen beliebigen Salt fest und erstellen Sie anschliessend eine neue Benutzertabelle mit Einträgen für diese User (z.B. in OneNote). Verwenden Sie beim Hashen der Passwörter diesmal aber den gewählten Salt. Überprüfen Sie dann nochmal mit 👉 CrackStation, ob die Benutzer jetzt wirklich gegen die Verwendung von Rainbow Tables geschützt sind.
SHA-2 Hash
Input
SHA-2 Hash
Fügen Sie am Schluss hier ein Screenshot Ihrer neuen Benutzertabelle ein: