TL;DR
- DEDA(Tracking Dots Extraction, Decoding and Anonymisation Toolkit)는 상용 컬러 레이저 프린터 출력물에 거의 모두 포함되는 추적 점을 읽고 해독하며, 스캔 이미지와 인쇄 문서의 추적 정보를 익명화하는 도구임.
- 문서 색상 추적 점(Document Colour Tracking Dots), 즉 노란 점은 프린터 일련 번호 등 출력 장치 정보를 인코딩하는 작은 규칙적 점임.
deda_parse_print로 스캔 이미지의 추적 데이터를 읽고 해독하며,deda_compare_prints로 여러 문서의 프린터 차이를 비교하고deda_extract_yd로 인식되지 않은 점 패턴을 추출함.deda_clean_document는 스캔 이미지의 추적 데이터를 대부분 제거하며,deda_anonmask_create와deda_anonmask_apply는 프린터별 마스크를 만들어 PDF를 인쇄용으로 익명화함.- Python 3과 DEDA가 필요하며, 이미지의 흰색 영역까지 익명화하려면 Unix 및 GNU/Linux에서 선택 사항인
wand설치가 필요함.
설치
- Python 3을 설치한 뒤 PyPI에서
pip3 install --user deda명령으로 DEDA를 설치하거나 현재 디렉터리에서pip3 install --user .명령을 실행함. deda_anonmask_apply의 선택 의존성인wand는 Unix 및 GNU/Linux에서pip3 install --user wand명령으로 설치함.wand가 없으면 이미지 내 흰색 영역을 포함하는 페이지를 익명화할 수 없음.- GUI에 필요한
eel의존성 설치 중x86_64-linux-gnu-gcc명령이 종료 코드 1로 실패하는 경우,build-essential,autoconf,libtool,pkg-config,python3.6-dev,gcc를 설치한 뒤pip3 install --user eel을 실행함.
그래픽 사용자 인터페이스
- 터미널에서
deda_gui를 실행해 그래픽 사용자 인터페이스(GUI)를 엶.
터미널 애플리케이션
추적 데이터 읽기
- 스캔 이미지에서 추적 데이터를 읽고 경우에 따라 해독함. 좋은 결과를 얻으려면 입력 이미지에 PNG 같은 무손실 압축을 사용하고 해상도를 300dpi로 설정하며 대비를 중립적으로 설정함.
deda_parse_print INPUTFILE명령으로 추적 데이터를 읽음.
스캔 문서에서 다른 프린터 찾기
deda_compare_prints INPUT1 INPUT2 [INPUT3] ...명령으로 스캔 문서 집합에서 서로 다른 프린터를 찾음.
알 수 없는 추적 패턴 분석
parse_print가 새 패턴을 인식하지 못하는 경우,deda_extract_yd INPUTFILE명령으로 점을 추출해 추가 분석에 활용함.
추적 점 만들기
deda_create_dots -h에서 안내하는 매개변수로 자체 추적 점 행렬을 만들고 PDF 문서에 추가함.deda_create_dots PDFINPUT명령으로 PDF 입력을 지정함.deda_anonmask_create -w로 만든 보정 페이지도 입력으로 사용할 수 있음.
스캔 이미지 익명화
deda_clean_document INPUTFILE OUTPUTFILE명령으로 스캔 이미지의 추적 데이터를 대부분 제거함.
인쇄용 문서 익명화
- 문서를
DOCUMENT.PDF라는 PDF 파일로 저장함. deda_anonmask_create -w로 만든testpage.pdf를 페이지 여백 없이 인쇄함.- 문서를 300dpi로 스캔하고 무손실 파일을
deda_anonmask_create -r INPUTFILE에 전달해 해당 프린터에 맞는 익명화 마스크인mask.json을 만듦. deda_anonmask_apply mask.json DOCUMENT.PDF를 실행해 익명화 문서인masked.pdf를 만들고 페이지 여백을 0으로 설정해 인쇄함.- 현미경으로 마스킹된 페이지가 프린터의 추적 점을 덮는지 확인함. 마스크의 점 반지름과 x·y 오프셋은 사용자 지정할 수 있으며
deda_anonmask_apply의 매개변수로 전달함. DOCUMENT.PDF에 흰색 또는 밝은색 그래픽이 포함된 경우 해당 영역을 마스킹하려면wand설치가 필요함.
문제 해결
`deda_parse_print`: 명령을 찾을 수 없음
- 설치 절차에 따라 DEDA를 설치함.
- Python의 사용자 설치 실행 파일 디렉터리를
PATH에 추가함. 예를 들어export PATH="$PATH:$(python -c 'import site,os; print(os.path.join(site.USER_BASE, "bin"))')"를 실행함.
DEDA가 추적 점을 인식하지 못하는 경우
- 스캔 프로그램이 임계값 처리로 종이 질감이나 추적 점을 제거하지 않도록 설정한 뒤 다시 확인함.
- 단색 페이지와 잉크젯 출력물에는 추적 점이 없을 수 있음.
프린터에 추적 점이 없을 때 이를 감출 수 있는지 여부
- 실제로 추적 점이 없다면
deda_create_dots로 자체 점을 만들거나, 다른 프린터로deda_anonmask_create -w보정 페이지를 인쇄한 뒤 해당 마스크를 자신의 프린터에 사용할 수 있음. - 추적 점의 익명화된 버전을 사용하거나
deda_anonmask_create --copy로 점을 그대로 복사할 수 있음. 관련 절차는 ‘인쇄용 문서 익명화’와 ‘추적 점 만들기’ 항목에 해당함.
ImageMagick PDF 보안 정책 오류
wand.exceptions.PolicyError와 PDF 작업을 허용하지 않는 보안 정책 오류는 ImageMagick에서 발생함.pip3 uninstall wand로 Wand를 제거하거나/etc/ImageMagick-*/policy.xml의</policymap>바로 앞에 PDF 읽기·쓰기 권한 정책을 추가함:<policy domain="coder" rights="read | write" pattern="PDF" />.- 자세한 내용은 ImageMagick 보안 정책의 PDF 변환 차단 관련 안내를 참조함.
인용 논문
- 소프트웨어 사용 시 다음 논문을 인용함: Timo Richter, Stephan Escher, Dagmar Schönfeld, and Thorsten Strufe. 2018. “Forensic Analysis and Anonymisation of Printed Documents.” *Proceedings of the 6th ACM Workshop on Information Hiding and Multimedia Security (IH&MMSec '18)*. ACM, New York, NY, USA, 127–138. DOI: https://doi.org/10.1145/3206004.3206019.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요