Mailinglisten-Archive |
Hallo Hannes, Hannes H. wrote: > Gesalzene Hashes sollen ja davor schützen, dass man bei Zugriff auf > die Hashes die Rückrechnung mit Rainbow-Tables erschwert. Wenn man nun > das Salt nun gemeinsam mit den Hashes speichert, dann ist dieser > Vorteil wohl verschwunden. Wenn ich das Salz auf irgend eine Weise aus > Meta-Daten generiere und die Software als Open Source veröffentliche, > dann kann natürlich auch jeder andere das Salz berechnen. > > Nun meine Überlegung bezüglich Webapplikation: Sobald jemand Zugriff > auf die Hashes hat (also über einen Einbruch auf den Server oder > physikalischer Zugriff) hat er auch das Salz. Solang niemand auf dem > Server einbricht ist auch das Salz kein zusätzlicher Schutz. der Witz besteht darin, soviele Varianten wie möglich zu erzeugen. Nimmt man nur einen einzigen Salt für alle, kann man sich die Mühe fast schon sparen, weil sich - gewissen Rechnenaufwand vorausgesetzt - mit diesem wieder eine Rainbow-Table für alle gespeicherten Passwörter berechnen lässt. Immer noch besser als ein ungesalzener Hash, deren Rainbow-Tables sich schon mühelos herunterladen lassen, aber eben nicht optimal. Hat allerdings jedes einzelne gespeicherte Passwort zur Hashberechnung einen eigenen Salt, muss man letztlich doch zu Brute-Force greifen. Und darum geht es: soviel Aufwand wie möglich erzeugen, um an jedes einzelne Passwort zu gelangen. Ergänzt man die Routine dann auch noch um "Key strengthening" [1], wird der Aufwand für den frischen Besitzer der Hashes regelrecht zur Last und er käme ggf. mit Social Engineering einfacher zum Ziel. Viele Grüße Lars [1] http://en.wikipedia.org/wiki/Key_strengthening
php::bar PHP Wiki - Listenarchive