セキュリティ専門家向け | 教育目的のみ
このリポジトリには、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 - 詳細はLICENSEファイルを参照。
責任を持って倫理的に使用してください。このコードは教育目的のみです。
このノートブックは以下に適しています:
推奨プレゼンテーション時間: 45-60分
暗号の脆弱性を理解し防止するための教育目的で作成されました。
| Section | Description |
|---|
| 1. 歴史的背景 | 1997年から2024年までのタイムライン、主要人物、スノーデンの暴露 |
| 2. 数学的基礎 | 楕円曲線、ECDLP、バックドアの数学 |
| 3. NIST P-256 パラメータ | 実際のFIPS 186-4曲線パラメータ |
| 4. アルゴリズム仕様 | NIST SP 800-90 DRBG 仕様 |
| 5. 実装 | 正直なDRBGとバックドア付きDRBGクラス |
| 6. 攻撃の実装 | 秘密dを用いた状態回復攻撃 |
| 7. ライブデモンストレーション | Juniperスタイルの攻撃シミュレーション |
| 8. 緩和策 | 学んだ教訓とベストプラクティス |
| Event | Date | Impact |
|---|
| NIST標準化 | 2006 | Dual_ECが公式に |
| RSA BSAFE デフォルト | 2004-2013 | 弱いデフォルトを使用するための1000万ドルの支払い |
| スノーデンの暴露 | 2013 | 一般の認識 |
| Juniper バックドア | 2015 | 攻撃者が弱いDual_ECを悪用 |
| NIST撤回 | 2014 | 公式に非推奨に |