DeepFake Check
ブログに戻る
DeepCheckAI Team 6 分で読めます

C2PA Assertion Hashed URI:欠落とハッシュ不一致の確認方法

ファイルとvalidatorの全出力を保存する

C2PA対応validatorで開く前に、実際のファイルを編集せず保存します。取得元URLまたはローカルpath、ファイル名、取得時刻、validator名と版を記録し、全出力をファイルと一緒に保管します。この表は再確認しやすくするための本文の提案であり、C2PAが要求する書式ではありません。

問いを限定します。Claim内の各assertion referenceが同じC2PA Manifest内で解決できるか、assertion dataがclaimに記録されたhashと一致するかを調べます。これはprovenance recordの内部完全性に関する問いです。Caption、話者、場所、撮影時刻、描写された出来事の正確さは確定できません。

Claimと各assertionにローカル識別子を付け、labelとstatus codeをそのまま記録します。色のbadgeや全体のpass/failだけでは、missing reference、outside-manifest reference、data形式エラー、hash mismatchを区別できません。

Hash確認の前にURIを一件ずつ解決する

C2PA 2.2では、claimのcreated_assertionsgathered_assertionsの各項目はhashed_uri構造です。Version 1 claimはassertions fieldを使います。Gathered assertionもclaimの一部なので、同じvalidation algorithmで確認します。

最初にURIがredacted assertionsに含まれるか確認します。Claimは自分のmanifest内のassertionをredactできません。それ以外はurl fieldを解決し、実際の位置を保存します。Referenceは同じC2PA Manifest内のself#jumbf locationを指す必要があります。Manifest外ならassertion.outsideManifest、URIを解決してdataを取得できなければassertion.missingです。

二つをまとめません。assertion.outsideManifestは許可されたmanifest境界を越えたreferenceで、assertion.missingはreferenced dataを解決、取得できない結果です。どちらもファイルを変更した人物や理由を説明しません。

Assertion storeに存在するのにclaimのassertion arrayから参照されない項目も記録します。C2PAのcodeはassertion.undeclaredです。Claimが宣言したものとして記録に追加しません。

Algorithmを特定してJUMBF hashを比較する

URIを解決したら、仕様のalgorithm determination手順に従います。Validatorが使ったalgorithmとfailure codeを記録します。次にC2PAが示すJUMBF box hashing手順でassertion hashを計算し、hashed_urihash fieldと比較します。

不一致はassertion.hashedURI.mismatch、一致はassertion.hashedURI.matchです。大文字小文字を含むcode、assertion label、resolved URI、algorithm、表示されたdigest情報を保存します。表示されないfieldは「未表示」とし、success badgeから推測しません。

Hash matchが示すのは、選択したalgorithmで計算したassertion dataとclaimの記録値が一致したことです。Assertion内の記述がすべて現実に正しいという意味ではありません。Mismatchもmediaが合成されたことや出来事が虚偽であることを証明しません。

Data形式の失敗を別欄に残す

C2PAはreferenceとhashの後にも検査します。Standard assertionがwell-formed CBORでなければassertion.cbor.invalid、JSONが非準拠ならassertion.json.invalidです。assertion.missingやhash mismatchとはvalidation stageが異なるため、別の欄に置きます。

表はassertionごとに一行とし、claim識別子、array名、assertion label、URI、redaction状態、resolved location、algorithm、hash result、data-format result、未解決事項を記録します。二つのcopyを比べるときは、各ファイルの表を別々に完成させます。空欄はその実行で表示または発見されなかったという意味です。

結果が不完全ならファイルを保存し、版を記録したvalidatorで再実行します。可能ならpublisherが保持するoriginalや独立に取得したcopyと比較します。観察した差だけを報告し、C2PA codeから動機、作者、現実の原因を推測しません。

Provenance完全性、検出、事実確認を分ける

保存ファイルをDeepFakeCheckで分析する場合、確率的risk signalを別欄に置きます。DeepFakeCheckはC2PA assertion URIを解決せず、JUMBF hashを検証せず、C2PA status codeを発行しません。自動検出には本物を疑う偽陽性と、合成・変更mediaを見逃す偽陰性があります。

高riskは追加確認の理由ですが、低riskはmissing assertionを修復せず、ファイルを認証しません。assertion.hashedURI.matchも記録されたassertion integrityだけを支え、scene、caption、話者、掲載contextを確認しません。それらはoriginal publicationと独立資料で調べます。

最後に正確なファイル、validatorと版、assertion別の表、全出力、外部資料、使用したdetector output、未解決事項と対応を残します。次の担当者が技術的な完全性結果を出来事の真偽判定に変えず、URIとhashの確認を再現できる状態にします。

出典

  • C2PA, “C2PA Technical Specification — Validate the Assertions”: https://spec.c2pa.org/specifications/specifications/2.2/specs/C2PA_Specification.html#_validate_the_assertions

この画像、AIで作られたかも?

高精度のディープフェイク検出ツールで、画像を今すぐ分析しましょう。

画像を分析する