C2PA Manifest 상태: Well-Formed, Valid, Trusted 구분법
상태 이름보다 먼저 파일과 결과를 보존합니다
C2PA 호환 validator로 보존된 파일을 열고 badge나 요약 문구가 아니라 전체 출력을 저장합니다. 파일명 또는 출처 URL, 입수 시각, validator 이름과 버전, active-manifest label, 표시된 모든 status code를 기록합니다. 이 표는 반복 가능한 검토를 위한 본문의 제안이며 C2PA가 요구하는 서식은 아닙니다.
질문은 이번 실행에서 active manifest가 어느 validation state의 조건을 충족했는지, 그리고 어떤 검사가 그 상태를 뒷받침하는지로 제한합니다. C2PA의 관계는 계층적입니다. Trusted manifest는 모두 Valid이고, Valid manifest는 모두 Well-Formed입니다. 반대 방향은 성립하지 않습니다.
Manifest 상태를 asset이나 화면 속 사건에 관한 주장과 분리합니다. C2PA는 content binding이 포괄하는 asset 부분이 active manifest 생성 이후 변경되지 않았고 active manifest가 Valid 또는 Trusted일 때 asset을 Valid로 설명합니다. 이 결과도 포괄된 bytes와 provenance 검증에 관한 것이며 caption, 신원, 장소 또는 사건의 사실성을 확정하지 않습니다.
Well-Formed 조건부터 확인합니다
Manifest 내용이 validation process가 확인하는 규범 요구사항을 지키고, 해당 manifest type에 허용된 assertion만 포함하며, 각 assertion과 ingredient가 각각의 요구사항을 충족하면 Well-Formed입니다. 네 항목을 별도 행으로 만들고 validator가 표시한 결과를 그대로 옮깁니다.
도구가 세부 항목을 보여 주지 않으면 통과했다고 추정하지 말고 “표시되지 않음”으로 남깁니다. Well-Formed는 구조와 규칙 준수 상태이며 Valid의 전제입니다. Manifest가 서명 이후 변경되지 않았는지, claim signature와 validity period가 통과했는지, signer가 trusted인지까지 말하지는 않습니다.
Valid에 필요한 검사를 추가합니다
Valid manifest는 먼저 Well-Formed여야 합니다. 이어서 서명 이후 manifest가 변경되지 않았다는 validation 결과가 필요합니다. Claim signature는 claimSignature.validated, validity-period 검사는 claimSignature.insideValidity success code를 받아야 합니다.
Signer credential은 signingCredential.ocsp.revoked 또는 signingCredential.ocsp.unknown failure code로 거부되지 않아야 합니다. Signature, 시간, revocation 결과를 각각 다른 줄에 둡니다. 서로 다른 기술 질문에 답하지만 모두 Valid 조건에 포함됩니다.
Manifest가 Valid이면 claim은 claim의 claim_generator_info field에 표시된 claim generator에 귀속될 수 있습니다. Field를 그대로 기록하되, 그 도구가 실제 사건을 목격했거나 assertion의 모든 서술을 확인했다는 뜻으로 확대하지 않습니다.
Trusted에는 signer trust가 더 필요합니다
Trusted는 Valid 조건에 signingCredential.trusted success code를 추가합니다. Validator가 Valid를 표시했지만 이 code가 없다면 익숙한 publisher나 software 이름만 보고 Trusted로 올려 쓰지 않습니다.
Trust 결과는 validator의 trust 설정에도 연결됩니다. 명세는 accepted Extended Key Usage 값과 각 값에 대한 X.509 trust anchor 목록을 유지하도록 요구합니다. c2pa-kp-claimSigning EKU의 anchor에는 C2PA Trust List가 포함되지만 목록은 비어 있을 수 있고 사용자가 추가 anchor를 설정할 수도 있습니다. 표시되는 validator 버전과 trust context를 함께 기록합니다.
Manifest label, Well-Formed 항목, signature integrity, validity period, revocation, signer trust, 최종 상태, 미해결 항목을 표의 열로 두면 “trusted”라는 한 단어가 근거 검사를 가리지 않습니다.
상태와 현실 주장을 분리해 결론을 남깁니다
Success, informational, failure status code 목록과 validation state를 합치지 않습니다. Status code는 개별 검사 기록이고 Well-Formed, Valid, Trusted는 요구 조건에서 도출한 상태입니다. Valid manifest와 content-binding 결과가 추가되는 Valid asset 조건도 별도로 둡니다.
보존된 파일을 DeepFakeCheck로 분석하면 확률적 risk signal을 다른 영역에 저장합니다. 자동 탐지는 실제 media를 의심하는 오탐과 합성 또는 변경 media를 놓치는 미탐을 낼 수 있습니다. DeepFakeCheck는 C2PA manifest state나 validation code를 발행하지 않습니다.
낮은 risk는 Well-Formed manifest를 Valid 또는 Trusted로 바꾸지 않습니다. Trusted manifest도 화면 속 사건, caption 또는 화자 신원을 증명하지 않습니다. 원 게시물과 독립 자료로 현실 주장을 따로 확인하고, 마지막에 파일, 전체 출력, 상태별 필수 검사, trust context, 가능한 content-binding 결과와 실제 조치를 남깁니다.
출처
- C2PA, “C2PA Technical Specification, Validation states”: https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_validation_states