Zum Hauptinhalt springen

Was ist SHA-2?

SHA-256 und SHA-512 gehören heute zu den bekanntesten kryptografischen Hashfunktionen. Beide sind jedoch keine voneinander unabhängigen Algorithmen, sondern Teil einer gemeinsamen Familie: SHA-2.

SHA-2 ist also nicht eine einzelne Hashfunktion. Der Name bezeichnet eine Familie mehrerer verwandter Hashfunktionen mit unterschiedlichen Ausgabelängen und teilweise unterschiedlichem internem Aufbau.

Zu SHA-2 gehören:

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

Die Varianten verfolgen grundsätzlich dieselben kryptografischen Ziele, unterscheiden sich aber unter anderem bei Hashlänge, Wortgröße, Blockgröße und Anzahl der Kompressionsrunden.

SHA-2
│
┌───────────────┴───────────────┐
│ │
32 Bit 64 Bit
│ │
512-Bit-Blöcke 1024-Bit-Blöcke
64 Runden 80 Runden
│ │
┌──────┴──────┐ ┌─────────────┼─────────────┐
│ │ │ │ │
SHA-224 SHA-256 SHA-384 SHA-512 SHA-512/t
│
┌──────┴──────┐
│ │
SHA-512/224 SHA-512/256

Wofür steht SHA?​

SHA steht für Secure Hash Algorithm.

Die SHA-Familien umfassen verschiedene kryptografische Hashfunktionen, die vom US-amerikanischen National Institute of Standards and Technology (NIST) standardisiert wurden.

Dabei sollte man SHA-1, SHA-2 und SHA-3 nicht einfach als unterschiedliche Ausgabelängen desselben Algorithmus verstehen.

Es handelt sich um unterschiedliche Generationen beziehungsweise Familien kryptografischer Hashfunktionen.

SHA-2 wurde 2002 mit SHA-256, SHA-384 und SHA-512 in den Secure Hash Standard aufgenommen. SHA-224 kam später hinzu. Die heute ebenfalls standardisierten Varianten SHA-512/224 und SHA-512/256 erweiterten die Familie anschließend um weitere Ausgabelängen.

Welche Hashfunktionen gehören zu SHA-2?​

Die SHA-2-Familie lässt sich grob in zwei Gruppen einteilen.

Die erste Gruppe arbeitet intern mit 32-Bit-Wörtern:

  • SHA-224
  • SHA-256

Die zweite Gruppe arbeitet mit 64-Bit-Wörtern:

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

Diese Unterscheidung ist wichtiger, als die Namen zunächst vermuten lassen.

SHA-224 ist intern eng mit SHA-256 verwandt. SHA-384 basiert dagegen auf derselben grundlegenden Struktur wie SHA-512.

Die SHA-2-Varianten im Vergleich​

AlgorithmusHashlängeWortgrößeBlockgrößeRunden
SHA-224224 Bit32 Bit512 Bit64
SHA-256256 Bit32 Bit512 Bit64
SHA-384384 Bit64 Bit1024 Bit80
SHA-512512 Bit64 Bit1024 Bit80
SHA-512/224224 Bit64 Bit1024 Bit80
SHA-512/256256 Bit64 Bit1024 Bit80

Damit erkennt man bereits eine wichtige Eigenschaft der Familie:

Die Länge des fertigen Hashwerts verrät nicht automatisch, wie der Algorithmus intern arbeitet.

SHA-256 und SHA-512/256 erzeugen beispielsweise beide einen Hashwert mit 256 Bit. Intern verwenden sie aber unterschiedliche Wort- und Blockgrößen.

SHA-224 und SHA-256​

SHA-224 und SHA-256 bilden die 32-Bit-Seite der SHA-2-Familie.

Beide Algorithmen:

  • arbeiten mit 32-Bit-Wörtern,
  • verarbeiten Nachrichten in 512-Bit-Blöcken,
  • erzeugen einen Message Schedule mit 64 Wörtern,
  • und führen 64 Kompressionsrunden pro Nachrichtenblock aus.

Trotzdem ist SHA-224 nicht einfach nur SHA-256, bei dem nachträglich 32 Bit vom fertigen Hashwert entfernt werden.

SHA-224 verwendet andere Initial Hash Values und erzeugt anschließend eine Ausgabe von 224 Bit.

SHA-256 liefert dagegen 256 Bit.

Wie unterschiedlich SHA-224 und ein auf 224 Bit gekürzter SHA-256-Hash bei derselben Eingabe tatsächlich ausfallen, kannst du in Was ist SHA-224? direkt ausprobieren.

Wenn du den Aufbau dieser Algorithmen verstehen möchtest, ist SHA-256 ein guter Ausgangspunkt. In Wie funktioniert SHA-256? schauen wir uns unter anderem Padding, Message Schedule und Kompressionsfunktion genauer an.

Mit SHA-256 Schritt für Schritt kannst du den kompletten Ablauf außerdem mit einer eigenen Eingabe im Browser nachvollziehen.

SHA-384 und SHA-512​

SHA-384 und SHA-512 gehören zur 64-Bit-Seite der Familie.

Sie arbeiten mit:

  • 64-Bit-Wörtern,
  • 1024-Bit-Nachrichtenblöcken,
  • einem Message Schedule mit 80 Wörtern,
  • und 80 Kompressionsrunden pro Nachrichtenblock.

Auch hier ist SHA-384 nicht einfach nur ein gewöhnlicher SHA-512-Hash, dessen Ausgabe anschließend gekürzt wird.

SHA-384 besitzt eigene Initial Hash Values und erzeugt eine Ausgabe mit 384 Bit.

SHA-512 erzeugt dagegen den vollständigen 512-Bit-Hashwert.

Wie unterschiedlich SHA-384 und ein auf 384 Bit gekürzter SHA-512-Hash bei derselben Eingabe tatsächlich ausfallen, kannst du in Was ist SHA-384? direkt ausprobieren.

In Was ist SHA-512? schauen wir uns diese Variante genauer an.

Wenn du die Unterschiede zur 32-Bit-Struktur direkt sehen möchtest, kannst du in SHA-256 vs. SHA-512 – was ist der Unterschied? dieselbe Eingabe mit beiden Algorithmen vergleichen.

Was sind SHA-512/224 und SHA-512/256?​

Die Namen SHA-512/224 und SHA-512/256 wirken zunächst etwas ungewöhnlich.

Der Teil vor dem Schrägstrich beschreibt die zugrunde liegende SHA-512-basierte Struktur. Der Teil dahinter gibt die Länge des resultierenden Hashwerts an.

SHA-512/224 erzeugt also einen Hashwert mit 224 Bit.

SHA-512/256 erzeugt einen Hashwert mit 256 Bit.

Beide verwenden jedoch die 64-Bit-Struktur der SHA-512-Familie mit 1024-Bit-Blöcken und 80 Kompressionsrunden.

Auch diese Varianten sind nicht einfach SHA-512 mit einem nachträglich abgeschnittenen Hashwert. Für SHA-512/t werden eigene Initial Hash Values nach einem im Standard definierten Verfahren erzeugt.

Dadurch ergibt sich eine zunächst überraschende Situation:

SHA-256 und SHA-512/256 erzeugen beide 256-Bit-Hashwerte, sind aber unterschiedliche Hashfunktionen.

Genau deshalb reicht die Hashlänge allein nicht aus, um einen Algorithmus zu beschreiben.

Wie die SHA-512/t IV Generation Function genau funktioniert und wie unterschiedlich SHA-512/224, SHA-512/256 und ein entsprechend gekürzter SHA-512-Hash bei derselben Eingabe tatsächlich ausfallen, kannst du in Was sind SHA-512/224 und SHA-512/256? direkt ausprobieren.

Warum gibt es so viele SHA-2-Varianten?​

Unterschiedliche Anwendungen können unterschiedliche Anforderungen an Hashlänge, Sicherheitsstärke, Performance oder die verwendete Plattform haben.

Eine längere Ausgabe benötigt beispielsweise mehr Speicherplatz oder Übertragungsbandbreite. Gleichzeitig beeinflusst die Ausgabelänge bestimmte kryptografische Sicherheitseigenschaften.

Auch die interne Wortgröße kann eine Rolle spielen.

SHA-256 arbeitet mit 32-Bit-Wörtern, während SHA-512 und seine verwandten Varianten 64-Bit-Wörter verwenden. Auf Plattformen mit effizienter 64-Bit-Arithmetik kann das Auswirkungen auf die Performance haben.

Die verschiedenen SHA-2-Varianten ermöglichen deshalb unterschiedliche Kombinationen aus internem Aufbau und gewünschter Hashlänge.

Bedeutet ein längerer Hash automatisch mehr Sicherheit?​

Nicht ganz.

Die Länge eines Hashwerts beeinflusst zwar die generische Sicherheitsstärke gegen bestimmte Angriffe. Welche Sicherheitsstärke relevant ist, hängt aber davon ab, welche Eigenschaft betrachtet wird.

Für eine idealisierte Hashfunktion mit n Bit Ausgabe liegt der Aufwand für einen generischen Preimage-Angriff ungefähr in der Größenordnung von:

2^n

Für das Finden einer Collision liegt der generische Aufwand aufgrund des Birthday-Effekts dagegen ungefähr bei:

2^(n/2)

Für SHA-256 bedeutet das idealisiert beispielsweise ungefähr:

Preimage: 2^256
Collision: 2^128

Eine 512-Bit-Ausgabe bedeutet deshalb nicht einfach pauschal „doppelt so sicher“ wie eine 256-Bit-Ausgabe.

Welche Zahl relevant ist, hängt von der betrachteten Sicherheitseigenschaft und dem konkreten Anwendungsfall ab.

Mehr dazu findest du unter Wie sicher sind 128, 256 und 512 Bit?

Ist SHA-2 heute noch sicher?​

Die SHA-2-Familie ist weiterhin für zahlreiche kryptografische Anwendungen relevant und wird in aktuellen Standards verwendet.

Das bedeutet allerdings nicht, dass jede Verwendung von SHA-2 automatisch sicher ist.

Entscheidend ist immer der Kontext.

Ein Beispiel sind Passwörter.

SHA-256 und SHA-512 sind absichtlich schnell berechenbare allgemeine kryptografische Hashfunktionen. Genau diese Geschwindigkeit ist für die direkte Passwortspeicherung problematisch, weil Angreifer dadurch sehr viele Passwortkandidaten ausprobieren können.

Für Passwortspeicherung werden deshalb dafür vorgesehene Password-Hashing-Verfahren mit Salt und geeignetem Kostenfaktor verwendet.

Die Frage ist also nicht nur:

Ist SHA-2 sicher?

Sondern vielmehr:

Ist diese Hashfunktion für diesen konkreten Anwendungsfall geeignet?

SHA-2 ist nicht SHA-3​

Trotz des Namens ist SHA-3 nicht einfach eine verbesserte Version von SHA-2 mit größeren Hashwerten.

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

Die SHA-3-Familie umfasst unter anderem:

  • SHA3-224
  • SHA3-256
  • SHA3-384
  • SHA3-512

Die Zahlen beschreiben auch dort die jeweilige Ausgabelänge. Ein SHA3-256-Hash ist jedoch nicht dasselbe wie ein SHA-256-Hash.

SHA-2 und SHA-3 sind unterschiedliche Hashfamilien, die beide standardisiert sind.

SHA-3 schauen wir uns deshalb später als eigenen Themenbereich an.

Welche SHA-2-Variante sollte ich kennen?​

Wenn du verstehen möchtest, wie SHA-2 grundsätzlich funktioniert, würde ich mit SHA-256 beginnen.

SHA-256 verwendet bereits alle wesentlichen Konzepte, die für das Verständnis der Familie wichtig sind:

Mit dem SHA-256-Explorer kannst du diese Schritte mit einer beliebigen eigenen Eingabe nachvollziehen.

Anschließend ist SHA-512 besonders interessant, weil sich daran gut erkennen lässt, wie die zweite große Struktur innerhalb der SHA-2-Familie aufgebaut ist.

SHA-224, SHA-384 sowie SHA-512/224 und SHA-512/256 ergeben danach wesentlich mehr Sinn: Sie sind keine völlig neuen Konstruktionen, sondern Varianten innerhalb dieser beiden grundlegenden Strukturen.

Das Wichtigste in Kürze​

SHA-2 ist keine einzelne Hashfunktion, sondern eine Familie kryptografischer Hashfunktionen.

Zur Familie gehören SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 und SHA-512/256.

SHA-224 und SHA-256 verwenden eine 32-Bit-Struktur mit 512-Bit-Blöcken und 64 Kompressionsrunden.

SHA-384, SHA-512, SHA-512/224 und SHA-512/256 verwenden eine 64-Bit-Struktur mit 1024-Bit-Blöcken und 80 Kompressionsrunden.

Die Hashlänge allein beschreibt dabei nicht den internen Aufbau einer Hashfunktion. SHA-256 und SHA-512/256 erzeugen beispielsweise beide 256 Bit, basieren aber auf unterschiedlichen Strukturen.

Wenn du SHA-2 wirklich verstehen möchtest, ist SHA-256 der beste Einstieg. Danach zeigt SHA-512 die zweite grundlegende Struktur der Familie.

Quellen​

  1. National Institute of Standards and Technology (NIST), FIPS PUB 180-4 – Secure Hash Standard (SHS).
  2. National Institute of Standards and Technology (NIST), Secure Hashing.
  3. National Institute of Standards and Technology (NIST), FIPS PUB 202 – SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions.