Yeti: Passwörter unlesbar machen

Beitrag lesen

Hi,

Sicherer wovor?

Vor den unten beschriebenen Rainbow-Attacken und Zufallsfunden, da sie bisher nicht gesaltet sind.

Nein, bitte keine Panikmache!

Sorry. Hatte nur den Hinweis in der MySQL-Doku gelesen. "Sind Exploits bekannt" ist natürlich nicht dasselbe wie geknackt, aber es ist "unsicherer" als "sicher". ;)

SHA-1 ist nicht geknackt. Es gibt zwar aus gutem Grund einige Zweifel an der Sicherheit von SHA-1, da es bereits ein Verfahren gibt, der Brute-Force auf eine deutlich geringere Anzahl an Versuchen reduziert, allerdings ist diese Anzahl immer noch groß genug, um Brute Force nicht praktikabel zu machen.

Okay, dann werde ich wohl auch darauf setzen.

Wobei ich selbst mit MD5 kein Problem hätte, wenn es sich um Passwörter handelt, die sowieso unverschlüsselt über das Internet übertragen werden, denn da ist es viel Wahrscheinlicher, jemand fängt die auf dem Weg ab, als dass jemand in Deinen Server einbricht, sich ein komplettes DB-Dump zieht und dann alle Passwörter knackt.

Das SSL-Zertifikat kommt noch, ich wollte allerdings alle möglichen Lücken schließen und nicht darauf hoffen, dass der Angreifer nur unbedingt den leichtesten Weg geht. ;)
Immerhin hätte der bei einem DB-Dump _alle_ Passwörter und nicht nur die paar, die er durch Sniffen abfangen kann, weil sich zufällig ein paar einloggen.

Diese Seiten nutzen vermutlich sogenannte Rainbow-Tabellen, d.h. vorberechnete MD5-Hashes zu allen möglichen Passwörtern bis zu einer gewissen Länge.

Genau. Allerdings gibt es dabei wohl auch Verfahrensschwächen, die ausgenutzt werden. Jedenfalls, Salting wollte ich sowieso anwenden, dabei aber dann direkt auf einen "sichereren" Algorithmus wechseln.

Was für Sicherheitsgründe? Wäre es nicht sinnvoller, das Passwort nicht nochmal unverschlüsselt über die Leitung zu jagen zwischen MySQL und PHP? Mir ist nicht klar, warum das die Sicherheit erhöhen sollte...

Die "Leitung" zwischen MySQL und PHP nennt sich (zur Zeit noch) localhost. Auch später wird niemand von außen an die Verbindung kommen.
Der Zugriff auf die User-Tabelle ist beschränkt, d.h. nur über Stored Procedures möglich. Damit wird verhindert, dass eine kompromittierte PHP-Anwendung ein komplettes Auslesen der Tabelle ermöglicht.

Baue Salting ein und nutze als Algorithmus weiterhin MD5 oder SHA1. Du musst Dir halt nur überlegen, wie an einen möglichst geeigneten zufälligen Salt herankommst.

Mach ich (SHA1)! Danke!

Der Yeti