본문으로 건너뛰기

서명 검증 ​

서명된 PDF를 업로드하면 이 도구가 모든 디지털 서명을 추출하고, 서명자를 식별하고, 인증서 유효성을 확인하며, 서명 이후 문서가 수정되었는지 알려 줍니다. 신뢰할 수 있는 인증서를 제공해 서명 체인을 검증할 수도 있습니다.

작동 방식 ​

  1. 서명된 PDF 파일을 업로드합니다. 검증이 자동으로 시작됩니다.
  2. 도구가 요약을 표시합니다. 발견된 서명 수와 그중 유효한 서명 수가 나옵니다.
  3. 각 서명마다 서명자 이름, 발급자, 날짜, 상태를 보여 주는 상세 카드가 표시됩니다.
  4. 선택적으로 신뢰할 수 있는 인증서(.pem, .crt, .cer, .der)를 업로드하면 특정 신뢰 앵커를 기준으로 서명을 검증할 수 있습니다. 재검증은 자동으로 실행됩니다.

확인 항목 ​

서명 파싱 ​

도구는 PDF에서 PKCS#7 서명 객체를 추출하고 ASN.1 구조를 디코딩하여, 서명자의 X.509 인증서와 서명에 포함된 인증서 체인을 가져옵니다.

인증서 유효성 ​

  • 만료: 인증서가 현재 유효 기간 내에 있습니까?
  • 자체 서명 감지: 인증서가 스스로를 발급했습니까?
  • 신뢰 체인: 신뢰할 수 있는 인증서가 제공된 경우, 서명자의 인증서가 그 인증서까지 이어집니까?

암호화 검증 ​

  • 도구는 서명의 /ByteRange가 포함하는 바이트를 재구성하고, 서명자가 선언한 알고리즘으로 해시한 뒤, 그 결과를 서명 내부의 messageDigest 속성과 비교합니다.
  • 그런 다음 서명된 속성을 DER SET으로 다시 직렬화하고, 서명자 인증서의 공개 키로 서명을 검증합니다.
  • 이 모든 검사를 통과한 경우에만 서명이 유효한 것으로 보고됩니다. 서명 후 PDF 바이트가 수정되었거나 내장된 서명이 서명자의 키와 일치하지 않으면, 상태에 구체적인 사유와 함께 "유효하지 않음: 암호화 검증 실패"가 표시됩니다.

지원하는 서명 알고리즘 ​

알고리즘검증 경로
RSA (PKCS#1 v1.5)node-forge publicKey.verify, Web Crypto 폴백 포함
RSA-PSS (RSASSA-PSS)Web Crypto verify({name: 'RSA-PSS', saltLength})
ECDSA P-256/P-384/P-521DER → IEEE P1363 서명 변환 후 Web Crypto verify({name: 'ECDSA', hash})

서명이 이 목록에 없는 알고리즘(예: Ed25519, SM2 또는 특이한 다이제스트 OID를 쓰는 RSA)을 사용하면, 카드에 구체적인 OID나 사유와 함께 노란색으로 "미검증: 지원되지 않는 서명 알고리즘"이 표시됩니다. 이는 의도적인 3단계 구분입니다.

  • 유효: 서명자의 공개 키로 서명이 암호학적으로 검증되었습니다.
  • 유효하지 않음: 검증이 실행되었고 부정적인 결과가 나왔습니다(바이트 변경, 키 불일치).
  • 미검증: 이 알고리즘에 대해서는 도구가 검증을 실행할 수 없었습니다. 인증서 메타데이터는 계속 표시되지만, 서명을 "알 수 없음"으로 간주하고 Adobe Acrobat이나 openssl cms -verify로 검증해야 합니다.

안전하지 않은 다이제스트 알고리즘 ​

  • MD5 또는 SHA-1을 사용하는 서명은 유효하지 않은 것으로 거부되며 "안전하지 않은 다이제스트" 상태로 표시됩니다. 두 알고리즘 모두 충돌 공격이 공개되어 있으므로, SHA-1이나 MD5 해시에 대한 서명은 무결성을 보장하지 않습니다.
  • SHA-224, SHA-256, SHA-384, SHA-512는 모두 허용됩니다.

문서 적용 범위 ​

  • 전체 적용: 서명이 PDF 파일 전체를 포함하므로, 서명 후 추가되거나 변경된 바이트가 없습니다.
  • 부분 적용: 서명이 파일의 일부만 포함합니다. 서명 후 수정이 이루어졌음을 나타낼 수 있습니다(반드시 악의적인 것은 아니며, 증분 저장도 부분 적용을 만듭니다).

서명 상세 정보 ​

각 서명 카드에는 다음이 표시됩니다.

  • 서명자: 서명자 인증서의 공통 이름, 조직, 이메일
  • 발급자: 서명자 인증서를 발급한 인증 기관
  • 서명 일시: 서명에 포함된 타임스탬프
  • 유효 시작 / 유효 종료: 인증서의 유효 기간
  • 사유: 문서에 서명한 이유 (제공된 경우)
  • 위치: 서명한 장소 (제공된 경우)
  • 적용 범위 상태: 전체 또는 부분
  • 신뢰 배지: 신뢰함 또는 신뢰 체인에 없음 (사용자 지정 인증서가 제공된 경우에만)

기술 세부 정보 ​

기술 세부 정보 섹션을 펼치면 다음을 볼 수 있습니다.

  • 서명자 인증서의 일련 번호
  • 다이제스트 알고리즘 (SHA-256, SHA-512 등)
  • 서명 알고리즘 (SHA-256을 사용하는 RSA, SHA-256을 사용하는 ECDSA 등)
  • 유효하지 않은 서명의 오류 메시지

사용 사례 ​

  • 추가 서명하기 전에 디지털 서명된 계약서 검증
  • 서명된 문서가 변조되지 않았는지 감사
  • 문서 서명 이후 인증서가 만료되었는지 확인
  • 조직의 루트 인증서를 기준으로 서명 검증
  • 정부 또는 법률 문서의 서명 세부 정보 조회

팁 ​

  • 자체 서명 인증서라고 해서 서명이 유효하지 않은 것은 아닙니다. 신뢰할 수 있는 제3자를 통해 서명자의 신원을 확인할 수 없다는 뜻이며, 내부 문서에서는 흔한 일입니다.
  • 부분 적용이 항상 변조를 의미하는 것은 아닙니다. 많은 PDF 워크플로가 증분 업데이트(예: 두 번째 서명)를 추가해 부분 적용이 생깁니다.
  • 조직의 루트 또는 중간 인증서를 신뢰할 수 있는 인증서로 업로드하면 신뢰 체인 검증을 받을 수 있습니다.

관련 도구 ​

AGPL-3.0과 상용 라이선스의 이중 라이선스로 제공됩니다.