SHA-256

Abkürzung: SHA-2, SHA-256

SHA-256 ist das heute meistverwendete Mitglied der SHA-2-Familie. Es steckt in Zertifikatssignaturen, im TLS-Handshake, in Paketmanagern und in jeder zweiten Prüfsummenangabe eines Downloads.

Was SHA-256 berechnet

Die Funktion nimmt eine Eingabe beliebiger Länge und liefert immer genau 256 Bit — 32 Byte, als Hexadezimalzahl 64 Zeichen. Dieselbe Eingabe ergibt immer dasselbe Ergebnis, eine andere Eingabe praktisch nie dasselbe.

Entscheidend ist, wie stark sich das Ergebnis bei kleinsten Änderungen verschiebt:

"netzikon"  → 0e1c5b7a…
"netzikoo"  → 9f4d2e81…

Ein geändertes Bit in der Eingabe verändert statistisch die Hälfte aller Ausgabebits. Dieser Lawineneffekt ist der Grund, warum man aus einem Hashwert nicht auf die Eingabe zurückrechnen kann — es gibt keine Nähe, an der sich eine Suche orientieren könnte.

Welche Eigenschaften gefordert sind

Eine kryptografische Hashfunktion muss drei Dinge leisten:

Einwegeigenschaft. Zu einem gegebenen Hashwert lässt sich keine passende Eingabe finden.

Zweite-Urbild-Resistenz. Zu einer gegebenen Eingabe lässt sich keine zweite finden, die denselben Hashwert ergibt.

Kollisionsresistenz. Es lassen sich überhaupt keine zwei Eingaben mit gleichem Hashwert finden — auch nicht frei gewählte.

Die dritte ist die schwächste Schranke, und zwar aus einem mathematischen Grund: Nach dem Geburtstagsparadox genügen rund 2^128 Versuche, um bei 256 Bit Ausgabelänge eine Kollision zu finden, nicht 2^256. Die wirksame Sicherheit gegen Kollisionen ist also halb so groß wie die Ausgabelänge — bei SHA-256 entspricht das 128 Bit, was nach heutigem Stand weit außer Reichweite liegt.

Die SHA-2-Familie

SHA-2 ist nicht eine Funktion, sondern eine Gruppe mit gemeinsamer Konstruktion und verschiedenen Längen:

VarianteAusgabeInterne Wortbreite
SHA-224224 Bit32 Bit
SHA-256256 Bit32 Bit
SHA-384384 Bit64 Bit
SHA-512512 Bit64 Bit
SHA-512/224224 Bit64 Bit
SHA-512/256256 Bit64 Bit

Die 224- und 384-Bit-Varianten sind gekürzte Ergebnisse der jeweils größeren Funktion mit anderen Startwerten. SHA-512/256 liefert ebenfalls 256 Bit, rechnet aber intern mit 64-Bit-Wörtern.

Daraus folgt etwas, das zunächst widersinnig klingt: Auf einem 64-Bit-Prozessor ist SHA-512 häufig schneller als SHA-256, obwohl es den doppelt so langen Wert liefert. Es verarbeitet größere Blöcke in Wörtern, die der Prozessor in einem Schritt behandelt. Wer nur 256 Bit braucht und Geschwindigkeit sucht, nimmt daher SHA-512/256.

SHA-1 und warum es ersetzt wurde

SHA-1 liefert 160 Bit und war bis in die 2010er Jahre der Standard für Zertifikatssignaturen. Theoretische Schwächen waren seit 2005 bekannt, 2017 wurde die erste praktische Kollision aus zwei unterschiedlichen PDF-Dateien mit identischem Hashwert vorgeführt. 2020 folgten Kollisionen mit frei wählbarem Präfix, die den Angriff auf reale Dateiformate übertragbar machen.

Für Signaturen gilt SHA-1 damit als gebrochen. Browser lehnen SHA-1-Zertifikate ab, und Zertifizierungsstellen stellen keine mehr aus.

SHA-3

SHA-3 wurde 2015 standardisiert und beruht auf dem Keccak-Algorithmus — einer völlig anderen Konstruktion als SHA-2. Während SHA-1 und SHA-2 nach dem Merkle-Damgård-Prinzip arbeiten, nutzt SHA-3 eine Schwammkonstruktion.

Wichtig ist der Anlass: SHA-3 entstand nicht, weil SHA-2 gebrochen wäre, sondern als Reserve mit anderer mathematischer Grundlage. Sollte jemand die Merkle-Damgård-Familie durchbrechen, wäre SHA-3 davon nicht betroffen. SHA-2 bleibt bis auf Weiteres der empfohlene Standard.

Wo SHA-256 eingesetzt wird

In Zertifikaten. Die Signatur einer Zertifizierungsstelle wird über den Hashwert des Zertifikatsinhalts gebildet, üblicherweise mit SHA-256.

In TLS. Die Suite TLS_AES_128_GCM_SHA256 nennt SHA-256 als Hashfunktion für die Schlüsselableitung und die Handshake-Prüfsumme.

In HMAC. Die schlüsselabhängige Prüfsumme HMAC-SHA256 setzt SHA-256 zweifach ein.

Bei Dateiprüfsummen. Veröffentlichte SHA256SUMS-Dateien belegen, dass ein Download unverändert ist — vorausgesetzt, die Prüfsummendatei selbst kommt aus vertrauenswürdiger Quelle.

Bei Passwörtern — aber nicht allein. Ein nackter SHA-256-Wert eines Passworts ist leicht angreifbar, weil die Funktion absichtlich schnell ist: Moderne Hardware probiert Milliarden Kandidaten je Sekunde. Für Passwörter sind absichtlich langsame Verfahren wie Argon2, scrypt, bcrypt oder PBKDF2 vorgesehen. Dass PBKDF2 intern SHA-256 nutzt, macht den Unterschied nicht zunichte — es ruft die Funktion viele tausend Male auf.

Was eine Hashfunktion nicht ist

Sie ist keine Verschlüsselung. Es gibt keinen Schlüssel und kein Zurück. Wer von „mit SHA-256 verschlüsselt" liest, hat einen Hinweis darauf, dass der Verfasser die Begriffe nicht trennt.

Sie belegt keine Herkunft. Ein Hashwert sagt, dass Daten unverändert sind — nicht, von wem sie stammen. Wer die Daten verändern kann, kann den Hashwert neu berechnen. Dafür braucht es einen Schlüssel, also HMAC oder eine digitale Signatur.

Und sie ersetzt keine Zufallsquelle. Der Hashwert einer erratbaren Eingabe ist selbst erratbar.

Weblinks

Erstellt: