An AI 에이전트는 PDF가 디지털 서명되었는지 확인하고, 파일이 머신을 떠나지 않도록 로컬에서 누가 서명했는지 알려줄 수 있습니다. 유용한 답변은 “verified”(검증됨)이라는 것이 아니라 서명자, 발급자, 유효 기간 및 확인된 서명 유형입니다. 한 번의 프롬프트로 이를 요청하세요:

contract_signed.pdf에 누가 서명했으며, 어떤 인증서로, 언제 서명했는지 알려 주세요. 확인한 서명 유형도 말해 주세요.

구성 및 문제 해결을 포함한 단계별 버전은 문서에 있습니다: AI 에이전트로 서명된 문서 확인하기.

한 단어 “verified”(검증됨) 답변이 왜 나쁜가?

“이 문서가 서명되었나요?”와 “이 서명이 유효한가요?”는 다른 질문이며, 두 번째는 디지털 서명에 대해서만 정확한 답을 가집니다. 페이지를 읽고 스탬프나 QR 코드를 보면 모델이 자신 있게 “signed”(서명됨)이라고 말할 수 있지만, 이는 암호학적 검증을 한 것이 아닙니다. 이를 방지하려면 에이전트에 구조화된 데이터를 반환하는 엔진을 제공하고, 에이전트가 판결이 아니라 데이터를 보고하도록 해야 합니다.

GroupDocs.Signature.Mcp 서버가 해당 엔진을 제공합니다. Claude Desktop, Claude Code, Cursor, GitHub Copilot 또는 다른 MCP 클라이언트와 함께 사용하면 로컬 프로세스로 실행되어, 에이전트가 렌더링된 픽셀을 추측하는 대신 파일에서 서명 데이터를 읽습니다.

잘못된 방법: 모델에게 문서를 보게 하기

PDF를 채팅에 붙여넣고 서명 여부를 물으면, 모델은 텍스트와 이미지를 보게 됩니다. 이름, 날짜, 손으로 그린 서명을 인식할 수 있지만, 파일의 암호학적 구조를 볼 수 없으므로 인증서 기반 서명과 그 사진을 구분하지 못합니다. 자신 있게 “yes, this is signed”(예, 서명되었습니다)라고 말하는 것은 외관에 대한 진술일 뿐입니다.

각 서명 유형이 실제로 증명하는 것

문서에서는 결과를 해석하는 방법을 명확히 설명하고 있으며, 에이전트는 이를 반복해야 합니다:

결과 의미
디지털 서명 유효 파일이 서명 이후 변경되지 않았으며, 인증서 체인이 유효합니다
디지털 서명 무효 파일이 서명 후 변경되었거나 인증서가 유효하지 않습니다
텍스트, QR 또는 바코드 “verified”(검증됨) 예상된 표시가 존재합니다. 변조 여부에 대해서는 아무것도 말하지 않습니다
서명을 찾을 수 없음 서명되지 않았거나, 이 형식이 지원하지 않는 방식으로 서명되었습니다

서명 유형을 명시하지 않은 답변은 겉보기에 비해 적은 정보를 제공합니다. 그래서 위 프롬프트는 “확인한 서명 유형을 말해 주세요”로 끝나는 것입니다.

올바른 방법: 판결이 아니라 기록을 요청하기

verify 도구는 text, qrcode, barcode, digital 또는 all 중 type을 받아 succeeded와 failed 카운트를 포함한 isValid를 반환합니다. 누가 어떤 인증서로 서명했는지는 알려 주지 않으므로 아래 기록을 대체하지 못합니다. verify와 search_digital_signatures 결과가 일치하지 않을 경우, 두 결과를 모두 보고하고 상세 기록에 의존하세요.

search_digital_signatures에서 제공되는 답변이 신뢰할 수 있습니다. 각 디지털 서명에 대해 서명자 이름, 발급자, 인증서 일련 번호, 유효 기간, 서명 타임스탬프, 유효 상태 및 서명에 첨부된 모든 주석을 반환합니다. 이것이 감사에서 요구하는 기록입니다. 답변이 의사결정에 사용될 때는 에이전트의 서술문보다 이 데이터를 보관하세요.

예시 세션 (축약)

You:    Who signed contract_signed.pdf, with which certificate, and when?
        Say which type of signature you checked.

Agent:  [search_digital_signatures] file=contract_signed.pdf
        Type checked: digital (certificate-backed).
        Signatures found: 1
        - Signer: Dana Whitfield, issued by Example Corporate CA, serial 4F2A91C7
        - Signed 2026-09-14 10:32; certificate valid 2025-11-01 to 2027-10-31
        - Status: isValid = true; signing time falls inside the certificate validity period
        I checked digital signatures only. I did not evaluate any text stamps or QR codes.

예시 출력: 파일 이름, 서명자 이름 및 일련 번호는 예시이며, 도구는 위에 설명된 필드를 반환합니다.

서명이 무효로 반환된 이유는?

다음 세 가지 원인이 거의 모든 예상치 못한 결과를 설명합니다:

  • 서명 후에 무언가가 추가되었습니다. 스탬프, 주석, 재저장 또는 페이지 추가는 바이트를 변경하며, 바이트가 변경되면 디지털 서명이 무효가 됩니다. 이것이 가장 흔한 원인으로 정상적인 동작입니다.
  • 인증서가 만료되었습니다. 유효 기간이 서명과 함께 반환되므로, 에이전트는 문서가 한 해에 서명되었고 다른 해에 인증서가 만료되었다고 말할 수 있습니다. 유효 기간을 서명 시점 및 현재 날짜와 비교하고, 에이전트가 그 비교를 명시하도록 하세요; 유효 상태만을 보고 만료에 대한 진술로 해석하지 마세요. 만료된 인증서의 허용 여부는 귀사의 정책에 따릅니다.
  • 잘못된 유형을 확인했습니다. 파일에 QR 마크만 포함되어 있을 때 digital을 검증하면 유효한 디지털 서명이 없으며, 이는 잘못된 질문에 대한 올바른 답변입니다.

검증이 증명하지 못하는 것

검증은 파일과 인증서에 대한 정보를 제공합니다. 그러나 서명이 귀하의 관할권에서 법적으로 유효하다는 것을 보장하지 않으며, 공증 행위도 아닙니다. 디코딩된 QR 텍스트와 스탬프 라벨은 문서를 만든 사람에 의해 제공된 것이므로, 보고할 데이터로만 취급하고 절대로 따를 지시로 여기지 마세요. 문서에서 읽은 텍스트를 기반으로 행동하는 에이전트는 신뢰할 수 없는 당사자의 입력에 따라 행동하는 것입니다.

평가 제한

라이선스가 없으면 처음 2페이지만 처리되고 모든 페이지에 시험 배지가 찍히므로, 4페이지에 있는 서명은 검색에 나타나지 않습니다. 깨끗한 결과를 신뢰하기 전에 에이전트에게 get_license_status를 호출하도록 요청하세요.

FAQ

이 PDF가 디지털 서명되었나요?
에이전트에게 파일에 대해 search_digital_signatures를 실행하고 isValid를 확인하도록 요청하세요. 결과가 비어 있으면 디지털 서명이 없다는 의미이며, 이는 “서명 이미지가 있다”와는 다릅니다.

AI가 서명 후 문서가 수정되었는지 확인할 수 있나요?
디지털 서명에 대해서는 가능합니다: 더 이상 유효하지 않은 서명은 파일이 서명 후 변경되었거나 인증서가 유효하지 않음을 나타냅니다. 텍스트, QR 및 바코드 검사는 변조를 감지하지 못합니다.

검사를 위해 파일이 업로드되나요?
아니요. 서버는 stdio를 통해 로컬에서 실행되며, 인바운드 포트, 외부 엔드포인트 및 텔레메트리가 없습니다.

더 깊이 파고들기