DeepFake Check
블로그로 돌아가기
3분 소요

C2PA Actions Assertion 구조와 Ingredient 참조 검증 방법

Asset과 validator 전체 출력을 보존합니다

C2PA 호환 validator로 열기 전에 실제 asset을 그대로 저장합니다. 출처 URL 또는 local path, 입수 시각, 파일 식별자, validator 이름과 version, active manifest label, claim version, 전체 출력을 기록합니다. 이 표는 본문이 제안하는 실무 방식이며 C2PA가 정한 보고 형식은 아닙니다. 첫 실행 전에 다시 export하거나 screenshot으로 대체하지 않습니다.

Validator가 실제로 보고한 actions assertion만 검토합니다. Label이 c2pa.actions인지 c2pa.actions.v2인지, claim 안에서 어느 위치인지, action 값과 순서를 옮깁니다. 도구가 표시한 parameters, ingredients 또는 이전 형식의 ingredient, redacted, softwareAgent, softwareAgents, template field를 원문대로 보존합니다. 보이지 않는 field는 다른 파일이나 예상 workflow로 채우지 않고 미보고로 둡니다.

이 검토는 assertion 구조와 reference를 확인합니다. Manifest에 없는 편집 이력을 복원하지 않습니다. 통과해도 누가 action을 수행했는지, caption이 정확한지, 화면의 사건이 실제인지 증명하지 않습니다. 실패도 media가 거짓이라는 뜻이 아닙니다.

Actions field와 첫 action 순서를 확인합니다

c2pa.actions 또는 c2pa.actions.v2 label에는 actions field가 필요합니다. 없으면 claim은 assertion.action.malformed로 reject됩니다. Label, 관찰 field, 정확한 code를 같은 행에 기록합니다.

Action이 c2pa.created 또는 c2pa.opened이면 순서 조건도 적용됩니다. Version 2 claim에서는 해당 actions assertion이 created_assertions 또는 gathered_assertions array의 첫 actions assertion이어야 합니다. Version 1에서는 assertions array의 첫 actions assertion이어야 합니다. 해당 action도 그 assertion의 actions array에서 첫 element여야 합니다. 하나라도 맞지 않으면 assertion.action.malformed입니다.

Claim version, array 이름, assertion 위치, action 위치와 code를 별도 column에 둡니다. Validator가 전체 badge만 표시한다면 어느 순서 조건이 실패했는지 단정하지 말고 전체 출력을 보존합니다.

Action 종류에 맞는 ingredient reference를 풉니다

c2pa.opened, c2pa.placed, c2pa.removed에는 비어 있지 않은 parameters와 ingredient reference field가 필요합니다. Version 2는 ingredients, 이전 c2pa.actions 형식은 ingredient를 사용합니다. Version 2 field는 하나 이상의 element를 가진 array여야 합니다. 누락되거나 비어 있으면 assertion.action.ingredientMismatch입니다.

c2pa.opened는 current manifest에서 relationship이 parentOf인 ingredient assertion으로 해석되는 유효한 hashed URI 하나를 요구합니다. c2pa.placed는 current manifest에서 componentOf인 ingredient assertion으로 해석되는 유효한 hashed URI를 하나 이상 요구합니다. c2pa.removed도 componentOf를 요구하지만 다른 manifest의 ingredient assertion으로 해석돼야 합니다.

c2pa.transcoded 또는 c2pa.repackaged의 ingredient reference는 선택 사항입니다. 존재한다면 각 URI가 current manifest의 parentOf ingredient assertion으로 해석돼야 합니다. 조건에 맞지 않으면 assertion.action.ingredientMismatch입니다. URI 원문, 해석된 manifest, 보고된 relationship과 code를 기록하고 비슷한 이름의 ingredient로 바꾸지 않습니다.

Redaction과 icon 검사를 나눕니다

parameters object에 redacted field가 있으면 JUMBF URI를 확인합니다. URI가 없거나 assertion으로 해석되지 않으면 assertion.action.redactionMismatch입니다. Ingredient mismatch와 다른 reference이므로 결과도 분리합니다.

Action의 softwareAgent, actions map의 softwareAgents, 또는 template에 icon이 있으면 C2PA reference validation 절차를 적용합니다. Validator가 보여 준 결과만 기록합니다. Icon, agent 이름, template label은 action이 서술대로 일어났다는 증거가 아닙니다.

표에는 asset 식별자, manifest와 claim 식별자, assertion label과 위치, action과 위치, parameters 상태, ingredient 또는 redaction URI, 해석된 manifest, relationship, 정확한 code, validator version, 미해결 field를 둡니다. 전체 출력을 첨부하고 badge를 보이지 않는 field별 결과로 바꾸지 않습니다.

기술 결과를 진실 판정과 분리합니다

통과는 해당 validator 실행에서 actions assertion이 이 구조와 reference 규칙을 만족했다는 제한된 관찰입니다. Claim signature, certificate, assertion hash, asset binding, ingredient manifest는 별도 검사입니다. Publisher, 인물, caption, 날짜, 장소와 사건은 원 출처와 독립 자료로 확인합니다.

보존한 asset을 DeepFakeCheck로 분석할 경우 확률적 signal을 C2PA 표 밖에 두고 실제 파일에 연결합니다. 자동 탐지는 진짜 media를 잘못 표시하는 오탐과 합성·변경 media를 놓치는 미탐을 낼 수 있습니다. DeepFakeCheck는 actions assertion을 검증하거나 본문의 C2PA failure code를 발행하지 않습니다.

출처

  • C2PA, “C2PA Technical Specification, C2PA Actions Validation”: https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_c2pa_actions_validation

혹시 AI가 만든 이미지인가요?

고정밀 딥페이크 탐지 도구로 이미지를 바로 분석해 보세요.

이미지 분석하기