PDF에 대한 무한 신뢰, 근거 있는 것으로 대체되어야 한다
- PDF 위변조 공격, 이미 만연
- 하지만 PDF 문서에 대한 일반 사용자의 신뢰는 여전
- 새 PDF 보호 및 확인 기법, 남아공 연구원들이 발표
현대 사회에서 PDF 문서는 광범위하게 사용된다. 그만큼 일반 사용자들에게 널리 신뢰 받고 있다는 의미다. ‘PDF는 원본 보유자 외 유통 과정에 개입되어 있는 그 누구도 바꾸거나 변경할수 없는 문서 형태’라는 게 그 신뢰의 주된 내용이다. 하지만 이미 PDF 편집이나 조작은 기술적 지식 없는 사람도 수행할 수 있을 정도로 간단한 것이 된 지 오래다. 따라서 ‘변경 불가’라는 신뢰는 오히려 위험하게 작용할 가능성이 농후하다.
남아프리카공화국 프레토리아대학교의 연구원들은 최근 PDF 변조 여부를 확인할 수 있는 새로운 방법을 개발해 발표했다. 이 방법은 파이선으로 개발된 ‘프로토타입’ 형태로도 공개됐다. 해시립(hashlib), 머클리(Merkly), PDFRW라는 라이브러리들을 활용하고 있으며, PDF 불법 조작을 판별할 뿐만 아니라 PDF 문서를 보호하는 기능도 가지고 있다고 개발자들은 밝혔다.
기본 보호 방법들
이 새 기법이 기존 PDF 보호 방법들과는 어떻게 다를까? 이미 널리 사용되는 PDF 보호 기법은 다음과 같다고 연구원들은 설명한다.
1) 워터마킹 : 문서의 진본성을 알리는 표식을 문서 내 다양한 방식으로 추가
2) 해싱 : 파일 내용 내에 고유 코드를 생성해 삽입
3) PDF 서명 : 서명을 객체 형식으로 문서에 추가
이 기법들은 PDF 문서 내 ‘가시적 콘텐츠’ 즉 육안으로 확인할 수 있는 요소들이 변조되었는지 확인하는 데 초점이 맞춰져 있다. “그러므로 누군가 파일 내에 보이지 않는 멀웨어나 악성 스크립트를 삽입한다면, 워터마킹이나 해싱으로는 탐지가 어렵습니다. 게다가 이 방법들은 정확한 변경점을 짚어내지도 못합니다.”
그렇다고 워터마킹과 해싱이 무용한 것은 아니라도 연구원들은 강조한다. “변조 사실 자체는 탐지할 수 있거든요. 따라서 널리 사용되는 이 기술을 가지고 변조 여부만 확인하고, 뒤이어 보다 깊이 있는 기술로 실제 변경된 요소들을 분석한다면 효과가 있을 겁니다.”
새로운 방법
한 마디로 설명해 연구원들의 새 방법은 PDF 문서가 내포하고 있는 ‘파일 페이지 객체(File Page Object)’를 활용하는 것을 골자로 한다. 파일 페이지 객체란, PDF 문서 내 각 페이지의 콘텐츠 및 구조와 관련된 정보를 말하며, 다음과 같은 요소들로 구성돼 있다.
1) 콘텐츠 스트림 : 텍스트, 이미지, 그래픽 등을 어떻게 표시할지에 대한 지시가 포함된 명령들
2) 자원 : 글꼴, 이미지, 기타 재사용 가능한 자원을 정의
3) 미디어 박스 : 페이지가 인쇄될 물리적 매체의 경계를 정의
4) 크롭 박스 : 페이지 콘텐츠가 크로핑 되어야 할 영역을 정의
5) 회전 : 페이지의 회전 각도를 지정
6) 주석 : 사용자와의 상호작용 또는 문서 열람 시 동작을 정의
PDF를 보호하는 기능으로서 프로토타입은 다음과 같은 순서로 작동한다.
1) PDFRW 라이브러리를 이용해 문서를 읽고, 파일 페이지 객체를 추출한다.
2) 각 페이지의 콘텐츠 스트림과 머클리 라이브러리를 사용해 ‘해시 트리(hash tree)’를 생성한다.
3) 페이지 객체를 직렬화 한 후, 이를 바이트 형식으로 변환하여 해시를 계산한다.
4) 일부 하위 객체는 직렬화에서 제외되는데, 이는 PDF 편집기마다 구조가 다르기 때문에 생기는 현상이다.
5) 계산된 해시 값들은 각 페이지 객체의 내부에 저장된다.
6) 모든 해시가 저장된 후 PDFRW를 이용해 보호된 새 PDF 파일을 저장한다.
7) 현존하는 PDF 변조 기술로부터 보호받는 PDF 파일이 완성된다.
PDF 변조 여부를 확인하는 기능으로서 프로토타입은 다음과 같은 순서로 작동한다. 위의 ‘보호 기능’으로 보호된 PDF 파일에 대해서만 적용이 가능하다.
1) PDF 문서를 PDFRW로 읽어 루트 객체와 파일 페이지 객체를 추출한다.
2) 루트에서 hashroot와 hashinfo 값을 추출하고, 각 페이지에서 hashobject, hashroot, hashleafs를 추출한다.
3) 해시 키를 제거한 후 현재 객체들을 직렬화 하여 해시값을 다시 계산한다.
4) 이전 해시와 비교하여 변조 여부를 판단한다.
5) 변조가 있을 경우 관련 내용을 출력한다. 따라서 사용자는 특정 페이지의 어떤 블록이 변경되었는지 알 수 있다.
“여러 시나리오로 프로토타입을 실험했을 때 텍스트, 이미지, 메타데이터 변조를 정확하게 탐지하는 걸 확인할 수 있었습니다. 단 모든 변조는 어도비 아크로뱃을 활용해 수행했습니다. PDF 편집 도구마다 내부 객체 구조가 상이하므로 실험 결과의 신뢰성은 실제 사용자의 환경에 따라 상이할 수 있습니다.” 현재 아크로뱃은 PDF 편지 도구로서 가장 널리 사용되고 있다.
이번 프로토타입이 방어 도구로서 완전한 건 아니었다고 연구원들은 강조했다. “특정 글꼴을 변경하거나 특정 하위 객체만 수정하는 경우에는 탐지가 안 되기도 했습니다. 또한 자바스크립트 삽입이나 디지털 서명 위조 등 고급 공격 기법 역시 이번 프로토타입으로는 탐지되지 않았습니다. 저희는 업그레이드를 통해 이런 점을 보완해나갈 생각입니다.”
그래서?
PDF든 무엇이든, 무조건적인 신뢰를 받는 모든 것들은 결국 위험한 것으로 변질된다. 현재 PDF는 ‘변조 불가능’이라는 오해 속에 각종 거래 시 계약서 등으로 활용되고 있다. 여러 연구 성과가 PDF로 정리돼 유통되기도 한다. ‘내가 보고 있는 이 문건은 원본과 똑같다’는 믿음이 사용자들 사이에 굳건하며, 당분간 변하지 않을 것으로 보인다. “하지만 이미 PDF 변조 공격은 만연하며, 해커들은 PDF 내에 각종 악성 요소들을 삽입해 유통시키고 있습니다.”
그렇다고 PDF를 폐기시켜야 한다는 건 아니다. PDF의 변조가 불가능하다는 인식만 없애면 된다. ‘무조건적인 신뢰’가 아니라 ‘의심과 검사, 확인을 통한 신뢰’가 확산되어야 한다. “이번 연구는 PDF를 검사하는 또 다른 방법을 제안했다는 것과 더불어, PDF도 검사가 필요하다는 인식을 심을 수 있다는 데 그 의의가 있습니다.”