- Salted Hash
-
Salted Hash ist ein Hash-Wert, bei dem neben der eigentlichen Eingabe auch ein Zufallswert in die Berechnung einbezogen wird. Es wird häufig für die Speicherung und Übermittlung von Computer-Passwörtern benutzt.
Inhaltsverzeichnis
Problem
Hash-Funktionen, wie z. B. MD5 oder SHA, bilden jeden Eingabewert eindeutig, aber unumkehrbar auf einen Ausgabewert ab. Da gleiche Eingabewerte (z. B. gleiche Passwörter) auch gleiche Ausgabewerte erzeugen, sind solche Hash-Funktionen anfällig für Wörterbuchangriffe mit Rainbow Tables, bei denen zu vielen Klartexten bereits die Hash-Werte vorberechnet sind. Zudem kann man je nach Hash-Funktion mit großer Sicherheit von gleichen Hash-Werten auf gleiche Eingabewerte (z. B. gleiche Passwörter) schließen (siehe auch Kollisionen von Hash-Funktionen).
Abhilfe
Abhilfe schafft das Ergänzen des Eingabewerts mit einem Zufallswert (Salt, engl. Salz). Eingabewert und Zufallswert werden dabei miteinander kombiniert (z. B. durch Aneinanderhängen beider Zeichenketten) und dann mit einer Hash-Funktion der Hash-Wert berechnet. Der Zufallswert muss gemeinsam mit dem Hash-Wert gespeichert werden, um die Eindeutigkeit der Abbildung des Eingabewerts auf den Hash-Wert zu gewährleisten.
Resultierende Vorteile
Durch die Verwendung eines Zufallswertes neben dem Eingabewert können logisch getrennte, aber gleiche Eingabewerte zu unterschiedlichen Hash-Werten führen. Zum Beispiel können zwei Benutzer mit dem gleichen Passwort unterschiedliche Zufallswerte und damit unterschiedliche Hash-Werte zugewiesen bekommen, mit dem Ergebnis, dass aus der Kenntnis von Hash, Salt und der verwendeten Algorithmen nicht abzuleiten ist, ob die Passwörter gleich sind.
Zudem sind die Eingabewerte nicht mehr eindeutig auf Hash-Werte abbildbar, was Angriffe mit Rainbow Tables und Brute-Force-Angriffe auf Basis der Ausgangsdaten verhindert oder zumindest erschwert.
Weblinks
Wikimedia Foundation.