- DEDA는 컬러 레이저 프린터 출력물에 들어가는 문서 컬러 추적 점, 즉 노란 점을 읽고 디코딩하며 익명화하는 도구 키트임
- 문서 컬러 추적 점은 프린터와 출력물 정보를 인코딩하는 작은 체계적 점 패턴이며, 거의 모든 상용 컬러 레이저 프린터에 통합되어 있음
- 스캔 이미지에서 추적 데이터를 읽거나 비교하고, 알려지지 않은 패턴을 추출하며, PDF에 자체 추적 점 매트릭스를 추가할 수 있음
- 익명화 기능은 스캔 이미지의 추적 데이터를 대부분 제거하거나, 프린터별 익명화 마스크를 만들어 PDF 문서에 적용하는 방식으로 동작함
- 좋은 결과를 위해 입력 스캔은 무손실 압축, 300 dpi, 중립 대비가 권장되며, 흑백 페이지나 잉크젯 출력물에는 추적 점이 없을 수 있음
DEDA가 다루는 문제
- Document Colour Tracking Dots 또는 노란 점은 프린터와 출력물 자체에 대한 정보를 인코딩하는 작은 체계적 점임
- 이 과정은 거의 모든 상용 컬러 레이저 프린터에 통합되어 있음
- 거의 모든 출력물에는 소스 장치에 대한 코드화된 정보가 들어가며, 예시로 시리얼 번호가 포함될 수 있음
- DEDA는 이 포렌식 특징을 읽고 디코딩하는 기능과, 임의 추적을 막기 위한 익명화 기능을 함께 제공함
- 소프트웨어 사용 시 다음 논문 인용을 요청함
- Timo Richter, Stephan Escher, Dagmar Schönfeld, Thorsten Strufe. 2018. Forensic Analysis and Anonymisation of Printed Documents. IH&MMSec '18, 127-138. DOI: https://doi.org/10.1145/3206004.3206019
설치와 GUI 실행
- Python 3 설치가 필요함
- PyPI에서 설치 가능함
pip3 install --user deda
- 현재 디렉터리에서도 설치 가능함
pip3 install --user .
deda_anonmask_apply의 선택 의존성으로 Unix와 GNU/Linux에서 Wand를 설치할 수 있음pip3 install --user wand- Wand가 없으면 이미지 안의 흰색 영역이 포함된 페이지는 익명화할 수 없음
- GUI는 다음 명령으로 실행함
deda_gui
터미널 도구로 가능한 작업
-
추적 데이터 읽기
- 스캔 이미지에서 추적 데이터를 읽고 경우에 따라 디코딩할 수 있음
- 좋은 결과를 위해 입력은 png 같은 무손실 압축, 300 dpi, 중립 대비를 사용해야 함
- 실행 명령:
deda_parse_print INPUTFILE
-
스캔 문서 묶음에서 다른 프린터 찾기
- 여러 스캔 문서에서 다른 프린터로 출력된 문서를 찾을 수 있음
- 실행 명령:
deda_compare_prints INPUT1 INPUT2 [INPUT3] ...
-
알려지지 않은 추적 패턴 분석
- 새 패턴이
parse_print에서 인식되지 않을 수 있음 - 추가 분석을 위해 노란 점을 추출할 수 있음
- 실행 명령:
deda_extract_yd INPUTFILE
- 새 패턴이
-
자체 추적 점 만들기
- 자체 추적 점 매트릭스를 만들고 PDF 문서에 추가할 수 있음
- 내용은
deda_create_dots -h에 따라 매개변수로 전달함 - 실행 명령:
deda_create_dots PDFINPUT
deda_anonmask_create -w로 만든 보정 페이지를 입력으로 사용할 수 있음
익명화 워크플로
-
스캔 이미지 익명화
- 스캔 이미지에서 추적 데이터를 대부분 제거함
- 실행 명령:
deda_clean_document INPUTFILE OUTPUTFILE
-
인쇄용 문서 익명화
- 문서를 PDF로 저장하고
DOCUMENT.PDF로 둠 - 다음 명령으로 만든
testpage.pdf를 여백 없이 인쇄함deda_anonmask_create -w
- 해당 문서를 300 dpi로 스캔하고, 무손실 파일을 다음 명령에 전달함
deda_anonmask_create -r INPUTFILE
- 이 과정은 개별 프린터의 익명화 마스크인
mask.json을 생성함 - 생성된 마스크를 PDF에 적용함
deda_anonmask_apply mask.json DOCUMENT.PDF
- 결과물로 익명화된
masked.pdf가 만들어지며, 페이지 여백 0 설정으로 인쇄할 수 있음 - 마스크가 프린터의 추적 점을 덮는지 현미경으로 확인해야 함
- 마스크의 점 반지름, x 오프셋, y 오프셋은
deda_anonmask_apply매개변수로 조정할 수 있음 DOCUMENT.PDF에 흰색 또는 밝은색 그래픽 영역이 있으면, 해당 영역은 Wand가 설치된 경우에만 마스킹 가능함
- 문서를 PDF로 저장하고
문제 해결
deda_parse_print: command not found가 발생하면 DEDA 설치를 확인하거나 PATH에 Python 사용자 bin 경로를 추가함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로 복사할 수 있음
x86_64-linux-gnu-gcc관련 설치 오류는 GUI에 필요한 eel 의존성 때문일 수 있음- 제안 명령:
sudo apt-get install build-essential autoconf libtool pkg-config python3.6-dev gcc && pip3 install --user eel
- 제안 명령:
wand.exceptions.PolicyError로 PDF 작업이 보안 정책에 의해 차단되면 ImageMagick 설정이 원인임- Wand를 제거하거나
/etc/ImageMagick-*/policy.xml의</policymap>직전에 다음 정책을 추가함<policy domain="coder" rights="read | write" pattern="PDF" />
- 관련 참고 링크: ImageMagick security policy PDF blocking conversion
- Wand를 제거하거나