C2PA Claimの位置と構造エラーを確認する方法
ファイルとvalidator出力を保存する
C2PA validatorで開く前に実際のファイルをそのまま保存します。入手元URLまたはlocal path、取得時刻、ファイル識別子、validator名とversion、current manifest label、全出力を記録します。同じbytesとversionを特定できなければ、後の結果で最初の確認を再現できません。この表は実務上の提案で、C2PA指定の報告形式ではありません。
問いを限定します。許可されたclaim boxを一つ見つけ、構造をparseし、claimが必要とするreferenceを解決できたかを確認します。これはclaim signatureの暗号学的検証やassertion内容の検証より前の段階です。構造の合格はcaption、人物、日付、場所、出来事の真実性を証明しません。構造エラーもそれらが虚偽だと証明しません。
Claim boxが一つだけか確認する
Current manifestを特定した後、validatorはclaim JUMBF Superboxを探します。Version 2はc2pa.claim.v2、旧形式はc2pa.claimというlabelです。両方ともJUMBF type UUID 6332636C-0011-0010-8000-00AA00389B71、つまりc2clを使います。ファイル名からversionを推測せず、報告されたlabelとUUIDを記録します。
Current manifest内には一つだけ存在できます。複数ならclaim.multipleでrejectされます。数と正確なcodeを保存します。赤いbadgeだけでは、claimの欠落、アクセス不能、構造不正と区別できません。数が表示されない場合は未報告とし、別validatorで再確認できるよう全出力を残します。
これはactive manifestの探索とは別です。前段はどのmanifestがcurrentかを決め、ここでは内部のclaimを探します。両方の識別子を表に残し、どのobjectで失敗したか追跡できるようにします。
CBORと必須fieldを確認する
Claim内容はwell-formed CBORである必要があります。C2PAはRFC 8949 Appendix Cを参照します。無効なCBORはclaim.cbor.invalidです。Transport、編集、generatorを原因と推測せず、codeをそのまま保存します。このcodeは失敗した構造検査を示すだけです。
c2pa.claim.v2 objectには必須fieldがあります。一つでも欠けるとclaim.malformedでrejectされます。claim_generator_infoに必須のnameがない場合も同じcodeです。Validatorが欠落fieldを表示したら記録します。claim.malformedだけならfield名を作らず、詳細を表示するtoolで確認する未解決事項とします。
Generator informationのiconはreferenceなので、仕様のreference規則で検証します。Icon、tool名、versionがあることは、すべてのprovenance記述が正しい証明にはなりません。
Signatureとassertion referenceを分ける
Claimのsignature fieldからURIを読み、COSE signatureへ解決します。Signatureは同じmanifest内にembeddedされなければなりません。許可されたself#jumbf locationではなくC2PA Manifest box外を指す場合、claimはrejectされます。暗号学的検証に進む前にURI、解決結果、codeを保存します。本文はsignature値、certificate chain、time-stamp、revocationの検証を代替しません。
限定した結果を報告する
ファイル識別子、manifest label、claim label、box数、CBOR結果、必須field、signature URI、validator code、version、未解決事項を一つの表にし、全出力を添付します。claim.multiple、claim.cbor.invalid、claim.malformedを後続のsignatureやassertion failureと区別できます。
保存したassetをDeepFakeCheckでも分析する場合、確率的risk signalはC2PA構造表の外に置きます。自動検出には本物を疑う偽陽性と、合成・変更mediaを見逃す偽陰性があります。DeepFakeCheckはclaim boxを探さず、本文のC2PA codeも発行しません。
構造合格が支えるのは、そのvalidator実行でcurrent manifestのclaimが位置と構造の検査を通過したという限定的な記録です。失敗は調査すべき技術条件を示します。Publisher、caption、人物、日付、場所、出来事は元の公開情報と独立資料で確認します。
出典
- C2PA, “C2PA Technical Specification, Locating and Validating the Claim”: https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_locating_and_validating_the_claim