Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
dual-ec-drbg — # Cahier Jupyter pédagogique démontrant la porte dérobée cryptographique Dual_EC_DRBG (CVE-2014-8610) avec attaque de récupération d'état NIST P-256, contexte historique et mesures d'atténuation. | Kitploit
Outils/GitHubGitHub/eddieoz/dual-ec-drbg
ExploitationCryptographieCTFArticles et RechercheApprentissage et ÉducationLabs et Pratique
GitHubeddieoz/dual-ec-drbg

dual-ec-drbg

# Cahier Jupyter pédagogique démontrant la porte dérobée cryptographique Dual_EC_DRBG (CVE-2014-8610) avec attaque de récupération d'état NIST P-256, contexte historique et mesures d'atténuation.

Voir le dépôt
2il y a 7 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Porte dérobée Dual_EC_DRBG : preuve de concept pédagogique

Pour les professionnels de la sécurité | À des fins éducatives uniquement


⚠️ Avertissement

Ce dépôt contient une démonstration pédagogique de la porte dérobée cryptographique Dual_EC_DRBG (CVE-2014-8610), une vulnérabilité bien documentée révélée à la suite des divulgations de Snowden.

Ceci est UNIQUEMENT À DES FINS ÉDUCATIVES :

  • Démontre une vulnérabilité obsolète de plus de 10 ans
  • Utilise des paramètres et relations mathématiques publics
  • Conçu pour la formation et la sensibilisation à la sécurité
  • Suit les pratiques de divulgation responsable

📚 Ce que vous allez apprendre

  1. Contexte historique : Comment la NSA aurait prétendument inséré une porte dérobée dans une norme NIST
  2. Fondements mathématiques : Courbes elliptiques et problème du logarithme discret
  3. Le mécanisme de la porte dérobée : Pourquoi Q = d·P crée un passe-partout
  4. Démonstration d'attaque en direct : Récupération de l'état à partir de 32 octets de sortie observée
  5. Mesures d'atténuation : Comment éviter des vulnérabilités similaires

🚀 Démarrage rapide

Prérequis

  • Python 3.8+ (nous recommandons d'utiliser pyenv)
  • pip

Option 1 : Utilisation du script de lancement (recommandé)

root@kitploit:~
cd dual-ec-drbg

# One command to setup and run
./run.sh

Ce script va :

  1. Détecter/créer la configuration locale pyenv
  2. Créer un environnement virtuel dans venv/
  3. Installer toutes les dépendances
  4. Lancer Jupyter avec le notebook

Option 2 : Installation manuelle avec pyenv

root@kitploit:~
cd dual-ec-drbg

# Set local Python version with pyenv
pyenv local 3.12.12

# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
pip install --upgrade pip
pip install -r requirements.txt

# Launch Jupyter
jupyter notebook dual_ec_drbg_backdoor_poc.ipynb

Option 3 : Python système (non recommandé)

root@kitploit:~
cd dual-ec-drbg
pip install --user -r requirements.txt
jupyter notebook dual_ec_drbg_backdoor_poc.ipynb

Dépendances

  • ecdsa>=0.18.0 - opérations sur la courbe NIST P-256
  • jupyter>=1.0.0 - interface notebook
  • ipython>=7.0.0 - Python interactif

📖 Contenu du notebook

SectionDescription
1. Contexte historiqueChronologie de 1997 à 2024, acteurs clés, révélations Snowden
2. Fondements mathématiquesCourbes elliptiques, ECDLP, les mathématiques de la porte dérobée
3. Paramètres NIST P-256Paramètres réels de courbe FIPS 186-4
4. Spécification de l'algorithmeSpécification NIST SP 800-90 DRBG
5. ImplémentationClasses DRBG honnêtes vs piégées
6. Implémentation de l'attaqueAttaque de récupération d'état avec le secret d
7. Démonstration en directSimulation d'attaque de type Juniper
8. Mesures d'atténuationLeçons apprises et bonnes pratiques

🎯 L'attaque en bref

root@kitploit:~
Dual_EC_DRBG State Update:    s_{i+1} = φ(s_i · P)
Dual_EC_DRBG Output:          r_i = φ(s_i · Q)     [truncated]

Backdoor Relationship:        Q = d · P

Attack (knowing d):
1. Observe r_i (30+ bytes of output)
2. Reconstruct candidate R where x(R) ≈ r_i  
3. Compute: s_{i+1} = φ(d⁻¹ · R) = φ(s_i · P)
4. Predict ALL future output!

Time Complexity: O(1) - milliseconds on a laptop
Data Required: 32 bytes of observed output

🧪 Exécution de la démonstration

Mode interactif

  1. Ouvrez le notebook :

    root@kitploit:~
    jupyter notebook dual_ec_drbg_backdoor_poc.ipynb
    
  2. Exécutez les cellules séquentiellement (Shift+Enter)

  3. Observez :

    • Les DRBG honnêtes et piégés produisent tous deux une sortie statistiquement aléatoire
    • Seule la version piégée est vulnérable à la récupération d'état
    • L'attaque réussit en quelques millisecondes

Ligne de commande (optionnel)

Extrayez et exécutez le code Python :

root@kitploit:~
# Extract code cells to a Python script
jupyter nbconvert --to script dual_ec_drbg_backdoor_poc.ipynb

# Run the script
python dual_ec_drbg_backdoor_poc.py

📊 Sortie attendue

root@kitploit:~
[=== HONEST Dual_EC_DRBG ===]
[+] DRBG initialized
    Mode: HONEST
    P = (6b17d1f2e12c4247..., 4fe342e2fe1a7f9b...)
    Q = (a53a7f9b2e1c4247..., 7fe342e2fe1a7f9b...)

[=== BACKDOORED Dual_EC_DRBG ===]
[+] DRBG initialized
    Mode: BACKDOORED
    P = (6b17d1f2e12c4247..., 4fe342e2fe1a7f9b...)
    Q = (b23d7c9a3f8e5156..., 9ab456d3c7e2f1a8...)
    Secret d = 0x4f3e2d1c0b9a8f7e...

[=== ATTACK EXECUTION ===]
[+] Observed output: a1b2c3d4e5f6...
[+] Found 2 candidate points on curve
...
[OK] PERFECT MATCH - All future output predicted!

🔍 Constatations clés

Pourquoi cette porte dérobée est insidieuse

  1. Indétectable statistiquement : La sortie réussit tous les tests d'aléa
  2. Mathématique, pas logiciel : Aucun code malveillant à détecter
  3. Architecture de passe-partout : Un seul secret (d) compromet toutes les instances
  4. Faible probabilité de détection : Porte dérobée indétectable sans d

Impact historique

ÉvénementDateImpact
Normalisation NIST2006Dual_EC devient officiel
Défaut RSA BSAFE2004-2013Paiement de 10 M$ pour utiliser un défaut faible
Révélations Snowden2013Prise de conscience publique
Porte dérobée Juniper2015Des attaquants ont exploité le Dual_EC faible
Retrait NIST2014Abandon officiel

🛡️ Mesures d'atténuation

À ne jamais utiliser

  • ❌ Dual_EC_DRBG (obsolète depuis 2014)

Utilisez à la place

  • ✅ /dev/urandom ou getrandom() (Linux)
  • ✅ BCryptGenRandom() (Windows)
  • ✅ CryptoKit (Apple)
  • ✅ Hash_DRBG, HMAC_DRBG, CTR_DRBG (NIST SP 800-90A Rev 1)

Audit de sécurité

  • Auditez les dépendances pour l'utilisation de Dual_EC
  • Vérifiez les sources RNG dans les systèmes critiques
  • Exigez une génération de paramètres vérifiable

📚 Références

  1. NIST SP 800-90A Rev 1 - Norme DRBG actuelle (Dual_EC retiré)
  2. Shumow & Ferguson 2007 - Avertissement original sur la porte dérobée
  3. Bernstein et al. - Dual EC : une porte dérobée normalisée
  4. Checkoway et al. - Analyse de Juniper
  5. Reuters - NSA et RSA

🤝 Contribution

Ceci est une ressource pédagogique. Les améliorations sont les bienvenues :

  • Visualisations supplémentaires
  • Contexte historique élargi
  • Davantage de variantes d'attaque

📜 Licence

Licence MIT - Voir le fichier LICENSE pour plus de détails.

Utilisez de manière responsable et éthique. Ce code est fourni à des fins éducatives uniquement.


🎓 Pour les instructeurs

Ce notebook convient à :

  • Cours de cryptographie
  • Formation à la sensibilisation à la sécurité
  • Présentations en conférence
  • Défis CTF

Durée de présentation recommandée : 45-60 minutes


Créé à des fins éducatives pour comprendre et prévenir les vulnérabilités cryptographiques.

Télécharger l’outil