文書ID: miura-verification-workflow-note-v3
公開予定場所: /verification/spec/workflow-v3/
公開日: 2026-04-09 JST
ステータス:
workflow-v3 — 公開後は変更しない。改定時は v4 を新設する。
運営者: 有限会社三浦商店(宮城県黒川郡大和町)
v2 からの変更点:Route V(検証用 JPEG 公開・公開後検証・detected→valid 昇格)を追加した。
本ノートは、施工写真・動画の公開前後に行う半自動ワークフローのうち、公開 artifact の生成、C2PA Phase 1 の公開統合(Route V を含む)、公開、公開後確認の骨格を第三者が把握できるようにするための公開文書である。
本ノートは以下に適用される。
以下は範囲外である。
公開対象の選定は人が行う。
選定後の命名、manifest 生成、bundle
生成、OTS、publish、公開後確認は半自動で行う。
両 OS は内部の実行経路が異なっても、公開契約は一致しなければならない。
1. オペレータが公開対象の写真・動画を選定する
2. 命名と作業ディレクトリ準備を行う
3. 公開画像群・manifest.json・bundle_manifest.json を生成する
4. C2PA Phase 1 情報を public bundle に統合する
4a. Route V 対象写真を選定し、内部記録に保存する
5. bundle_manifest.json の exact bytes に対して OTS receipt を取得する
6. publish staging を組み立てる(Route V 対象案件では verification JPEG を配置)
7. サーバーへ同期し、公開 URL で取得確認する
7a. Route V: verification JPEG の公開後検証(SHA-256 + c2patool trust)
7b. Route V: detected → valid 昇格
8. 必要に応じて onchain follow-up を行う
9. WordPress が _miura_job_id を使って render-time injection を行う
10. live HTML と公開 artifact の整合を確認する
google_ca.pem内部中間成果物の構成は省略する。公開される成果物は §6 の公開ディレクトリ構造を参照。
代表的な処理:
代表的な処理:
manifest.json を生成するbundle_manifest.json を生成する(verification_jpeg_rel を含む)video_proof_public.json を生成するC2PA 対応案件では、次の 8 段を生成する。
c2pa_summary_{seq}.jsonbundle_core.source_assets[]bundle_manifest.json top-level
c2pa_provenance/verification/jobs/{JOB_ID}/{filename}.jpg)detected → valid 昇格(Step 03 で実行されるが、論理的には C2PA 統合の最終段)公開仕様として重要なのは 第3段、第5段、第6〜8段 である。
代表的な処理:
google_ca.pem を含む全公開ファイルの hash
を照合するc2patool trust --trust_anchors google_ca.pem で C2PA 署名検証を実行するvalidation_state = Trusted を確認するdetected → valid に昇格するc2pa_verification_jpeg_url の最終公開判定は WordPress の render-time injection で行い、公開後 trust 検証に合格した場合のみ出力される(技術仕様書 v5 §8.7 参照)。
代表的な処理:
onchain_hinted.json を配置する注: verification_jpeg_rel は bundle_manifest.json
の c2pa_provenance(OTS stamp 後の書き換えは行わない)に書き込まれているため、verification_jpeg_rel の値も OTS 保護対象に含まれる。
WordPress は _miura_job_id を起点に公開 artifact
を読み、最終 HTML に verification JSON を注入する。
photo-proof/1BlogPosting JSON-LDc2pa-proof/1(c2pa_provenance
があり、かつ source_assets[] が空でない案件)video-proof(動画案件)Route V の verification JPEG は記事ページの表示には使用しない。記事で表示される画像は AVIF であり、verification JPEG は /verification/jobs/{JOB_ID}/ 配下の検証専用 artifact である。
Windows では image-only 中心の既存経路を用いてもよいが、公開 bundle と公開 HTML の契約は macOS と一致しなければならない。
Route V の実行経路: Windows 側では、publish tree への verification JPEG 配置と公開後 trust 検証を Windows 用スクリプト群が実行する。
macOS では統合ランナーを中心に、写真・動画・bundle・OTS・publish を統合実行してよい。
Route V の実行経路: macOS 側では、画像処理エントリポイントが Route V 選定を行い(raw-only モード)、統合ランナーが配置と公開後 trust 検証を実行する。
両 OS で共通に満たすべき点:
manifest.json の公開契約が一致するbundle_manifest.json の公開契約が一致するsource_assets[] と job_provenance_summary
の母集団が一致する_miura_job_id 起点の render-time injection
契約が一致するc2pa_verification_jpeg_url の出力有無が一致する| 条件 | photo-proof/1 | BlogPosting JSON-LD | c2pa-proof/1 |
|---|---|---|---|
| C2PA 対応案件(来歴情報あり) | 出力 | 出力 | 出力(注) |
| C2PA 非対応案件(来歴情報なし) | 出力 | 出力 | 出力しない |
| pre-C2PA 案件 | 出力 | 出力 | 出力しない |
注: Route V 条件を満たし、かつ公開後 trust 検証に合格した案件では、c2pa-proof/1.artifacts に c2pa_verification_jpeg_url が追加される。
過去案件の canonical artifact を C2PA 対応のためだけに書き換えない。
公開後は少なくとも次を確認する。
bundle_manifest.json が取得できるmanifest.json が取得できるvideo_proof_public.json が取得できる/verification/jobs/{JOB_ID}/ から取得可能であることphoto-proof/1 が存在するBlogPosting JSON-LD が存在するc2pa-proof/1 が存在するc2pa-proof/1 の job_provenance_summary が
bundle_manifest.json と整合するc2pa-proof/1.images[] の件数が
source_assets[] と整合するpublished_asset_sha256 がある場合、photo-proof/1.images[] の同一 seq の sha256 と一致するc2pa-proof/1.artifacts.c2pa_verification_jpeg_url が存在するbundle_manifest.json.bundle_core.source_assets[] の対応 seq の source_asset_sha256 と一致する次のようなケースでは公開側または注入側で fail-closed となりうる。
manifest_sha256 や bundle_chain_hash
が合わないsource_assets[] と summary count が一致しないc2pa-proof/1
を整合的に構成できない公開 HTML では c2pa-proof/1
を出さないことで安全側に倒してよい。
ただし生成工程側では、PEM 不在や hash 契約違反のような重大条件は hard
fail とするのが望ましい。
Route V の例外:
Route V の trust 検証失敗、c2patool 不在、validation_state != Trusted は、Route V レーンに限って non-fatal とする。この場合、verification JPEG への参照は public disclosure から省略し、c2pa_status は detected のまま維持する。canonical artifact(manifest.json / bundle_manifest.json / OTS receipt)の整合性が満たされる限り、案件全体の公開は継続してよい。
_miura_job_id 起点の参照方式c2pa-proof/1 の存在条件source_assets[] と c2pa_provenance
の公開関係c2pa_verification_jpeg_url の出力条件(公開後 trust 検証合格時のみ)workflow-v4 を新設する