디지털 서명이 중요한 이유
디지털 서명은 전자 거래의 법적 기반이 되었습니다. 계약서, 송장, 규제 신고서 등 어떤 문서든 서명은 서명자를 내용에 구속하고 부인방지, 무결성 및 타임스탬프 증거를 제공합니다. 법원과 컴플라이언스 감사자는 올바르게 서명된 PDF나 XML 문서를 종이 위에 잉크로 서명된 것과 동일하게 취급합니다. 따라서 서명을 잃어버리거나 적절한 재서명 없이 서명된 데이터를 변조하면 전체 문서가 무효화되고 조직은 법적 위험에 노출되며 비용이 많이 드는 재작업을 강요받게 됩니다. 금융, 의료, 정부와 같이 전자 기록에 대한 신뢰가 필수인 분야에서는 위험이 특히 큽니다.
변환이 서명을 깨는 경우
파일 변환은 거의 중립적인 작업이 아닙니다. PDF에 포함된 PKCS#7 서명이 이미지로 평탄화되면 암호화된 봉인이 사라집니다. 일부 변환 도구는 XML‑DSig 요소를 제거하거나 인증서 참조를 없애거나 파일의 바이트 구조를 재작성해 서명이 보호하는 해시가 변경됩니다. 이미지 재압축, 줄 바꿈 문자 변경, PDF 버전 변경과 같이 겉보기에 무해한 작업도 도구가 서명된 바이트 범위를 보존하지 않으면 서명을 무효화할 수 있습니다. 그 결과 원본과 시각적으로 동일해 보이지만 검증에 실패하는 문서가 만들어집니다.
마주칠 수 있는 디지털 서명 유형
서명 형식을 이해하면 변환 방식을 선택하는 데 도움이 됩니다.
- PDF 서명 – PDF 카탈로그에 내장되며 정의된 바이트 범위를 커버합니다. PDF/A‑3와 PDF/E는 서명을 유지할 수 있지만 PDF/A‑1은 서명을 제거합니다.
- XML 디지털 서명 (XML‑DSig) – 전자청구(PEPPOL), 전자조달 및 많은 정부 양식에 사용됩니다.
<Signature>요소는 온전하게 유지되어야 하며, 공백 문자 변경만으로도 해시가 무효화될 수 있습니다. - CMS/PKCS#7 컨테이너 – Office Open XML 파일(.docx, .xlsx) 등에 별도의
Signature파트로 첨부됩니다. 파트 계층 구조가 보존된다면 형식 변환에도 살아남을 수 있습니다. - Detached 서명 – 원본 문서를 참조하는 별도 파일(예: .p7s)입니다. 원본 파일을 이름을 바꾸거나 이동하면 서명 파일이 업데이트되지 않아 링크가 끊깁니다.
변환 전 체크리스트
배치 변환이든 단일 파일 변환이든 아래 단계를 수행하십시오.
- 서명 유형 확인 – 서명 세부 정보를 표시할 수 있는 뷰어(Adobe Acrobat, XMLSec, OpenSSL 등)를 사용합니다. 해시 알고리즘, 서명 인증서, 적용 범위(전체 문서 vs. 선택 필드)를 기록합니다.
- 서명 유효성 확인 – 현재 서명이 유효한지 검증합니다. 변환 전 이미 깨진 서명은 변환 후 자동으로 복구되지 않습니다.
- 대상 형식 결정 – 모든 형식이 서명을 담을 수 있는 것은 아닙니다. 목표 형식이 서명을 지원하지 않으면 보관용으로 원본 서명 파일을 그대로 유지하는 방안을 고려하십시오.
- 읽기 전용 백업 생성 – 서명된 파일을 안전한 위치에 복사해 보관합니다. 변환 중 발생할 수 있는 실수로부터 복구할 수 있게 합니다.
서명 친화적인 대상 형식 선택
변환이 불가피할 때는 서명 유형을 명시적으로 지원하는 형식을 선택합니다.
- PDF → PDF/A‑3 – PDF/A‑3은 서명 컨테이너를 포함한 모든 파일을 삽입할 수 있으면서 시각적 충실도를 유지합니다.
- DOCX → DOCX – 동일한 OOXML 컨테이너로 재내보내면 변환 엔진이
Signature파트를 재작성하지 않는 한 CMS 서명이 유지됩니다. - XML → XML – 공백을 재포맷하지 않는 XSLT‑인식 변환을 사용합니다. 원본 XML 선언과 네임스페이스 접두어를 그대로 유지하십시오.
- 이미지 기반 스캔 → PDF(서명 레이어 포함) – 원본 문서가 디지털 씰이 포함된 스캔 이미지라면, 이미지를 평탄화하지 말고 서명을 주석 형태로 포함한 PDF에 삽입합니다.
서명을 보존하는 변환 워크플로
아래는 수동으로도, 스크립트로 자동화해도 적용 가능한 실용적인 단계별 워크플로입니다.
- 서명 추출(선택) – 서명을 담을 수 없는 형식의 경우
openssl cms -verify -inform DER -in sig.p7s -noout와 같은 도구로 CMS/PKCS#7 블롭을 추출하고 별도 파일로 저장합니다. - 핵심 콘텐츠 변환 – “메타데이터 보존” 플래그를 제공하는 변환 엔진을 사용합니다. 많은 클라우드 서비스가 API 파라미터로 이를 제공하며, 예를 들어 convertise.app에서는 “원본 서명 유지” 옵션을 선택할 수 있습니다.
- 서명 재삽입 – 대상 형식이 임베딩을 지원한다면 서명 블롭을 적절한 컨테이너에 다시 넣습니다(예: XML에
<Signature>요소 추가, DOCX zip 아카이브에 CMS 파트 삽입). - 서명된 바이트 범위 재계산 – PDF 서명의 경우
/ByteRange배열을 업데이트해야 합니다. iText 7이나 PDFBox와 같은 라이브러리를 이용하면 암호화 봉인을 무효화하지 않고 서명 사전을 재구성할 수 있습니다. - 결과 검증 – 신뢰할 수 있는 뷰어에서 변환 파일을 열고 검증을 실행합니다. PDF는 Acrobat이 초록색 체크 표시를, XML은 적절한 스키마와 서명 파일을 지정해
xmllint --verify를 수행하면 됩니다. - 최종 파일 해시 기록 – 변환된 문서의 SHA‑256 해시를 변조 방지 로그에 저장합니다. 이는 서명이 변환 후에도 보존되었음을 입증하는 감사 트레일이 됩니다.
클라우드 변환과 개인정보 보호 우려
SaaS 플랫폼에 변환을 맡기면 편리함과 제어권 사이에 절충이 발생합니다. 파일을 메모리에서만 처리하고 세션 종료 후 삭제하는 개인정보 중심 서비스는 노출 위험을 줄여 주지만, 서비스가 서명을 정화 파이프라인에서 제거하지 않는지 확인이 필요합니다. 제공자의 개인정보 보호정책을 검토하고, 데이터 처리 계약을 요구하며, 가능한 경우 민감도가 낮은 서명 문서로 시험 변환을 수행해 서명이 살아있는지 확인하십시오.
변환 후 서명 검증
변환은 겉보기에 성공했어도 서명을 은밀히 손상시킬 수 있습니다. 체계적인 검증으로 위험을 완화합니다.
- 자동화 배치 검증 – PDF의 경우
pdfsig(Poppler), XML은xmlsec1, CMS 파일은openssl cms를 사용해 폴더 전체를 순회하며 통과/실패 보고서를 생성합니다. - 시각적 확인 – 변환된 파일 중 일부를 원본 서명 애플리케이션으로 열어 서명 패널, 서명자 이름, 타임스탬프를 확인합니다.
- 인증서 폐기 여부 확인 – 서명에 사용된 인증서가 아직 유효하고 폐기되지 않았는지 점검합니다. 일부 변환 서비스는 CRL이나 OCSP 정보를 제거할 수 있으니 필요 시 다시 첨부하십시오.
흔히 발생하는 함정과 회피 방법
| 함정 | 서명을 깨는 이유 | 해결책 |
|---|---|---|
| PDF를 이미지(PNG/JPEG)로 변환 | 서명된 바이트 범위가 사라져 래스터 이미지가 되기 때문 | 법적 목적을 위해 PDF 사본을 유지하고, 이미지를 새 PDF에 임베드하되 재서명은 하지 않음 |
| 다른 문자 집합으로 XML 재인코딩 | 정규화된 형태가 바뀌어 해시가 달라짐 | 원본 UTF‑8 인코딩을 유지하고, 공백을 바꾸는 pretty‑print를 피함 |
| PDF 객체 “최적화” 기능 사용 | 객체 스트림이 재작성돼 서명이 참조하는 객체 ID가 달라짐 | 최적화 플래그를 끄고, “구조 보존” 모드를 제공하는 변환기를 선택 |
| 양식 필드 평탄화 후 변환 | 필드값이 시각 레이어에 포함돼 필드 수준 서명이 무효화됨 | 필드를 편집 가능 상태로 유지하거나, 평탄화 후 새 서명을 추가 |
| Detached 서명 파일 삭제·이름 변경 | 문서와 .p7s 파일 간 링크가 사라짐 | 메타데이터에 있는 참조를 업데이트하거나, 서명을 컨테이너 내부에 번들링 |
실제 시나리오
법률 계약
로펌은 Adobe Sign으로 서명된 계약서를 자주 받습니다. 계약을 PDF/A‑1만 허용하는 기업 DMS에 보관하려면 원본 서명을 유지해야 합니다. 위 워크플로대로 PDF를 먼저 PDF/A‑3으로 변환하고, 서명 사전을 보존하는 PDF/A‑1 변환기를 사용하면 계약의 법적 효력이 유지됩니다.
전자청구(PEPPOL)
유럽 전자청구는 XML‑DSig로 인보이스를 인증합니다. 공급업체가 독자적인 XML 스키마에서 PEPPOL BIS 형식으로 변환해야 할 때 <Signature> 요소와 네임스페이스 접두어를 그대로 유지하면 PEPPOL 검증기를 통과하고 구매자는 재서명 없이도 청구서를 처리할 수 있습니다.
정부 양식
많은 공공 부문 양식은 detached CMS 파일과 함께 서명됩니다. 부서가 기존 제출물을 DOCX 형태로 저장하는 새 기록 관리 시스템으로 마이그레이션할 경우, 변환 스크립트가 CMS 서명을 추출해 DOCX 패키지에 삽입하고 참조 테이블을 업데이트합니다. 감사자는 이후 원본 문서와 비교해 서명을 검증할 수 있습니다.
요약
파일 변환 중 디지털 서명을 보존하는 일은 사후에 고려할 사항이 아니라, 암호학에 대한 이해, 형식에 대한 지식, 그리고 신중한 도구 선택을 결합한 disciplined한 절차입니다. 서명 유형을 정확히 식별하고, 호환 가능한 대상 형식을 선택하며, 서명 데이터를 추출·보존·재삽입하고, 자동화된 검증을 통해 결과를 확인하면 조직은 법적 무결성을 유지하면서 현대 파일 포맷의 유연성을 누릴 수 있습니다. 변환 파이프라인에 convertise.app 같은 클라우드 서비스를 활용한다면, 제공자가 서명 컨테이너를 존중하고 privacy‑by‑design 접근 방식을 따르는지 확인하는 것이 추가적인 안전망이 됩니다. 체계적이고 검증 우선적인 사고방식은 비용이 많이 드는 재서명 사이클을 방지하고, 모든 전자 서명에 내재된 신뢰를 보호합니다.