Ich habe einige Probleme, den Zweck eines Salt für ein Passwort zu verstehen. Nach meinem Verständnis besteht der Hauptzweck darin, einen Regenbogentischangriff zu behindern. Die Methoden, die ich gesehen habe, um dies zu implementieren, scheinen das Problem jedoch nicht wirklich zu erschweren.
Ich habe viele Tutorials gesehen, in denen vorgeschlagen wurde, das Salz wie folgt zu verwenden:
$hash = md5($salt.$password)
Der Grund dafür ist, dass der Hash jetzt nicht dem ursprünglichen Passwort zugeordnet ist, sondern einer Kombination aus Passwort und Salt. Aber sag $salt=foo
und $password=bar
und $hash=3858f62230ac3c915f300c664312c63f
. Jetzt könnte jemand mit einem Regenbogentisch den Hash umkehren und die Eingabe "foobar" finden. Sie könnten dann alle Kombinationen von Passwörtern ausprobieren (f, fo, foo, ... oobar, obar, bar, ar, ar). Es kann noch einige Millisekunden dauern, bis das Passwort abgerufen wird, aber sonst nicht viel.
Die andere Verwendung, die ich gesehen habe, ist auf meinem Linux-System. Im / etc / shadow werden die Hash-Passwörter tatsächlich mit dem Salt gespeichert . Zum Beispiel würde ein Salz von "foo" und ein Passwort von "bar" dazu führen : $1$foo$te5SBM.7C25fFDu6bIRbX1
. Wenn ein Hacker irgendwie in der Lage war, diese Datei in die Hände zu bekommen, sehe ich nicht, welchen Zweck das Salz erfüllt, da der umgekehrte Hash von te5SBM.7C25fFDu6bIRbX
bekanntermaßen "foo" enthält.
Vielen Dank für jedes Licht, das jeder darauf werfen kann.
EDIT : Danke für die Hilfe. Um zusammenzufassen, was ich verstehe, das Salz macht das Hash-Passwort komplexer, wodurch es viel weniger wahrscheinlich ist, dass es in einer vorberechneten Regenbogentabelle existiert. Was ich vorher missverstanden habe, war, dass ich davon ausgegangen bin, dass es für ALLE Hashes einen Regenbogentisch gibt.