GitHubで公開されたAI透かし除去ツール『watermarks-remover』が、わずか5日で9,650スターを突破した。ChatGPTが仕込む不可視のUnicode透かしから、png/jpegに埋め込まれたC2PA署名まで、ワンクリックで剥がす。AI真贋判定の基盤が崩れる中、エンジニアは何を設計し直すべきか。仕様書レベルで読み解く。
何が起きたか
guillaumemeyer氏がGitHubに公開した「watermarks-remover」が、公開から5日で9,650スターに到達した。このツールが対象とするのは大きく3系統ある。第一に、ChatGPTなど大規模言語モデルが出力テキストに混入させる不可視Unicode文字(ゼロ幅スペースU+200B、異体字セレクタなど)の除去。第二に、統計的透かし(トークン選択バイアスによる検出)を崩す書き換えフック。第三に、png/jpegファイルに埋め込まれたC2PA署名およびEXIF等のメタデータ剥離である。特筆すべきは、単一ベンダー対応ではなく「マルチベンダーのprovenance marks」を横断的に処理する設計思想だ。AI検出ツールを回避したいライターやマーケターの需要が背景にあるが、エンジニア視点で見るとこれは「AI由来コンテンツの検知基盤そのものの脆弱性検証ツール」と位置付けられる。
なぜこのニュースが重要か
C2PA(Coalition for Content Provenance and Authenticity)は、Adobe・Microsoft・OpenAIらが推進する画像出所証明の業界標準だ。仕様上、png/jpegの特定チャンク(pngならiTXt/tEXt、jpegならAPP11マーカー)に署名付きマニフェストを格納する。つまり、コンテナフォーマットの仕様を知っていれば、該当バイト列を削除するだけで署名は消える。これは「暗号学的に破る」のではなく「単に捨てる」だけの話であり、C2PAはそもそも改ざん耐性を持たない設計だ。改ざんを検出するのが目的であって、除去を防ぐのが目的ではない。この点、業界の広報が「AI生成の証明」と誤解を招く形で流布してきたツケが、9,650スターという数字で可視化された。エンジニアがまず認識すべきは、C2PAは「署名が残っていれば真正性を主張できる」positive assertionであり、「署名がないから偽物」とは言えないnegative assertionには使えないという非対称性である。
技術的な深掘り
pngのチャンク構造を読めば、C2PA署名の脆弱性は自明だ。png仕様(RFC 2083準拠)では、caBXという補助チャンク(ancillary chunk、小文字始まりで無視可能)にC2PAマニフェストが格納される。仕様上、未知の補助チャンクはデコーダが自由に破棄してよいと定められている。つまりImageMagickで-stripオプションを付けるだけ、あるいはPillowで再保存するだけでC2PA署名は消滅する。watermarks-removerが行っているのは、この「仕様通りの挙動」を自動化しているに過ぎない。テキスト側も同様で、Unicode透かしはNFKC正規化と\p{Cf}(Format文字)除去の正規表現一発で剥がれる。より厄介なのは統計的透かし(Aaronson方式など)で、これはトークン選択の確率分布に偏りを埋め込む方式だが、LLMによるパラフレーズを一段挟むだけでエントロピーが撹拌され検出不能になる。要するに、現行の透かし技術はすべて「知らない人にしか効かない」レベルの防御であり、暗号学的な保証は皆無だ。
経営者として次に取るべき動き
第一に、社内の本人確認・書類審査フローからC2PA単独依存を排除せよ。png/jpegのメタデータやAI検出APIのスコアだけで承認を出しているワークフローがあれば、即座に監査対象にすべきだ。9,650スターのツールが出回った今、悪意ある提出者はすでにstripを済ませている前提で設計する。第二に、検証フローに「非機械的チェックポイント」を最低1つ残す。電話での本人確認、対面での書類原本確認、社内担当者の目視レビューなど、コスト増を許容してでも人間の判断を挟む工程を明文化する。第三に、自社が発信するコンテンツについては「透かしで守る」発想を捨て、DNS・独自ドメインの署名済み配信URL・ハッシュチェーンなど「発信元側のインフラで真正性を担保する」方式へ移行せよ。守りを埋め込むのではなく、正規ルートを認証する設計が唯一機能する。
