
Vereinfachte Version des Kryptografie-Angriffs basierend auf dem Geburtstagsparadoxon: Sweet32 (CVE-2016-2183)
Dies ist eine Demonstration des Sweet32-Angriffs (CVE-2016-2183): https://sweet32.info/
Der Angriff ist ein Beispiel für einen Geburtstagsangriff, der kryptografische Algorithmen mit kleinen Blockgrößen (64 Bit) im CBC-Modus ausnutzt, wie z. B. 3DES und Blowfish. Der Angriff erfordert die Erzeugung vieler verschlüsselter Blöcke mit bekanntem Klartext. Nach der Erzeugung können identische verschlüsselte Blöcke identifiziert werden, um den Klartextwert der Blöcke mit unbekanntem Klartext zu bestimmen.
Diese Implementierung verwendet 3DES (Triple DES) als Verschlüsselungsalgorithmus, der eine Blockgröße von 64 Bit (8 Byte) hat – dieselbe Blockgröße, die 3DES in der Praxis für den Sweet32-Angriff anfällig macht.
Wenn zwei Chiffretextblöcke kollidieren (c_i = c_j), können wir unbekannten Klartext wiederherstellen mit:
p_i = p_j ⊕ c_{i-1} ⊕ c_{j-1}
Wobei:
p_i der unbekannte Klartext ist (z. B. geheimes Cookie)p_j bekannter Klartext ist (z. B. HTTP-Header)c_{i-1} und die vorherigen Chiffretextblöcke sindc_{j-1}Dies funktioniert, weil im CBC-Modus eine Kollision bedeutet, dass die Eingaben des Blockchiffrierers gleich waren, was eine XOR-Wiederherstellung ohne Kenntnis des Verschlüsselungsschlüssels ermöglicht.
Führen Sie die Demo mit einer garantierten Kollision aus:
# Schritt 1: Verschlüsseltes Paket mit geheimen Cookie generieren
python generate_rigged_packets.py rigged_demo.bin
# Schritt 2: Angriff ausführen, um das Cookie wiederherzustellen
python sweet32.py --block-size 8 rigged_demo.bin
Der Angriff zeigt den GEHEIMEN COOKIE-Wert an und stellt ihn dann nur mithilfe des Chiffretexts wieder her!
generate_rigged_packets.pyErstellt ein Paket mit einer garantierten Kollision für Demonstrationszwecke. Der Cookie-Wert wird so konstruiert, dass er mit einem bekannten Klartextblock kollidiert.
sweet32.pyFühren Sie den Sweet32-Geburtstagsangriff aus, um das Cookie wiederherzustellen.
Der Sweet32-Angriff nutzt das Geburtstagsparadoxon aus. Für einen 64-Bit-Blockchiffrierer:
Dadurch wird 3DES (und andere 64-Bit-Blockchiffrierer) in langlebigen HTTPS-Sitzungen anfällig.
Für den eigentlichen Sweet32-Angriff auf 3DES (64-Bit-Blöcke):
| Blockgröße | Blockgröße | Anzahl Pakete | Benötigte Daten | Blockanzahl |
|---|---|---|---|---|
| 8 Byte | 64 Bits | ~785 GB | ~785 GB | ~2^32 Blöcke |
Der echte Angriff erfordert, dass ca. 785 GB Daten mit demselben Schlüssel verschlüsselt werden, weshalb er hauptsächlich langlebige HTTPS-Verbindungen betrifft.