Ich weiß, dass sagen gegeben, eine md5/sha1 von einem Wert, dass die Reduzierung von X-Bits (dh 128) zu sagen Y-Bits (dh 64 Bit) die Möglichkeit von Geburtstagsangriffe seit Informationen verloren hat. Gibt es ein einfach zu verwendendes Werkzeug/Formel/Tabelle, das sagt, wie hoch die Wahrscheinlichkeit einer "richtigen" Schätzung ist, wenn diese Längenreduzierung auftritt (im Vergleich zu ihrer ursprünglichen Schätzwahrscheinlichkeit)?Hash-Länge reduzieren?
Antwort
Nun, da jedes zusätzliche Bit im Hash die doppelte Anzahl an möglichen Hashes liefert, jedes Mal, wenn Sie den Hash ein wenig verkürzen, gibt es nur halb so viele mögliche Hashes und die Wahrscheinlichkeit, dass diese Zufallszahl geschätzt wird, verdoppelt sich .
128 bits = 2^128 possibilities
so
64 bits = 2^64
so, indem sie es in die Hälfte schneiden, erhalten Sie
2^64/2^128 percent
weniger Möglichkeiten
Crypto hart ist. Ich würde empfehlen, das nicht zu versuchen. Es ist wie Kochen Kugelfisch: Am besten zu Experten überlassen.
Verwenden Sie einfach den Hash in voller Länge. Und seit MD5 is broken und SHA-1 is starting to show cracks sollten Sie nicht in neuen Anwendungen verwenden. SHA-2 ist wahrscheinlich die beste Wahl.
Ich stimme zu, dass es schwer ist, aber ohne es "normalen" Menschen leicht zu machen, die Konsequenzen zu verstehen, dann wird es weiterhin auftreten. Ich weiß, dass es Konsequenzen gibt, aber um andere davon zu überzeugen, dass man nicht wirklich die Hälfte der Bits schneiden kann und die Hälfte der "Qualität" des Originals erwartet. –
Ich würde definitiv empfehlen, die Bitzahl von Hash zu reduzieren. Hier stehen zu viele Probleme auf dem Spiel. Erstens, wie würdest du entscheiden, welche Bits fallen gelassen werden?
Zweitens wäre es schwer vorherzusagen, wie das Fallenlassen dieser Bits die Verteilung der Ausgaben in der neuen "gekürzten" Hash-Funktion beeinflussen würde. Eine (gut entworfene) Hash-Funktion soll Eingaben gleichmäßig über den gesamten Ausgabebereich verteilen, nicht eine Teilmenge davon.
Indem Sie die Hälfte der Bits fallenlassen, nehmen Sie effektiv eine Teilmenge der ursprünglichen Hash-Funktion, die möglicherweise nicht die wünschenswertesten Eigenschaften einer richtig entworfenen Hash-Funktion hat und zu weiteren Schwächen führen kann.
Aber ohne zu quantifizieren, was der Effekt ist, wird es schwer sein, Leute davon zu überzeugen, dass sie es nicht tun sollten. –
- 1. Lösen eines Konflikts reduzieren/reduzieren
- 2. mongoDB Karte/reduzieren minus die reduzieren
- 3. Auflösung reduzieren/reduzieren Konflikt in yacc/ocamlyacc
- 4. Bison reduzieren/reduzieren Konflikt in der Grammatik
- 5. Verständnis reduzieren()
- 6. Downloadzeit reduzieren
- 7. Seitengröße reduzieren
- 8. Kann nicht herausfinden, wie zu beheben, reduzieren/reduzieren Konflikt
- 9. Reduzieren Git Repository Größe
- 10. Hash-Werte reduzieren
- 11. Karte reduzieren Wortanzahl Beispiel
- 12. Wie Internetgeschwindigkeit zu reduzieren
- 13. WebRTC - Streaming-Audiolautstärke reduzieren
- 14. QtConcurrent reduzieren mit Initialwert
- 15. Clojure: reduzieren gegen anwenden
- 16. Optionen in scala reduzieren?
- 17. Video-Pufferung reduzieren
- 18. String-Array reduzieren
- 19. in Javascript reduzieren
- 20. Implementierungsgruppe mit Karte reduzieren
- 21. Medienrecorder reduzieren Ausgabedateigröße
- 22. Persistente Festplatte Größe reduzieren
- 23. Karte reduzieren Komplexität
- 24. Bildgröße in C reduzieren #
- 25. D: reduzieren mit Delegierten
- 26. Reduzieren Sitzung Länge
- 27. Reduzieren HTML-Tabellenzeilenhöhe
- 28. reduzieren Android Studio Projektgröße
- 29. Python - Reduzieren Zeitverbrauch
- 30. Reduzieren iOS App Dateigröße
Ich glaube nicht, dass md5 oder sha1 garantieren eine gleiche Menge an Entropie (Zufälligkeit) für jede Teilmenge des Hash. Wenn dies der Fall ist, wird die einheitliche Wahrscheinlichkeitsverteilung nicht angewendet. –
Ich würde zustimmen müssen, aber um zu vermeiden, dass Leute diese Art von Schneiden tun, scheint es eine hirntote Tabelle zu geben, die sagt, wie schlimm es wird, wenn man (mit verschiedenen Algorithmen) versucht –
Update: Nach der Überprüfung von MD5 ist es offensichtlich, dass jeder 32-Bit-Abschnitt separat berechnet wird. Wenn Sie wirklich einen 128-Bit-MD5-Hash reduzieren möchten, tun Sie das am besten alle zwei oder vier Bits. Natürlich tun Sie es am besten nicht, wenn Sie Sicherheit brauchen. – erjiang