Was ist SHA-3?
SHA-3 (Secure Hash Algorithm 3) ist das neueste Mitglied der Secure-Hash-Algorithmus-Familie, veröffentlicht von NIST im Jahr 2015. Im Gegensatz zu SHA-2, das auf der Merkle-Damgård-Konstruktion basiert, verwendet SHA-3 ein grundlegend anderes Design, das als Schwammkonstruktion (Sponge Construction) bezeichnet wird. Dieser Unterschied macht SHA-3 resistent gegen bestimmte Angriffsklassen, die SHA-2 bedrohen.
Der ursprünglich als Keccak (ausgesprochen "ketschak") bezeichnete Algorithmus gewann 2012 nach einem fünfjährigen öffentlichen Evaluierungsprozess den NIST-Hash-Funktionswettbewerb. NIST standardisierte vier Hash-Längen: SHA3-224, SHA3-256, SHA3-384 und SHA3-512, plus zwei erweiterbare Ausgabefunktionen (XOFs): SHAKE128 und SHAKE256.
Wie SHA-3 funktioniert
SHA-3 verwendet die Schwammkonstruktion, die aus zwei Phasen besteht: Absorbieren (Absorbing) und Auspressen (Squeezing). In der Absorptionsphase werden Eingabedaten blockweise in den internen Zustand eingespeist. In der Auspressphase wird die Hash-Ausgabe extrahiert.
Der interne Zustand von SHA-3 ist ein 3D-Array von 5×5 Spuren, die jeweils 64 Bit enthalten, für eine Gesamtzustandsgröße von 1600 Bit. Die Permutationsfunktion namens Keccak-f wird während beider Phasen iterativ angewendet, um den Zustand zu mischen.
Dieses Design bietet SHA-3 mehrere Vorteile:
- Es ist nicht anfällig für Längenerweiterungsangriffe, die SHA-2 betreffen
- Die Schwammkonstruktion bietet einen Sicherheitsbeweis
- Es funktioniert gut in Hardware-Implementierungen
- Die XOF-Varianten erzeugen eine beliebig lange Ausgabe
SHA-3 vs SHA-2
| Merkmal | SHA-2 | SHA-3 |
|---|---|---|
| Konstruktion | Merkle-Damgård | Schwamm (Keccak) |
| Veröffentlicht | 2001 | 2015 |
| Ausgabegrößen | 224, 256, 384, 512 | 224, 256, 384, 512 + XOF |
| Längenerweiterung | Anfällig | Resistent |
| Software-Geschwindigkeit | Schneller | Langsamer |
| Hardware-Geschwindigkeit | Mittel | Ausgezeichnet |
| Seitenkanalresistenz | Gut | Besser |
Wann SHA-3 verwendet werden sollte
SHA-3 ist nicht dazu gedacht, SHA-2 sofort zu ersetzen. SHA-2 bleibt sicher, und keine praktischen Angriffe reduzieren seine Sicherheit unter akzeptable Niveaus. SHA-3 existiert als Backup für den Fall, dass SHA-2 irgendwann gebrochen wird.
Verwenden Sie SHA-3, wenn:
- Sie Resistenz gegen Längenerweiterungsangriffe benötigen
- Ihre Anwendung auf Hardware mit SHA-3-Beschleunigung läuft
- Sie kryptografische Abhängigkeiten von SHA-2 diversifizieren möchten
- Sie eine Hash-Funktion mit einem grundlegend anderen Design benötigen (Defence in Depth)
- Sie eine variable Ausgabelänge von SHAKE128 oder SHAKE256 benötigen
Code-Beispiele
// PHP
echo hash('sha3-256', 'hello');
echo hash('sha3-512', 'hello');
import hashlib
print(hashlib.sha3_256(b'hello').hexdigest())
print(hashlib.sha3_512(b'hello').hexdigest())
# SHAKE (extendable output)
print(hashlib.shake_128(b'hello').hexdigest(16)) # 16 bytes output
print(hashlib.shake_256(b'hello').hexdigest(32)) # 32 bytes output
// Node.js
const crypto = require('crypto');
console.log(crypto.createHash('sha3-256').update('hello').digest('hex'));
console.log(crypto.createHash('sha3-512').update('hello').digest('hex'));
SHAKE128 und SHAKE256
SHAKE (Secure Hash Algorithm KEccak) ist eine erweiterbare Ausgabefunktion (XOF). Im Gegensatz zu Hash-Funktionen mit fester Länge erzeugen XOFs eine Ausgabe beliebiger Länge. SHAKE128 bietet 128-Bit-Sicherheit mit beliebiger Ausgabelänge, während SHAKE256 256-Bit-Sicherheit bietet.
XOFs sind nützlich für:
- Generieren kryptografischer Schlüssel beliebiger Länge aus einem Seed
- Erstellen von Maskierungswerten in Verschlüsselungsschemata
- Aufbau von Stromchiffren und Zufallszahlengeneratoren
Online-Tool
Der SHA-3 Hash Generator auf Help2Code berechnet SHA3-224-, SHA3-256-, SHA3-384- und SHA3-512-Hashes sofort. Vergleichen Sie die Ausgabe mit SHA-2-Hashes mit dem Multiple Hash Generator.
Fazit
SHA-3 ist eine moderne, gut entworfene Hash-Funktion mit einer konservativen Sicherheitsmarge. Während SHA-2 für die meisten Anwendungen der Standard bleibt, ist SHA-3 eine ausgezeichnete Wahl, wenn Sie eine Backup-Hash-Funktion für Defence in Depth benötigen oder wenn Sie die einzigartigen Fähigkeiten der SHAKE-Erweiterbaren-Ausgabefunktionen benötigen.