面向安全专业人员 | 仅供教育目的
本仓库包含对 Dual_EC_DRBG 加密后门(CVE-2014-8610)的教育性演示,该漏洞在斯诺登事件曝光后披露,已有详尽的公开记录。
本内容仅供教育目的:
cd dual-ec-drbg
# One command to setup and run
./run.sh
该脚本将:
venv/ 中创建虚拟环境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
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 曲线运算jupyter>=1.0.0 - 笔记本界面ipython>=7.0.0 - 交互式 PythonDual_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
打开笔记本:
jupyter notebook dual_ec_drbg_backdoor_poc.ipynb
按顺序运行单元格(Shift+Enter)
观察:
提取并运行 Python 代码:
# 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
[=== 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!
/dev/urandom 或 getrandom()(Linux)BCryptGenRandom()(Windows)CryptoKit(Apple)这是一份教育资源。欢迎改进:
MIT 许可证 - 详情请参阅 LICENSE 文件。
请负责任且合乎道德地使用。本代码仅供教育目的。
本笔记本适用于:
建议演示时长:45–60 分钟
为理解和防范密码学漏洞而创建,仅供教育目的。
| 章节 | 描述 |
|---|
| 1. 历史背景 | 1997–2024 年时间线、关键参与者、斯诺登爆料 |
| 2. 数学基础 | 椭圆曲线、ECDLP、后门数学 |
| 3. NIST P-256 参数 | 真实的 FIPS 186-4 曲线参数 |
| 4. 算法规范 | NIST SP 800-90 DRBG 规范 |
| 5. 实现 | 诚实版与植入后门版 DRBG 类 |
| 6. 攻击实现 | 利用秘密 d 进行状态恢复攻击 |
| 7. 现场演示 | Juniper 式攻击模拟 |
| 8. 缓解措施 | 经验教训与最佳实践 |
| 事件 | 日期 | 影响 |
|---|
| NIST 标准化 | 2006 | Dual_EC 成为官方标准 |
| RSA BSAFE 默认算法 | 2004-2013 | 为使用薄弱默认算法支付 1000 万美元 |
| 斯诺登爆料 | 2013 | 唤起公众意识 |
| Juniper 后门 | 2015 | 攻击者利用薄弱的 Dual_EC |
| NIST 撤销 | 2014 | 官方弃用 |