#1
| ||||
| ||||
PasswortverschlüsselungHi, hab nur ein altes, unvollständiges Thema dazu gefunden und mach jetzt lieber ein neues auf. In nem anderen Board gehen Ideen um, wie man Passwörter sicherer speichern und übertragen kann, die auf mehrfachem Hashing beruhen. Allerdings will oder kann mir dort niemand so recht genau erklären, wozu das ganze nun eigentlich gut sein soll. Ich hoffe, dass hier ein paar Spezialisten zu dem Gebiet mitlesen und mir darüber etwas Auskunft geben können. Ich denk auch mal, dass das Thema hier noch mehr Leute interessieren könnte. Wir gehen also davon aus, dass Passwörter normalerweise einmal MD5-codiert in der Datenbank auf dem Server abgelegt werden. Diese Zeichenkette wird schlimmstenfalls auch noch auf dem Client als Cookie abgelegt und dann zum Login verglichen. Vorteil: Wer die Datenbank bekommen sollte, kann erstmal nicht viel mit den Passwörtern anfangen. Oder doch? Dann kam diese Idee ins Gespräch: $salt . md5($salt . md5($passwort)) Da wird also das Passwort erstmal versalzen und dann erneut gehasht. Soll angeblich dazu gut sein, eine längere Zeichenkette zu hashen, also in diesem Fall 34 statt vllt 8 Zeichen des Passworts. (Dafür aber mit einem kleineren Zeichenvorrat.) Eine Erweiterung wäre dazu noch, den Salt irgendwo in der Mitte des Hashes einzufügen. Ich nehme an, die Position ließe sich nochmal aus dem Salt selbst berechnen... Hm, ne, dann findet man ihn womöglich nicht mehr... Dieses Programm: http://www.antsight.com/zsl/rainbowcrack/ scheint da ganz grausame Dienste zu verrichten, indem es einmalig eine Tabelle von Hashes anlegt, mit der dann später nur noch verglichen werden muss. Für 30+ stellige 'Passwörter' geht das natürlich nicht mehr, also wäre man damit schonmal vor dieser Methode sicher. Aber kann man aus dem Salting vllt noch mehr rausholen? Z.B. eine Speicherung des Passworts auf dem Client-PC (zum autom. Re-Login), ohne dass man das ausspionieren und weiterverwenden könnte? __________________ Yves Goergen Softwareentwicklung, Fotografie, Webhosting, UNB Components (in Arbeit) |
#2
| ||||
| ||||
Diese Hashtabellen kann man auch schon für 50 bucks runterladen. http://passcracking.com machts möglich. MD5 ansich ist aber eh nicht sicher, es gibt Kollisionen im Quellcode (d.h. unterschiedliche Eingaben können gleiche Hashes ergeben. Technisch eigentlich unmöglich, aber erwiesen. Daran endete übrigens auch MD4) und bereits o.g. Tabellen mit Passwörtern von bis zu 8 Zeichen Länge. Was ist sicher? Wie wäre es mit OPT? __________________ Philipp Gérard Gewöhnliche Menschen denken nur daran, wie sie ihre Zeit verbringen. Ein intelligenter Mensch versucht sie zu nützen. - Arthur Schopenhauer |
#3
| ||||
| ||||
Zitat:
Ein Vorteil von Hashes wie MD5 ist eben, dass man beliebig lange Passwörter verwenden kann die sich eben nicht entschlüsseln lassen. Im schlimmsten Fall kann ich, falls ich einen Hash "zurückrechne", ein mögliches Passwort haben und mich damit auf der Seite einloggen. Ich führe da immer wieder gerne das Beispiel meiner Bank-PIN an: Ohne MD5: Ich benutze mein Passwort '4711' in einem Forum, es wird in der Datenbank gespeichert, die einem Cracker zum Opfer fällt. Dieser kann nun unter meinem Namen Beiträge verfassen und Geld von meinem Konto abheben. Mit MD5 (der Einfachhalt halber verwende ich hier Quersumme() anstatt md5()): Ich benutze mein Passwort '4711' in einem Forum, in der Datenbank wird der Hash Quersumme(4711), also 13, gespeichert. Ein Cracker bekommt die Datenbank in die Finger, rechnet den Hash zurück und kommt auf ein mögliches - aber eben nicht mein - Passwort: 8212. Damit kann er nun zwar in meinem Namen schreiben, allerdings kein Geld abheben. __________________ Hendrik Richter php-Programmierung | Hendis Blog | lolomat | Gratis Downloads |
#4
| |||
| |||
Zitat:
Eine potentielle Lösung über die ich mal gelesen habe wäre: Beim Login wird zweimal gehashed md5(md5($pass)) und dieser Wert auch in der Datenbank aufbewahrt, aber im Cookie wird nur der einfache Hashwert gespeichert. Dadurch kann man verhindern, dass ein aus der DB gestohlenes Passwort zum einloggen genutzt werden kann. (Es gibt auch andere Möglichkeiten: bspw. einen weiteren errechneten Prüfwert im Cookie zu speichern). Das von dir genannte "salting" ist ein effektiver Schutz gegen vorberechnete Tabellen. Zitat:
Zitat:
Das Problem ist vielmehr, dass im August es jemand geschafft ein Verfahren zu entdecken mit dem man zwei Originalelemente finden kann die auf denselben Hash-Wert "abbilden" und (das ist das wichtige) mit deutlich weniger Aufwand als man eigentlich brauchen sollte. Allerdings ist dieses Verfahren selbst nicht publiziert worden (AFAIK). Und das wichtigste: Was sich nicht geändert hat, ist der Aufwand der notwendig ist um für einen Hash-Wert einen möglichen AUsgangswert zu finden. Im Zusammenhang mit der hier vorgeschlagenen Verwendung (also: Vermeidung des Speicherns von Klartext-Passwörtern) braucht man also keine Bedenken haben (selbst wenn das entdeckte Verfahren publiziert wäre). |
#5
| ||||
| ||||
Danke für die ausführliche Erklärung! Hier scheint doch das fachkundigere Personal zu sitzen. Also gut, für diesen Zweck wäre also das Salting ($salt . md5($salt . md5($passwort))) zum Generieren und Abspeichern des Hashes geeignet. Nun, Replay-Attacken lassen sich wohl kaum ausschließen (hab mir den Artikel noch nicht durchgelesen), wenn Cookie-Authentifizierung möglich sein soll, aber was speicher ich dann in dem Cookie ab? Nur den einfachen MD5 vom Passwort? Den könnte ich beim Login dann ja weiterverarbeiten. Ebenso müsste es funktionieren, wenn ich Tabellen mit Zugangsdaten übernehmen soll, die im einfachen MD5-Format vorliegen (Upgrade oder Import), richtig? __________________ Yves Goergen Softwareentwicklung, Fotografie, Webhosting, UNB Components (in Arbeit) |
#6
| ||||
| ||||
PS: Mir ist der Begriff "Keyed MD5" wieder eingefallen. Das wurde vor ner Weile schonmal irgendwo diskutiert. Hier ist die Präsentation dazu: http://www.research.ibm.com/security/keyed-md5.html __________________ Yves Goergen Softwareentwicklung, Fotografie, Webhosting, UNB Components (in Arbeit) |
#7
| ||||
| ||||
MD5 Verschlüsslung -> ein paar weitere Links ... auch nett der Service MD5 entschlüsseln zu lassen... Geändert von Luki (21.08.2005 um 16:50 Uhr). |
Stichworte |
- |