서명 손상 감지

서명 손상 감지

서명 손상 감지

SignaturesCompromiseDetector은 이 가이드의 진입점으로, 서명된 문서의 개정 히스토리를 검사하여 마지막 서명이 적용된 이후에 내용이 추가되었는지 여부를 나타내는 지표를 찾아내고, 찾은 내용을 CompromiseCheckResult로 보고합니다. 이것은 지식 기반 클러스터가 다루는 보안 영역이며, 서명을 생성하거나 적용하는 것, 혹은 문서 암호화는 포함하지 않으며, 문서에 이미 존재하는 서명만을 검사합니다.


손상 검사 실행

검사하려는 문서를 사용하여 SignaturesCompromiseDetector을(를) 구성한 다음 SignaturesCompromiseDetector.check()을(를) 호출합니다. 이 검사는 문서에 이미 존재하는 모든 서명을 순회하며 마지막 서명된 개정 이후에 추가된 서명되지 않은 바이트를 찾습니다 — 이는 내용이 이후에 겹쳐졌을 수 있음을 나타내는 신호이며 — 나중에 추가된 포괄 서명에 의해 추가된 문서 보안 저장소나 아카이브 타임스탬프와 같은 정당한 장기 검증 자료는 허용합니다.


결과 해석

SignaturesCompromiseDetector.check()은(는) 네 개의 속성을 가진 CompromiseCheckResult을(를) 반환합니다:

  • CompromiseCheckResult.has_compromised_signatures — True은(는) 서명 중 하나라도 변조 지표를 보였을 경우입니다.
  • CompromiseCheckResult.compromised — CompromiseCheckResult.has_compromised_signatures를(을) 미러링하며, 읽기 전용 편의 별칭으로 제공됩니다.
  • CompromiseCheckResult.signatures_coverage — 탐지기가 문서에서 검사한 서명의 수입니다.
  • CompromiseCheckResult.reasons — 문서가 표시된 이유와 시점을 설명하는 짧은 문자열 목록입니다.

서명이 없거나 문서 자체가 없을 경우, CompromiseCheckResult.signatures_coverage가 0와 동일하게 보고되어 손상되지 않은 것으로 간주됩니다.


팁 및 모범 사례

  • CompromiseCheckResult.compromised와 CompromiseCheckResult.has_compromised_signatures를 서로 교환 가능한 것으로 취급하십시오 — 두 값은 항상 동일하게 보고됩니다.
  • CompromiseCheckResult.signatures_coverage를 확인한 후 False 결과를 신뢰하십시오: 0의 커버리지는 탐지기가 검사할 서명을 찾지 못했음을 의미하며, 기존 서명이 온전함을 확인한 것은 아닙니다.
  • CompromiseCheckResult.has_compromised_signatures가 True일 때 CompromiseCheckResult.reasons를 읽으십시오 — 목록은 어떤 휴리스틱이 트리거되었는지 설명하며, 로그를 남기거나 결과를 검토자에게 표시할 때 유용합니다.
  • SignaturesCompromiseDetector은(는) 변조 지표를 확인하기 위해 리비전 히스토리를 검사합니다; 자체적으로 암호 서명 무결성을 검증하지 않으므로, 워크플로에서 중요한 경우 문서 자체의 서명 검증 결과와 함께 사용하십시오.

일반적인 문제

문제원인수정
CompromiseCheckResult.signatures_coverage은(는) 서명된 것으로 알고 있는 문서에 대해 0입니다.SignaturesCompromiseDetector은(는) 문서 없이 생성되었거나, 문서 객체에 접근 가능한 서명이 없습니다.SignaturesCompromiseDetector에 전달된 문서가 서명을 노출하는지 확인한 후 SignaturesCompromiseDetector.check()을(를) 호출하십시오.
CompromiseCheckResult.reasons은(는) 설명을 기대했음에도 비어 있습니다.CompromiseCheckResult.has_compromised_signatures은(는) 이 문서에 대해 False입니다.위반 지표가 실제로 발견된 경우에만 사유가 채워집니다; 깨끗한 결과에서는 빈 목록이 예상됩니다
정당하게 업데이트된 PDF(예: 장기 검증 타임스탬프가 추가된 경우)는 손상된 것으로 표시됩니다후속 서명으로 완전히 커버되지 않았거나 검증 전용 자료로 인식되지 않은 경우, 나중에 추가된 내용은 완전하게 적용되지 않습니다적절한 커버링 서명 또는 타임스탬프에 의해 업데이트가 이루어졌음을 확인한 후 검사를 다시 실행하고, 특정 트리거에 대해 CompromiseCheckResult.reasons를 검사하십시오

FAQ

CompromiseCheckResult.compromised은(는) 실제로 무엇을 확인합니까?

이는 CompromiseCheckResult.has_compromised_signatures과 동일한 값을 보고합니다: SignaturesCompromiseDetector.check()이(가) 문서 서명 전체에서 변조 지표를 발견했는지 여부.

signatures_coverage이(가) 0인 경우 문서가 안전하다는 의미입니까?

아니요 — 검토할 서명이 발견되지 않았다는 의미입니다. SignaturesCompromiseDetector은(는) 볼 수 없는 서명에 대해 보고할 수 없으므로, 0 커버리지는 “검사할 것이 없음” 결과이며 무결성 확인이 아닙니다.

SignaturesCompromiseDetector이(가) 암호 서명을 생성하거나 검증할 수 있나요?

아니요. 이 클래스는 문서의 기존 개정 이력을 검사하여 마지막 서명 이후에 내용이 추가되었는지 여부를 나타내는 지표만 확인합니다. 서명을 생성하거나 적용하거나 암호학적으로 검증하는 것은 이 클래스의 범위 밖입니다.

서명 후에 정당한 타임스탬프를 추가하면 항상 손상 감지를 일으키나요?

반드시 그렇지는 않습니다. 탐지기는 이후에 추가된 내용이 후속 서명으로 보호되었거나, 새로운 콘텐츠가 아니라 검증 자료만 추가된 경우를 허용하도록 설계되었습니다. 예기치 않은 결과가 나타나면 CompromiseCheckResult.reasons를 확인하십시오.


API Reference 요약

클래스/메서드설명
SignaturesCompromiseDetector마지막 서명 이후에 서명된 문서의 변조 지표를 검사합니다
SignaturesCompromiseDetector.check()검사를 실행하고 CompromiseCheckResult를 반환합니다
CompromiseCheckResult침해 검사 결과
CompromiseCheckResult.compromised읽기 전용 별칭: CompromiseCheckResult.has_compromised_signatures
CompromiseCheckResult.has_compromised_signatures변조 지표가 발견되었는지 여부
CompromiseCheckResult.signatures_coverage검토된 서명의 수
CompromiseCheckResult.reasons발견 사항을 설명하는 짧은 문자열

참조

 한국어