Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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 노트북입니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

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: 실행 스크립트 사용 (권장)

cd dual-ec-drbg

# 설정 및 실행을 위한 단일 명령
./run.sh

이 스크립트는 다음을 수행합니다:

  1. pyenv 로컬 설정 감지/생성
  2. venv/에 가상 환경 생성
  3. 모든 종속성 설치
  4. 노트북과 함께 Jupyter 실행

옵션 2: pyenv를 이용한 수동 설정

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 사용 (권장하지 않음)

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

📖 노트북 내용

섹션설명
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. 방어 대책교훈과 모범 사례

🎯 요약된 공격

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. 노트북 열기:

    jupyter notebook dual_ec_drbg_backdoor_poc.ipynb
    
  2. 셀을 순서대로 실행 (Shift+Enter)

  3. 관찰:

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

명령줄 (선택 사항)

Python 코드를 추출하여 실행:

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

# 스크립트 실행
python dual_ec_drbg_backdoor_poc.py

📊 예상 출력

[=== 정직한 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 없이는 백도어를 감지할 수 없음

역사적 영향

사건날짜영향
NIST 표준화2006Dual_EC가 공식 표준이 됨
RSA BSAFE 기본값2004-2013약한 기본값을 사용하기 위해 1천만 달러 지불
스노든 폭로2013대중 인식 제고
Juniper 백도어2015공격자가 약한 Dual_EC를 악용함
NIST 철회2014공식적으로 폐기됨

🛡️ 방어 대책

절대 사용 금지

  • ❌ 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분


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

도구 다운로드