C2PA Ingredient Manifest:明示的検証と再帰検証の確認方法
ファイルを保存し、確認する問いを限定する
C2PA対応validatorで開く前に、実際のassetを編集せず保存します。ファイル名または取得元URL、取得時刻、validator名と版、active-manifest label、全validation outputを記録し、ファイルと一緒に保管します。この表は再確認のための本文の提案であり、C2PAが要求する書式ではありません。
問いは、関連するingredient assertionをすべて処理したか、参照先のingredient manifestをたどったか、記録済みvalidation resultを返したかに限定します。Ingredient manifestはC2PAの系譜内にあるprovenance関係を示します。Caption、話者、場所、撮影時刻、描写された出来事の正確さは確定しません。
再帰追跡の前に明示的検証を確認する
C2PA 2.2ではingredient assertionにrelationship fieldが必要です。値はparentOf、inputTo、componentOfのいずれかで、欠落または別の値ならassertion.ingredient.malformedです。確認用copyで補正せず、file名から推測せず、そのまま記録します。
Standard manifestではrelationship値にかかわらず各ingredientを検証します。Update manifestではそのparentOf ingredientを検証します。Ingredient内のtime-stamp manifestはtime-stamp assertionを優先するため廃止されており、無視されます。三つの処理を別の行に残します。
Ingredient assertionごとに一行を使い、manifest label、assertion URI、relationship、activeManifest、claimSignature、validationResultsの有無、実際のsuccess、informational、failure codeを保存します。全体のpass/failだけでは、どのfieldや系譜段階の結果か分かりません。
参照先manifestを系譜全体で再帰的にたどる
仕様はasset内の全ingredient manifestを再帰的に検証するよう求めます。Depth-first searchは例であり、別の実装も同等の結果が必要です。Validatorは系譜全体のingredient-manifest hashed_uri一覧とredacted assertionのJUMBF URI一覧を作ります。
各manifestでclaimを見つけ、redactionを確認し、ingredient assertionのhashed URIを解決します。URIを解決できない、hashが一致しない、JUMBF Content boxが0だけの場合は次のassertionへ進みます。表示されていないcodeを推測せず、その段階の全出力を保存します。
activeManifestがある場合、version 1または2ではc2pa_manifestがある場合、active-manifestとclaim-signature参照を記録してそのmanifestへ進みます。FieldがなければrelationshipがinputToの場合を除きingredient.unknownProvenanceを返し、残りを処理します。Fieldの有無とrelationshipを一緒に残します。
新しい結果とvalidationResultsを照合する
Manifest labelが一致するredacted assertionがあればclaim-signature hash validation methodを使います。一致するredactionがなければmanifest hash methodまたはclaim-signature hash methodを使えます。Validatorが報告した方法を記録します。
Claim-signature methodは参照されたsignature boxとhashを確認し、claim signature、time-stamp、credential revocation、redactionされていないassertionを検証しますが、ingredient hard bindingは評価しません。Manifest-hash methodは参照先ingredient manifestを解決してhashを比較し、一致時にingredient.manifest.validatedを返せます。
validationResultsがあれば、記録にはあるが今回返らなかったentryと、今回だけ返ったentryの両方を返します。Version 3 ingredient assertionにactiveManifestがありvalidationResultsがなければassertion.ingredient.malformedです。記録済み結果と今回の結果を別欄に置いてから照合します。Compiled listにない追加manifestは対象外です。
Provenanceとmedia detectionを分けて保存する
最終記録にはasset、validatorと版、各relationship、再帰経路、方法、記録済みと今回のvalidation result、redaction、未解決参照、対応を含めます。次の担当者がcopyやbranchを推測せず同じ経路を再現できる状態にします。
保存したassetをDeepFakeCheckで分析する場合、確率的risk signalを別欄に置きます。自動検出には本物を疑う偽陽性と、合成または変更mediaを見逃す偽陰性があります。DeepFakeCheckはC2PA validatorを置き換えず、ここで扱うingredient validation codeを発行しません。
成功はその実行で確認したprovenance recordとreferenceに限られた技術結論です。失敗は調査すべき技術問題を示します。どちらも描写された出来事の真偽を証明しないため、original publicationと独立資料で現実の主張を確認します。
出典
- C2PA, “C2PA Technical Specification, Validate the Ingredients”: https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_validate_the_ingredients