it-swarm-eu.dev

Warum wird MD5 immer noch verwendet / empfohlen, wenn es seit 1996 geknackt wurde?

Es wird immer noch allgemein empfohlen, Passwörter zu hashen, auch wenn die Unsicherheit 1996 nachgewiesen wurde:

Daher schlagen wir vor, MD5 in Zukunft nicht mehr in Anwendungen wie Signaturschemata zu implementieren, in denen eine kollisionssichere Hash-Funktion erforderlich ist. Nach unserem derzeitigen Kenntnisstand sind SHA-1 und RIPEMD-160 die besten Empfehlungen für Alternativen zu MD5.

(Der Status von MD5 nach einem kürzlich erfolgten Angriff, CryptoBytes, RSA Laboratories, BAND 2, NUMMER 2 - SOMMER 1996)

Selbst nach dieser Studie und allen anstehenden Veröffentlichungen über ihre Mängel wurde sie seitdem als Passwort-Hashing-Funktion in Webanwendungen empfohlen.

Es wird sogar in einigen digitalen Signaturen von Zertifizierungsstellen verwendet (gemäß http://rmhrisk.wpengine.com/?p=6 )

Was ist der Grund, warum dieser Message Digest-Algorithmus aus Sicherheitsgründen noch nicht verboten ist?


Links, ich habe ein paar Minuten gebraucht, um diese zu finden

57
Marek Sebera

Um die gute Antwort von @DW zu ergänzen: für Passwort-Hashing ist MD5 nicht mehr kaputt als jede andere Hash-Funktion (aber verwenden Sie sie trotzdem nicht) .


Das vollständige Bild: MD5 ist eine kryptografische Hash-Funktion , die als solche drei Eigenschaften erfüllen soll:

  • Widerstand gegen Vorbilder: gegeben x , es ist unmöglich, m zu finden so dass MD5 (m) = x .
  • Widerstand gegen Zweitvorbilder: Bei m ist es unmöglich, zu finden ) m ' verschieden von m und so, dass MD5 (m) = MD5 (m') .
  • Widerstand gegen Kollisionen: Es ist unmöglich, m und m 'zu finden. voneinander verschieden und so, dass MD5 (m) = MD5 (m ') .

MD5 ist in Bezug auf Kollisionen gründlich defekt, jedoch nicht für Vorbilder oder Zweitvorbilder. Darüber hinaus hat der Angriff von 1996 (von Dobbertin) MD5 überhaupt nicht gebrochen; es war eine "Kollision mit der Kompressionsfunktion", d. h. ein Angriff auf eines der internen Elemente von MD5, aber nicht die volle Funktion. Kryptographen nahmen es als Warnflagge und sie hatten Recht, weil der tatsächliche Kollisionsangriff, der 2004 (von Wang) veröffentlicht wurde, auf den Erkenntnissen von Dobbertin beruhte. Aber MD5 wurde erst 2004 kaputt gemacht, nicht 1996, und es war ein Kollisionsangriff .

Kollisionen sind für die Sicherheit von Passwort-Hashing nicht relevant. Die meisten Verwendungen einer Hash-Funktion für das Passwort-Hashing hängen entweder vom Vorbildwiderstand oder von anderen Eigenschaften ab (z. B. wie gut die Hash-Funktion funktioniert, wenn sie in HMAC verwendet wird die nicht auf eine der oben genannten Eigenschaften reduziert werden kann). MD5 wurde in Bezug auf Vorbilder tatsächlich "geschwächt", aber nur auf theoretische Weise, da die Angriffskosten immer noch Milliarden von Milliarden zu teuer sind, um wirklich ausprobiert zu werden (so dass MD5 in Bezug auf Vorbilder nicht "wirklich" kaputt ist). nicht in praktischer Weise).

Verwenden Sie MD5 jedoch trotzdem nicht . Nicht wegen einer kryptografischen Schwäche, sondern weil MD5 ungesalzen und sehr schnell ist. Genau das möchten Sie in einer Passwort-Hashing-Funktion nicht. Leute, die MD5 für das Passwort-Hashing "empfehlen", wissen es einfach nicht besser und sie sind ein Beweis für eine Wahrheit, die Sie immer im Auge behalten sollten: Nicht alles, was Sie im Internet finden, ist korrekt und vertrauenswürdig. Bessere Lösungen für das Passwort-Hashing sind bekannt und werden seit mehr als einem Jahrzehnt verwendet und bereitgestellt. Siehe diese Antwort für Details und Hinweise.

76
Thomas Pornin

Was meinst du mit "verboten"? Wer würde die Verwendung von MD5 "verbieten"? Es ist nicht so, dass wir einige internationale Crypto Cops haben, die Leute verhaften, die ROT13 und andere unsichere Crypto-Schemata verwenden.

Oder, um es etwas ernster zu machen: Kryptographen empfehlen bereits, dass neue Systeme MD5 vermeiden sollten, und sie empfehlen, dass vorhandene Systeme von MD5 weg migrieren sollten. Ich weiß nicht, was Kryptographen Ihrer Meinung nach noch dagegen tun können.

Sie behaupten, dass MD5 eine "allgemein empfohlene Methode zum Hashing von Passwörtern" ist, liefern jedoch keine Beweise für diese Behauptung. Ich denke nicht, dass die Behauptung richtig ist. Das war nicht meine Erfahrung.

Das Fazit ist, dass die kryptografische Community is bereits ziemlich klar mit einer Stimme zu diesem Thema spricht und die meisten Leute are bereits von MD5 abwandern. Die Fälle, in denen MD5 noch verwendet wird, sind die Ausnahme, nicht die Norm.

Bearbeiten (6/17): Ich sehe, dass Sie einige Links hinzugefügt haben, die die Verwendung von MD5 für das Hashing erwähnen. Sie beweisen nur, dass einige Leute, von denen ich noch nie gehört habe, verwirrt sind. Na und? Sie sollten wahrscheinlich skeptisch sein, wenn Sie sich von Leuten beraten lassen, die sich in der Sicherheits-/Kryptografie-Community ohnehin keinen guten Ruf erarbeitet haben. Und ich verstehe nicht, wie Sie die Sicherheits-/Kryptografie-Community dafür kritisieren können, dass einige Leute, die nicht in der Community sind, verwirrt sind. Was genau sollen wir tun? Wir tun bereits alles, um das Wissen über den richtigen Weg zu erweitern. Ich habe das Gefühl, dass Sie wirklich die falschen Leute beschuldigen.

Um Ihre Frage zu beantworten, warum manche Leute MD5 immer noch empfehlen: Nun, meine Güte, wahrscheinlich, weil diese Leute es nicht besser wissen. Ich weiß nicht, was noch jemand zu diesem Thema sagen kann oder was Sie von jemandem erwarten.

28
D.W.

Ich denke, was Sie sehen, ist der lange Schwanz des Webs. Ich kann Artikel aus dem Jahr 2006 finden, die MD5 für das Passwort-Hashing empfehlen (z. B. http://www.pixel2life.com/publish/tutorials/118/understanding_md5_password_encryption/ ) - noch 10 Jahre nach Ihrem Referenzdatum.

Wir sprechen jedoch über die Zeit, in der die neuesten Forschungsergebnisse in den von Experten begutachteten Kryptografie-Journalen veröffentlicht werden müssen, um Praktikern, die keine Kryptografie-Journale lesen und nicht einmal Experten auf diesem Gebiet sind, die Praxis zu empfehlen. Was wahrscheinlich passiert ist, ist, dass 1990 jeder "wusste", dass MD5 gut für Passwörter ist, und allen anderen sagte, dass MD5 gut für Passwörter ist. Ab Ende der neunziger Jahre sagten einige Leute, MD5 sei schlecht für Passwörter, aber die meisten "wussten", dass es gut für Passwörter sei, und dies war immer noch das, was sie anderen rieten.

Heutzutage gibt es eine große Anzahl von Leuten, die "wissen", dass bcrypt gut für Passwörter ist, bei denen Sie anfangen, diese Empfehlungen zu sehen, aber die Artikel, die besagen, dass MD5 gut für Passwörter ist, sind noch nicht aus den Suchmaschinenindizes herausgefallen. Mit der Zeit werden sie.

Das bedeutet, dass Sie in einem Jahrzehnt hierher zurückkehren und die Frage stellen werden: "Warum empfehlen die Leute immer noch, einen bcrypt - Arbeitsfaktor von 10 zu verwenden, wenn dies der Fall ist?" Journal sagt, Sie sollten mindestens 150 verwenden? "...

Poul Henning-Kamp hat ursprünglich die UNIX-Funktion crypt () von DES auf MD5 verschoben. Er erklärt hier , dass die Tatsache, dass Benutzer MD5 verwenden, zeigt, dass er nicht erfolgreich war Beschreiben Sie, was er versucht hat: Kennwort-Hashing komplexer gestalten, MD5 nicht als Shibboleth installieren.

8
user185

Sie haben mehrere Verwendungen von MD5

Integritätsprüfung

Überprüfen Sie, ob die heruntergeladene oder empfangene Datei das Original ist, indem Sie den Hash der Datei überprüfen. Es hat sich gezeigt, dass Sie problemlos eine Datei mit derselben Prüfsumme erstellen können.

Die Kollision in MD5 ist einfach zu erzeugen . MD5 sollte zu diesem Zweck nicht verwendet werden .

Die Leute schlagen immer noch eine MD5-Prüfsumme vor, während sie ISO und andere Dinge herunterladen, geben aber oft auch SHA Prüfsumme. Dies kann erklärt werden, weil MD5 viel schneller ist und normalerweise implementiert wird.

Passwortprüfung

Anstatt ein Passwort im Klartext zu speichern, speichern Sie den Hash des Passworts. Einige Websites verwenden dazu immer noch MD5. Das Problem hierbei ist nicht, eine Kollision zu finden, sondern eine Rainbow-Tabelle oder eine riesige Datenbank mit MD5-Prüfsummen zu überprüfen.

Da Sie sehr schnell Millionen von MD5-Prüfsummen erstellen können, können Sie ein Kennwort auf Ihrem eigenen PC brutal erzwingen. Aus diesem Grund sollten Sie MD5 nicht zum Hashing Ihres Passworts verwenden, aber meistens sollten Sie ein Salz hinzufügen.

Wenn Sie ein sehr komplexes Kennwort (lang mit Sonderzeichen) und ein eindeutiges komplexes Salt für jedes gespeicherte Kennwort haben, ist die Verwendung von MD5 für Sie kein so großes Problem. Ich sage nicht, dass Sie sollten (Sie sollten nicht), aber es ist kein großes Sicherheitsproblem, MD5 zu verwenden, wenn das Passwort schwer zu erzwingen ist und die Verwendung der Rainbow-Tabelle durch das Salz verhindert wird. Natürlich ist es auf Ihrer Website nicht einfach (und geschätzt), die Benutzer zu einem komplexen Kennwort zu zwingen. Wenn ein Benutzer also 12345 registriert, unabhängig davon, welche Hash-Funktion Sie verwenden, wird es beschädigt.

Der Grund, warum die Leute das immer noch verwenden, liegt vielleicht daran, dass es immer noch die bekannteste Hash-Funktion ist und vor einigen Jahren noch akzeptabel war. Leute mit nicht viel Kryptowissen können es verwenden.

6
Martin Trigaux

Ich denke nicht, dass es empfohlen wird. Wikipedia gibt an, dass MD5 als defekt gilt und SHA-2 oder SHA Familie wird empfohlen, um es zu ersetzen. Schauen Sie sich auch Devise , an a Ruby gem, das die Autorisierung verwaltet. Es hat einen anderen Verschlüsselungstyp.

3
Travis Pessetto

Selbst nach dieser Studie und allen anstehenden Veröffentlichungen über ihre Mängel wurde sie seitdem als Passwort-Hashing Funktion in Webanwendungen empfohlen.

Ja und?

Passwort-Hashing ist nur Zeitverschwendung.

MD5 ^ n (MD5 iteriert n mal) ist genauso gut wie SHA1 ^ m (für m wie time(MD5^n) >= time(SHA1^m)) für - Zeitverschwendung.

Niemand hat eine Möglichkeit vorgeschlagen, MD5 ^ n auf eine Weise zu berechnen, die schneller ist als die offensichtliche MD5 o MD5^(n-1). Es gibt nicht einmal den Anfang einer Idee, dies zu tun.

Hier ist nichts kaputt.

Für die Verschwendung von Zeit sollten Sie scrypt berücksichtigen.

2
curiousguy

Dies ist eine offizielle Information über MD5 - MD5 anfällig für Kollisionsangriffe Für eine höhere Sicherheit sollte SHA-2 in Betracht gezogen werden. Niemand hindert Benutzer daran, MD5 zu verwenden, aber nicht für die Daten, die Sie privat halten möchten.

Leistung von Hash-Algorithmen

Wie im Diagramm "Leistung von Hash-Algorithmen" gezeigt, ist SHA256 viel schneller als MD5.

Dies ist eine gute Ressource, die berücksichtigt werden muss. Der Autor untersucht die durchgesickerten Passwörter von LinkedIn - Warteschlange (.) Acm (.) Org/detail.cfm? Id = 2254400 & ref = fullrss und zeigt auch einige Möglichkeiten zum Sichern von Passwörtern auf.

1
user1652382

Das Problem des Kennwort-Hashing und der Verwendung von Rainbow-Tabellen hängt von der Sicherheit eines Webservers ab, der durch eine zugrunde liegende Schwachstelle ausgenutzt wird.

An erster Stelle stehen all diese Websites, die angeblich einen einfachen Test anbieten, um festzustellen, ob Ihr Passwort sicher ist ... Ummm, lassen Sie uns diese Websites als Phishing betrachten, und alle Leute, die auf diese Websites rollen, füttern eine Regenbogentabelle. Das ist ein Teil des Problems.

An zweiter Stelle stehen Leute, die Webhosting-Dienste nutzen, bei denen es darum geht, Geld einzusammeln und die Sicherheit von Webservern zu vergessen. Diese Hosts sollten an die Wand gestellt und meiner Meinung nach erschossen werden. Ein Teil der Sicherheit eines Benutzer-Logins kommt von der Sicherheit von Ein Webserver und die zugrunde liegenden Technologien sind auf dem neuesten Stand, um die Verwendung bekannter Exploits zu verhindern.

Drittens ist es immer noch schwierig, ein Benutzerkonto zu hacken, es sei denn, Sie haben einen Webhost, auf dem ein ausnutzbares System ausgeführt wird, wenn die Leute erst einmal in ihre dicken Köpfe geraten, dass MD5 zwar nicht kollisionssicher ist oder ich es vorziehe, so robust es auch sein mag , Ihre Webcodierung ist nicht robust und Sie setzen sich einer Website aus, die behauptet, Ihre Passwortsicherheit zu überprüfen.

Zum größten Teil ist MD5 + ein Salt-Wert eine ausreichende Sicherheit für eine Benutzeranmeldung in einem Webforum, solange das zuvor erwähnte System und die Software nicht ausgenutzt werden können. Sobald Sie ein System haben, das für eine Schwachstelle ausgenutzt wurde, wird durch Ausführen einer Abfrage nach bekannten Hashwerten, die kein Salting-System verwenden, eine vierte Schwachstelle aufgedeckt ... der Endbenutzer.

Viertens ist der Endbenutzer, Ihre Websicherheit ist letztendlich nur so stark wie das schwächste Glied, und für viele wird der Endbenutzer genau das sein, und Administratoren müssen sich daran erinnern, dass sie Endbenutzer eines Systems sind und ebenso anfällig dafür sind Gefährdung der Systemsicherheit durch schlampige Programmierung oder Software, die leicht beschädigt werden kann, schlechte Kennwortsicherheit und das Versäumnis, die ADMIN-Anmeldung zu ändern, oder durch die Verwendung von Software, die auch heute noch darauf besteht, den Administrator-Anmeldenamen als Administrator zu verwenden und Super-User-Konten zu verwenden.

Es versteht sich von selbst, also werde ich es trotzdem sagen, MD5 ist nicht geknackt, es wird durch schwache Benutzer, schwache Software und die Unfähigkeit der Menschen, eine Technologie zu verstehen, rückentwickelt. Wenn MD5 geknackt ist, ist dies auch SHA und AES und so weiter ...

0
Mark Giblin