
Lehrreiches Jupyter-Notebook, das die Dual_EC_DRBG-Kryptographie-Hintertür (CVE-2014-8610) mit NIST P-256 Zustandswiederherstellungsangriff, historischem Kontext und Gegenmaßnahmen demonstriert.
Für Sicherheitsexperten | Nur zu Bildungszwecken
Dieses Repository enthält eine Bildungsdemonstration des Dual_EC_DRBG-Kryptografie-Backdoors (CVE-2014-8610), einer gut dokumentierten Schwachstelle, die nach den Snowden-Enthüllungen bekannt wurde.
Dies dient NUR zu BILDUNGSZWECKEN:
cd dual-ec-drbg
# Ein Befehl zum Einrichten und Ausführen
./run.sh
Dieses Skript wird:
venv/ erstellencd dual-ec-drbg
# Setzen der lokalen Python-Version mit pyenv
pyenv local 3.12.12
# Erstellen der virtuellen Umgebung
python3 -m venv venv
source venv/bin/activate
# Installieren der Abhängigkeiten
pip install --upgrade pip
pip install -r requirements.txt
# Jupyter starten
jupyter notebook dual_ec_drbg_backdoor_poc.ipynb
cd dual-ec-drbg
pip install --user -r requirements.txt
jupyter notebook dual_ec_drbg_backdoor_poc.ipynb
ecdsa>=0.18.0 – NIST-P-256-Kurvenoperationenjupyter>=1.0.0 – Notebook-Schnittstelleipython>=7.0.0 – Interaktives Python| Abschnitt | Beschreibung |
|---|---|
| 1. Historischer Kontext | Zeitleiste von 1997–2024, Hauptakteure, Snowden-Enthüllungen |
| 2. Mathematische Grundlagen | Elliptische Kurven, ECDLP, die Backdoor-Mathematik |
| 3. NIST-P-256-Parameter | Reale FIPS-186-4-Kurvenparameter |
| 4. Algorithmenspezifikation | NIST SP 800-90 DRBG-Spezifikation |
| 5. Implementierung | Ehrliche vs. mit Backdoor versehene DRBG-Klassen |
| 6. Angriffsimplementierung | Zustandswiederherstellungsangriff mit geheimem d |
| 7. Live-Demonstration | Juniper-artige Angriffssimulation |
| 8. Gegenmaßnahmen | Gelernte Lektionen und Best Practices |
Dual_EC_DRBG Zustandsaktualisierung: s_{i+1} = φ(s_i · P)
Dual_EC_DRBG Ausgabe: r_i = φ(s_i · Q) [gekürzt]
Backdoor-Beziehung: Q = d · P
Angriff (mit Kenntnis von d):
1. Beobachte r_i (30+ Bytes Ausgabe)
2. Rekonstruiere Kandidaten R mit x(R) ≈ r_i
3. Berechne: s_{i+1} = φ(d⁻¹ · R) = φ(s_i · P)
4. Sage ALLE zukünftigen Ausgaben voraus!
Zeitkomplexität: O(1) – Millisekunden auf einem Laptop
Benötigte Daten: 32 Bytes beobachteter Ausgabe
Öffnen Sie das Notebook:
jupyter notebook dual_ec_drbg_backdoor_poc.ipynb
Führen Sie die Zellen nacheinander aus (Shift+Enter)
Beobachten Sie:
Extrahieren und Ausführen des Python-Codes:
# Code-Zellen in ein Python-Skript extrahieren
jupyter nbconvert --to script dual_ec_drbg_backdoor_poc.ipynb
# Skript ausführen
python dual_ec_drbg_backdoor_poc.py
[=== EHRLICHE Dual_EC_DRBG ===]
[+] DRBG initialisiert
Modus: EHRLICH
P = (6b17d1f2e12c4247..., 4fe342e2fe1a7f9b...)
Q = (a53a7f9b2e1c4247..., 7fe342e2fe1a7f9b...)
[=== MIT BACKDOOR VERSEHENE Dual_EC_DRBG ===]
[+] DRBG initialisiert
Modus: BACKDOOR
P = (6b17d1f2e12c4247..., 4fe342e2fe1a7f9b...)
Q = (b23d7c9a3f8e5156..., 9ab456d3c7e2f1a8...)
Geheimer Schlüssel d = 0x4f3e2d1c0b9a8f7e...
[=== ANGRIFFSAUSFÜHRUNG ===]
[+] Beobachtete Ausgabe: a1b2c3d4e5f6...
[+] 2 Kandidatenpunkte auf der Kurve gefunden
...
[OK] PERFEKTE ÜBEREINSTIMMUNG – Alle zukünftigen Ausgaben vorhergesagt!
| Ereignis | Datum | Auswirkung |
|---|---|---|
| NIST-Standardisierung | 2006 | Dual_EC wird offiziell |
| RSA BSAFE-Standard | 2004–2013 | 10 Mio. $ Zahlung für Verwendung schwacher Voreinstellung |
| Snowden-Enthüllungen | 2013 | Öffentliche Bekanntheit |
| Juniper-Backdoor | 2015 | Angreifer nutzten schwaches Dual_EC aus |
| NIST-Rückzug | 2014 | Offizielle Abkündigung |
/dev/urandom oder getrandom() (Linux)BCryptGenRandom() (Windows)CryptoKit (Apple)Dies ist eine Bildungsressource. Verbesserungen willkommen:
MIT-Lizenz – Siehe LICENSE-Datei für Details.
Verantwortungsvoll und ethisch nutzen. Dieser Code dient nur zu Bildungszwecken.
Dieses Notebook eignet sich für:
Empfohlene Präsentationsdauer: 45–60 Minuten
Erstellt zu Bildungszwecken, um kryptografische Schwachstellen zu verstehen und zu verhindern.