Entwicklertools · SHA-Hash-Rechner
SHA-256 vs. SHA-512: Wortgröße, Runden und warum 512 schneller sein kann
· Wie es funktioniert
sha-256 Kryptographie Leistung Browser-APIs
SHA-512 erzeugt einen längeren Digest, läuft jedoch oft schneller auf 64-Bit-Hardware. In diesem Beitrag werden die strukturellen Unterschiede zwischen den beiden erläutert und wie SHA-384 zusammenpasst, sodass Sie anhand von Fakten entscheiden können.
Längerer Hash, schnellerer Lauf? – die kontraintuitive Beobachtung, die den Vergleich auslöst
SHA-512 erzeugt einen längeren Digest, läuft aber oft schneller als SHA-256 auf 64-Bit-Hardware. Die kontraintuitive Beobachtung ergibt sich aus dem CPU-Design: Ein für 64-Bit-Arithmetik optimierter Prozessor führt 64-Bit-Operationen schneller aus als 32-Bit-Operationen für dieselben Daten. SHA-256 arbeitet mit 32-Bit-Wörtern, während SHA-512 mit 64-Bit-Wörtern arbeitet. Auf einer 64-Bit-CPU passt sich Letzteres natürlicher an die Hardware an und benötigt weniger Zeit für Wortgrößenkonvertierungen und Auffüllen.
Dies macht SHA-512 nicht grundsätzlich für jeden Anwendungsfall besser. Ein längerer Digest benötigt mehr Speicherplatz und Bandbreite. Die Wahl zwischen ihnen sollte auf der Grundlage Ihrer Anforderungen an die Ausgabegröße und der Plattform getroffen werden, nicht auf der Grundlage einer vagen Vorstellung von „neuer“ oder „stärker“.
32-Bit- im Vergleich zu 64-Bit-Wörtern – der grundlegende strukturelle Unterschied und warum er für moderne CPUs geeignet ist
SHA-256 arbeitet im gesamten Algorithmus mit 32-Bit-Wörtern. Der Nachrichtenplan erweitert 16 32-Bit-Wörter in 64 32-Bit-Wörter. Jede Runde aktualisiert acht 32-Bit-Arbeitsvariablen. Der Nachrichtenblock besteht aus 512 Bits (sechzehn 32-Bit-Wörter). Die Ausgabe besteht aus 256 Bits (acht 32-Bit-Wörtern). Die gesamte Arithmetik erfolgt für 32-Bit-Werte, mit Überlaufumbruch bei 2^32.
SHA-512 arbeitet mit 64-Bit-Wörtern. Der Nachrichtenplan erweitert 16 64-Bit-Wörter in 80 64-Bit-Wörter (nicht 64, wie in SHA-256). Jede Runde aktualisiert acht 64-Bit-Arbeitsvariablen. Der Nachrichtenblock besteht aus 1024 Bits (sechzehn 64-Bit-Wörter). Die Ausgabe besteht aus 512 Bits (acht 64-Bit-Wörtern). Die gesamte Arithmetik erfolgt für 64-Bit-Werte, mit Überlaufumbruch bei 2^64.
64 Runden versus 80, 512-Bit versus 1024-Bit-Blöcke – was sich pro Block und pro Byte ändert
SHA-256 führt 64 Runden pro Block aus; SHA-512 führt 80 Runden pro Block aus. Das bedeutet, dass SHA-512 mehr Mischungen pro Block durchführt. Auf den ersten Blick klingt das langsamer. Aber die größere Wortgröße und Blockgröße bedeuten, dass SHA-512 mehr Bits pro Runde verarbeitet. Für eine 1-Megabyte-Datei verarbeitet SHA-256 1048576 / 512 = 2048 Blöcke mit jeweils 64 Runden, also insgesamt 131072 Runden. SHA-512 verarbeitet 1048576 / 1024 = 1024 Blöcke mit jeweils 80 Runden, also insgesamt 81920 Runden. SHA-512 macht insgesamt weniger Runden, obwohl es mehr Runden pro Block macht.
Der Unterschied in der Wall-Clock-Zeit hängt von der CPU-Optimierung für die Wortgröße ab. Eine CPU mit einer 64-Bit-ALU (arithmetisch-logische Einheit) führt 64-Bit-Operationen effizient aus. Wenn dieselbe CPU 32-Bit-SHA-256-Operationen in mehrere Mikrooperationen aufteilen oder auf einer kleineren Ausführungseinheit ausführen muss, sind die Kosten pro Operation höher. Moderne Prozessoren sind für 64-Bit-Operationen optimiert, wodurch SHA-512 trotz der zusätzlichen Runden pro Block oft schneller wird.
Blockgröße und Rundenanzahl erklären die Arbeit pro Byte; Für den tatsächlichen Durchsatz ist ein Plattform-Benchmark erforderlich
Die Blockarithmetik erklärt, warum eine längere Ausgabe nicht mehr Arbeit pro Byte bedeuten muss. SHA-256 führt vierundsechzig Runden für jeden 512-Bit-Block durch, während SHA-512 achtzig Runden für jeden 1,024-Bit-Block durchführt. Das zweite Design führt mehr Runden für jeden Block durch, verbraucht aber doppelt so viel Eingabe, wenn es einen Block verarbeitet.
Dieser Strukturvergleich sagt keinen bestimmten Browser-Benchmark voraus. Web Crypto verwendet möglicherweise native Anweisungen, Betriebssystembibliotheken oder anderen optimierten Code und die Eingabelänge ändert den für die Einrichtung aufgewendeten Anteil. Messen Sie die tatsächliche Zielumgebung, wenn der Durchsatz wichtig ist; Das Repository unterstützt nur die qualitative Behauptung, dass breitere Wörter für 64-Bit-Hardware geeignet sind.
Ausgabelängen wirken sich auf Darstellungs- und Sicherheitseigenschaften aus, ohne dass eine unabhängige Schätzung der Angriffsarbeit vorliegt
SHA-384 ist kein separater Algorithmus; Es ist SHA-512 mit zwei Änderungen: Die anfänglichen Hash-Konstanten sind unterschiedlich und die Ausgabe wird auf 384 Bits (48 Bytes) anstelle der vollständigen 512 Bits gekürzt. Diese Kürzung hat einen Vorteil gegenüber Längenerweiterungsangriffen: Ein Angreifer kann den Digest nicht erweitern, indem er Daten an die ursprüngliche Nachricht anhängt, da der vollständige 512-Bit-Status unbekannt ist (nur 384 Bits davon wurden offengelegt).
SHA-256 ist anfällig für Längenerweiterungsangriffe: Wenn Sie den Digest einer Nachricht und die Nachrichtenlänge kennen, können Sie Daten an die Nachricht anhängen und den Digest der erweiterten Nachricht berechnen, ohne den Inhalt der Originalnachricht zu kennen. Dies ist in bestimmten Sicherheitskontexten wichtig, beispielsweise bei HMAC-Implementierungen, die eine schwache Konstruktion verwenden. Obwohl SHA-384 auf SHA-512 basiert, ist es nicht anfällig, da der vollständige Status nicht offengelegt wird. Dies macht SHA-384 in Kontexten nützlich, in denen SHA-256 als riskant gilt.
Funktioniertes Beispiel – Hashing einer Eingabe mit allen drei und Vergleich der Digest-Längen nebeneinander
Die Ausgabegröße ist die einfachste Unterscheidung. SHA-256 erzeugt 32 Bytes (64 Hexadezimalzeichen); SHA-384 erzeugt 48 Bytes (96 Hexadezimalzeichen); SHA-512 erzeugt 64 Bytes (128 Hexadezimalzeichen). Für die Speicherung in URLs oder JSON benötigen die längeren Digests mehr Platz. Im Hinblick auf die Kollisionsresistenz führt eine längere Ausgabe dazu, dass Kollisionen exponentiell schwerer zu finden sind. Die breiteren Ausgaben bieten einen größeren Ergebnisraum, während ihre unmittelbaren Produktfolgen einfacher zu messen sind: mehr Bytes im Speicher, URLs und Protokollfelder. Dieser Artikel enthält keine Schätzung der Angriffsarbeit, da keine aus Repository-Beweisen abgeleitet wird.
Einige Systeme und Standards geben SHA-256 explizit an; andere verwenden SHA-512 oder erlauben eine Auswahl. SSH-Fingerabdrücke sind standardmäßig SHA-256; Container-Image-Digests können SHA-256 oder SHA-512 sein. Paketmanager wie npm verwenden SHA-512 für die Integrität der Unterressourcen. Die Wahl wird oft für Sie getroffen, aber wenn Sie die Unterschiede verstehen, können Sie mit Bedacht entscheiden, wenn Sie ein Mitspracherecht haben.
Was dies nicht abdeckt – Durchsatzzahlen, die von CPU, Compiler und Eingabegröße abhängen; Der Beitrag bleibt qualitativ
Der ToolAcre SHA-Hash-Rechner bietet SHA-256, SHA-384 und SHA-512. Hashen Sie die gleiche Eingabe mit allen drei und beobachten Sie die Ausgabelängen. Die Digests werden alle völlig unterschiedlich sein, was erwartet wird: Die Algorithmen verwenden unterschiedliche Rundenkonstanten, unterschiedliche Nachrichtenpläne und unterschiedliche Mischvorgänge. Die neben dem Digest angezeigte Bytezahl spiegelt nur die Eingabegröße wider, nicht die Ausgabegröße. Alle drei Algorithmen verarbeiten dieselben Eingabebytes in ihren jeweiligen Rundensequenzen identisch.
Tests auf Ihrer eigenen Hardware zeigen den Leistungsunterschied. Hashen Sie eine große Datei (einen Testfall mit mehreren Megabyte) mit jedem Algorithmus und messen Sie die Ergebnisse zeitlich. Auf modernen 64-Bit-Systemen wird SHA-512 oft in kürzerer Zeit abgeschlossen, auch wenn die Byteanzahl etwas anderes vermuten lässt. Auf 32-Bit-Systemen oder eingebetteten Prozessoren ist SHA-256 möglicherweise schneller, da die ALU der CPU für 32-Bit-Vorgänge optimiert ist.
Takeaway: Wählen Sie nach Ausgabegröße und Plattform – der ToolAcre SHA-Hash-Rechner bietet SHA-256, SHA-384 und SHA-512, sodass Sie alle drei auf derselben Eingabe sehen können
Die kryptografische Stärke ist unabhängig von der Leistung. Das Repository markiert SHA-256 nicht als defekt und wählt es als allgemeine Standardeinstellung aus. Dieser Produktbeweis rechtfertigt nicht, irgendein Primitiv als allgemein sicher zu bezeichnen; Die Eignung hängt immer noch von der Konstruktion und dem Bedrohungsmodell ab. Der Wechsel von SHA-256 zu SHA-512 ist kein Sicherheitsupgrade; Es handelt sich um einen Kompromiss zwischen Speicher und Leistung. Wenn Ihr System SHA-256 angibt und Sie genau diesen Algorithmus benötigen, verwenden Sie ihn. Wenn Sie die Wahl haben und eine längere Zusammenfassung wünschen oder wissen, dass Ihre Plattform 64-Bit ist, ist SHA-512 eine gültige Wahl.
Die Web-Crypto-Implementierung des Browsers berechnet alle drei über crypto.subtle.digest. Ihr Gerät, Ihre Browserversion und die Hintergrundsystemlast wirken sich alle auf die beobachtete Leistung aus. Aber der entscheidende Punkt bleibt: SHA-256 und SHA-512 konkurrieren nicht um den Titel „die beste Hash-Funktion“. Dabei handelt es sich um Tools, die für unterschiedliche Ausgabeanforderungen konzipiert sind. Die Wahl zwischen ihnen erfolgt auf der Grundlage der Anforderungen Ihres Systems und nicht auf der Grundlage allgemeiner Leistungsansprüche.