
إثبات مفهوم تعليمي للباب الخلفي Dual_EC_DRBG (CVE-2014-8610) - عرض توضيحي لهجوم استعادة الحالة NIST P-256
للمتخصصين في الأمن | لأغراض تعليمية فقط
يحتوي هذا المستودع على عرض تعليمي للباب الخلفي للتشفير 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-256jupyter>=1.0.0 - واجهة الدفترipython>=7.0.0 - بايثون تفاعلي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
افتح الدفتر:
jupyter notebook dual_ec_drbg_backdoor_poc.ipynb
شغل الخلايا بالتسلسل (Shift+Enter)
لاحظ:
استخرج وشغل كود بايثون:
# 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() (لينكس)BCryptGenRandom() (ويندوز)CryptoKit (أبل)هذا مورد تعليمي. التحسينات مرحب بها:
رخصة 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 | دفعة 10 ملايين دولار لاستخدام الإعداد الافتراضي الضعيف |
| تسريبات سنودن | 2013 | الوعي العام |
| باب Juniper الخلفي | 2015 | استغل المهاجمون Dual_EC الضعيف |
| سحب NIST | 2014 | الإهمال الرسمي |