Sicherheit von MD5 - Alternativen?
Posted: 2005-11-16 02:45
Hallo!
Grad beim Lesen von MD5 Collision Source Code Released auf /. bin ich in den Kommentaren über folgenden Link gestolpert:
http://www.cits.rub.de/MD5Collisions/
Dort wird beschrieben, wie ohne großartige Rechenleistung 2 Postscript Dokumente (ein "Empfehlungsschreiben" und eine "Bestellung") mit demselben MD5 Hash erstellt werden konnten. Ich vermute mal, dass solche Sachen mit Hilfe des im Artikel beschriebenen Quellcode in Zukunft sogar noch einfacher/effektiver wird (mal abgesehen davon wie schnell die Rechenleistung für "bezahlbare Cluster" steigt...).
Diese Geschichte, zusammen mit den MD5 Datenbanken wie "MD5 Cracker" um "ge-hash-te" Passwörter auszulesen, die man ja auch recht einfach zusammenschalten kann, sollte man IMHO wirklich über Alternativen nachdenken.
Nicht dass diese Idee neu wäre, aber ich denke, dass viele Leute die Gefahr immer noch unterschätzen.
Ich hab grad mal ganz grob überschlagen, mal angenommen man setzt voraus, dass die Anwender maximal 8 Zeichen lange Passwörter verwenden, und aus 50 verschiedenen Zeichen wählen, dann hätte eine vollständige MD5-Datenbank aller möglichen Passwörter eine Größe im höheren Tera-Byte Bereich. Das ist heute durchaus bezahlbar. Für ein ordentliches Wörterbücher und sämtliche Passwörter bis zu 6 Stellen sollte auch ein Aldi-PC ausreichen.
Aber was sind die Alternativen? Bei SHA-1 ist man ja noch lange nicht so weit mit den Angriffen, aber vermutlich ist es auch hier nur eine Frage der Zeit.
Ich benötige Hash-Funktionen vor allem für Passwort-Hashs. Eine Passwort-Datenbank für SHA-1 um gehashte Passwörter zu bekommen sollte IMHO nicht viel aufwändiger sein als für MD5, dauert halt ein bisschen länger und benötigt etwas mehr Speicherplatz. Selbiges gilt für alle anderen Hash-Funktionen, der begrenzende Faktor ist ganz klar das "schlechte" Passwort. Mit langsameren und längeren Prüfsummen wird das ganze zwar erschwert, aber lediglich um ein paar Prozent, nicht exponentiell.
Gut, gegen solche Datenbanken könnte man jetzt einen Salt verwenden, allerdings was nimmt man als Salt? Haltet Ihr es für günstiger, den Salt aus dem Passwort zu verwenden, oder fest ins Script zu schreiben?
Im Moment überlege ich außerdem, welchen Algorithmus ich denn nun verwenden soll.
Folgende stehen zur Auswahl: http://de3.php.net/manual/en/ref.mhash. ... .constants
Im Moment tendiere ich zu SHA-256, was würdet Ihr empfehlen? Herr Schneier empfielt ja auch die SHA-2 Familie, an anderen Stellen habe ich aber gelesen, dass diese zwar theoretisch sicherer sind, aber "unproven" was auch immer man damit sagen will.
Grüße
Andreas
Grad beim Lesen von MD5 Collision Source Code Released auf /. bin ich in den Kommentaren über folgenden Link gestolpert:
http://www.cits.rub.de/MD5Collisions/
Dort wird beschrieben, wie ohne großartige Rechenleistung 2 Postscript Dokumente (ein "Empfehlungsschreiben" und eine "Bestellung") mit demselben MD5 Hash erstellt werden konnten. Ich vermute mal, dass solche Sachen mit Hilfe des im Artikel beschriebenen Quellcode in Zukunft sogar noch einfacher/effektiver wird (mal abgesehen davon wie schnell die Rechenleistung für "bezahlbare Cluster" steigt...).
Diese Geschichte, zusammen mit den MD5 Datenbanken wie "MD5 Cracker" um "ge-hash-te" Passwörter auszulesen, die man ja auch recht einfach zusammenschalten kann, sollte man IMHO wirklich über Alternativen nachdenken.
Nicht dass diese Idee neu wäre, aber ich denke, dass viele Leute die Gefahr immer noch unterschätzen.
Ich hab grad mal ganz grob überschlagen, mal angenommen man setzt voraus, dass die Anwender maximal 8 Zeichen lange Passwörter verwenden, und aus 50 verschiedenen Zeichen wählen, dann hätte eine vollständige MD5-Datenbank aller möglichen Passwörter eine Größe im höheren Tera-Byte Bereich. Das ist heute durchaus bezahlbar. Für ein ordentliches Wörterbücher und sämtliche Passwörter bis zu 6 Stellen sollte auch ein Aldi-PC ausreichen.
Aber was sind die Alternativen? Bei SHA-1 ist man ja noch lange nicht so weit mit den Angriffen, aber vermutlich ist es auch hier nur eine Frage der Zeit.
Ich benötige Hash-Funktionen vor allem für Passwort-Hashs. Eine Passwort-Datenbank für SHA-1 um gehashte Passwörter zu bekommen sollte IMHO nicht viel aufwändiger sein als für MD5, dauert halt ein bisschen länger und benötigt etwas mehr Speicherplatz. Selbiges gilt für alle anderen Hash-Funktionen, der begrenzende Faktor ist ganz klar das "schlechte" Passwort. Mit langsameren und längeren Prüfsummen wird das ganze zwar erschwert, aber lediglich um ein paar Prozent, nicht exponentiell.
Gut, gegen solche Datenbanken könnte man jetzt einen Salt verwenden, allerdings was nimmt man als Salt? Haltet Ihr es für günstiger, den Salt aus dem Passwort zu verwenden, oder fest ins Script zu schreiben?
Im Moment überlege ich außerdem, welchen Algorithmus ich denn nun verwenden soll.
Folgende stehen zur Auswahl: http://de3.php.net/manual/en/ref.mhash. ... .constants
Im Moment tendiere ich zu SHA-256, was würdet Ihr empfehlen? Herr Schneier empfielt ja auch die SHA-2 Familie, an anderen Stellen habe ich aber gelesen, dass diese zwar theoretisch sicherer sind, aber "unproven" was auch immer man damit sagen will.
Grüße
Andreas