コンテンツの出所と真正性(C2PA)標準は、デジタルメディアに暗号署名を付加し、ファイルがいつどのように作成されたかを証明するために設計されている。典型的なC2PAマニフェストには2つの署名が含まれる:ファイルの特性(作成時間など)を証明する「クレーム」署名と、タイムスタンプ機関(TSA)による署名で、クレーム署名が特定のタイムスタンプ以前またはその時点に存在していたことを確認する。TSAは独立した証人として機能し、デバイスが自分の時計について嘘をつくことを防ぐ。ただし、C2PA仕様はまた「除外」も許可している:署名計算から除外されるファイル内のバイト範囲である。この機能は、署名を埋め込んだ後に内部チェックサムを更新しなければならないPNGなどのフォーマットに対応するために存在するが、重大な落とし穴をもたらす。除外されたバイトはどの署名によってもカバーされないため、攻撃者は署名後にそれらを自由に変更しても、クレーム署名またはTSAのタイムスタンプ証明を無効にすることはない。2026年10月2日に公開されたブログ記事で、David Buchanan(aka retr0id)はこの方法が「タイムハッキング」に悪用できることを示している。ファイル全体を除外するC2PAマニフェストを作成することで—バイト0から始まりファイルサイズ長さの除外範囲を設定することにより—クレーム署名は空文字列のハッシュ値に対して計算される。TSAはその後このクレーム署名に署名し、その空文字列ハッシュが選択された瞬間に存在していたことを主張する有効なタイムスタンプを生成する。作者は白い宝くじのチケットの写真を撮影し、このマニフェストを適用してTSAから信頼できるタイムスタンプを取得した。実際の宝くじの引き時間から数時間後、彼は画像を編集して当選番号を挿入した。除外領域がファイル全体を覆っていたため、署名は依然として有効であり、検証ツールは異常を検出しなかった。結果として得られた画像は引きよりも以前のタイムスタンプを表示するが、当選番号が写っており、これにより出所を実際に偽装している。Buchananはこの問題の修正が単純ではないと指摘している。ファイル全体を除外するマニフェストを拒否することは容易であるが、部分的な除外は依然として危険である:与えられた除外範囲が無害であるか(例えばPNGのチェックサム)、または意味のあるコンテンツを変更できるかを判断するのは困難である。彼は解決策は、各サポートされるファイルフォーマットについて除外可能なバイト範囲を明示的に定義し、検証ツールにこれらの制約を適用させることだと示唆している。そのような対策が採用されるまで、除外メカニズムは信頼できるタイムスタンプを保ったままC2PA署名付きメディアを検出不能に改ざんする有効な手段のままである。
HN Digest / · HN #49946707
C2PAの除外機能を悪用してタイムスタンプを偽装する方法
セキュリティ研究者は、C2PA標準の「除外」機能を悪用して空文字列に署名し、信頼できるタイムスタンプを保ったまま画像を後から改ざんできることを示す。ファイル全体を署名計算から除外することで、作者は抽選の引き時間よりも前に当選番号が写ったように見えるC2PA署名付き写真を作成したが、実際にはその結果が判明した後に番号を変更していた。

出典ページのスクリーンショット(da.vidbuchanan.co.uk)