Zum Hauptinhalt springen

Was ist SHA-512?

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

Das entspricht:

512 Bit
=
64 Byte
=
128 Hex-Zeichen

SHA-512 ist eng mit SHA-256 verwandt. Beide Algorithmen verwenden viele der gleichen Grundideen. Trotzdem ist SHA-512 nicht einfach eine Version von SHA-256 mit einem doppelt so langen Hashwert.

SHA-512 arbeitet intern mit 1024-Bit-Blöcken, 64-Bit-Wörtern und 80 Kompressionsrunden.

Wenn du die beiden Algorithmen direkt miteinander vergleichen möchtest, erkläre ich die Unterschiede ausführlich in SHA-256 vs. SHA-512 – was ist der Unterschied?.

In diesem Artikel schauen wir uns SHA-512 selbst genauer an.

Wie sieht ein SHA-512-Hash aus?​

Unabhängig davon, wie groß die Eingabe ist, erzeugt SHA-512 immer einen Hashwert mit 512 Bit.

Das können wenige Zeichen sein:

Hallo

ein längerer Text oder eine große Datei.

Das Ergebnis besitzt immer:

512 Bit
=
64 Byte
=
128 Hex-Zeichen

Die 128 Hex-Zeichen ergeben sich daraus, dass ein Hex-Zeichen vier Bit repräsentiert:

512 / 4 = 128

Die Länge des Hashwerts hängt also nicht von der Länge der Eingabe ab.

Probier SHA-512 selbst aus​

Am einfachsten lässt sich diese Eigenschaft mit einer eigenen Eingabe beobachten.

Gib deinen Namen, einen Satz oder einen beliebigen anderen Text ein und berechne den SHA-512-Hash.

AlgorithmusSHA-512

Ändere anschließend nur ein einziges Zeichen.

Du wirst feststellen, dass sich nicht nur eine kleine Stelle des Hashwerts verändert. Stattdessen sieht der neue Hash vollständig anders aus.

Dieses Verhalten hängt mit dem Avalanche Effect zusammen, den ich in einem eigenen Artikel ausführlicher erkläre.

Wie funktioniert SHA-512 grundsätzlich?​

Der Ablauf lässt sich zunächst stark vereinfacht darstellen:

Eingabe
↓
Bytes
↓
Padding
↓
1024-Bit-Blöcke
↓
16 × 64-Bit-Wörter
↓
80-Wort-Message-Schedule
↓
80 Kompressionsrunden
↓
Feed-forward
↓
512-Bit-Hash

Wenn du bereits Wie funktioniert SHA-256? oder SHA-256 Schritt für Schritt gelesen hast, kommt dir dieser Aufbau wahrscheinlich bekannt vor.

Das ist kein Zufall.

SHA-256 und SHA-512 gehören beide zur SHA-2-Familie und verwenden verwandte Konstruktionsprinzipien.

Die Größen, mit denen sie arbeiten, unterscheiden sich jedoch deutlich.

SHA-512 arbeitet mit 1024-Bit-Blöcken​

Bevor SHA-512 mit der eigentlichen Kompressionsfunktion beginnt, wird die Nachricht vorbereitet und in Blöcke aufgeteilt.

Ein SHA-512-Block besitzt:

1024 Bit
=
128 Byte

Zum Vergleich:

SHA-256 → 512-Bit-Blöcke
SHA-512 → 1024-Bit-Blöcke

SHA-512 verarbeitet pro Block also doppelt so viele Bits wie SHA-256.

Das bedeutet allerdings nicht, dass SHA-512 automatisch doppelt so schnell oder doppelt so langsam ist. Die tatsächliche Performance hängt unter anderem von Prozessorarchitektur und Implementierung ab.

Das Padding bei SHA-512​

Damit eine Nachricht in die benötigten Blöcke passt, wird sie vor der eigentlichen Verarbeitung erweitert.

Das Grundprinzip sieht so aus:

[ Nachricht ][ 1 ][ Nullen ][ Nachrichtenlänge ]

Zunächst wird ein 1-Bit angehängt.

Danach folgen so viele 0-Bits, dass am Ende noch Platz für die kodierte ursprüngliche Nachrichtenlänge bleibt.

Bei SHA-512 ist dieses Längenfeld:

128 Bit

lang.

Das unterscheidet SHA-512 ebenfalls von SHA-256:

SHA-256 → 64-Bit-Längenfeld
SHA-512 → 128-Bit-Längenfeld

FIPS 180-4 spezifiziert SHA-512 für Nachrichten mit einer Länge von weniger als 2¹²⁸ Bit.

Nach dem Padding ist die Gesamtlänge der Nachricht ein Vielfaches von 1024 Bit.

Aus 1024 Bit werden 16 Wörter​

Ein 1024-Bit-Nachrichtenblock wird anschließend in 16 Wörter zerlegt:

1024 / 16 = 64

Jedes dieser Wörter besitzt also:

64 Bit

Wir erhalten:

W₀
W₁
W₂
...
W₁₅

mit jeweils 64 Bit.

Genau hier liegt einer der wichtigsten strukturellen Unterschiede zu SHA-256.

SHA-256 arbeitet mit:

16 × 32-Bit-Wörtern

SHA-512 dagegen mit:

16 × 64-Bit-Wörtern

Dieser Unterschied zieht sich durch fast die gesamte weitere Berechnung.

Von 16 auf 80 Wörter​

Die ursprünglichen 16 Wörter reichen noch nicht für alle Kompressionsrunden aus.

Deshalb erzeugt SHA-512 daraus ein sogenanntes Message Schedule.

Aus:

W₀ ... W₁₅

werden:

W₀ ... W₇₉

Die ersten 16 Wörter stammen direkt aus dem jeweiligen Nachrichtenblock.

Die restlichen 64 Wörter werden daraus berechnet.

Vereinfacht verwendet SHA-512 dafür ab W₁₆:

Wₜ =
σ₁(Wₜ₋₂)
+ Wₜ₋₇
+ σ₀(Wₜ₋₁₅)
+ Wₜ₋₁₆
mod 2⁶⁴

Die Funktionen σ₀ und σ₁ kombinieren Rotationen und Verschiebungen der 64-Bit-Wörter.

Wichtig ist hier vor allem:

SHA-256 → 64 Schedule-Wörter × 32 Bit

SHA-512 → 80 Schedule-Wörter × 64 Bit

Im SHA-256-vs.-SHA-512-Vergleich kannst du mit deiner eigenen Eingabe beobachten, wie unterschiedlich diese Wörter bei beiden Algorithmen aussehen.

Der interne Zustand​

SHA-512 arbeitet mit acht internen 64-Bit-Werten.

Sie werden häufig als:

a b c d e f g h

bezeichnet.

Zu Beginn eines Hashvorgangs werden acht durch den Standard festgelegte Initialwerte verwendet.

Für SHA-512 lauten sie:

H₀ = 6a09e667f3bcc908
H₁ = bb67ae8584caa73b
H₂ = 3c6ef372fe94f82b
H₃ = a54ff53a5f1d36f1
H₄ = 510e527fade682d1
H₅ = 9b05688c2b3e6c1f
H₆ = 1f83d9abfb41bd6b
H₇ = 5be0cd19137e2179

Diese Werte hängen nicht von deiner Eingabe ab.

Sie sind Bestandteil der Definition von SHA-512.

Warum sehen die Initialwerte vertraut aus?​

Wenn du dich zuvor intensiv mit SHA-256 beschäftigt hast, kommen dir die ersten Hex-Ziffern vielleicht bekannt vor.

SHA-256 beginnt beispielsweise mit:

6a09e667
bb67ae85
3c6ef372
a54ff53a
...

SHA-512 beginnt mit:

6a09e667f3bcc908
bb67ae8584caa73b
3c6ef372fe94f82b
a54ff53a5f1d36f1
...

Das liegt an der Definition der Initialwerte innerhalb der SHA-2-Familie.

FIPS 180-4 leitet die SHA-512-Initialwerte aus den ersten 64 Bit der Nachkommastellen der Quadratwurzeln der ersten acht Primzahlen ab.

Bei SHA-256 werden entsprechend 32-Bit-Werte verwendet.

Die Ähnlichkeit ist also kein Zufall.

80 Kompressionsrunden​

Nachdem das Message Schedule erzeugt wurde, beginnt die eigentliche Kompressionsfunktion.

SHA-512 führt für jeden 1024-Bit-Block:

80 Runden

aus.

Zum Vergleich:

SHA-256 → 64 Runden
SHA-512 → 80 Runden

In jeder Runde werden unter anderem verwendet:

Wₜ

das aktuelle Wort aus dem Message Schedule,

Kₜ

eine für die Runde festgelegte Konstante,

sowie die acht Arbeitsvariablen:

a b c d e f g h

SHA-512 besitzt insgesamt 80 solcher 64-Bit-Rundenkonstanten.

Was passiert in einer Runde?​

Die Struktur ähnelt stark der von SHA-256.

Für jede Runde werden zwei temporäre Werte berechnet:

T₁ =
h
+ Σ₁(e)
+ Ch(e,f,g)
+ Kₜ
+ Wₜ
mod 2⁶⁴

und:

T₂ =
Σ₀(a)
+ Maj(a,b,c)
mod 2⁶⁴

Anschließend werden die Arbeitsvariablen aktualisiert.

Die Funktionen Ch und Maj kennst du möglicherweise bereits aus SHA-256.

Auch SHA-512 verwendet diese logischen Funktionen.

Die Σ- und σ-Funktionen arbeiten jedoch mit Rotationen und Verschiebungen, die für die 64-Bit-Struktur von SHA-512 definiert sind.

Genau deshalb wäre es falsch, SHA-512 lediglich als SHA-256 mit mehr Runden zu betrachten.

Die 64-Bit-Architektur​

Die Wortgröße ist eine der wichtigsten Eigenschaften von SHA-512.

Fast überall begegnen uns:

64 Bit

Die Arbeitsvariablen besitzen 64 Bit.

Die Schedule-Wörter besitzen 64 Bit.

Die Rundenkonstanten besitzen 64 Bit.

Und die Additionen erfolgen:

mod 2⁶⁴

Das bedeutet: Nur die unteren 64 Bit eines Additionsergebnisses werden weiterverwendet.

Diese Architektur unterscheidet SHA-512 grundlegend von der 32-Bit-Struktur von SHA-256.

Woher kommen die Rundenkonstanten?​

SHA-512 verwendet 80 Konstanten:

K₀ ... K₇₉

FIPS 180-4 definiert sie als die ersten 64 Bit der Nachkommastellen der Kubikwurzeln der ersten 80 Primzahlen.

Die erste Konstante lautet beispielsweise:

K₀ = 428a2f98d728ae22

Diese Konstanten sind fest.

Sie hängen weder von der Nachricht noch vom erzeugten Hashwert ab.

Das bedeutet:

gleiche SHA-512-Implementierung
→
gleiche Initialwerte
→
gleiche Rundenkonstanten

Die Eingabe beeinflusst dagegen das Message Schedule und damit die Werte, die durch die 80 Runden verarbeitet werden.

Der Feed-forward-Schritt​

Nach Runde 79 ist die Verarbeitung eines Blocks noch nicht ganz abgeschlossen.

Die acht entstandenen Arbeitsvariablen werden zu den vorherigen Hashwerten addiert:

H₀ = H₀ + a
H₁ = H₁ + b
H₂ = H₂ + c
H₃ = H₃ + d
H₄ = H₄ + e
H₅ = H₅ + f
H₆ = H₆ + g
H₇ = H₇ + h

jeweils modulo 2⁶⁴.

Besteht die Nachricht aus weiteren 1024-Bit-Blöcken, dient dieser neue Zustand als Ausgangspunkt für den nächsten Block.

So wird Block für Block die gesamte Nachricht verarbeitet.

Wie entsteht daraus der 512-Bit-Hash?​

Nachdem der letzte Nachrichtenblock verarbeitet wurde, bestehen weiterhin acht Hashwerte:

H₀ H₁ H₂ H₃ H₄ H₅ H₆ H₇

Jeder davon besitzt:

64 Bit

Sie werden hintereinandergefügt:

H₀ || H₁ || H₂ || H₃ || H₄ || H₅ || H₆ || H₇

Damit ergibt sich:

8 × 64 Bit
=
512 Bit

Das ist der endgültige SHA-512-Hash.

Wie sicher ist SHA-512?​

Bei der Sicherheit einer Hashfunktion müssen verschiedene Eigenschaften getrennt betrachtet werden.

Für SHA-512 führt NIST eine erwartete Preimage-Resistance-Stärke von 512 Bit und eine Collision-Resistance-Stärke von 256 Bit auf.

Warum unterscheiden sich diese Werte?

Bei einem generischen Preimage-Angriff ist die Größenordnung für einen idealen 512-Bit-Hash:

2⁵¹²

Bei der Suche nach beliebigen Kollisionen greift dagegen der Birthday-Effekt.

Die Größenordnung liegt deshalb bei:

2²⁵⁶

Das ist immer noch eine astronomisch große Zahl.

Warum sich die Sicherheitsstärke bei Kollisionen ungefähr halbiert, erkläre ich ausführlicher in Das Birthday Paradox, Wie funktioniert ein Birthday Attack? und Was ist Collision Resistance?.

Kann man SHA-512 zurückrechnen?​

SHA-512 besitzt keinen Entschlüsselungsschritt.

Aus:

Daten
↓
SHA-512
↓
Hash

gibt es keine entsprechende Operation:

Hash
↓
"SHA-512 entschlüsseln"
↓
ursprüngliche Daten

Das bedeutet allerdings nicht, dass eine ursprüngliche Eingabe unter allen Umständen geheim bleibt.

Ist der mögliche Eingaberaum klein, kann ein Angreifer Kandidaten ausprobieren, hashen und mit dem bekannten Hashwert vergleichen.

Genau deshalb ist die Aussage:

„Hashes kann man nicht zurückrechnen.“

allein etwas zu vereinfachend.

Was Preimage Resistance tatsächlich bedeutet und welche Rolle der mögliche Eingaberaum spielt, erkläre ich in Was ist Preimage Resistance? und Kann man einen Hash zurückrechnen?.

Ist SHA-512 sicherer als SHA-256?​

SHA-512 besitzt höhere generische Sicherheitsstärken gegen Preimage- und Collision-Angriffe als SHA-256.

Vereinfacht:

EigenschaftSHA-256SHA-512
Hashlänge256 Bit512 Bit
Collision Resistance128 Bit256 Bit
Preimage Resistance256 Bit512 Bit

Daraus folgt aber nicht:

SHA-512 ist sicher
SHA-256 ist unsicher

SHA-256 bietet selbst bereits eine sehr hohe kryptografische Sicherheitsstärke und gehört weiterhin zu den von NIST zugelassenen SHA-2-Algorithmen.

Welche Variante sinnvoll ist, hängt vom konkreten Anwendungsfall ab.

Wenn du die beiden Algorithmen genauer vergleichen möchtest, findest du die technischen Unterschiede und einen interaktiven Vergleich in SHA-256 vs. SHA-512 – was ist der Unterschied?.

Ist SHA-512 langsamer als SHA-256?​

Aus der Hashlänge allein lässt sich das nicht ableiten.

SHA-512 muss zwar:

80

statt:

64

Kompressionsrunden durchführen.

Gleichzeitig verarbeitet SHA-512 aber 1024 Bit pro Block und verwendet 64-Bit-Wörter.

Auf Plattformen, die 64-Bit-Operationen effizient ausführen können, kann diese Struktur Vorteile haben.

Hinzu kommen Implementierungsdetails und mögliche Hardwarebeschleunigungen.

Deshalb wäre eine allgemeine Aussage wie:

SHA-512 ist doppelt so lang und deshalb doppelt so langsam.

falsch.

Wenn Performance für eine konkrete Anwendung relevant ist, sollte sie mit der tatsächlich eingesetzten Implementierung auf der Zielplattform gemessen werden.

Sollte man SHA-512 für Passwörter verwenden?​

Nicht einfach direkt.

SHA-512 ist eine allgemeine kryptografische Hashfunktion und darauf ausgelegt, Daten effizient zu verarbeiten.

Genau diese Geschwindigkeit ist bei der Passwortspeicherung problematisch.

Wenn ein Angreifer einen Passwort-Hash besitzt, möchte man verhindern, dass er extrem viele Passwortkandidaten pro Sekunde ausprobieren kann.

Für die Speicherung von Passwörtern werden deshalb geeignete Passwort-Hashing-Verfahren verwendet, die unter anderem Salt und einen konfigurierbaren Kostenfaktor einsetzen.

Ein längerer Hashwert macht SHA-512 also nicht automatisch zu einem geeigneten Passwort-Hashing-Verfahren.

Dieses Thema behandle ich später ausführlich im Bereich Passwortsicherheit.

SHA-512 ist nicht allein​

SHA-512 gehört zu einer Gruppe eng verwandter Algorithmen innerhalb von SHA-2.

Dazu gehören insbesondere:

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

Diese Algorithmen verwenden die 64-Bit-basierte SHA-512-Struktur, unterscheiden sich aber unter anderem bei Initialwerten und Ausgabelängen.

Besonders interessant ist:

SHA-512/256

Der Algorithmus erzeugt wie SHA-256 einen 256-Bit-Hash, arbeitet intern aber mit der SHA-512-Struktur.

Damit wird noch einmal deutlich:

Die Länge des Hashwerts allein beschreibt nicht den Aufbau eines Hashalgorithmus.

SHA-384 haben wir uns bereits genauer angeschaut; SHA-512/224 und SHA-512/256 folgen in Was sind SHA-512/224 und SHA-512/256?.

Das Wichtigste in Kürze​

SHA-512 ist eine kryptografische Hashfunktion aus der SHA-2-Familie.

Die wichtigsten Eigenschaften sind:

  • SHA-512 erzeugt einen 512-Bit-Hash.
  • Das entspricht 64 Byte oder 128 Hex-Zeichen.
  • SHA-512 verarbeitet 1024-Bit-Blöcke.
  • Ein Block wird zunächst in 16 × 64-Bit-Wörter zerlegt.
  • Das Message Schedule erweitert diese auf 80 Wörter.
  • SHA-512 führt 80 Kompressionsrunden pro Block aus.
  • Die internen Berechnungen arbeiten überwiegend mit 64-Bit-Wörtern.
  • Additionen erfolgen modulo 2⁶⁴.
  • Das Padding verwendet ein 128-Bit-Längenfeld.
  • NIST führt für SHA-512 512 Bit Preimage Resistance und 256 Bit Collision Resistance auf.
  • SHA-512 ist nicht einfach SHA-256 mit einem längeren Hashwert.
  • SHA-512 sollte nicht einfach direkt zur Passwortspeicherung verwendet werden.

Vereinfacht lässt sich der Ablauf so zusammenfassen:

Eingabe
↓
Padding
↓
1024-Bit-Blöcke
↓
16 × 64-Bit-Wörter
↓
80-Wort-Message-Schedule
↓
80 Kompressionsrunden
↓
Feed-forward
↓
512-Bit-Hash

Wie geht es weiter?​

Jetzt kennen wir die wichtigsten Eigenschaften und den grundsätzlichen Aufbau von SHA-512.

Als Nächstes können wir tiefer in die Berechnung einsteigen:

Wie funktioniert SHA-512?

Dort schauen wir uns unter anderem genauer an:

  • wie das Padding berechnet wird,
  • wie aus dem Block die ersten 16 Wörter entstehen,
  • wie W₁₆ bis W₇₉ berechnet werden,
  • wie die 64-Bit-σ- und Σ-Funktionen funktionieren,
  • was während einer der 80 Runden passiert,
  • und wie daraus schließlich der fertige Hash entsteht.

Danach können wir SHA-512 – genau wie SHA-256 – Schritt für Schritt mit einer eigenen Eingabe durchspielen.

Quellen und weiterführende Standards​

  1. National Institute of Standards and Technology (NIST), FIPS 180-4 – Secure Hash Standard (SHS) Normative Spezifikation von SHA-512 und den übrigen Algorithmen der SHA-2-Familie. Enthält Padding, Initialwerte, 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), Cryptographic Algorithm Validation Program: Secure Hashing Informationen zur Validierung von Implementierungen der SHA-Algorithmen.