TIL: qpdf로 pdf 파일에 걸린 암호 해제하기
금융 기관이나 서비스 업체에서 보내는 메일들에 대해서 가능한 경우엔 항상 “암호화없이 전송"을 선택하고 있는데, 걔중에는 그런 옵션을 제공하지 않는 곳이 있다. 대부분의 경우 – 사실 내가 아는 모든 경우 – 생년월일(6자리 혹은 8자리)을 암호로 쓰는데 이건 유의미한보안을 제공하지 않기 때문이다.1
예를 들어서 KT에서 보내는 고지서에는 6자리 생년월일로 되어있고, 확인해보면 아래의 Encrypted 항목처럼 암호화 되어있다.
pdfinfo -upw ${생년월일} \
'2024년 7월 KT email 명세서(문서열기암호:주민번호 앞 6자리).pdf'
Producer: iText® 5.5.6 ©2000-2015 iText Group NV (KT; licensed version) (KT; licensed version) (KT; licensed version)
CreationDate: Thu Jul 11 10:15:35 2024 KST
ModDate: Thu Jul 11 10:15:35 2024 KST
Custom Metadata: no
Metadata Stream: no
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 3
Encrypted: yes (print:yes copy:yes change:no addNotes:no algorithm:RC4)
Page size: 595 x 842 pts (A4)
Page rot: 0
File size: 88281 bytes
Optimized: no
PDF version: 1.4
이런 pdf파일을 qpdf 명령을 써서 복호화한 상태로 저장해보자.
qpdf --decrypt --replace-input --password=${생년월일} \
"2024년 7월 KT email 명세서(문서열기암호:주민번호 앞 6자리).pdf"
다시 확인해보면 아래처럼 암호가 걸려있지 않다.
pdfinfo '2024년 7월 KT email 명세서(문서열기암호:주민번호 앞 6자리).pdf'
Producer: iText® 5.5.6 ©2000-2015 iText Group NV (KT; licensed version) (KT; licensed version) (KT; licensed version)
Producer: iText® 5.5.6 ©2000-2015 iText Group NV (KT; licensed version) (KT; licensed version) (KT; licensed version)
CreationDate: Thu Jul 11 10:15:35 2024 KST
ModDate: Thu Jul 11 10:15:35 2024 KST
Custom Metadata: no
Metadata Stream: no
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 3
Encrypted: no
Page size: 595 x 842 pts (A4)
Page rot: 0
File size: 89815 bytes
Optimized: no
PDF version: 1.4
-
“생년월일 기반 비밀번호를 가지는 보안명세서에 대한 전수조사공격”에 따르면, 랩탑용 CPU인 i5-6200U에서 0.7초 이내에 brute force 공격이 끝난다. Thermal allowance가 더 크고 컴퓨팅 파워가 더 강력한 환경에선 이 시간은 더 줄어들어 사실상 0이라 제공하는 보안 수준이 없다. ↩︎