DEV Community

Cover image for クロードの透かしはコピペや編集で残るのか?
Akira
Akira

Posted on Originally published at apidog.com

クロードの透かしはコピペや編集で残るのか?

手短に言えば、コピー&ペーストでは残る可能性があります。軽微な編集でも通常は残ります。一方で、大幅な書き換え、翻訳、数文への要約では失われることが多く、ファイルではバイトを書き換えた時点でメタデータが失われるため、答えはより明確に「いいえ」です。

今すぐApidogを試す

Anthropicはこの点をドキュメントで比較的直接的に説明しています。ウォーターマークは恒久的なタトゥーではありません。強度を持つ信号であり、通常のコンテンツ処理フローによって弱まることがあります。

💡 何が残り、何が失われるのかを理解することは、来歴の維持に依存する機能を実装するうえで重要です。APIパイプラインで検証する場合は、Apidogで往復テストを作成できます。

永続性の概要

コンテンツに何が起こるか テキストウォーターマーク C2PAファイルメタデータ
別のアプリにコピー&ペーストする 残る 該当なし
データベースに保存し、ページにレンダリングする 残る 該当なし
軽微な編集、数語の入れ替え 通常は残る 該当なし
大幅な書き換えまたは言い換え 多くの場合失われる 該当なし
他言語への翻訳 多くの場合失われる 該当なし
非常に短い抜粋に切り詰める 多くの場合失われる 該当なし
ファイルのサイズ変更、トリミング、再エンコード 該当なし 失われる
PNGをWebP、JPEGをAVIFへ変換 該当なし 失われる
スクリーンショットを撮影する 該当なし 失われる
画像CDN経由で配信する 該当なし 通常は失われる
再署名せずにバイトを変更する 該当なし 署名が破損し、検出可能

ここには、アーキテクチャに起因する2つの異なる耐久性プロファイルがあります。

テキストウォーターマークが伝播する理由

Claudeのテキストウォーターマークは、テキストに付加される外部メタデータではなく、テキスト自体に織り込まれています。レスポンス末尾の隠し文字列や、分離可能なメタデータブロックではありません。

この設計により、コンテナに依存しない性質が生まれます。Claudeからコピーした段落をGmail、Notion、WordPress、コミットメッセージ、Slackへ貼り付けても、信号はテキストとともに移動します。信号がテキストの表現そのものに含まれるためです。

Anthropicの説明では、ウォーターマークはテキストの一部であるため、コピー&ペースト時にテキストと一緒に移動し、一部の編集後も残る可能性があります。

重要なのは「一部の編集後も残る可能性がある」という条件です。

編集によって信号が弱まる理由

生成テキストに埋め込まれたウォーターマークは、多数の単語選択に分散した統計的パターンです。検出では、文章がそのパターンにどの程度一致するかを測定します。

  • テキスト量が多いほど、信号は強くなります。
  • 変更された単語が増えるほど、信号は弱くなります。
  • 残ったテキストが短いほど、信頼できる判定が難しくなります。

つまり、ウォーターマークの消失は二値ではなく段階的です。

数語の入れ替え

たとえば however を数か所で but に置き換えても、分散したパターンの一部しか失われません。通常、信号は維持されます。

大部分の文を書き換える

文の構造や単語選択を大きく変えると、パターンを担っていた選択肢の多くが置き換わります。その結果、検出の確信度がしきい値を下回る可能性があります。

全面的な言い換え

意味が同じでも新しい文章を生成した場合、元の表現に埋め込まれていたパターンは実質的に失われます。

翻訳

翻訳後の文章は元の文章と単語レベルでほとんど重複しません。Anthropicも、翻訳をマークが検出されない可能性があるケースとして挙げています。

ただし、Claude自身を翻訳に使用した場合、翻訳結果には翻訳プロセスで生成された新しいマークが付く可能性があります。

短い抜粋への要約

短いテキストでは、統計的に信頼できる信号を得るためのサンプル量が不足します。たとえば、2,000語の下書きから1文だけを引用しても、その文が未編集であっても検出できない可能性があります。

実装上は、次の非対称性を前提にしてください。

  • マークが検出された場合: 来歴に関する証拠になる
  • マークが検出されなかった場合: 人間作成やAI未使用を証明するものではない

この点が、Claudeのウォーターマークを検出する方法の核心です。

ファイルメタデータが残らない理由

C2PAの来歴メタデータは、テキストウォーターマークとは異なるアーキテクチャです。C2PA標準に従う、ファイルへ添付された暗号署名付きマニフェストです。

マニフェストには、たとえば次のような情報を含められます。

  • 誰が署名したか
  • どの編集が主張されているか
  • ファイルの来歴に関する情報

再署名せずにファイルのバイトを変更すると、署名検証は失敗します。これは改ざん検出には有効ですが、マニフェストがファイルコンテナに存在することが代償になります。コンテナを書き換える処理では、マニフェストも失われます。

以下の処理は、デフォルトではC2PAメタデータを破壊します。

  • Sharp、ImageMagick、Pillowでのリサイズまたはサムネイル生成
  • フォーマット変換
  • 画像エディタでの再保存
  • スクリーンショットの撮影
  • 自動最適化する画像CDN経由の配信
  • 取り込み時に画像を正規化するサービスへのアップロード

スクリーンショットは特に明確です。元ファイルを編集するのではなく、元のマニフェストと無関係な新しいファイルを生成します。

Anthropicは、フォーマット変換、再保存、スクリーンショットによるメタデータ除去を、Claude生成ファイルで検出可能なマークが見つからない理由として挙げています。

Googleは別のアプローチとして、マニフェストと並行してピクセル内にもウォーターマークを配置しています。これにより、C2PAでは耐えられないスクリーンショットにもSynthIDは対応できます。ベンダーごとの差分は、Claude vs ChatGPT vs Geminiのウォーターマークで確認できます。

重要なのは、画像の来歴を保証するなら「Claudeがファイルに署名したか」だけでは不十分なことです。確認すべきなのは、自分のパイプラインが署名を保持したかです。

そのため、APIがC2PAメタデータを削除していないかを往復テストで検証する価値があります。

検証結果はブール値にしない

C2PAの検証結果は、少なくとも次の3状態を区別してください。

状態 意味
マニフェストなし 来歴情報を確認できない
有効なマニフェスト 署名がバイトと一致している
破損したマニフェスト 再署名なしにバイトが変更された可能性がある

特に「破損したマニフェスト」は情報価値が高い状態です。true / false のような単純な値に集約すると、重要なシグナルを失います。

コンテンツチームへの実務上の影響

コンテンツを公開するチームでは、次の3点を運用に組み込む必要があります。

Claudeが下書きに触れると、下書きにはマークが付く可能性がある

校正、文章の圧縮、再フォーマットでも、Claudeの出力にはマークが付く可能性があります。元のアイデア、文章、データが別ソース由来であっても同様です。

「AIを使わないコンテンツ」というポリシーがある場合、文法チェックやリライトもポリシー対象として定義する必要があります。

マークは非難の証拠ではない

肯定的な検出結果は、全体がAIによって生成されたことを証明するものではありません。人間が全体を書き、コピー編集のみをClaudeに依頼したケースとも矛盾しません。

マークの除去を目的にしない

マークを確実に除去するには、結果的に大幅な書き換えが必要になります。来歴を隠すためだけの表面的な操作は避けるべきです。

公益に関するAI生成テキストを公開する展開者には、EU AI法第50条で開示義務が課される場合があります。罰金は1,500万ユーロ、または世界年間売上高の3%に達します。詳細はAPI開発者のためのEU AI法第50条を参照してください。

エンジニアリングチームへの実務上の影響

Claudeを組み込んだプロダクトでは、永続性プロファイルが約束できる来歴保証の範囲を決めます。

下流でのテキスト来歴を保証しない

現時点でテキストウォーターマーク自体を検証できず、将来検出機能が利用可能になったとしても、編集パイプラインを通過した後まで残ることは保証できません。

Claudeの出力を返すAPIなら、ウォーターマーク検出に依存するのではなく、レスポンスフィールドでAI利用を明示してください。独自のAPIにAI開示を追加する場合の設計例を確認できます。

ファイルの来歴は意図的に保存する

C2PAマニフェストを変換後も保持する方法は、基本的に次のいずれかです。

  1. 元のバイト列を変更せずにそのまま配信する
  2. 変換後に、適切なアクションアサーションとともに再署名する

多くの画像処理サービスは、デフォルトでこれを保証しません。

パイプライン境界をテストする

来歴が失われるのは抽象的な概念ではなく、パイプライン内の特定の変換処理です。既知の良好な署名付きフィクスチャを、実際のリクエスト経路で往復させて検出してください。

テストでは、入力時だけでなく出力時のバイトも検証します。

推奨テストシナリオ

  1. 署名済みのフィクスチャ画像をアップロードエンドポイントへ POST する。
  2. フロントエンドが利用する実際のURLから、CDN経由で GET する。
  3. 返却されたバイトに有効なマニフェストが残っていることを検証する。
  4. APIレスポンスが「存在しない」と「破損している」を区別していることをアサートする。

テストの考え方は次のようになります。

fixture (署名済み画像)
  -> POST /upload
  -> CDN経由でGET /images/{id}
  -> C2PAマニフェストを検証
  -> absent / valid / invalid をアサート
Enter fullscreen mode Exit fullscreen mode

Apidogでは、バイナリフィクスチャを保持し、アップロードと取得を1つのシナリオとして連結し、ポストレスポンススクリプトで結果を検証できます。その後、apidog-cliを使ってCIからシナリオ全体を実行できます。

実装手順は、multipart/form-dataを使用したファイルアップロードAPIのテストを参考にしてください。CIへの組み込みは、GitHub ActionsでのAPIテストの自動化と同じアプローチで実施できます。Apidogをダウンロードして、自分のスタックで検証してください。

よくある質問

Claudeのテキストをドキュメントにコピーしてもウォーターマークは残りますか?

はい。ウォーターマークはテキストの一部であるため、メール、ドキュメント、CMSフィールド、チャットへのコピー&ペーストに伴って伝播します。

編集するとウォーターマークは削除されますか?

軽微な編集であれば通常は検出可能です。大幅な書き換え、言い換え、翻訳ではしきい値を下回ることがあります。固定の割合はなく、元の表現がどの程度残っているかと文章量に依存します。

短い引用でウォーターマークが失われるのはなぜですか?

検出は統計的な処理であり、測定に十分なテキスト量が必要です。非常に短い文章では、信頼できる信号を得られない場合があります。

Claudeの出力を翻訳するとマークは削除されますか?

多くの場合は削除されます。翻訳後の文章は、元の文章と表現をほとんど共有しないためです。ただしClaudeを翻訳に使用した場合、翻訳後のテキストには新しいマークが付く可能性があります。

スクリーンショットはC2PAメタデータを保持しますか?

いいえ。スクリーンショットは元のマニフェストとは無関係の新しいファイルを生成します。

削除されたマニフェストと改ざんされたマニフェストを区別できますか?

はい。区別すべきです。マニフェストが存在しない状態と、再署名なしのバイト変更により署名検証に失敗した状態は、異なる意味を持ちます。

マークがないレスポンスは、人間が書いたことを意味しますか?

いいえ。古いモデル、大幅な編集、短い文章、削除済みのファイルメタデータ、未対応プラットフォームなどにより、AIが関与していてもマークが存在しないことがあります。不在は人間作成の証明にはなりません。

まとめ

Claudeのテキストウォーターマークは、コンテンツを別のコンテナへ移す操作には比較的耐性があります。一方で、短縮、翻訳、言い換え、大幅な編集には弱い性質があります。

C2PAメタデータは逆です。豊富な来歴情報を持ち、署名検証も可能ですが、リサイズや再エンコードなどのファイル変換で失われやすいものです。

そのため、来歴を扱う実装ではどちらか一方だけに依存しないでください。テキストでは開示を設計し、ファイルでは実際の配信パイプラインを往復テストして、どの境界でメタデータが失われるかを確認する必要があります。

Top comments (0)