Zum Hauptinhalt springen

Was ist SHA-224?

SHA-224 ist eine kryptografische Hashfunktion aus der SHA-2-Familie. Sie verarbeitet Daten beliebiger Länge und erzeugt daraus einen Hashwert mit einer festen Länge von 224 Bit.

Das entspricht:

  • 28 Byte
  • 56 hexadezimalen Zeichen

SHA-224 ist eng mit SHA-256 verwandt. Beide Algorithmen verwenden dieselbe grundlegende 32-Bit-Struktur, verarbeiten Nachrichten in 512-Bit-Blöcken und führen für jeden Block 64 Kompressionsrunden aus.

Trotzdem ist SHA-224 nicht einfach SHA-256 mit einem kürzeren Hashwert.

Der wichtigste Unterschied beginnt bereits vor der ersten Kompressionsrunde: SHA-224 verwendet andere Initial Hash Values.

SHA-224 gehört zur SHA-2-Familie​

SHA-2 bezeichnet eine Familie mehrerer verwandter kryptografischer Hashfunktionen.

Dazu gehören:

  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
  • SHA-512/224
  • SHA-512/256

Wie wir in Was ist SHA-2? gesehen haben, lassen sich diese Algorithmen grob in zwei Gruppen einteilen.

SHA-224 und SHA-256 arbeiten intern mit 32-Bit-Wörtern.

SHA-384, SHA-512 sowie SHA-512/224 und SHA-512/256 verwenden dagegen 64-Bit-Wörter.

SHA-224 ist damit strukturell besonders eng mit SHA-256 verwandt.

Wie lang ist ein SHA-224-Hash?​

Ein SHA-224-Hash besteht aus genau:

224 Bit

beziehungsweise:

28 Byte

In hexadezimaler Darstellung werden jeweils vier Bit durch ein Zeichen dargestellt. Ein vollständiger SHA-224-Hash besitzt deshalb:

224 / 4 = 56

hexadezimale Zeichen.

Die Länge ist unabhängig davon, wie groß die Eingabe ist.

Ob du einen einzelnen Buchstaben, einen Text oder eine große Datei mit SHA-224 verarbeitest: Das Ergebnis besitzt immer 224 Bit.

Genau diese feste Ausgabelänge ist eine grundlegende Eigenschaft von Hashfunktionen.

Wie funktioniert SHA-224?​

Wenn du bereits Wie funktioniert SHA-256? kennst, kommt dir der grundlegende Ablauf sehr bekannt vor.

SHA-224 verwendet:

EigenschaftSHA-224
Hashlänge224 Bit
Wortgröße32 Bit
Blockgröße512 Bit
Message Schedule64 Wörter
Runden pro Block64

Vereinfacht läuft die Verarbeitung so ab:

  1. Die Nachricht wird vorbereitet und gepaddet.
  2. Sie wird in 512-Bit-Blöcke zerlegt.
  3. Jeder Block wird in sechzehn 32-Bit-Wörter aufgeteilt.
  4. Daraus entsteht ein Message Schedule mit 64 Wörtern.
  5. Die Kompressionsfunktion verarbeitet den Block über 64 Runden.
  6. Der interne Hashzustand wird aktualisiert.
  7. Am Ende werden 224 Bit als Hashwert ausgegeben.

Das ist im Wesentlichen dieselbe grundlegende Struktur, die wir bereits bei SHA-256 kennengelernt haben.

Ist SHA-224 einfach ein gekürzter SHA-256-Hash?​

Nein.

Das ist wahrscheinlich der wichtigste Unterschied, den man sich bei SHA-224 merken sollte.

Man könnte zunächst vermuten:

SHA-256
↓
256-Bit-Hash
↓
letzte 32 Bit entfernen
↓
SHA-224

So funktioniert SHA-224 jedoch nicht.

SHA-224 und SHA-256 verwenden zwar dieselbe grundlegende Kompressionsstruktur, beginnen die Berechnung aber mit unterschiedlichen Initial Hash Values.

Diese Initialwerte bilden den Ausgangszustand der Hashberechnung.

Da dieser Zustand bereits vor der Verarbeitung des ersten Nachrichtenblocks unterschiedlich ist, entwickeln sich auch die folgenden internen Zustände unterschiedlich.

Deshalb gilt:

SHA-224(message)
≠
erste 224 Bit von SHA-256(message)

Die Ausgabe wird bei SHA-224 zwar am Ende auf sieben 32-Bit-Wörter – also 224 Bit – begrenzt. Der vorher berechnete interne Zustand ist wegen der unterschiedlichen Initialwerte aber nicht derselbe wie bei SHA-256.

Die Initial Hash Values machen den Unterschied​

Sowohl SHA-224 als auch SHA-256 beginnen mit acht 32-Bit-Wörtern als internem Ausgangszustand.

Für SHA-224 definiert der Secure Hash Standard eigene Werte.

Vereinfacht können wir uns den Unterschied so vorstellen:

Nachricht
│
▼
Padding / Blöcke
│
┌─────────────┴─────────────┐
│ │
SHA-224 SHA-256
│ │
SHA-224 Initialwerte SHA-256 Initialwerte
│ │
▼ ▼
64 Runden 64 Runden
│ │
▼ ▼
anderer interner anderer interner
Zustand Zustand
│ │
▼ ▼
224 Bit 256 Bit

Die Algorithmen benutzen also dieselbe grundlegende Maschine, starten diese Maschine aber mit unterschiedlichen Zuständen.

Das sorgt dafür, dass SHA-224 eine eigenständige Hashfunktion und nicht lediglich eine abgeschnittene Darstellung von SHA-256 ist.

Probier den Unterschied selbst aus​

Am einfachsten lässt sich der Unterschied mit derselben Eingabe beobachten.

Gib einen beliebigen Text ein. Das Tool berechnet daraus drei Werte:

  • den SHA-224-Hash,
  • den SHA-256-Hash,
  • und die ersten 224 Bit des SHA-256-Hashes.

Damit kannst du SHA-224 direkt mit einem auf 224 Bit gekürzten SHA-256-Hash vergleichen.

SHA-224 und SHA-256 vergleichen

Ist SHA-224 einfach nur ein SHA-256-Hash, dem die letzten 32 Bit fehlen? Probiere es mit deinem eigenen Text aus.

0 Zeichen, 0 UTF-8-Bytes

Diese Implementierung dient der Veranschaulichung. Für produktive Kryptografie sollten geprüfte kryptografische Bibliotheken verwendet werden.

Beide Vergleichswerte sind exakt 224 Bit lang – trotzdem unterscheiden sie sich bei deiner Eingabe.

Das Tool zeigt zusätzlich, wie viele der 224 Bit unterschiedlich sind. Diese Zahl beschreibt nur den Unterschied für die konkrete Eingabe und ist für sich genommen kein Maß für die kryptografische Sicherheit.

Der entscheidende Punkt ist ein anderer: SHA-224 beginnt die Berechnung mit eigenen Initial Hash Values. Es handelt sich deshalb um eine eigenständige Hashfunktion und nicht lediglich um eine kürzere Darstellung von SHA-256.

SHA-224 und SHA-256 im Vergleich​

Die technischen Gemeinsamkeiten sind größer als die Unterschiede:

EigenschaftSHA-224SHA-256
Hashlänge224 Bit256 Bit
Wortgröße32 Bit32 Bit
Blockgröße512 Bit512 Bit
Wörter im Message Schedule6464
Kompressionsrunden6464
Initial Hash Valueseigeneeigene

Der offensichtlichste Unterschied ist die Ausgabelänge.

SHA-224 erzeugt:

224 Bit

SHA-256 erzeugt:

256 Bit

Dieser Unterschied wirkt sich auch auf die generische Collision Resistance aus.

Wie sicher ist SHA-224?​

Für eine ideale Hashfunktion mit einer Ausgabe von n Bit liegt der generische Aufwand zum Finden einer Collision aufgrund des Birthday-Effekts ungefähr in der Größenordnung:

2^(n/2)

Bei SHA-224 ergibt das:

2^112

Für einen generischen Preimage-Angriff ergibt sich dagegen eine Größenordnung von:

2^224

NIST gibt für SHA-224 entsprechend eine Collision Resistance Strength von 112 Bit und eine Preimage Resistance Strength von 224 Bit an.

Zum Vergleich:

AlgorithmusCollision ResistancePreimage Resistance
SHA-224112 Bit224 Bit
SHA-256128 Bit256 Bit

SHA-256 bietet aufgrund seiner längeren Ausgabe damit eine höhere generische Sicherheitsstärke gegen diese beiden Angriffsklassen.

Warum Collision Resistance nur ungefähr der halben Hashlänge entspricht, erklären wir ausführlicher beim Birthday Paradox und bei Birthday Attacks.

Was ist mit Second-Preimage Resistance?​

Bei Second-Preimage Resistance ist die Situation etwas differenzierter.

Die Sicherheitsstärke hängt bei SHA-224 nach den von NIST angegebenen Abschätzungen auch von der Länge der verarbeiteten Nachricht ab. Sie lässt sich deshalb nicht einfach für jede Nachricht pauschal mit 224 Bit angeben.

Wenn du verstehen möchtest, warum Preimage Resistance und Second-Preimage Resistance trotz ihrer ähnlich klingenden Namen unterschiedliche Sicherheitseigenschaften beschreiben, findest du das ausführlich in Was ist Second-Preimage Resistance?.

Warum gibt es SHA-224 überhaupt?​

SHA-224 bietet eine kürzere Ausgabe als SHA-256, verwendet aber dessen grundlegende 32-Bit-Struktur.

Ein SHA-224-Hash benötigt:

28 Byte

während SHA-256:

32 Byte

benötigt.

Der Unterschied beträgt also lediglich vier Byte pro Hashwert.

In vielen modernen Anwendungen ist diese Speicherersparnis nicht besonders relevant. Es gibt jedoch Protokolle, Datenformate und kryptografische Konstruktionen, bei denen eine bestimmte Hash- beziehungsweise Sicherheitslänge benötigt wird.

SHA-224 bietet innerhalb der standardisierten SHA-2-Familie eine solche 224-Bit-Ausgabe.

Für neue interoperable Anwendungen empfiehlt NIST allerdings, mindestens SHA-256 zu implementieren.

Sollte ich SHA-224 oder SHA-256 verwenden?​

Wenn du nicht durch ein bestehendes Protokoll, einen Standard oder ein Datenformat auf SHA-224 festgelegt bist, ist SHA-256 in der Regel die naheliegendere Variante, insbesondere wenn Interoperabilität wichtig ist.

SHA-256:

  • besitzt eine längere Ausgabe,
  • bietet eine höhere generische Collision- und Preimage-Sicherheitsstärke,
  • ist sehr weit verbreitet,
  • und wird von NIST als Mindestimplementierung für Anwendungen empfohlen, bei denen Interoperabilität von Hashfunktionen erforderlich ist.

Das bedeutet nicht, dass SHA-224 grundsätzlich „unsicher“ wäre.

Die Auswahl einer Hashfunktion sollte immer vom konkreten Anwendungsfall und den Anforderungen des verwendeten Standards oder Protokolls abhängen.

Und für manche Aufgaben ist weder SHA-224 noch SHA-256 allein die richtige Lösung.

Ein wichtiges Beispiel ist die Speicherung von Passwörtern: Dafür sollte man nicht einfach eine schnelle allgemeine Hashfunktion wie SHA-224 oder SHA-256 verwenden.

SHA-224 ist nicht SHA3-224​

Auch hier kann der Name leicht zu Verwechslungen führen.

Neben SHA-224 existiert:

SHA3-224

Beide Algorithmen erzeugen einen Hashwert mit 224 Bit.

Sie gehören aber zu unterschiedlichen Hashfamilien:

SHA-224 → SHA-2
SHA3-224 → SHA-3

SHA-3 basiert auf einer grundsätzlich anderen Konstruktion als SHA-2.

Die identische Ausgabelänge bedeutet daher nicht, dass die Algorithmen intern miteinander verwandt sind oder für dieselbe Eingabe denselben Hash erzeugen.

SHA-3 werden wir deshalb als eigenen Algorithmusbereich behandeln.

Das Wichtigste in Kürze​

SHA-224 ist eine kryptografische Hashfunktion aus der SHA-2-Familie und erzeugt einen 224 Bit langen Hashwert.

Sie ist eng mit SHA-256 verwandt:

  • beide arbeiten mit 32-Bit-Wörtern,
  • beide verarbeiten 512-Bit-Blöcke,
  • beide verwenden ein Message Schedule mit 64 Wörtern,
  • beide führen 64 Kompressionsrunden pro Block aus.

SHA-224 ist trotzdem nicht einfach ein gekürzter SHA-256-Hash.

Die beiden Algorithmen verwenden unterschiedliche Initial Hash Values. Dadurch unterscheiden sich ihre internen Zustände bereits während der Berechnung.

SHA-224 bietet eine generische Collision Resistance Strength von 112 Bit und eine Preimage Resistance Strength von 224 Bit.

Wenn du SHA-224 verstanden hast, ist der nächste Schritt innerhalb der SHA-2-Familie besonders interessant: Was ist SHA-384? verfolgt ein ähnliches Prinzip, basiert intern aber auf der 64-Bit-Struktur von SHA-512.

Quellen und weiterführende Standards​

  1. National Institute of Standards and Technology (NIST), FIPS 180-4 – Secure Hash Standard (SHS) Normative Spezifikation von SHA-224 und den übrigen Algorithmen der SHA-2-Familie. Enthält Padding, Initial Hash Values, Funktionen, Konstanten, Message Schedule und Kompressionsfunktion.

  2. National Institute of Standards and Technology (NIST), Hash Functions Übersicht der von NIST zugelassenen Hashfunktionen sowie ihrer Collision-, Preimage- und Second-Preimage-Sicherheitsstärken.

  3. National Institute of Standards and Technology (NIST), Policy on Hash Functions Empfehlung, SHA-256 mindestens zu implementieren, wenn Anwendungen oder Protokolle Interoperabilität von Hashfunktionen benötigen.