Hacker News보안

PDF 암호화의 허점, AES-256이 9비트만으로 깨진다

원제 The case of the 9 bit AES key

102 포인트댓글 50
Key Point

PDF 암호화를 위해 도입된 AES-256이 부실한 난수 생성으로 인해 실제로는 수십 비트 수준의 강도만 가지고 있으며, 패스워드 없이 문서를 열 수 있는 심각한 결함이다.

핵심 요약

  • MuPDF 1.28.5 이전 버전을 포함한 여러 PDF 구현이 AES-256 파일 키를 매우 작은 상태 공간에서 생성하고 있다.
  • MuPDF는 epoch 시간 단위로 시드된 48비트 선형합동발생기를 사용하는데, 키 생성에 사용되는 출력 비트 구조 때문에 실제로는 9비트만 영향을 미친다.
  • 512초 차이나는 타임스탬프는 정확히 동일한 바이트 스트림을 생성하며, 모든 512개 가능한 키를 브루트 포싱하는 데 11밀리초가 소요된다.
  • MuPDF는 평문으로 저장된 /ID 값을 같은 발생기로 생성해 추가 검증이 가능하고, 패스워드 없이 문서를 복호화할 수 있다.
  • Foxit PDF Reader 2026.1.3은 현재 시간(초 단위), 초기화되지 않은 32바이트(실제로는 0으로 채워짐), 상수 문자열을 SHA-256으로 해싱해 파일 키를 생성한다.
  • Foxit의 경우 32스레드 Ryzen 9에서 초당 3.7억 개 타임스탐프를 검사할 수 있어, 최근에 생성된 문서라면 밀리초 단위로 키를 복구할 수 있다.
  • 이 코드는 2014년 PDFium 초기 커밋부터 존재했으며, Foxit이 원래 작성했고 다른 편집기들이 PDFium을 통해 채용했다.
  • OpenPDF 3.0.5와 iText 9.7.1은 밀리초 타임스탬프와 JVM 여유 메모리를 기반으로 ARC4 스트림을 시드하는데, 이 역시 평문으로 저장된 데이터를 통해 검증 가능하다.
  • 각 구현에서 파일 키가 암호학적으로 안전하지 않은 난수 생성기에서 나오므로, 사용자 암호 기반 구형 키보다 약한 키가 되었다.
  • 취약점은 벤더에 공시되었고 MuPDF의 경우 수정되었지만, 이전에 생성된 문서는 소급 보호 불가능하다.
AI 요약 안내

AI가 한국어로 정리한 내용입니다. 정확한 정보는 원문을 확인해 주세요.

요약 원칙 ↗