Was sind SHA-512/224 und SHA-512/256?
SHA-512/224 und SHA-512/256 sind zwei kryptografische Hashfunktionen aus der SHA-2-Familie.
Ihre Namen wirken auf den ersten Blick etwas ungewöhnlich:
SHA-512/224
SHA-512/256
Der erste Teil des Namens verrät, auf welcher internen Struktur die Algorithmen basieren:
SHA-512
Die Zahl hinter dem Schrägstrich gibt dagegen die Länge des erzeugten Hashwerts an:
SHA-512/224 → 224 Bit
SHA-512/256 → 256 Bit
Damit entsteht eine zunächst überraschende Situation.
SHA-512/224 erzeugt genauso viele Ausgabebits wie SHA-224.
SHA-512/256 erzeugt genauso viele Ausgabebits wie SHA-256.
Trotzdem handelt es sich jeweils um unterschiedliche Hashfunktionen.
Ein SHA-512/256-Hash ist also nicht dasselbe wie ein SHA-256-Hash.
Die vollständige SHA-2-Familie
Mit SHA-512/224 und SHA-512/256 haben wir die beiden Varianten erreicht, die in unserer bisherigen Betrachtung der SHA-2-Familie noch gefehlt haben.
SHA-2 umfasst:
| Algorithmus | Hashlänge | Wortgröße | Blockgröße | Runden |
|---|---|---|---|---|
| SHA-224 | 224 Bit | 32 Bit | 512 Bit | 64 |
| SHA-256 | 256 Bit | 32 Bit | 512 Bit | 64 |
| SHA-384 | 384 Bit | 64 Bit | 1024 Bit | 80 |
| SHA-512 | 512 Bit | 64 Bit | 1024 Bit | 80 |
| SHA-512/224 | 224 Bit | 64 Bit | 1024 Bit | 80 |
| SHA-512/256 | 256 Bit | 64 Bit | 1024 Bit | 80 |
Damit sieht man bereits den entscheidenden Unterschied.
SHA-512/224 und SHA-512/256 gehören strukturell zur 64-Bit-Seite der SHA-2-Familie.
Sie verwenden:
- 64-Bit-Wörter,
- 1024-Bit-Nachrichtenblöcke,
- ein Message Schedule mit 80 Wörtern,
- und 80 Kompressionsrunden pro Block.
Damit sind sie intern wesentlich enger mit SHA-512 verwandt als mit SHA-224 beziehungsweise SHA-256.
Was bedeutet SHA-512/t?
FIPS 180-4 verwendet die allgemeine Bezeichnung:
SHA-512/t
Dabei steht t für die gewünschte Länge des Hashwerts.
Vereinfacht:
SHA-512/t
│
└── Länge des Hashwerts in Bit
Für die beiden standardisierten Varianten gilt:
t = 224 → SHA-512/224
t = 256 → SHA-512/256
t muss dabei kleiner als 512 sein. Außerdem ist t = 384 ausgeschlossen, weil mit SHA-384 bereits eine auf der SHA-512-Struktur basierende Hashfunktion mit 384 Bit Ausgabe existiert.
FIPS 180-4 definiert SHA-512/224 und SHA-512/256 als zugelassene Varianten.
Wie funktioniert SHA-512/224?
SHA-512/224 verwendet die grundlegende Struktur von SHA-512.
Eine Nachricht wird zunächst vorbereitet und in:
1024-Bit-Blöcke
zerlegt.
Jeder Block wird mit 64-Bit-Wörtern verarbeitet. Aus den ersten 16 Wörtern entsteht ein Message Schedule mit insgesamt:
80 Wörtern
Anschließend folgen:
80 Kompressionsrunden
pro Nachrichtenblock.
Intern besitzt der Algorithmus wie SHA-512 einen Zustand aus acht 64-Bit-Wörtern:
8 × 64 Bit = 512 Bit
Am Ende werden davon jedoch nur:
224 Bit
als Hashwert ausgegeben.
Der fertige SHA-512/224-Hash besteht damit aus:
28 Byte
beziehungsweise:
56 hexadezimalen Zeichen
Wie funktioniert SHA-512/256?
SHA-512/256 verwendet dieselbe grundlegende 64-Bit-Struktur.
Auch hier arbeitet der Algorithmus mit:
64-Bit-Wörtern
1024-Bit-Blöcken
80 Wörtern im Message Schedule
80 Kompressionsrunden
Der Unterschied liegt in der gewünschten Ausgabelänge.
SHA-512/256 liefert:
256 Bit
Das entspricht:
32 Byte
beziehungsweise:
64 hexadezimalen Zeichen
Und genau hier wird es besonders interessant.
Ist SHA-512/256 dasselbe wie SHA-256?
Nein.
Beide Algorithmen erzeugen zwar einen Hashwert mit exakt:
256 Bit
Sie arbeiten intern aber mit unterschiedlichen Strukturen.
| Eigenschaft | SHA-256 | SHA-512/256 |
|---|---|---|
| Hashlänge | 256 Bit | 256 Bit |
| Wortgröße | 32 Bit | 64 Bit |
| Blockgröße | 512 Bit | 1024 Bit |
| Message Schedule | 64 Wörter | 80 Wörter |
| Runden | 64 | 80 |
| interner Zustand | 256 Bit | 512 Bit |
Die identische Ausgabelänge sagt also noch nichts darüber aus, wie der Hashwert berechnet wurde.
Vereinfacht:
dieselbe Nachricht
│
┌────────────┴────────────┐
│ │
SHA-256 SHA-512/256
│ │
32-Bit-Wörter 64-Bit-Wörter
512-Bit-Blöcke 1024-Bit-Blöcke
64 Runden 80 Runden
│ │
▼ ▼
256 Bit 256 Bit
Beide Ergebnisse besitzen dieselbe Länge.
Die Hashwerte sind deshalb aber nicht identisch.
Wenn du den Aufbau von SHA-256 im Detail nachvollziehen möchtest, findest du ihn in Wie funktioniert SHA-256?. Einen direkten Vergleich der 32-Bit- und der 64-Bit-Struktur von SHA-2 findest du außerdem in SHA-256 vs. SHA-512 – was ist der Unterschied?.
Und SHA-512/224 ist nicht SHA-224
Dasselbe gilt für SHA-512/224.
Sowohl SHA-224 als auch SHA-512/224 erzeugen:
224 Bit
Aber auch hier unterscheiden sich die internen Strukturen deutlich:
| Eigenschaft | SHA-224 | SHA-512/224 |
|---|---|---|
| Hashlänge | 224 Bit | 224 Bit |
| Wortgröße | 32 Bit | 64 Bit |
| Blockgröße | 512 Bit | 1024 Bit |
| Message Schedule | 64 Wörter | 80 Wörter |
| Runden | 64 | 80 |
Damit sehen wir erneut eine wichtige Eigenschaft kryptografischer Hashfunktionen:
Die Länge des Hashwerts allein identifiziert nicht den Algorithmus.
Ein 256-Bit-Hash könnte beispielsweise von SHA-256, SHA-512/256 oder auch SHA3-256 stammen.
Warum nimmt man nicht einfach SHA-512 und schneidet den Hash ab?
Jetzt könnte man auf eine andere Idee kommen.
Wenn SHA-512/256 auf SHA-512 basiert, könnte man doch einfach SHA-512 berechnen und anschließend die letzten 256 Bit entfernen:
SHA-512(message)
│
▼
512 Bit
│
▼
erste 256 Bit
Aber auch das ist nicht SHA-512/256.
Das gleiche Prinzip gilt für SHA-512/224.
SHA-512/224 und SHA-512/256 verwenden eigene Initial Hash Values.
Die Berechnung beginnt deshalb bereits mit einem anderen internen Zustand als ein normaler SHA-512-Hash.
Damit gilt im Allgemeinen:
SHA-512/256(message)
≠
erste 256 Bit von SHA-512(message)
und:
SHA-512/224(message)
≠
erste 224 Bit von SHA-512(message)
Das Prinzip kennen wir bereits von SHA-224 und SHA-384.
Bei SHA-512/t geht der Standard aber noch einen Schritt weiter.
Woher kommen die Initial Hash Values?
Bei SHA-512/224 und SHA-512/256 definiert FIPS 180-4 nicht nur konkrete Initialwerte.
Der Standard beschreibt auch ein Verfahren, mit dem die Initial Hash Values für SHA-512/t erzeugt werden.
Dieses Verfahren heißt:
SHA-512/t IV Generation Function
Das ist interessant, weil die Initialwerte dadurch systematisch von der gewünschten Ausgabelänge t abhängen.
Die SHA-512/t IV Generation Function
Der Ausgangspunkt sind zunächst die normalen Initial Hash Values von SHA-512.
Jedes der acht 64-Bit-Wörter wird mit der hexadezimalen Konstante:
a5a5a5a5a5a5a5a5
per XOR verknüpft.
Vereinfacht:
SHA-512 Initial Values
│
▼
XOR mit a5a5a5a5a5a5a5a5
│
▼
veränderte Initial Values
Mit diesen veränderten Initialwerten wird anschließend eine SHA-512-Berechnung durchgeführt.
Als Nachricht dient dabei der ASCII-Text:
SHA-512/t
wobei t durch die konkrete Ausgabelänge ersetzt wird.
Für SHA-512/256 lautet die Nachricht beispielsweise:
SHA-512/256
Für SHA-512/224 entsprechend:
SHA-512/224
Das Ergebnis dieser Berechnung bildet die Initial Hash Values der jeweiligen SHA-512/t-Variante.
Vereinfacht sieht der Ablauf so aus:
normale SHA-512-IVs
│
▼
XOR mit A5A5A5A5A5A5A5A5
│
▼
temporäre IVs
│
│
├── Hash "SHA-512/224"
│ │
│ ▼
│ IVs für SHA-512/224
│
└── Hash "SHA-512/256"
│
▼
IVs für SHA-512/256
Dadurch erhält jede Variante eigene Initialwerte.
Warum dieser Aufwand?
Die unterschiedlichen Initialwerte sorgen dafür, dass SHA-512/224 und SHA-512/256 eigenständige Funktionen sind.
Sie verwenden zwar dieselbe grundlegende Kompressionsstruktur wie SHA-512, starten diese Berechnung aber mit einem anderen Zustand.
Das verhindert insbesondere, dass SHA-512/t einfach nur als andere Darstellung eines normalen SHA-512-Hashes verstanden werden kann.
Das Muster begegnet uns innerhalb von SHA-2 inzwischen mehrfach:
SHA-224 ≠ gekürzter SHA-256
SHA-384 ≠ gekürzter SHA-512
SHA-512/224 ≠ gekürzter SHA-512
SHA-512/256 ≠ gekürzter SHA-512
Der entscheidende Unterschied entsteht jeweils bereits vor der eigentlichen Verarbeitung der Nachricht.
Probier die Unterschiede selbst aus
An dieser Stelle können wir mehrere Varianten mit exakt derselben Eingabe vergleichen.
Gib einen beliebigen Text ein. Das Tool berechnet:
- SHA-224,
- SHA-512/224,
- SHA-256,
- SHA-512/256,
- und SHA-512.
Dadurch entstehen zwei besonders interessante Vergleiche:
SHA-224
vs.
SHA-512/224
Beide liefern 224 Bit.
Und:
SHA-256
vs.
SHA-512/256
Beide liefern 256 Bit.
Zusätzlich können wir SHA-512/224 und SHA-512/256 mit einem entsprechend gekürzten normalen SHA-512-Hash vergleichen.
SHA-224/256 und SHA-512/224/256 vergleichen
SHA-256 und SHA-512/256 liefern beide 256 Bit. Sind sie deshalb derselbe Algorithmus? Probiere es mit deinem eigenen Text aus.
Diese Implementierung dient der Veranschaulichung. Für produktive Kryptografie sollten geprüfte kryptografische Bibliotheken verwendet werden.
Damit lässt sich direkt sehen:
Gleiche Hashlänge bedeutet nicht gleicher Algorithmus.
Die angezeigte Anzahl unterschiedlicher Bits ist dabei nur ein visueller Vergleich für deine konkrete Eingabe – kein Sicherheits-Score und kein Maß für Entropie oder Collision Resistance.
SHA-512/256 und SHA-256 im direkten Vergleich
Gerade SHA-512/256 und SHA-256 sind ein gutes Beispiel dafür.
Beide erzeugen:
256 Bit
und besitzen nach den NIST-Angaben dieselben generischen Sicherheitsstärken:
| Eigenschaft | SHA-256 | SHA-512/256 |
|---|---|---|
| Collision Resistance | 128 Bit | 128 Bit |
| Preimage Resistance | 256 Bit | 256 Bit |
Trotzdem handelt es sich um unterschiedliche Algorithmen.
SHA-256 arbeitet auf der 32-Bit-Struktur der SHA-2-Familie.
SHA-512/256 arbeitet dagegen auf der 64-Bit-Struktur von SHA-512 und kürzt den daraus resultierenden SHA-512/t-Zustand auf 256 Bit.
Wie sicher ist SHA-512/224?
NIST gibt für SHA-512/224 folgende Sicherheitsstärken an:
| Eigenschaft | Sicherheitsstärke |
|---|---|
| Collision Resistance | 112 Bit |
| Preimage Resistance | 224 Bit |
| Second-Preimage Resistance | 224 Bit |
Damit entsprechen Collision- und Preimage-Sicherheitsstärke den Werten, die man bei einer idealisierten Hashfunktion mit 224 Bit Ausgabe erwartet.
Für eine Collision liegt der generische Aufwand aufgrund des Birthday-Effekts ungefähr bei:
2^112
Für einen Preimage-Angriff ungefähr bei:
2^224
Wie sicher ist SHA-512/256?
Für SHA-512/256 gibt NIST an:
| Eigenschaft | Sicherheitsstärke |
|---|---|
| Collision Resistance | 128 Bit |
| Preimage Resistance | 256 Bit |
| Second-Preimage Resistance | 256 Bit |
Der generische Aufwand für eine Collision liegt damit ungefähr bei:
2^128
und für einen Preimage-Angriff bei:
2^256
Damit besitzt SHA-512/256 bezüglich dieser generischen Sicherheitsstärken dieselben Werte wie SHA-256.
Die interne Konstruktion ist trotzdem eine andere.
Was diese drei Sicherheitseigenschaften genau voneinander unterscheidet, erklären die Artikel zu Collision Resistance, Preimage Resistance und Second-Preimage Resistance ausführlicher. Was 224 oder 256 Bit Sicherheitsstärke praktisch bedeuten, beschreibt Wie sicher sind 128, 256 und 512 Bit?.
Warum gibt es SHA-512/224 und SHA-512/256?
Die beiden Algorithmen verbinden zwei Eigenschaften:
SHA-512-artige interne Struktur
+
kürzere Ausgabe
Damit können Anwendungen eine SHA-512-basierte 64-Bit-Struktur verwenden, ohne einen 512 Bit langen Hashwert speichern oder übertragen zu müssen.
Welche Variante sinnvoll ist, hängt allerdings vom jeweiligen Protokoll, Standard und Anwendungsfall ab.
Die Existenz von SHA-512/256 bedeutet beispielsweise nicht, dass man SHA-256 grundsätzlich durch SHA-512/256 ersetzen sollte.
Beide sind von NIST zugelassene SHA-2-Algorithmen.
Für Anwendungen, bei denen Interoperabilität von Hashfunktionen erforderlich ist, empfiehlt NIST, mindestens SHA-256 zu implementieren.
SHA-512/256 ist auch nicht SHA3-256
Bei den Namen kann es inzwischen leicht unübersichtlich werden.
Diese drei Algorithmen erzeugen alle einen 256-Bit-Hash:
SHA-256
SHA-512/256
SHA3-256
Intern unterscheiden sie sich jedoch deutlich.
| Algorithmus | Familie | grundlegende Struktur | Ausgabe |
|---|---|---|---|
| SHA-256 | SHA-2 | 32-Bit-SHA-2 | 256 Bit |
| SHA-512/256 | SHA-2 | 64-Bit-SHA-512/t | 256 Bit |
| SHA3-256 | SHA-3 | Keccak | 256 Bit |
Die Zahl 256 beschreibt hier lediglich die Länge des Hashwerts.
Sie sagt nicht, dass die Algorithmen intern gleich funktionieren.
Das wird besonders wichtig, wenn wir uns später mit SHA-3 beschäftigen.
Das Wichtigste in Kürze
SHA-512/224 und SHA-512/256 sind zwei Hashfunktionen aus der SHA-2-Familie.
Beide basieren auf der grundlegenden 64-Bit-Struktur von SHA-512:
- 64-Bit-Wörter,
- 1024-Bit-Blöcke,
- 80 Wörter im Message Schedule,
- 80 Kompressionsrunden.
Ihre Ausgaben sind jedoch kürzer:
SHA-512/224 → 224 Bit
SHA-512/256 → 256 Bit
SHA-512/224 ist deshalb trotzdem nicht dasselbe wie SHA-224.
Und SHA-512/256 ist nicht dasselbe wie SHA-256.
Auch ein normaler SHA-512-Hash, der nachträglich auf 224 oder 256 Bit gekürzt wird, liefert nicht einfach SHA-512/224 beziehungsweise SHA-512/256.
FIPS 180-4 definiert dafür die SHA-512/t IV Generation Function, mit der eigene Initial Hash Values für die jeweiligen Varianten erzeugt werden.
Damit ist unsere Reise durch die SHA-2-Familie vollständig:
SHA-224
SHA-256
SHA-384
SHA-512
SHA-512/224
SHA-512/256
Wir haben damit nicht nur die einzelnen Varianten kennengelernt, sondern auch einen wichtigen Grundsatz:
Die Länge eines Hashwerts allein sagt noch nicht, welcher Algorithmus ihn erzeugt hat.
Quellen und weiterführende Standards
-
National Institute of Standards and Technology (NIST), FIPS 180-4 – Secure Hash Standard (SHS) Normative Spezifikation von SHA-224, SHA-256, SHA-384, SHA-512 sowie SHA-512/224 und SHA-512/256. Enthält auch die SHA-512/t IV Generation Function.
-
National Institute of Standards and Technology (NIST), Hash Functions Übersicht über die zugelassenen Hashfunktionen sowie ihre Collision-, Preimage- und Second-Preimage-Sicherheitsstärken.
-
National Institute of Standards and Technology (NIST), Policy on Hash Functions NIST-Richtlinie zur Verwendung der SHA-2- und SHA-3-Familien.