Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
dual-ec-drbg — 듀얼_EC_DRBG 암호학적 백도어(CVE-2014-8610)를 NIST P-256 상태 복구 공격, 역사적 맥락 및 완화 조치와 함께 시연하는 교육용 Jupyter 노트북입니다. | Kitploit
도구/GitHubGitHub/eddieoz/dual-ec-drbg
ExploitationCryptographyCTFPapers & ResearchLearning & EducationLabs & Practice
GitHubeddieoz/dual-ec-drbg

dual-ec-drbg

듀얼_EC_DRBG 암호학적 백도어(CVE-2014-8610)를 NIST P-256 상태 복구 공격, 역사적 맥락 및 완화 조치와 함께 시연하는 교육용 Jupyter 노트북입니다.

저장소 보기
27개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Dual_EC_DRBG 백도어: 교육용 개념 증명

보안 전문가용 | 교육 목적으로만 사용


⚠️ 면책 조항

이 저장소에는 Dual_EC_DRBG 암호화 백도어(CVE-2014-8610)의 교육용 데모가 포함되어 있습니다. 이는 스노든 폭로 이후 공개된 잘 문서화된 취약점입니다.

이는 교육 목적으로만 제공됩니다:

  • 10년 이상 된 비활성화된 취약점을 시연합니다.
  • 공개적으로 알려진 매개변수와 수학적 관계를 사용합니다.
  • 보안 교육 및 인식 제고를 위한 것입니다.
  • 책임 있는 공개 관행을 따릅니다.

📚 배울 내용

  1. 역사적 맥락: NSA가 어떻게 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

# pyenv로 로컬 Python 버전 설정
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 상태 업데이트:    s_{i+1} = φ(s_i · P)
Dual_EC_DRBG 출력:          r_i = φ(s_i · Q)     [절단됨]

백도어 관계:        Q = d · P

공격 (d를 알 때):
1. r_i 관찰 (출력 30바이트 이상)
2. x(R) ≈ r_i 인 후보 R 재구성
3. 계산: s_{i+1} = φ(d⁻¹ · R) = φ(s_i · P)
4. 모든 미래 출력 예측!

시간 복잡도: O(1) - 랩탑에서 밀리초
필요 데이터: 32바이트의 관찰된 출력

🧪 데모 실행

대화형 모드

  1. 노트북 열기:

    root@kitploit:~
    jupyter notebook dual_ec_drbg_backdoor_poc.ipynb
    
  2. 셀을 순서대로 실행 (Shift+Enter)

  3. 관찰:

    • 정직한 DRBG와 백도어된 DRBG 모두 통계적으로 무작위 출력을 생성함
    • 백도어된 버전만 상태 복구에 취약함
    • 공격이 밀리초 단위로 성공함

명령줄 (선택 사항)

Python 코드를 추출하여 실행:

root@kitploit:~
# 코드 셀을 Python 스크립트로 변환
jupyter nbconvert --to script dual_ec_drbg_backdoor_poc.ipynb

# 스크립트 실행
python dual_ec_drbg_backdoor_poc.py

📊 예상 출력

root@kitploit:~
[=== 정직한 Dual_EC_DRBG ===]
[+] DRBG 초기화됨
    모드: HONEST
    P = (6b17d1f2e12c4247..., 4fe342e2fe1a7f9b...)
    Q = (a53a7f9b2e1c4247..., 7fe342e2fe1a7f9b...)

[=== 백도어된 Dual_EC_DRBG ===]
[+] DRBG 초기화됨
    모드: BACKDOORED
    P = (6b17d1f2e12c4247..., 4fe342e2fe1a7f9b...)
    Q = (b23d7c9a3f8e5156..., 9ab456d3c7e2f1a8...)
    비밀 d = 0x4f3e2d1c0b9a8f7e...

[=== 공격 실행 ===]
[+] 관찰된 출력: a1b2c3d4e5f6...
[+] 곡선 위의 후보 점 2개 발견됨
...
[OK] 완벽 일치 - 모든 미래 출력 예측됨!

🔍 주요 발견점

이 백도어가 교활한 이유

  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 사용 여부에 대한 종속성 감사
  • 중요 시스템의 RNG 소스 확인
  • 검증 가능한 매개변수 생성 요구

📚 참고 자료

  1. NIST SP 800-90A Rev 1 - 현재 DRBG 표준 (Dual_EC 제거됨)
  2. Shumow & Ferguson 2007 - 원래 백도어 경고
  3. Bernstein 외 - Dual EC: 표준화된 백도어
  4. Checkoway 외 - Juniper 분석
  5. Reuters - NSA와 RSA

🤝 기여

이것은 교육용 자료입니다. 개선 사항을 환영합니다:

  • 추가 시각화
  • 확장된 역사적 맥락
  • 더 많은 공격 변형

📜 라이선스

MIT 라이선스 - 자세한 내용은 LICENSE 파일을 참조하세요.

책임감 있고 윤리적으로 사용하세요. 이 코드는 교육 목적으로만 제공됩니다.


🎓 강사용

이 노트북은 다음에 적합합니다:

  • 암호학 강의
  • 보안 인식 교육
  • 컨퍼런스 발표
  • CTF 챌린지

권장 발표 시간: 45-60분


암호학적 취약점을 이해하고 방지하기 위한 교육 목적으로 작성되었습니다.

도구 다운로드
섹션설명
1. 역사적 맥락1997-2024년 타임라인, 주요 인물, 스노든 폭로
2. 수학적 기초타원 곡선, ECDLP, 백도어 수학
3. NIST P-256 매개변수실제 FIPS 186-4 곡선 매개변수
4. 알고리즘 명세NIST SP 800-90 DRBG 명세
5. 구현정직한 DRBG vs 백도어된 DRBG 클래스
6. 공격 구현비밀 d를 이용한 상태 복구 공격
7. 실시간 데모Juniper 스타일 공격 시뮬레이션
8. 방어 대책교훈과 모범 사례
사건날짜영향
NIST 표준화2006Dual_EC가 공식 표준이 됨
RSA BSAFE 기본값2004-2013약한 기본값을 사용하기 위해 1천만 달러 지불
스노든 폭로2013대중 인식 제고
Juniper 백도어2015공격자가 약한 Dual_EC를 악용함
NIST 철회2014공식적으로 폐기됨