Nach dem Lesen des Themas "Is MD5 really that bad" habe ich über eine bessere Lösung für die Generierung von Hashes nachgedacht. Gibt es bessere Lösungen wie Adler
, CRC32
oder SHA1
? Oder sind sie auch gebrochen?Wenn MD5 defekt ist, was ist eine bessere Lösung?
Antwort
CRC32 ist wahrscheinlich das Schlimmste, was Sie möglicherweise für Kennwörter verwenden könnten (neben vielleicht crc16 :). Zyklische Redundanzprüfungen sollen erkennen, ob eine Nachricht durch natürliche Ursachen beschädigt wurde, es ist trivial, Kollisionen zu erzeugen, die nichts anderes als Algebra verwenden. SHA0 und SHA1 sind ebenfalls gebrochen, obwohl im Gegensatz zu md5() niemand eine SHA1-Kollision erzeugt hat, aber es wird angenommen, dass dies mit unserer derzeitigen Technologie rechnerisch durchführbar ist.
Jedes Mitglied der SHA-2-Familie sollte verwendet werden. Sha-256 ist gut, SHA-512 ist wahrscheinlich mehr als du brauchst. NIST ist jetzt den SHA-3 Wettbewerb halten und diese irgendwann im Jahr 2012 fertig gestellt werden (für den Gewinn Knäuel!)
+1 für die Erwähnung SHA-3-Wettbewerb ... Ich habe einige Zweifel über Skein obwohl ..;) [Haftungsausschluss: Ich könnte voreingenommen sein!] – Krystian
@krystian Ihre rechten Knäuel hat einige Beulen getroffen und wurde gepatcht. Ich freue mich darauf zu sehen, wie das ausgeht. – rook
Leistung ist ziemlich schnell auf 64-Bit-Plattformen, aber es ist auf 32-Bit-Systemen, vor allem solchen eingebetteten Systemen, bei denen Leistung am wichtigsten ist (z. B. Router oder manipulationssichere Zahlungsterminals). BMW und SHABAL scheinen viel schneller und freundlicher zu Systemen mit harten Einschränkungen der Code-Größe. –
Wenn Sie eine verschlüsselte Hash-Funktion suchen, Adler und CRC32 sind wirklich schlechte Idee. SHA-1 ist auch schon gebrochen, aber in einer viel weniger gefährlichen Weise als MD5. Dies wird sich jedoch in Zukunft wahrscheinlich ändern.
Im Moment scheint die einzige vernünftige Wahl zu sein, SHA-256 zu verwenden und den Digest möglicherweise auf die gewünschte Länge abzuschneiden.
-1 Trunkierung ist eine schlechte Idee. Obwohl sha-384 von sha-512 und sha-224 von sha-256 erzeugt wird. Dies ist eine Verschwendung von Berechnungen, während nur ein paar Bytes gespeichert werden. – rook
@The Rook: Es ist im Allgemeinen wahr, aber ich hatte einige spezifische Fälle im Sinn. Wenn Sie es sich leisten können, den vollständigen Hash zu speichern, ist dies die beste Option, und das sollte getan werden. Aber wenn Sie genau 160 Bits des Digests benötigen (indem Sie SHA-1 in einer nicht-flexiblen Codebasis ersetzen), dann ist es besser, verkürztes SHA-2 zu verwenden als SHA-1 zu verlassen. – Krystian
Ich stimme dieser Aussage zu. Es ist das kleinere Übel. – rook
- 1. Welches ist eine bessere Lösung? 1
- 2. Was ist eine bessere Perl für Windows
- 3. Was ist in meinem Rails-Setup defekt?
- 4. Java: Ist SelectionKey.attach() defekt?
- 5. Was passiert mit der AVAudioSession-Instanz, wenn der iphone Lautsprecher defekt/defekt ist?
- 6. Ist Icepick defekt?
- 7. R Studio ist defekt
- 8. Ist das Gittersystem defekt?
- 9. LINQ - ist SkipWhile defekt?
- 10. Was ist eine bessere Möglichkeit, eine Textdatei zu kopieren?
- 11. Meinung was ist eine bessere Lösung, um überlappenden Inhalt zu vermeiden (Multi-Upload)
- 12. Bestätigen, dass Batarang defekt ist
- 13. Warum "display: table-cell" defekt ist, wenn "position: absolute"
- 14. Was ist die bessere mongodb Dokumentstruktur?
- 15. Bessere Lösung als Globalize.currencyParser?
- 16. MD5-Hash ist anders
- 17. Ist Xcode Debugging/Absturzbericht in Swift defekt?
- 18. Lineares Modell und dplyr - eine bessere Lösung?
- 19. Was ist eine bessere Möglichkeit, CSS-Stile festzulegen?
- 20. Was ist der bessere Weg, um eine Funktion zu definieren?
- 21. Was ist eine bessere Möglichkeit, nach Datum zu sortieren?
- 22. Json und Xml Serialisierung, was ist eine bessere Leistung?
- 23. Was ist die alternative Lösung für PaymentWithProductIdentifier?
- 24. Ist FLAG_ONLY_ALERT_ONCE defekt oder falsch oder beides?
- 25. jquery/javascript - hide div, wenn das Bild defekt ist
- 26. Was ist eine vernünftige Preis-API-Lösung für ein Startup?
- 27. Was ist die Lösung für diesen Fehler?
- 28. Was ist eine gute Lösung für den domainübergreifenden Zugriff?
- 29. Was ist eine Lösung für Ajax Post, wenn ich eine Variable veröffentlichen möchte, aber 1 js?
- 30. "Uncaught TypeError: $ (...). Select2 ist keine Funktion" Was ist die Lösung?
Hashes für welchen Zweck? – Gumbo
@gumbo guter Punkt, denn auch mit einer Sicherheitsanwendung sind Kollisionen nicht immer sinnvoll. Zum Beispiel beeinträchtigen Kollisionen nicht die Integrität eines HMAC. – rook