PDF 개인정보 마스킹: '가리기'와 '진짜 삭제'의 차이, 사고를 막는 검증 절차

마스킹Redaction개인정보 보호PDF 보안

보고서에서 주민등록번호 위에 검은 사각형을 올려 PDF로 저장한 뒤 외부에 보냈는데, 받은 쪽에서 그 사각형을 마우스로 끌어내자 아래에 멀쩡한 번호가 그대로 드러난다. 실제로 정부 기관과 대기업에서 반복적으로 일어난 유출 사고의 전형적인 형태다. PDF에서 개인정보를 가리는 작업(리댁션, Redaction)은 단순히 '안 보이게 만드는 일'이 아니라 '데이터 자체를 파일에서 제거하는 일'이어야 한다. 이 둘의 차이를 모르면 아무리 꼼꼼히 작업해도 사고는 막을 수 없다.

가리기와 삭제는 완전히 다른 작업이다

PDF는 화면에 보이는 그림 한 장이 아니라, 텍스트 객체·이미지·벡터 도형·주석·메타데이터가 층층이 쌓인 구조화된 문서다. 워드프로세서나 일부 편집 도구에서 글자 위에 검은 도형을 그려 넣으면, 시각적으로는 가려지지만 그 아래 텍스트 객체는 파일 안에 그대로 살아 있다. 복사-붙여넣기, 텍스트 추출, 도형 이동, PDF를 다른 형식으로 변환하는 순간 가려졌던 정보가 되살아난다.

진짜 리댁션은 두 단계로 이뤄진다. 첫째, 가릴 영역을 지정한다. 둘째, 그 영역에 겹치는 텍스트·이미지 데이터를 파일에서 영구 제거하고 그 자리를 단색 블록으로 대체한다. 제대로 된 리댁션 도구는 사각형을 '그리는' 것이 아니라 그 좌표에 걸친 콘텐츠 스트림을 잘라낸다. 결과물을 텍스트 추출기로 다시 긁었을 때 가린 내용이 한 글자도 나오지 않아야 비로소 리댁션이 끝난 것이다.

눈에 안 보여도 남아 있는 정보들

본문 텍스트만 신경 쓰다 놓치기 쉬운 잔존 정보가 여럿 있다. 이것들을 함께 처리하지 않으면 본문을 완벽히 가려도 우회로로 정보가 샌다.

  • 문서 메타데이터: 작성자 이름, 회사명, 원본 파일 경로가 제목·작성자·키워드 필드에 남는다.
  • 주석과 댓글: 검토 과정에서 단 메모, 하이라이트, 스티커 노트에 실명이나 민감한 코멘트가 들어 있다.
  • 숨은 레이어와 이전 버전: 편집 이력이나 OCR로 생성된 보이지 않는 텍스트 레이어(스캔본 아래 깔린 인식 텍스트).
  • 책갈피·목차·하이퍼링크: 링크 URL이나 책갈피 제목에 이름·이메일이 노출된다.
  • 썸네일과 첨부파일: PDF에 포함된 미리보기 이미지나 임베드된 파일.

상황별 방법 비교: 무엇으로 가릴 것인가

리댁션 도구는 크게 셋으로 나뉜다. 각각 장단점이 분명해서 문서 양과 민감도에 따라 골라야 한다.

전용 오피스 프로그램 (Acrobat Pro 등)

유료 데스크톱 편집기는 가장 안전한 선택지다. '검색해서 리댁션' 기능으로 패턴(주민번호 형식 등)을 자동 검출하고, 적용 시 콘텐츠를 실제로 제거하며, '숨은 정보 제거' 메뉴로 메타데이터·주석을 일괄 정리한다. 단점은 비용과 학습 곡선, 그리고 대량 문서를 일일이 손으로 처리하기엔 느리다는 점이다. 민감도가 높은 단건 문서(법정 제출용 등)에 적합하다.

웹 기반 도구

브라우저에서 바로 쓰는 도구는 설치가 필요 없고 빠르다. 다만 파일을 서버로 업로드하는 방식이라면 민감 문서를 외부 서버에 올린다는 점을 반드시 따져야 한다. 처리 후 파일을 즉시 파기하는지, 브라우저 안에서만 처리(클라이언트 사이드)하는지 정책을 확인하라. 가벼운 문서나 이미 공개된 자료의 부분 가림에는 충분하다.

명령줄 도구

대량 문서를 같은 규칙으로 처리해야 한다면 스크립트가 답이다. 오픈소스 라이브러리(예: 파이썬 계열 PDF 라이브러리)로 정규식 기반 검출과 콘텐츠 제거를 자동화할 수 있다. 반복 가능하고 감사 추적이 남지만, 검출 규칙을 직접 검증해야 하고 한글 폰트·OCR 텍스트 처리에서 함정이 많다.

# 리댁션이 제대로 됐는지 검증: 결과 PDF에서 텍스트를 추출해
# 가렸어야 할 패턴이 남아 있는지 확인한다 (예: 주민번호 형식)
pdftotext redacted.pdf - | grep -E '[0-9]{6}-[0-9]{7}'
# 아무것도 출력되지 않아야 정상. 한 줄이라도 나오면 가리기 실패.

한국 사용자가 특히 주의할 지점

국내 문서는 정형 패턴이 많아 자동 검출의 효율이 좋은 편이다. 주민등록번호, 사업자등록번호, 전화번호, 계좌번호는 형식이 일정해 정규식으로 안정적으로 잡힌다. 문제는 그 외 영역이다. 이름은 문맥상 가려야 할 사람만 골라야 하므로 자동 검출에만 의존하면 무관한 동명이인까지 가리거나, 정작 가려야 할 이름을 놓친다. 주소도 부분 표기가 다양해 누락이 잦다.

스캔본은 또 다른 함정이다. 종이를 스캔한 PDF는 글자가 이미지여서 텍스트 검색이 통하지 않는다. OCR을 돌려야 검출이 가능한데, 한글 OCR 정확도가 떨어지면 검출 자체가 누락된다. 게다가 OCR이 만든 '보이지 않는 텍스트 레이어'를 같이 제거하지 않으면, 이미지를 가려도 인식된 텍스트가 파일에 남아 추출된다. 스캔 문서는 이미지 영역과 텍스트 레이어를 모두 처리해야 한다.

리댁션의 황금률: '보이지 않게 만들었다'와 '제거했다'는 다르다. 작업이 끝났다고 믿기 전에, 결과 파일을 텍스트 추출기로 다시 긁어 가린 내용이 한 글자도 나오지 않는지 직접 확인하라. 눈으로만 본 검수는 검수가 아니다.

사고를 막는 작업 절차

리댁션은 한 번의 클릭이 아니라 절차다. 아래 순서를 지키면 대부분의 유출을 막을 수 있다.

  1. 원본을 별도로 보관하고, 작업은 반드시 사본에서 한다. 리댁션은 비가역적이어야 하므로 원본 복구 경로를 따로 둔다.
  2. 스캔본이면 먼저 OCR을 적용하거나, 반대로 텍스트 레이어 없이 순수 이미지로 처리할지 결정한다.
  3. 자동 패턴 검출로 정형 정보(주민번호·계좌·전화)를 1차 처리한다.
  4. 이름·주소·서명처럼 문맥이 필요한 항목을 사람이 직접 영역 지정으로 추가한다.
  5. 리댁션을 '적용'해 콘텐츠를 실제 제거한다. 미적용 상태로 저장하면 도형만 얹힌 위험한 파일이 된다.
  6. 메타데이터·주석·책갈피·첨부 등 숨은 정보를 일괄 제거한다.
  7. 결과 파일에서 텍스트를 추출해 가린 패턴이 남았는지 기계적으로 검증한다.
  8. 복사-붙여넣기, 다른 형식 변환 테스트로 잔존 데이터가 없는지 최종 확인한다.

마무리 체크리스트

개인정보 마스킹은 '얼마나 까맣게 칠했는가'가 아니라 '파일에서 데이터가 정말 사라졌는가'로 평가해야 한다. 작은 사본 하나가 외부로 나가는 순간 되돌릴 수 없으므로, 마지막 검증 단계를 절대 생략하지 말자. 가린 내용이 텍스트 추출에서 나오지 않고, 메타데이터가 깨끗하며, 변환 후에도 정보가 새지 않는다면 그 문서는 안전하게 공유할 수 있다. 도구의 종류보다 중요한 것은 '제거됐는지 확인하는 습관'이다.