it-swarm.com.de

Welchen Hashing-Algorithmus sollte ich für eine sichere Dateiprüfsumme verwenden?

Für meine Arbeit muss ich meinem Kunden eine bestimmte Datei zur Verfügung stellen, die das Ergebnis der Arbeit ist, die ich für ihn geleistet habe.

Um die Integrität der von mir geleisteten Arbeit zu schützen und sicherzustellen, dass sie nie geändert wurde, beabsichtige ich, meiner Dokumentation eine Prüfsumme hinzuzufügen, die mit der Datei geliefert wird.

Da MD5 und SHA-1 schon lange nicht mehr sicher sind, habe ich mich gefragt, ob wir sie noch für diesen Zweck verwenden oder ob es bessere Algorithmen gibt, die den gleichen Job machen könnten, aber sicherer sind.

Ich suche die beste zuverlässige Lösung. Ich bin mir bewusst, dass ein 100% iger Beweis niemals möglich sein wird, aber ich habe mich gefragt, ob MD5 für diesen Zweck noch als "gut" eingestuft wurde oder ob es wirklich neue und sicherere Tools gibt.

6
gouaille

Wahl des Hash-Algorithmus

Verwenden Sie SHA-256 oder SHA-512: eines der beiden Hauptmitglieder der SHA-2 -Familie. SHA-2 ist der Nachfolger von SHA-1 und gilt als sicher. Es ist der Hash zu wählen, es sei denn, Sie haben einen guten Grund, etwas anderes zu wählen. In Ihrem Fall ist die Wahl zwischen SHA-256 und SHA-512 gleichgültig. Es gibt einen SHA-3, der jedoch noch nicht sehr weit verbreitet ist und nicht sicherer (oder weniger sicher) als SHA-2 ist. Es handelt sich lediglich um ein anderes Design.

Verwenden Sie kein MD5 oder SHA-1. Sie sind in Ihrem Szenario offensichtlich nicht ungeeignet, könnten aber mit ein wenig zusätzlicher Arbeit ausgenutzt werden. Darüber hinaus besteht aufgrund der Tatsache, dass diese Algorithmen bereits teilweise fehlerhaft sind, das Risiko, dass sie im Laufe der Zeit stärker beschädigt werden.

Genauer gesagt ist es für beide dieser Hashes möglich, Kollisionen zu finden: Es ist möglich, zwei Dokumente D1 und D2 so zu finden, dass MD5 (D1) = MD5 (D2) (oder SHA-1 (D1) = SHA-1 ( D2)) und so, dass D1 und D2 jeweils mit einem kleinen Bit enden, das berechnet werden muss, und optional mit einem gemeinsam gewählten Suffix. Das Bit, das berechnet werden muss, sieht aus wie Müll, kann jedoch in einem Kommentar, in einem Bild, das von der Seite verschoben wurde usw. versteckt sein. Das Erzeugen solcher Kollisionen ist auf einem PC für MD5 trivial und für SHA machbar, aber teuer. 1 (es sei denn, Sie möchten es für zwei PDF -Dateien, in diesem Fall Forscher haben bereits das Geld für die Berechnung ausgegeben, um eine zu finden, und sie veröffentlicht ).

In Ihrem Szenario interessieren Sie sich meistens nicht für Kollisionen, da Sie D1 produzieren. Sie werden dieses Stück nicht in der Mitte herstellen. Es besteht jedoch das Risiko, dass Sie jemand dazu verleitet, dieses Bit zu injizieren, indem er beispielsweise ein Bild bereitstellt, das in das Dokument aufgenommen wird. Es wäre ziemlich schwierig, auf diese Weise eine Kollision zu erreichen, aber im Prinzip ist dies machbar.

Verwenden Sie SHA-256, da die Verwendung von MD5 ein Risiko und keinen Nutzen im Vergleich zur Verwendung von SHA-256 birgt.

Was tun mit einem Hash?

Bei einem nicht kaputten kryptografischen Hash wie SHA-256 wissen Sie, dass zwei Dateien identisch sind, wenn sie denselben Hash haben. Umgekehrt bedeutet dies, dass zwei Dateien, die unterschiedliche Hashes haben, unterschiedlich sind. Wenn Sie also eine vertrauenswürdige Kopie des Hashs aufbewahren (z. B. ausdrucken und speichern oder notariell beglaubigen), können Sie später sagen: "Ja, diese Datei, die Sie mir anzeigen, ist dieselbe Datei" oder " Nein, diese Datei, die Sie mir zeigen, ist anders. “.

Wenn Sie den Hash der Datei kennen, beweisen Sie nicht, dass Sie sie geschrieben haben. Es gibt keinen kryptografischen Weg, um die Urheberschaft zu beweisen. Das Beste, was Sie tun können, ist zu beweisen, dass Sie die Datei früher hatten als jeder andere, der sie beweisen kann. Sie können dies tun, ohne die Datei preiszugeben, indem Sie den Hash an einen Dritten weitergeben, dem jeder vertraut, um sich korrekt an das Datum zu erinnern, an dem Sie ihm den Hash gezeigt haben. Dieser Dritte kann ein öffentlicher Notar oder die Wayback-Maschine sein, wenn Sie den Hash auf eine von ihm indizierte Webseite setzen. (Wenn Sie den Hash veröffentlichen, könnte theoretisch jemand die Datei daraus herausfinden, aber es gibt keinen besseren Weg, dies zu tun, als alle plausiblen Dateien zu testen, bis sie die richtige finden. Wenn Sie darüber besorgt sind, verwenden Sie eine Signatur der Datei anstelle eines Hashs und notariell beglaubigen Sie die Signatur und den öffentlichen Schlüssel, aber behalten Sie den privaten Schlüssel für sich.)

Beispiel für etwas, für das ein Hash gut ist: Ihr Kunde möchte Unterstützung, aber Sie sind nur bereit, Ihr Originalprodukt und kein modifiziertes Produkt zu unterstützen. Sie veranlassen sie also, den Hash dessen zu berechnen, was Sie unterstützen sollen. Wenn der Hash-Wert nicht dem entspricht, den Sie angegeben haben, lehnen Sie die Bereitstellung von Support ab. Beachten Sie, dass Sie dem Kunden vertrauen müssen, um den Hash des Produkts zu berechnen, und nicht den Hash einer Kopie des Originals berechnen oder vom Lieferschein ablesen müssen.

Beispiel für etwas, für das ein Hash nicht gut ist: Jemand anderes behauptet, er sei der Autor des Dokuments. Sie sagen: "Nein, schauen Sie, ich weiß, es ist Hash, es ist 1234 ...". Das hilft nicht: Jeder kann den Hash berechnen.

Beispiel für etwas, für das ein Hash gut ist, wenn es richtig verwendet wird: Jemand anderes behauptet, dass er gerade das Dokument geschrieben hat. Sie sagen: "Nein, schauen Sie, ich habe den Hash 6 letztes Jahr notariell beglaubigt, also können Sie ihn letzte Woche nicht geschrieben haben.".

Beispiel für etwas, für das ein Hash nicht gut ist: Jemand nimmt eine geringfügige Änderung am Dokument vor. Es wird dann einen anderen Hash haben. Sie können nur sagen, dass das Dokument jetzt anders ist, aber es gibt keine Informationen darüber, wie unterschiedlich sie sind. Der Hash eines völlig anderen Dokuments ist genauso unterschiedlich wie der Hash einer Version mit einem Tippfehler oder einer Version, die anders codiert ist.

Um sicherzustellen, dass das Arbeitsprodukt unverändert bleibt, ist auch MD5 sinnvoll.

Die Fähigkeit eines Angreifers, eine Kollision zu konstruieren, ist gefährlich, wenn er beispielsweise eine ausführbare Datei generieren kann. Diese ausführbare Datei benötigt möglicherweise 500 Kb, um etwas Schlechtes zu tun, und weitere 50.000 Kb, um nicht verwendete Bits auszuspinnen, nur um die Kollision zu erhalten. Das ist in Ordnung, wenn diese Bits vorhanden sind unbenutzt, Sie sehen einfach eine ausführbare Datei mit dem richtigen Hash, und Sie werden getäuscht.

Es ist nicht möglich, eine Kollision zu konstruieren, die beide mit dem MD5-Hash übereinstimmt und glaubwürdig falsche Dokumentation darstellt. Es ist wahrscheinlicher, dass Sie eine Dokumentation mit der Aufschrift " Nehmen Sie den Stecker und stecken Sie ihn in das $ # WG% ga 940 [2aj2'rj09 [3j59g; qa1j; socke t" - irgendjemand Wer sich das ansieht, wird feststellen, dass die Dokumentation manipuliert wurde. Selbst eine phasenweise Anordnung von Shakespeare-Affen kann keine MD5-Kollision auslösen, die immer noch wie Dokumentation aussieht.

Bei näherer Betrachtung sehe ich, dass es nicht die Dokumentation ist, die Sie schützen. Sie würden den Hash der "spezifischen Datei einfügen, die das Ergebnis der Arbeit ist, die ich für sie mache". Wieder nicht wissen, dass diese Datei ausführbar ist? Quellcode? - Es ist rechnerisch unmöglich, dass sie es so modifizieren, dass sie glaubwürdig behaupten, es sei das, was Sie ihnen gegeben haben, und gleichzeitig eine Hash-Kollision konstruieren.

Siehe auch diese Antwort auf Crypto.SE die zusammenfasst:

MD5 wird derzeit als zu schwach angesehen, um als kryptografischer Hash zu arbeiten. Für alle herkömmlichen (d. H. Nicht kryptografischen) Hash-Anwendungen ist MD5 jedoch häufig vollkommen in Ordnung.

Sie sehen keine kryptografische Verwendung eines Hashs, daher ist MD5 für Sie in Ordnung. Dadurch wird verhindert, dass modifizierte oder glaubwürdig gefälschte Ersetzungen des von Ihnen bereitgestellten Arbeitsprodukts ersetzt werden.

3
gowenfawr