Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
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
Инструменты/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

Репозиторий
6 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Закладка Dual_EC_DRBG: Образовательная демонстрация концепции

Для специалистов по безопасности | Только в образовательных целях


⚠️ Отказ от ответственности

Этот репозиторий содержит образовательную демонстрацию криптографической закладки Dual_EC_DRBG (CVE-2014-8610) — хорошо документированной уязвимости, раскрытой после разоблачений Сноудена.

Только в образовательных целях:

  • Демонстрирует устаревшую уязвимость возрастом более 10 лет
  • Использует общеизвестные параметры и математические соотношения
  • Предназначен для обучения и повышения осведомлённости в области безопасности
  • Следует принципам ответственного раскрытия информации

📚 Что вы узнаете

  1. Исторический контекст: Как АНБ предположительно внедрило закладку в стандарт NIST
  2. Математические основы: Эллиптические кривые и задача дискретного логарифма
  3. Механизм закладки: Почему Q = d·P создаёт универсальный ключ
  4. Демонстрация атаки в реальном времени: Восстановление состояния по 32 байтам наблюдаемого вывода
  5. Методы защиты: Как избежать подобных уязвимостей

🚀 Быстрый старт

Предварительные требования

  • Python 3.8+ (рекомендуется pyenv)
  • pip

Вариант 1: Использование скрипта запуска (рекомендуется)

root@kitploit:~
cd dual-ec-drbg

# Одна команда для настройки и запуска
./run.sh

Этот скрипт:

  1. Обнаружит/создаст локальную конфигурацию pyenv
  2. Создаст виртуальное окружение в venv/
  3. Установит все зависимости
  4. Запустит Jupyter с ноутбуком

Вариант 2: Ручная настройка с pyenv

root@kitploit:~
cd dual-ec-drbg

# Установите локальную версию Python через pyenv
pyenv local 3.12.12

# Создайте виртуальное окружение
python3 -m venv venv
source venv/bin/activate

# Установите зависимости
pip install --upgrade pip
pip install -r requirements.txt

# Запустите Jupyter
jupyter notebook dual_ec_drbg_backdoor_poc.ipynb

Вариант 3: Системный Python (не рекомендуется)

root@kitploit:~
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 — интерактивный Python

📖 Содержание ноутбука


🎯 Атака в двух словах

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

🧪 Запуск демонстрации

Интерактивный режим

  1. Откройте ноутбук:

    root@kitploit:~
    jupyter notebook dual_ec_drbg_backdoor_poc.ipynb
    
  2. Запускайте ячейки последовательно (Shift+Enter)

  3. Наблюдайте:

    • И честный, и закладочный DRBG генерируют статистически случайный вывод
    • Только версия с закладкой уязвима для восстановления состояния
    • Атака выполняется за миллисекунды

Командная строка (опционально)

Извлеките и запустите код Python:

root@kitploit:~
# Извлечение ячеек с кодом в скрипт Python
jupyter nbconvert --to script dual_ec_drbg_backdoor_poc.ipynb

# Запуск скрипта
python dual_ec_drbg_backdoor_poc.py

📊 Ожидаемый вывод

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!

🔍 Ключевые выводы

Почему эта закладка коварна

  1. Статистически необнаружима: Вывод проходит все тесты на случайность
  2. Математическая, а не кодовая: Отсутствие вредоносного кода для обнаружения
  3. Архитектура мастер-ключа: Один секрет (d) раскрывает все экземпляры
  4. Низкая вероятность обнаружения: Без d закладка не обнаруживается

Историческое влияние


🛡️ Методы защиты

Никогда не используйте

  • ❌ Dual_EC_DRBG (устарел с 2014 г.)

Используйте вместо

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

Аудит безопасности

  • Проверяйте зависимости на использование Dual_EC
  • Проверяйте источники ГСЧ в критических системах
  • Требуйте верифицируемой генерации параметров

📚 Ссылки

  1. NIST SP 800-90A Rev 1 — Текущий стандарт DRBG (Dual_EC удалён)
  2. Shumow & Ferguson 2007 — Оригинальное предупреждение о закладке
  3. Bernstein et al. - Dual EC: A Standardized Back Door
  4. Checkoway et al. - Juniper Analysis
  5. Reuters - NSA and RSA

🤝 Вклад

Это образовательный ресурс. Приветствуются улучшения:

  • Дополнительные визуализации
  • Расширенный исторический контекст
  • Больше вариантов атак

📜 Лицензия

Лицензия MIT — подробности в файле LICENSE.

Используйте ответственно и этично. Этот код предназначен только для образовательных целей.


🎓 Для преподавателей

Этот ноутбук подходит для:

  • Курсов криптографии
  • Тренингов по безопасности
  • Конференционных презентаций
  • CTF-соревнований

Рекомендуемое время презентации: 45–60 минут


Создано в образовательных целях для понимания и предотвращения криптографических уязвимостей.

Скачать инструмент
РазделОписание
1. Исторический контекстХронология 1997–2024, ключевые участники, разоблачения Сноудена
2. Математические основыЭллиптические кривые, ECDLP, математика закладки
3. Параметры NIST P-256Реальные параметры кривой из FIPS 186-4
4. Спецификация алгоритмаСпецификация DRBG из NIST SP 800-90
5. РеализацияКлассы честного и закладочного DRBG
6. Реализация атакиАтака восстановления состояния с секретным d
7. Демонстрация в реальном времениСимуляция атаки в стиле Juniper
8. Методы защитыИзвлечённые уроки и лучшие практики
СобытиеДатаВлияние
Стандартизация NIST2006Dual_EC становится официальным
По умолчанию в RSA BSAFE2004–2013$10 млн за использование слабого значения по умолчанию
Разоблачения Сноудена2013Общественная осведомлённость
Закладка в Juniper2015Злоумышленники использовали слабый Dual_EC
Отзыв NIST2014Официальное объявление устаревшим