512비트 DKIM 키를 $8 이하의 비용으로 클라우드에서 해독한 방법

14 hours ago 2

  • 연구를 통해 1,024비트 미만의 공개 DKIM 키가 1,700개 이상 발견됨. RSA 키가 1,024비트 미만일 경우 보안이 취약하며 2018년 RFC 8301 이후 사용이 중단됨
  • 실험 목표 : 공개된 512비트 RSA 공개 키에서 개인 키를 추출하여 주요 이메일 서비스(Gmail, Outlook, Yahoo Mail 등)에서 DKIM 검증이 통과되는지 확인
    • 이메일을 원래 발신자인 것처럼 서명할 수 있는지 실험함

RSA 공개 키 디코딩 및 키 생성

  • 공개 키는 Redfin.com 도메인의 512비트 RSA 키 : ASN.1 DER 형식으로 인코딩되어 있으며 Base64로 추가 인코딩됨
  • 키 디코딩 과정
    • p 태그에 포함된 Base64로 인코딩된 공개 키를 Python으로 디코딩
    • n(모듈러스)와 e(공개 지수) 추출
  • RSA 모듈러스 인수분해
    • CADO-NFS 사용: Number Field Sieve 알고리듬 기반
    • 클라우드 서버 스펙: 8 vCPU, 32GB RAM (Hetzner 이용)
    • 추가 32GB 스왑 공간 설정 후 CADO-NFS 실행
    • 결과: 약 86시간 소요 후, n을 두 소인수 p와 q로 분해 성공
  • RSA 개인 키 생성
    • p와 q를 통해 RSA 개인 키를 생성
    • Python과 PyCryptodome 라이브러리를 사용하여 개인 키를 PEM 형식으로 출력함

DKIM 서명 테스트

  • OpenDKIM에 개인 키 통합 후 이메일 발송
  • 여러 이메일 호스팅 서비스에서 DKIM 검증 결과 확인
  • 테스트 결과:
    • DKIM 통과: Yahoo Mail, Mailfence, Tuta
    • DKIM 실패: Gmail, Outlook, Zoho, Fastmail 등
  • Yahoo와 Mailfence, Tuta는 512비트 키의 취약성을 인지하지 못하고 통과 처리

최종 결론

  • 512비트 RSA 키의 취약gka
    • 30년 전에는 슈퍼컴퓨터로 가능했던 작업이 이제 클라우드 서버에서 몇 시간 만에 $8 이하로 가능
    • DKIM 서명 시 1,024비트 미만 키는 절대 사용하지 말아야 함
  • 권장 사항
    • 이메일 제공자는 1,024비트 미만 RSA 키를 사용하는 DKIM 서명을 자동으로 거부해야 함
    • 도메인 소유자는 DKIM 레코드를 점검해 1,024비트 이상으로 업데이트 필요
    • Base64 문자열 길이로 DKIM 키 확인 가능: 1,024비트 키는 최소 216문자

Read Entire Article