it-swarm.com.de

Welche Hash-Länge ist sicherer?

Wenn ein Hash-Algorithmus eine Option zum Auswählen der Ausgabe-Hash-Länge (z. B. 128 gegenüber 512 Bit) hat und alle anderen Aspekte der Hash-Funktion gleich sind, ist die Hash-Länge wahrscheinlich sicherer/nützlicher und warum ?

22
rpach17

Wie Hashes funktionieren

Das Konzept hinter Hashes ist sehr einfach: Nehmen Sie eine Nachricht beliebiger Größe und erzeugen Sie deterministisch eine zufällig aussehende Ausgabe einer bestimmten Größe. Für eine gut aufgebaute kryptografische Hash-Funktion besteht die einzige Möglichkeit, sie zu unterbrechen, darin, zufällige Eingaben zu versuchen, bis Sie den gewünschten Hash-Wert erhalten (Kollision oder Vorabbild usw.).

Welches ist sicherer?

Wenn alle anderen Dinge gleich sind (dh es ist der gleiche Algorithmus, nur mit einer anderen Ausgabegröße, z. B.: SHA2-224 gegenüber SHA2-512), ist er umso sicherer, je größer die Ausgabe des Hash ist. Grund: Wenn Sie einen 224-Bit-Hash haben, erwarten Sie, dass ein Angreifer 2 machen muss223 Vermutungen (im Durchschnitt), um es zu brechen, während ein 512-Bit erfordert, dass der Angreifer 2 macht511 Vermutungen (im Durchschnitt).

Welches ist nützlicher?

Dieses kann ich nicht für Sie beantworten, es hängt von vielen Faktoren über die Anwendung ab, die es verwendet. Zum Beispiel, ob Sie über Speicher-, Bandbreiten- oder Verarbeitungsbeschränkungen verfügen, ob Sie Ihre Infrastruktur problemlos aktualisieren können, wenn der 128-Bit-Hash veraltet ist oder ob die von Ihnen eingerichtete Lösung 10 Jahre lang zukunftssicher sein muss. usw. Mit nur den Informationen, die Sie gegeben haben, kann ich dies nicht für Sie beantworten.

45
Mike Ounsworth

Der längste Hash ist der sicherste, da die Wahrscheinlichkeit, zufällig eine Kollision zu finden, geringer ist. Das Berechnen und Überprüfen eines längeren Hashs dauert jedoch auch länger, insbesondere wenn ein Mensch ihn überprüfen muss. Daher lohnt es sich möglicherweise nicht, einen längeren Hash für die winzige Sicherheitsverbesserung zu verwenden.

6
user2233709

Die erste offensichtliche Antwort ist natürlich "Der 512-Bit-Hash ist besser".

Eine rücksichtsvollere Antwort würde dazu beitragen: "... wenn die Eingabe lang genug ist". Der Grund dafür ist, dass wir uns zwar wünschen, dass die Welt und die Hashes in dieser Welt perfekt sind, es jedoch im Allgemeinen schwieriger ist, eine nahezu perfekte, zufällig aussehende Verteilung in einer größeren Ausgabe bei einer kleinen Eingabe zu generieren. Daher kann ein längerer Hash unerwünschte Eigenschaften im Vergleich zu einem kürzeren haben, wenn eine zu kurze Eingabe gegeben wird.

Eine praktischere Antwort würde fragen: Sind Sie geburtstagsgebunden? Wenn nicht, vergessen Sie das Problem und verwenden Sie einfach den 128-Bit-Hash, der schneller ist und weniger Speicherplatz benötigt.

Wenn ein Geburtstagsangriff ein Problem für Sie sein kann (Signaturen?), Möchten Sie definitiv keinen 128-Bit-Hash (oder kleiner) verwenden, da 264 ist eine Zahl, die als Angriff durchaus machbar ist.

Abgesehen davon, es sei denn, einige der beteiligten Informationen sind so immens wertvoll, dass eine oder mehrere der größten Nationen der Welt den größten Teil ihrer Ressourcen und ihrer vermuteten Superquantencomputer mehrere Jahre lang einsetzen werden, um eine einzelne von Ihnen brutal zu erzwingen Hashes (wie wichtig sind Sie?), jeder nicht gebrochene Hash ist - in der Praxis - so gut wie jeder andere, was die Länge betrifft.

Es macht keinen Unterschied, ob ein Angreifer 2 ausführen muss127 oder 2511 oder 210000000 Schritte.

2127 ist auf jeden Fall unpraktisch und (wenn möglich für jedes realistische Szenario) unerschwinglich.

1
Damon

Eine Verwendung von Hashes ist die Datensignatur oder Prüfsumme.

Angenommen, ich stelle eine Datei zum Herunterladen für Sie bereit. Sobald Sie die Datei heruntergeladen haben, müssen Sie möglicherweise sicherstellen, dass sie nicht berührt wird (von Man-in-Middle, schlechtem Netzwerk usw.). Hier kommt also die Lösung.

Ich stelle die Prüfsumme/den Hash der Datei für Sie bereit (sagen wir in SHA-512). Jetzt überprüfen Sie die Prüfsumme/den Hash der heruntergeladenen Datei, und beide Hash-Dateien müssen jetzt identisch sein (wenn Sie jedoch davon ausgehen, dass die bereitgestellten Hash-Daten Nein sind auch berührt).

Sie könnten überrascht sein, dass MD5 jetzt ein veralteter Hash-Algorithmus ist. Da Sicherheitslegenden es auf großartige Weise hacken könnten, könnten Sie zwei völlig unterschiedliche Daten mit genau derselben Größe und genau demselben MD5-Hashwert haben.

Jetzt habe ich keine Angst mehr, dass vielleicht nächstes Jahr, 10 oder 100 im nächsten Jahr eine andere Legende das Gleiche mit der SHAs-Familie tun könnte.

HMACs sind die sichere Art von Hashes. Da müssen Sie weitere geheime Daten hinzufügen, um den Hash zu erstellen. Zurück im obigen Beispiel zum Herunterladen von Dateien müssen Sie jetzt einen HMAC-SHA-512 erstellen, um die Datenintegrität mit einem geheimen Wert zu überprüfen, den nur Sie und ich kennen (der geheime Wert, der auch als Salt bekannt ist).

Mehr Sicherheit? kann niemandem auf der Welt vertrauen? HMAC funktioniert nicht
Der letzte Ansatz ist also Ihr eigener angepasster Hash-Algorithmus. Ja, mach es selbst. Aber natürlich muss man es sehr gut machen.

0
user145752