Deutsch

Entwicklertools · SHA-Hash-Rechner

Von SHA-0 zu SHA-3: Wie sich der Secure Hash Standard des NIST entwickelte

· Hintergrund

sha-256 Kryptographie Browser-APIs

Zeitleiste von SHA-0 bis SHA-1, der Familie SHA-2 und SHA-3, die zwei Jahrzehnte der Evolution zeigt
Original-ToolAcre-Vektorillustration

SHA-1, SHA-2 und SHA-3 sind drei Generationen mit unterschiedlicher Herkunft. Dieser Beitrag verfolgt den Secure Hash Standard vom zurückgezogenen SHA-0 bis zur Keccak-Konkurrenz und erklärt, warum SHA-2 immer noch dominiert.

Was bedeuten die Zahlen? – warum SHA-256 SHA-2 ist, aber SHA-3 etwas ganz anderes ist

Entwickler sehen SHA-1, SHA-256 und SHA-3 und gehen davon aus, dass es sich um eine lineare Entwicklung handelt. Das sind sie nicht. Die Zahlen bedeuten in verschiedenen Kontexten unterschiedliche Bedeutungen, und das Verständnis der Familiengeschichte erklärt, warum SHA-256 die sinnvolle Wahl für neue Anwendungen ist, warum SHA-1 trotz seiner weiten Verbreitung nur ein Legacy-Produkt ist und warum SHA-3 eher ein separates Design als eine Weiterentwicklung ist.

Als NIST zum ersten Mal eine sichere Hash-Funktion veröffentlichte, nannten sie sie SHA und später SHA-0, eine Version, die so kurzlebig war, dass die meisten Entwickler noch nie davon gehört haben. Der SHA-0 wurde innerhalb weniger Jahre aufgrund eines nicht näher bezeichneten Fehlers, der nie öffentlich bekannt gegeben wurde, zurückgezogen. Dieser Rückzug erfolgte im Stillen und die darauf folgenden Algorithmen führten zu Namensverwirrungen. Nachdem SHA-0 zurückgezogen wurde, veröffentlichte NIST SHA-1, das zwanzig Jahre lang zum Standard wurde.

Das Tool deckt SHA-1 und SHA-2 ab; Der detaillierte SHA-0-Verlauf liegt außerhalb der Repository-Beweise

SHA-1 ist eine 160-Bit-Hash-Funktion, die eine hexadezimale Ausgabe mit 40 Zeichen erzeugt. Es basiert auf der Merkle-Damgård-Konstruktion, bei der eine Komprimierungsfunktion Eingaben Block für Block verarbeitet und den Zustand vorwärts verkettet. Das Design war bei Veröffentlichung solide und es gab viele Jahre lang keine praktischen Angriffe. Das Jahr 2005 brachte jedoch einen kryptoanalytischen Durchbruch. Ein Team unter der Leitung von Xiaoyun Wang veröffentlichte einen Kollisionsangriff auf SHA-1 und zeigte, dass das Finden zweier verschiedener Nachrichten mit demselben Hash mithilfe von Techniken möglich war, die weitaus effizienter waren als der Brute-Force-Ansatz.

Jahre später, in 2017, demonstrierte ein Team namens SHAttered die erste praktische Kollision, indem es mithilfe eines GPU-Clusters zwei verschiedene PDF-Dateien mit demselben SHA-1-Hash fand. In 2020 zeigte ein Folgepapier, dass Kollisionen mit ausgewählten Präfixen – die gefährlichere Variante – erschwinglich waren. SHA-1 war nicht mehr einfach nur schwach; es war kaputt. Die Reaktion auf die SHA-1-Pause war die Einführung von SHA-2, einer Familie von vier Funktionen: SHA-224, SHA-256, SHA-384 und SHA-512.

SHA-2 – die Familie der frühen 2000er Jahre (224, 256, 384, 512 und später die verkürzte 512/224 und 512/256) basiert auf der gleichen Konstruktion

Diese vier arbeiten mit unterschiedlichen Zustandsgrößen und unterschiedlichen Blockgrößen, verwenden jedoch denselben grundlegenden Aufbau wie SHA-1. Die SHA-2-Familie wurde in 2001 veröffentlicht, Jahre vor den großen Brüchen bei SHA-1, fand jedoch keine breite Akzeptanz, bis die Zusammenbrüche von SHA-1 konkret wurden. SHA-256 erzeugt einen 256-Bit-Hash und ist jetzt die Standardwahl für neue Anwendungen. SHA-512 erzeugt einen 512-Bit-Hash und ist auf 64-Bit-Prozessoren häufig schneller, da es mit 64-Bit-Wörtern anstelle von 32-Bit-Wörtern arbeitet.

Die Namenskonvention für SHA-2 ist die Ursache der Verwirrung. Die Funktionen heißen SHA-256, SHA-384 und SHA-512 und sind alle Teil der SHA-2-Familie. Wenn jemand SHA-2 sagt, meint er die Designphilosophie und die Merkle-Damgård-Konstruktion, nicht einen einzelnen Algorithmus. Die Zahlen in den Namen geben die Ausgabebreiten in Bits an, kein Versionsschema. SHA-256 ist kein Update von SHA-1; Es handelt sich um ein zeitgemäßes Design, das den gleichen Rahmen verwendet, jedoch bessere Sicherheitseigenschaften aufweist.

Die Repository-Dokumente demonstrierten SHA-1 Kollisionen, ohne die theoretische Geschichte ohne Quellenangabe zu rekonstruieren

Innerhalb der Merkle-Damgård-Konstruktion, die SHA-1 und SHA-2 verwenden, verarbeitet eine Komprimierungsfunktion die Eingabe Block für Block. Der Zustand wird von einem Block zum nächsten übertragen und der Endzustand wird als Digest ausgegeben. Die Komprimierungsfunktion SHA-256 verwendet 32-Bit-Operationen und 256-Bit-Zustände, sodass sie 512-Bit-Blöcke verarbeitet. Die Komprimierungsfunktion SHA-512 verwendet 64-Bit-Operationen und 512-Bit-Zustände, sodass sie 1024-Bit-Blöcke verarbeitet. Diese Auswahl wirkt sich auf die Leistung und die Bandbreite aus – SHA-512 ist oft schneller, da die 64-Bit-Arithmetik auf moderner Hardware nativ ist.

Die Entscheidung zwischen SHA-256 und SHA-512 für ein neues System basiert normalerweise eher auf Leistungstests und Platzbeschränkungen als auf Sicherheit, da beide zu Beginn der 2020er Jahre noch sicher sind. Der ToolAcre SHA-Hash-Rechner liefert SHA-256, SHA-384 und SHA-512, und wenn Leser die Digests nebeneinander vergleichen, sehen sie den vierstelligen Unterschied zwischen SHA-256 (64 Hexadezimalzeichen) und SHA-512 (128 Hexadezimalzeichen).

SHA-3 liegt außerhalb der unterstützten API; Die Wettbewerbshistorie wird nicht anhand von Archivbeweisen bestätigt

Die Beweggründe für den Ersatz von SHA-1 waren Anfang der 2000er Jahre klar, daher begann NIST mit dem Auswahlprozess für SHA-3. Anstatt isoliert einen Ersatz zu entwickeln, öffnete NIST den Wettbewerb für die kryptografische Forschungsgemeinschaft. Das Ziel bestand darin, eine Hash-Funktion auszuwählen, die sich grundlegend von der Merkle-Damgård-Konstruktion unterscheidet, um Vertrauen in eine Vielfalt von Designs zu gewinnen. Mehrere Teams reichten Vorschläge ein, und über mehrere Jahre hinweg wählte der Wettbewerb Keccak zum Gewinner aus. Keccak war eine Schwammkonstruktion, eine andere Art, eine Hash-Funktion zu erstellen, die zuvor in keinem Standard verwendet wurde.

SHA-3 ist die NIST-Standardisierung von Keccak, abgeschlossen in 2015. Im Gegensatz zu SHA-2, einer Familie von Algorithmen, wird SHA-3 normalerweise als ein einzelner Algorithmus bezeichnet, obwohl auch er mehrere Breiten aufweist. SHA-3 ist noch nicht weit verbreitet, was auffällt, wenn man bedenkt, dass es seit fast einem Jahrzehnt Standard ist. Der Grund dafür ist, dass SHA-2 nicht defekt ist. Es gibt keinen dringenden Sicherheitsgrund für ein Upgrade von SHA-2 auf SHA-3. Die Web Crypto API des Browsers implementiert SHA-1 und SHA-2, jedoch nicht SHA-3, weshalb der ToolAcre SHA-Hash-Rechner SHA-3 nicht anbietet.

SHA-2 bleibt die Standardeinstellung des Tools; Dieser Artikel vermeidet eine nicht unterstützte universelle Sicherheitsaussage

Warum SHA-2 immer noch überall ist, ist die zentrale Frage bei der Wahl des Hash-Algorithmus. SHA-2 hat keine bekannten praktischen Kollisionen. Hardware-Implementierungen sind ausgereift. Jede Programmiersprache und Plattform unterstützt es. Das Ändern des Hash-Algorithmus eines Systems ist störend: Jeder gespeicherte Hash muss migriert oder zur Überprüfung aufbewahrt werden, jeder Integrationspunkt muss aktualisiert werden und es müssen Tests durchgeführt werden, um sicherzustellen, dass der neue Algorithmus mit jedem Downstream-System funktioniert.

Für Systeme, bei denen SHA-2 noch sicher ist, ist diese Störung nicht gerechtfertigt. Für neue Systeme und neue Protokolle ist SHA-2 die sinnvolle Standardeinstellung. Der ToolAcre SHA-Hash-Rechner zeigt SHA-256 und SHA-512 an prominenter Stelle an, da sie von neuen Anwendungen verwendet werden sollten. SHA-1 wird als „Legacy-only“ aufgeführt. SHA-384 wird der Vollständigkeit halber und für die Anwendungsfälle angezeigt, in denen es speziell erforderlich ist.

Was dies nicht abdeckt – die Interna von Keccak, die einen eigenen Beitrag verdienen

Die Zukunft der Hash-Standards ist derzeit unklar. SHA-3 ist sicher und ausgereift und bietet eine Alternative, falls SHA-2 jemals kaputt gehen sollte. Quantencomputing stellt eine langfristige Bedrohung für alle aktuellen Hash-Funktionen dar, aber quantenresistente Hash-Funktionsdesigns sind ein offenes Forschungsgebiet. Das NIST veranstaltet einen Post-Quantum-Kryptografie-Wettbewerb, bei dem Algorithmen ausgewählt werden, die Quantenangriffen widerstehen sollen. Hash-Funktionen haben in diesem Wettbewerb jedoch im Vergleich zu Public-Key-Systemen keine Priorität.

Für praktische Anwendungen in den 2020er Jahren ist SHA-256 die Antwort auf die Frage „Welchen Hash soll ich verwenden?“ Für Integritätsprüfung, Inhaltsadressierung und Fingerabdruck ist SHA-256 der Standard. Für Systeme, die einen breiteren Digest benötigen, ist SHA-512 auf 64-Bit-Hardware normalerweise schneller. SHA-384 kommt am häufigsten in TLS-Cipher-Suite-Spezifikationen vor. SHA-1 dient nur der Legacy-Verifizierung. Der ToolAcre SHA-Hash-Rechner stellt alle vier Web-Crypto-Algorithmen bereit, sodass Entwickler ihre Ergebnisse sehen können.

Fazit: Drei Generationen, ein Familienname – der ToolAcre SHA-Hash-Rechner deckt die vom Browser bereitgestellten Algorithmen SHA-1 und SHA-2 ab

Das Verständnis der Geschichte von SHA verdeutlicht, warum die Zahlen und Namen ihre Bedeutung haben und warum die in den 1990er und 2000er Jahren getroffenen Entscheidungen auch heute noch bestimmen, was neue Anwendungen tun. SHA-0 wurde stillschweigend zurückgezogen, SHA-1 wurde durch praktische Angriffe gebrochen, SHA-2 ist immer noch sicher und SHA-3 ist ein alternatives Design, das für zukünftige Robustheit ausgewählt wurde. Neuer Code sollte SHA-256 für allgemeines Hashing verwenden. Ältere Systeme verwenden immer noch SHA-1, und die Interoperabilität mit diesen Systemen erfordert die Fähigkeit, SHA-1-Hashes zu berechnen.

Der ToolAcre SHA-Hash-Rechner verkörpert diese Perspektive: Er bietet SHA-256 als Standard, SHA-512 als breitere Option, SHA-384 für spezifische Anforderungen und SHA-1 als Legacy gekennzeichnet. Dies bietet Entwicklern genaue Werkzeuge und eine genaue Beschriftung. Die Web Crypto-Implementierung des Browsers stellt diese Algorithmen bereit, und ToolAcre verwendet diese Implementierung direkt, anstatt benutzerdefinierten Code zu versenden. Die Wahl spiegelt die jahrzehntelange kryptografische Entwicklung und den aktuellen Stand der Praxis wider.