Tach!
Ich denke, das Salt bringt in diesem Fall keinen gesteigerten Wert. Zum einen handelt es sich um lediglich ein einzelnes Passwort. Bei vielen zu speichernden Passwörtern will man durch unterschiedliche Salt-Werte verhindern, dass zwei Passwörter denselben Hash-Wert erzeugen und man so Rückschlüsse von einem auf andere ziehen kann. Zum anderen kann ein schwaches Passwort bei bekanntem Salt genauso leicht per Brute-Force geknackt werden wie eins ohne Salt. Auch bei einem starken Passwort erhöht ein bekanntes Salt den Aufwand des Knackens nicht weiter.
Wenn dem Angreifer der Hashwert nicht bekannt ist, kann er nur Passwort-Versuche auf das Script absetzen. Dabei kommt es nur noch auf die Stärke des Passworts an und wie einfach/schnell er die Versuche starten kann.
Der hashwert wird ja aber sichtbar gespeichert. (Sichtbar wenn plain übertragen)
Den Fall hab ich im oberen Abschnitt betrachtet. Aber Sicherheit muss auch garantiert werden, wenn du an Hash-Wert und Salt nicht herankommst. In dem Fall reicht ein unsicheres Passwort und ein Webserver, der beim Brute-Force mitspielt.
Deshalb schrieb ich 32 Bit Salt... Und er bringt definitiv etwas... Es gibt viele DBs im Netz, wo man MD5 Springs eingeben kann umschwenken gespeichert, das klar-PW zurück bekommt. Und da sind ebenso bereits viele starke PWs gespeichert. Mit einem 32-Bit- Salt ist da die Erfolgschance nahe 0... Deshalb ist das durchaus sinnvoll und kann nicht Schaden...
Rainbow-Tables. Ich muss zugeben, dass ich nicht auf dem aktuellen Stand bin, welche Sorten Rainbow-Tables mittlerweile verfügbar sind. Wenn ich mal Free Rainbow Tables als Referenz annehme, dann sehe ich da bei MD5 maximal 8 Stellen bei mixalpha-numeric-space. Die anderen sind teilweise länger, verwenden aber auch weniger Zeichen. Das heißt für mich, dass diese Tabellen immer noch nutzlos sind, wenn das Passwort selbst ausreichend komplex ist.
Mir fallen drei Situationen ein:
- Das Passwort ist sehr schwach, dann kommt es zusammen mit den 4 Zeichen bei 32-bit-Salt möglicherweise noch in den von Rainbow-Tables abgedeckten Bereich. Nix gewonnen.
- Das Passwort ist komplex und selbst nicht mehr in den Tabellen enthalten, dann bringt das Salt vielleicht was für die Zukunft, wenn ich mein Passwort nicht der dann üblichen Rechenleistung anpasse, um Brute-Force zu erschweren.
- Das Passwort kommt zusammen mit dem Salt nicht in den Rainbow-Tables vor. Ein Salt bringt nur dann beim Brute-Force Punkte, wenn sich damit die Rechenzeit signifikant verlängert - die Rechenzeit für die Ermittlung eines Hash-Wertes. Wenn ich den MD5-Algorithmus richtig verstehe, ist 512 Bit (=64 Byte) das Schlüsselwort. Alles bis zu dieser Länge benötigt dieselbe Rechenzeit. Wenn das richtig ist, bringt das Salt also erst dann einen Nachteil für Brute-Force, wenn damit die 512er Grenze überschritten wird.
Lange Rede kurzer Sinn: Einfach nur Salt hinzufügen bringt dich nicht zwangsläufig auf die sichere Seite.
dedlfix.