it-swarm-eu.dev

Wird MD5 als unsicher angesehen?

Nach all diesen Artikeln, die online über md5-Exploits verbreitet werden, überlege ich, auf einen anderen Hash-Algorithmus umzusteigen. Soweit ich weiß, war es immer der Algorithmus der Wahl unter zahlreichen Datenbankadministratoren. Ist es so vorteilhaft, MD5 anstelle von (SHA1, SHA256, SHA384, SHA512) zu verwenden, oder handelt es sich um ein reines Leistungsproblem?

Welchen anderen Hash empfehlen Sie (unter Berücksichtigung datengebundener Anwendungen als Plattform)? Ich verwende derzeit gesalzene Hashes (gesalzene MD5-Hashes). Bitte berücksichtigen Sie sowohl MD5-Datei-Hashes als auch Passwort-Hashes.

89
Tawfik Khalifeh

MD5 für Passwörter

Die Verwendung von gesalzenem MD5 für Passwörter ist eine schlechte Idee. Nicht wegen der kryptografischen Schwächen von MD5, sondern weil es schnell ist. Dies bedeutet, dass ein Angreifer Milliarden Kandidatenkennwörter pro Sekunde auf einer einzelnen GPU versuchen kann.

Was Sie verwenden sollten, sind absichtlich langsame Hash-Konstruktionen wie scrypt, bcrypt und PBKDF2. Einfach gesalzenes SHA-2 ist nicht gut genug, da es wie die meisten Allzweck-Hashes schnell ist. Check out Wie man Passwörter sicher hasht? für Details darüber, was Sie verwenden sollten.

MD5 für Dateiintegrität

Die Verwendung von MD5 für die Dateiintegrität kann abhängig von Ihrem genauen Verwendungsszenario ein praktisches Problem sein oder auch nicht.

Die Angriffe gegen MD5 sind Kollisionsangriffe, keine Pre-Image-Angriffe. Dies bedeutet, dass ein Angreifer zwei Dateien mit demselben Hash erstellen kann, wenn er die Kontrolle über beide hat. Aber er kann nicht mit dem Hash einer vorhandenen Datei übereinstimmen, die er nicht beeinflusst hat.

Ich weiß nicht, ob die Angriffe auf Ihre Anwendung zutreffen, aber ich persönlich würde mit der Migration beginnen, selbst wenn Sie der Meinung sind, dass dies nicht der Fall ist. Es ist viel zu leicht, etwas zu übersehen. Sicher ist sicher.

Die beste Lösung in diesem Zusammenhang ist derzeit SHA-2 (SHA-256). Sobald SHA-3 standardisiert ist, ist es auch eine gute Wahl.

108
CodesInChaos

Um die Antwort von @CodesInChaos zu vervollständigen, wird MD5 häufig aufgrund der Tradition verwendet, nicht aufgrund der Leistung. Personen, die sich mit Datenbanken befassen, sind nicht dieselben Personen wie Personen, die sich mit Sicherheit befassen. Sie sehen oft kein Problem darin, schwache Algorithmen zu verwenden (z. B. siehe der Witz eines Algorithmus , den MySQL zum Hashing von Passwörtern verwendet hat). Sie verwenden MD5, weil sie früher MD5 verwendet haben und es gewohnt sind, MD5 zu verwenden.

Leistung wird viel häufiger diskutiert als gemessen; Und doch kann es logischerweise kein Leistungsproblem geben, wenn nichts zu messen ist. Mit einem Kern einer Basis-CPU können Sie mit MD5 mehr als 400 MByte pro Sekunde hashen, mit SHA-1 näher an 300 MB/s und mit SHA-256 an 150 MB/s. Auf der anderen Seite liefert eine anständige Festplatte Daten mit einer noch geringeren Rate (100 bis 120 MB/s wären typisch), sodass die Hash-Funktion kaum jemals den Engpass darstellt. Folglich gibt es im Vergleich zum Hashing in Datenbanken keine Leistungsprobleme.

Die üblichen Empfehlungen für Hash-Funktionen sind:

  1. Tu es nicht. Sie sollten keine elementaren kryptografischen Algorithmen verwenden, sondern Protokolle, die mehrere Algorithmen zusammenstellen, damit sie zusammen einige Sicherheitsmerkmale bieten (z. B. Übertragung von Daten mit Vertraulichkeit und Integrität).

  2. Wirklich, tu es nicht. Erstellen Sie zum Speichern von Passwörtern (genauer gesagt Token zur Passwortüberprüfung) keine benutzerdefinierte Mischung aus Hash-Funktion und Salzen. Verwenden Sie eine Konstruktion, die speziell für eine solche Verwendung untersucht wurde. Dies bedeutet normalerweise bcrypt oder PBKDF2 .

  3. Wenn eine Hash-Funktion tatsächlich die Aufgabe erfüllt, verwenden Sie SHA-256. Erwägen Sie die Verwendung einer anderen Funktion nur, wenn ein ernstes Problem mit SHA-256 (höchstwahrscheinlich dessen Leistung) ordnungsgemäß erkannt und gemessen wurde.

35
Thomas Pornin

Ich verwende derzeit gesalzene Hashes (gesalzene MD5-Hashes).

Wenn Sie MD5-Hashes salzen, möchten Sie MD5 definitiv nicht verwenden. Es hört sich so an, als müssten Sie PBKDF2 oder bcrypt verwenden.

Soweit ich weiß, war es immer der Algorithmus der Wahl unter zahlreichen Datenbankadministratoren.

Das ist kein zwingender Grund.

Ich habe mit vielen Datenbankadministratoren gearbeitet, die in der allgemeinen Technologie mindestens 5 Jahre hinterherhinken (ohne Versionskontrolle, unformatierte Perl-Skripte für alles usw.). Es waren vielleicht besonders schlechte Datenbankadministratoren, aber ich denke, das hängt mit der äußerst konservativen Denkweise zusammen, Dinge nicht zu ändern.

6
Bradley Kreider

Um die bereits gegebenen Antworten zu ergänzen (von denen die meisten ausgezeichnet sind), haben wir jetzt ein Beispiel aus der Praxis, bei dem ein Datenverstoß (Ashley Madison) dazu geführt hat, dass die gesamte Kennworttabelle durchgesickert ist. Sie verwendeten bcrypt mit einem zufälligen Salz, um die Passwörter zu hashen. Ein Sicherheitsforscher beschloss, diese Hashes zu nehmen und sie brutal zu erzwingen. Dies war das Ergebnis

Infolgedessen stellt bcrypt aus mindestens zwei Gründen herkulische Anforderungen an jeden, der versucht, die Ashley Madison-Müllkippe zu knacken. Erstens erfordern 4.096 Hashing-Iterationen eine enorme Menge an Rechenleistung. In Pierces Fall beschränkte bcrypt die Geschwindigkeit seines Cracking-Rigs mit vier GPUs auf dürftige 156 Vermutungen pro Sekunde. Zweitens muss sein Rig, da bcrypt-Hashes gesalzen sind, den Klartext jedes Hashs einzeln erraten und nicht alle im Einklang.

"Ja, das stimmt, 156 Hashes pro Sekunde", schrieb Pierce. "Für jemanden, der es gewohnt ist, MD5-Passwörter zu knacken, sieht das ziemlich enttäuschend aus, aber es ist bcrypt, also nehme ich, was ich bekommen kann."

Pierce gab auf, als er die 4.000er Marke überschritten hatte. Um alle sechs Millionen Hashes in Pierces begrenztem Pool gegen die RockYou-Passwörter auszuführen, wären schätzungsweise 19.493 Jahre erforderlich gewesen, schätzte er. Mit insgesamt 36 Millionen gehashten Passwörtern im Ashley Madison-Dump hätte es 116.958 Jahre gedauert, bis der Auftrag abgeschlossen war.

Am Ende des Tages waren die einzigen, die er knacken konnte, lächerlich einfache oder gebräuchliche Passwörter (wie "123456").

4
Machavity

Um es kurz zu machen, es ist jetzt aufgrund von Rainbow-Tabellen ziemlich unsicher. Die Rainbow-Tabelle ist eine Liste von MD5-Hashes und ihren passenden Zeichenfolgen. Grundsätzlich würde ich andere Alternativen wie SHA1 in Betracht ziehen

0
Shane

Ja, MD5 ist unsicher, ebenso wie SHA-1. Ich empfehle die Verwendung von SHA-256, wenn die Größe des Digests ein Problem darstellt. Denken Sie daran, dass beim Speichern in einer BINARY-Spalte weniger Speicherplatz benötigt wird als beim Speichern in CHAR. Stellen Sie einfach sicher, dass es richtig gemacht wird. MD5 ist etwa 2,3x schneller als SHA-256. Weitere Benchmarks finden Sie unter http://www.cryptopp.com/benchmarks.html

0
Matrix