C2PA Manifest Assertion 규칙: Standard와 Update Manifest 검토법
파일을 보존하고 manifest 유형을 확인합니다
C2PA 호환 validator로 열기 전에 실제 asset을 그대로 저장합니다. 출처 URL 또는 local path, 입수 시각, 파일 식별자, validator 이름과 version, manifest label, 전체 output을 기록합니다. 이 기록표는 반복 가능한 검토를 위한 본문의 실무 제안이며 C2PA가 요구하는 보고 형식은 아닙니다.
질문을 하나로 제한합니다. 해당 manifest가 유형별 필수 assertion을 포함하고 금지된 assertion을 제외했는지 확인합니다. C2PA 2.2는 standard manifest와 update manifest에 서로 다른 구조 규칙을 둡니다. 파일명이나 화면 내용으로 유형을 추정하지 말고 validator가 보고한 값을 옮깁니다. 도구가 유형을 표시하지 않으면 미보고로 남기고 다른 문서화된 validator 실행을 위해 전체 output을 보존합니다.
구조 검사는 각 assertion 내용의 유효성 검사와 분리합니다. 허용된 assertion도 별도 validation이 필요할 수 있습니다. 구조 실패만으로 asset을 누가 만들거나 변경했는지, 변경 이유, 화면 속 사건의 진실을 알 수 없습니다.
Standard manifest의 assertion 수를 셉니다
Standard manifest에는 content에 대한 hard binding이 정확히 하나 있어야 합니다. 이 절에서 허용하는 항목은 c2pa.hash.data, c2pa.hash.boxes, c2pa.hash.collection.data, deprecated c2pa.hash.bmff.v2, c2pa.hash.bmff.v3입니다. Hash 결과를 해석하기 전에 label과 개수를 기록합니다. Hard binding이 없으면 claim.hardBindings.missing, 둘 이상이면 assertion.multipleHardBindings입니다.
이어서 relationship이 parentOf인 c2pa.ingredient assertion을 셉니다. Standard manifest에는 0개 또는 1개만 허용됩니다. 둘 이상이면 manifest.multipleParents로 reject됩니다. 모든 ingredient를 parent로 세지 말고 각 relationship을 별도 행에 옮긴 뒤 parentOf만 집계합니다.
Standard manifest에는 c2pa.created 또는 c2pa.opened action이 정확히 하나의 actions assertion 안에 있어야 합니다. 해당 action을 포함한 assertion을 기록합니다. Validator가 전체 badge만 보여 주면 그 화면은 보존하되 표시되지 않은 assertion별 결과를 만들어내지 않습니다.
표에는 manifest label, 보고된 유형, assertion label, relationship 또는 action, 관찰 개수, 요구 개수, validator code, 미해결 질문을 둡니다. 마지막 badge의 screenshot만 쓰지 말고 전체 output으로 표를 채웁니다.
Update manifest에는 별도 규칙을 적용합니다
Update manifest에는 relationship이 parentOf인 ingredient assertion이 정확히 하나 있어야 합니다. Parent가 없거나 여러 개이거나 relationship 값이 다르면 manifest.update.wrongParents입니다. 실제 값과 개수를 함께 보존해 어느 조건이 관찰됐는지 남깁니다.
Update manifest에는 c2pa.hash.data, c2pa.hash.boxes, c2pa.hash.collection.data, deprecated c2pa.hash.bmff.v2, c2pa.hash.bmff.v3, thumbnail assertion이 없어야 합니다. c2pa.hash.multi-asset도 허용되지 않습니다. 금지 assertion이 있으면 manifest.update.invalid가 사용됩니다. 같은 code가 여러 규칙에 쓰이므로 문제가 된 label을 정확히 기록합니다.
하나 이상의 c2pa.actions 또는 c2pa.actions.v2 assertion이 있다면 각 action 값은 Update Manifests 절이 지원하는 값이어야 합니다. Validator가 표시한 값과 반환 code를 보존합니다. 알 수 없는 값을 익숙한 action으로 바꾸거나 도구가 보여 주지 않은 allow-list 결과를 추정하지 않습니다.
이 규칙은 manifest 유형과 assertion 조합의 적합성을 확인합니다. Signature, credential, assertion hash, asset binding, ingredient validation을 대신하지 않으므로 후속 결과는 별도 행에 둡니다.
기술 결과와 사건 판단을 분리합니다
최종 기록에 실제 파일, manifest 유형, assertion 목록, 개수, relationship, action, 정확한 code, validator version, 전체 output, 다음 확인 작업을 남깁니다. 다른 담당자가 어떤 manifest와 copy를 검토했는지 추측하지 않고 같은 목록을 다시 만들 수 있어야 합니다.
저장한 asset을 DeepFakeCheck로 분석한다면 확률적 risk signal을 C2PA 구조 표 밖에 보관합니다. 자동 탐지는 진짜 media를 의심하는 오탐과 합성 또는 변경 media를 놓치는 미탐을 낼 수 있습니다. DeepFakeCheck는 manifest 유형을 판정하거나 위 C2PA 구조 code를 발행하지 않습니다.
Assertion 조합이 규칙을 통과했다는 결과는 해당 validator 실행에서 유형별 구조 조건을 만족했다는 제한된 관찰입니다. 실패는 조사할 특정 구조 문제를 가리킵니다. Caption, 인물, 날짜, 장소, 사건 주장은 원 게시자와 독립 자료로 따로 확인합니다.
출처
- C2PA, "C2PA Technical Specification, Validate the correct assertions for the type of manifest": https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_validate_the_correct_assertions_for_the_type_of_manifest