Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
dual-ec-drbg — Educational Proof-of-Concept for the Dual_EC_DRBG backdoor (CVE-2014-8610) - NIST P-256 state recovery attack demonstration | Kitploit
Tools/GitHubGitHub/eddieoz/dual-ec-drbg
ExploitationCryptographyCTFPapers & ResearchLearning & EducationLabs & Practice
GitHubeddieoz/dual-ec-drbg

dual-ec-drbg

Educational Proof-of-Concept for the Dual_EC_DRBG backdoor (CVE-2014-8610) - NIST P-256 state recovery attack demonstration

View Repository
6 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

Dual_EC_DRBG Backdoor: Educational Proof-of-Concept

For Security Professionals | Educational Purposes Only


⚠️ Disclaimer

This repository contains an educational demonstration of the Dual_EC_DRBG cryptographic backdoor (CVE-2014-8610), a well-documented vulnerability disclosed following the Snowden revelations.

This is for EDUCATIONAL PURPOSES ONLY:

  • Demonstrates a 10+ year old, deprecated vulnerability
  • Uses publicly known parameters and mathematical relationships
  • Intended for security training and awareness
  • Follows responsible disclosure practices

📚 What You'll Learn

  1. Historical Context: How the NSA allegedly backdoored a NIST standard
  2. Mathematical Foundations: Elliptic curves and the discrete log problem
  3. The Backdoor Mechanism: Why Q = d·P creates a skeleton key
  4. Live Attack Demo: State recovery from 32 bytes of observed output
  5. Mitigations: How to avoid similar vulnerabilities

🚀 Quick Start

Prerequisites

  • Python 3.8+ (we recommend using pyenv)
  • pip

Option 1: Using the Launcher Script (Recommended)

root@kitploit:~
cd dual-ec-drbg

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

This script will:

  1. Detect/create pyenv local configuration
  2. Create a virtual environment in venv/
  3. Install all dependencies
  4. Launch Jupyter with the notebook

Option 2: Manual Setup with 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: System Python (Not Recommended)

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

Dependencies

  • ecdsa>=0.18.0 - NIST P-256 curve operations
  • jupyter>=1.0.0 - Notebook interface
  • ipython>=7.0.0 - Interactive Python

📖 Notebook Contents


🎯 The Attack in a Nutshell

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

🧪 Running the Demonstration

Interactive Mode

  1. Open the notebook:

    root@kitploit:~
    jupyter notebook dual_ec_drbg_backdoor_poc.ipynb
    
  2. Run cells sequentially (Shift+Enter)

  3. Observe:

    • Both honest and backdoored DRBGs produce statistically random output
    • Only the backdoored version is vulnerable to state recovery
    • The attack succeeds in milliseconds

Command Line (Optional)

Extract and run the Python code:

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

📊 Expected Output

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!

🔍 Key Findings

Why This Backdoor is Insidious

  1. Statistically Undetectable: Output passes all randomness tests
  2. Mathematical, Not Code: No malicious code to detect
  3. Master Key Architecture: One secret (d) breaks all instances
  4. Low Detection Probability: Backdoor undetectable without d

Historical Impact


🛡️ Mitigations

Never Use

  • ❌ Dual_EC_DRBG (deprecated since 2014)

Use Instead

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

Security Auditing

  • Audit dependencies for Dual_EC usage
  • Verify RNG sources in critical systems
  • Demand verifiable parameter generation

📚 References

  1. NIST SP 800-90A Rev 1 - Current DRBG standard (Dual_EC removed)
  2. Shumow & Ferguson 2007 - Original backdoor warning
  3. Bernstein et al. - Dual EC: A Standardized Back Door
  4. Checkoway et al. - Juniper Analysis
  5. Reuters - NSA and RSA

🤝 Contributing

This is an educational resource. Improvements welcome:

  • Additional visualizations
  • Extended historical context
  • More attack variants

📜 License

MIT License - See LICENSE file for details.

Use responsibly and ethically. This code is for educational purposes only.


🎓 For Instructors

This notebook is suitable for:

  • Cryptography courses
  • Security awareness training
  • Conference presentations
  • CTF challenges

Recommended presentation time: 45-60 minutes


Created for educational purposes to understand and prevent cryptographic vulnerabilities.

Download Tool
SectionDescription
1. Historical ContextTimeline from 1997-2024, key players, Snowden revelations
2. Mathematical FoundationsElliptic curves, ECDLP, the backdoor math
3. NIST P-256 ParametersReal FIPS 186-4 curve parameters
4. Algorithm SpecificationNIST SP 800-90 DRBG specification
5. ImplementationHonest vs Backdoored DRBG classes
6. Attack ImplementationState recovery attack with secret d
7. Live DemonstrationJuniper-style attack simulation
8. MitigationsLessons learned and best practices
EventDateImpact
NIST Standardization2006Dual_EC becomes official
RSA BSAFE Default2004-2013$10M payment to use weak default
Snowden Revelations2013Public awareness
Juniper Backdoor2015Attackers exploited weak Dual_EC
NIST Withdrawal2014Official deprecation