Ich nehme an, Sie "verwenden sha1sum
" im folgenden Kontext: Sie verteilen einige Softwarepakete, und Sie möchten, dass Benutzer bis zum letzten Mal überprüfen können, ob das heruntergeladene Paket das richtige ist bisschen. Dies setzt voraus, dass Sie eine Möglichkeit haben, den mit SHA-1 berechneten Hash-Wert "unveränderlich" zu übermitteln (z. B. als Teil einer Webseite, die über HTTPS bereitgestellt wird).
Ich nehme auch an dass es sich hier um Angriffe handelt, dh um eine böswillige Person, die das Paket beim Herunterladen irgendwie ändern kann und Änderungen vornehmen möchte, die unentdeckt bleiben.
Die Die Sicherheitseigenschaft, die die verwendete Hash-Funktion hier bieten sollte, ist Widerstand gegen Zweitvorbilder . Am wichtigsten ist, dass dies nicht mit dem Widerstand gegen Kollisionen identisch ist. Eine Kollision liegt vor, wenn der Angreifer zwei unterschiedliche Nachrichten m und m ' erstellen kann, die denselben Wert haben. Ein zweites Vorbild ist, wenn der Angreifer ein festes m erhält und aufgefordert wird, ein eindeutiges m ' zu finden, das auf denselben Wert hasht.
Zweitvorbilder sind viel schwieriger zu erhalten als Kollisionen. Für eine "perfekte" Hash-Funktion mit Ausgabegröße n Bits beträgt der Rechenaufwand zum Finden einer Kollision etwa 2 n / 2 sup> Aufrufe der Hash-Funktion; Für ein zweites Vorbild ist dies 2 n sup>. Darüber hinaus gelten strukturelle Schwächen, die einen schnelleren Kollisionsangriff ermöglichen, nicht unbedingt für einen Angriff mit einem zweiten Vorbild. Dies gilt insbesondere für die bekannten Schwächen von SHA-1: Derzeit (September 2015) sind einige theoretische Schwächen von SHA-1 bekannt, die die Berechnung einer Kollision in weniger als dem Ideal 2 ermöglichen sollten 80 sup> Aufwand (dies ist immer noch ein großer Aufwand, ungefähr 2 61 sup>, daher wurde er noch nicht tatsächlich demonstriert); Bei diesen Schwächen handelt es sich jedoch um unterschiedliche Pfade, bei denen der Angreifer sowohl m als auch m ' erstellen muss. Daher übertragen sie keine zweiten Vorbilder.
Derzeit ist kein zweiter Vorbildangriff auf SHA-1 bekannt, der sogar theoretisch oder akademisch schneller wäre als der generische Angriff, mit Kosten von 2 160, die weit über die technologische Machbarkeit hinausgehen Ein langer Schuss.
Fazit: SHA-1 ist im Kontext dessen, was Sie versuchen, sicher und wird wahrscheinlich bleiben für einige Zeit sicher (sogar MD5 wäre immer noch angemessen).
Ein weiterer Grund für die Verwendung von sha1sum
ist die Verfügbarkeit clientseitiger Tools: insbesondere des Befehlszeilen-Hashing-Tools Von Microsoft für Windows bereitgestellt ( FCIV genannt) kennt MD5 und SHA-1, aber nicht SHA-256 (zumindest in der Dokumentation) (*).
Windows 7 und höher enthält auch ein Befehlszeilentool namens "certutil", mit dem SHA-256-Hashes berechnet werden können der Unterbefehl "-hashfile". Dies ist nicht allgemein bekannt, kann aber manchmal zweckmäßig sein. Sup>
Abgesehen davon ist ein starker Grund gegen die Verwendung von SHA-1 der von image : Es ist derzeit sehr im Trend, jede Verwendung von SHA-1 zu buhen und zu verspotten. Die Menge schreit nach Entfernung, Anathema, Verhaftung und öffentlicher Hinrichtung. Mit SHA-1 sagen Sie der Welt, dass Sie definitiv kein Hipster sind. Aus geschäftlicher Sicht ist es selten gut, der Mode du jour nicht nachzugeben. Daher sollten Sie eine der SHA-2-Funktionen verwenden, z. SHA-256 oder SHA-512.
Es gibt keinen starken Grund, SHA-256 SHA-512 vorzuziehen oder umgekehrt. Einige kleine 32-Bit-Architekturen sind mit SHA-256 besser vertraut, dies ist jedoch in der Praxis selten von Bedeutung (selbst eine 32-Bit-Implementierung von SHA-512 kann bei einer Anämie immer noch mehrere Dutzend Megabyte Daten pro Sekunde hashen Laptop und sogar im 32-Bit-Modus verfügt eine nicht zu alte x86-CPU über einige Fähigkeiten bei 64-Bit-Berechnungen mit SSE2, die SHA-512 einen guten Schub verleihen. Jeder Marketingexperte würde Ihnen empfehlen, SHA-512 nur dann zu verwenden, wenn 512 größer als 256 ist. "Es muss also besser sein" auf irgendeine (magische) Weise.