Ein Hash ist das Ergebnis einer kryptografischen Hashfunktion. Diese nimmt eine beliebig große Eingabe (z. B. eine Datei oder ein Passwort) und berechnet daraus eine Zeichenkette mit fester Länge. Hashfunktionen sind Einwegfunktionen, das bedeutet, der ursprüngliche Wert kann nicht aus dem Hash zurückberechnet werden.
Zum Beispiel erzeugt der Algorithmus SHA-256 (Secure Hash Algorithm 256) einen 256-Bit-Hash, der als 64 Zeichen lange Hexadezimalzeichenkette dargestellt wird.
Obwohl Hashes ein starkes Sicherheitsmerkmal sind, gibt es Angriffsmethoden wie Rainbow Tables. Dabei handelt es sich um vorberechnete Tabellen mit gängigen Passwörtern und deren Hashes. Ein Angreifer kann einen gestohlenen Hash mit diesen Tabellen abgleichen, um das ursprüngliche Passwort zu ermitteln. Besonders schwache oder häufig verwendete Passwörter (z. B. "123456") sind leicht zu knacken.
Um dies zu verhindern, wird ein Salt eingesetzt. Dabei wird vor dem Hashing eine zufällige Zeichenkette an das Passwort angehängt. Selbst wenn zwei Benutzer dasselbe Passwort haben, ergibt sich durch das Salt ein unterschiedlicher Hashwert. Dadurch werden Rainbow Tables wirkungslos.
Eine weitere potenzielle Schwäche sind Hash-Kollisionen. Dabei erzeugen zwei verschiedene Eingaben denselben Hash. Moderne Hashfunktionen wie SHA-256 sind so konzipiert, dass solche Kollisionen extrem unwahrscheinlich sind.
Finde die ursprünglichen Passwörter der folgenden MD5-Hashes und erhalte die Flag:
Öffne Crackstation. Kopiere die folgenden Hashes in das Eingabefeld:
1. 5f4dcc3b5aa765d61d8327deb882cf99 2. 098f6bcd4621d373cade4e832627b4f6
Welches Passwort gehört zu den Hashes? Gib eines der Passwörter als Flag ein: