Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
claude-awm — LLMテキストの透かしをUnicode変異選択子を注入することで回避します。SynthIDジェネレーター、mean-g検出器、正規化防御、エントロピー実験を含みます。 | Kitploit
ツール/GitHubGitHub/aloshdenny/claude-awm
ステガノグラフィープライバシー機械学習AIセキュリティ敵対的攻撃
GitHubaloshdenny/claude-awm

claude-awm

LLMテキストの透かしをUnicode変異選択子を注入することで回避します。SynthIDジェネレーター、mean-g検出器、正規化防御、エントロピー実験を含みます。

リポジトリを見る
899821ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

claude-awm: テキストを編集してSynthIDテキスト透かしを除去できるか?

the dream, allegedly

できる。ただし機能する攻撃は一系統だけで、それは誰もが想定するものではない。

Unicodeの異体字セレクタ(カテゴリMn、U+FE00〜U+FE0FおよびU+E0100〜U+E01EF)は検出器を閾値未満に押し下げ、そのままそこに留まる。私が試した他のあらゆる不可視文字攻撃は、1行の入力正規化によって完全に元に戻される。異体字セレクタはそうならない。なぜならそれらは意味を持つコードポイント(絵文字の表示形式、CJKの異体字)であり、NFKCが畳み込まない、また畳み込むべきでもないものだからだ。

モデルとドメインをまたいで再現済み:

モデルドメインベースライン zvs16_30 適用後編集率
gpt-oss-20b散文45.030.7257%
gpt-oss-20bコード37.240.6858%
Qwen3.8-27B散文35.50-0.6757%

閾値は z = 2.33。3つすべてが攻撃後に閾値を下回り、正規化後も下回ったままである(それぞれ 0.09、0.45、-0.78)。テキストは人間の読者には同一に表示される。

2つ目の実際の知見は攻撃をまったく必要としない: 低エントロピーのテキストはそもそもほとんど透かしが入っていない。 思考を無効にすると、Qwen3.8-27Bの純粋なコード出力は攻撃なしで z = 4.31 を記録し、何も施していない状態で閾値2.33に近い。思考を再び有効にすると、同じモデル、同じドメイン、同じ長さで z = 25.53 に達する。推論の前置きが通常の散文であり、透かしを正常に担うからだ。

テストしたモデル

このリポジトリのすべては、以下でのみ測定されており、それ以外では測定されていない:

モデルパラメータ数実行環境実行内容
Qwen3.5-0.8B0.8BMac (MPS)攻撃ラダー全体、1k〜8k
Qwen3.5-4B4BMac / 4090攻撃ラダー全体 + エントロピー実験 + ステゴ生/正規化
DeepSeek-R1-Distill-Qwen-14B14BMac (MLX, 4-bit)透かし + 検出、推論トレース
gpt-oss-20b20B3090 / 4090 / RunPod32kまでの攻撃ラダー全体、散文 + コード、異体字セレクタ、131kまでの挿入率スケーリング則
Qwen3.8-27B27BRunPod H100 / Modal H100散文 + コード、異体字セレクタ、思考モードの対比
gpt-oss-120b120BModal H100 (MXFP4) / RunPod H1002k / 8k / 32kでの散文 + コード + 推論、65kまでの部分的な挿入率スケーリング
DeepSeek-V4-Flash284B MoERunPod 2x H200 (FP8)2k / 8kでの散文 + コード

すべての実験がすべてのモデルで実行されたわけではなく、以下の表はどれがどこで実行されたかを示している。興味深い問いが絞り込まれるにつれてより大きなモデルが追加されたため、攻撃ラダーは小さなモデルで広範にわたり、長さとドメインに関する作業は大きなモデルに集中している。

これは何か

Anthropic(そしてその前のGoogle DeepMind、SynthID-Text論文)は、鍵付きトーナメントでトークンサンプリングにバイアスをかけることで生成テキストに透かしを入れる。信号はどのトークンが選ばれたかに存在し、隠し文字にあるのではない。私はこれが、検索置換を手にした意欲的な人物に対してどれほど脆いかを知りたかったので、生成器と未学習の平均g検出器を構築し、それに対して攻撃を仕掛けた。

検出器の閾値は z = 2.33(偽陽性率1%)。これを上回る = 透かし検出。私は透かし入りテキストを生成し、攻撃し、再トークン化し、スコアリングした。すべての結果表にはroundtrip対照(攻撃されていない透かし入りテキスト)が含まれており、その行で検出器が実際に機能していることを確認できる。この研究の間に2度、バグによってすべてのzがゼロに崩壊したが、それを捉えたのはこの対照だけだった。

攻撃の範囲: 実際に機能するもの

攻撃対象領域はUnicodeカテゴリによって明確に分かれ、それが結局すべてだった。

機能する(カテゴリMn、非間隔記号):

攻撃内容編集率正規化を生き延びるか?
vs16_30約30%の文字の後に異体字セレクタ57%はい
vs16約10%の文字の後に異体字セレクタ23%はい (z 3.46)
vs_supp補助面のセレクタ (U+E0100+)24%はい (z 3.40)
homoglyphラテン文字aの代わりにキリル文字а (カテゴリLl)9%はい、ただし効果は弱い

機能しない(カテゴリ Cf、書式文字):

攻撃raw z正規化後 z判定
zwsp_30-0.0935.68完全に復元
combo0.9235.68完全に復元
bidi24.3735.68完全に復元
nbsp41.0446.51ほとんど変化なし

Cf 文字は意味的内容を持たない純粋な書式設定であるため、正規化器はそれらを一括で除去しても何も失わない。Mn 異体字セレクタは絵文字や CJK テキストにおいて実際の意味を持つため、一律に除去すると正当な文書を破壊してしまう。この非対称性こそが、一方のファミリーは正当化でき、もう一方はできない理由である。

実用的な範囲: 強力なベースラインを閾値以下に押し下げるには、文字のおよそ 20% 以上を改変する必要があるが、挿入される文字は不可視であるため、どの編集率でもテキストは通常どおり読める。視覚的に同一であることが検証済みである。詳細は src/fidelity_check.py を参照。4 つのファミリーは何も描画しない文字のみを挿入する。ホモグリフは正直な例外である(フォント依存であり、不可視であることは保証されない)。

機能しないもの:明白な手法

私の当初の懸念はありふれたものだった。em ダッシュや「and」から「&」への置換、マークダウンの除去が単純に機能し、ウォーターマークはセキュリティシアターに過ぎないのではないか、と。オンラインの多くの人々はまさにそう考えている。

それは機能しない。gpt-oss-20b における表層編集のはしご全体を、32k トークンまで試した結果:

攻撃編集率z @ 1kz @ 32k
roundtrip(対照)0%25.7104.3
em ダッシュからハイフンへ~0%26.4113.7
すべてのマークダウンを除去13.6%27.2103.3
AmE から BrE + 略語1.3%~28~100
各単語の 40% を削除38%4.925.4

このはしごを実行した 3 つのモデル(0.8B、4B、20B = 294 セル)を通じて、閾値を超えたセルはちょうど 1 つ だけだった。4B の最短長において各単語の 39% を削除したケースである。それは攻撃ではなく、文書の細断である。

研究全体で測定された総セル数:440(上記の攻撃はしごからの 294 に加え、散文を 131072 トークンまで拡張した以下のスケーリング則スイープからの 146)。

驚いたことが 2 つある:

  • 編集の回数は損傷を予測しないが、編集の幾何学は予測する。 すべてのマークダウンを除去しても(トークンの 13.6%)何も起こらなかった。むしろベースラインをわずかに上回るスコアだった。1.6% の散発的なスペース注入は、編集あたり 25 倍の損傷を与えた。マークダウンのマーカーは密集するため、それらの破損ウィンドウが重なり合い、その間の長い散文の連続がウォーターマークのシードを無傷で再生し続ける。トークナイザーの同期を崩す散在的な編集は、毎回新たなウィンドウにヒットする。
  • 長さは検出器に味方し、攻撃者には味方しない。 z は sqrt(tokens) のように増大する。「長いコンテキストで騙す」は逆である。32k は攻撃するのが最も難しいケースであり、最も簡単なケースではない。

完全なメカニズムと攻撃ごとの表は docs/FINDINGS.md にある。

検出器は待つことで勝つ

ウォーターマーク強度とコンテキストの関係

ウォーターマークの信頼度はコンテキストとともに増大する一方、トークンあたりの信号は一定のままであるため、長い文書は攻撃するのがより難しく、簡単ではない。散文はどの長さでも最も強いマークを運ぶ。DeepSeek-V4-Flash(破線)は 284B MoE 上で同じ上昇を再現する。

攻撃コストとコンテキストの関係

そして攻撃はそれに追従し続けなければならない。各セルは、8 つのランダムな挿入シードのうちいくつが検出器を打ち負かしたかを示す。10% の挿入は 1k トークンでは突破できるが、4k までには完全に失敗する。必要な挿入率はコンテキスト長とともに上昇する。これが攻撃がコンテキスト非依存でない理由である。

専用の追跡スイープがこれを明確にする。gpt-oss-20b において、1024 トークンから 131072(モデルの最大コンテキスト)まで、必要な率は p*(L) ≈ 2.37·log2(L) − 14.6 に従う——1k トークンでの 9.3% から 131k での 25.0% へと上昇する。

しかし決して追い越せない

100 万トークンまでの攻撃効率

では当然の次の疑問は、文書を十分に長くすれば最終的に検出器が完全に勝つのではないか、という点です。これを確かめるため、スイープを 1,048,576 トークンまで拡張しました。3モデル × 全コンテキスト長 × 挿入率で、上の各セルは5シードにわたる検出器 z の中央値であり、攻撃が勝った箇所(z < 2.33)はティール、透かしが生き残った箇所はオレンジで示しています。

答えはノーです。防御側の先行優位は拡大しますが、攻撃側のコストはより緩やかにしか増えません:

モデル測定した長さ最短時の p*最長時の p*倍増あたり
gpt-oss-20b16k – 131k19.0%24.5%+1.86 pp
gpt-oss-120b16k – 131k14.2%19.5%+1.91 pp
Qwen3.8-27B16k – 1,048,57614.7%22.4%+1.21 pp

ベースラインの透かし強度は √n のように上昇しますが、それを消すのに必要な挿入率は、コンテキストが倍増するごとにわずか約1.2〜1.9パーセントポイントしか上昇しません。測定した135の攻撃セルのうち、35%以上の挿入率にある45セルすべてが閾値を下回りました -- 最悪ケースは35%で z = 0.31、40%で z = 0.60 です。実際に必要とされた最高の挿入率は24.5%で、これは131kにおける gpt-oss-20b の値でした。16kから1Mトークンへ、つまり64倍への増加で、検出器が得たのは約8パーセントポイントにすぎません。

率直に述べておくべき注意点が2つあります。gpt-oss-120b の以前の「部分実行」は今回完了し、131kで測定された19.5%が、以前に4つの長さのうち3つから外挿された約20〜23%という数値を置き換えます。また、Qwen3.8-27B のベースライン z は7つの長さすべてで14.85のまま横ばいです -- これは文書の退化による真のアーティファクトであるため、その絶対的な強度の数値は信頼できないものとして扱ってください。それが示す長さスケーリングの傾向は他の2モデルと一致しており、上の表はそれを使用しています。完全な表、フィット、注意点は docs/FINDINGS.md § 14 にあります。

インタラクティブ版 →

インタラクティブ版を試す → 実際の研究サンプルをビフォー/アフターの切り替え表示で確認でき、さらに自分のテキストに攻撃変換を実行できるプレイグラウンドも用意しています。任意に貼り付けたテキストが本当に透かし入りかどうかを判定することはできません(それには我々が持っていない鍵が必要です)、そしてその旨が明記されています。生成スクリプトについては site/ を参照してください。

攻撃を必要としない発見

透かしはモデルのトークンごとの不確実性に乗っています。モデルが次のトークンに自信を持っている箇所では、トーナメントがそれを偏らせる余地がないため、信号が入りません。つまりマークは低エントロピーのテキストでは弱く、コードは低エントロピーです。

Qwen3.5-4B、散文 vs コード、512トークンのサンプル、攻撃は一切なし:

ドメインエントロピーz
散文1.19 bits/tok11.1
コード0.55 bits/tok5.0

z 比 0.45x、エントロピー比 0.46x、両者は連動しており、これがメカニズムそのものが表れている証拠です。8つのコードサンプルのうち3つが、単独で検出閾値以下まで低下しました。 最も際どいもの(素のアルゴリズム、0.2 bits/token)は1.7で、検出失敗でした。

スケールが大きくなるとさらに極端になります。攻撃を一切行わないベースライン z:

モデル散文コード比率
gpt-oss-20b45.0337.240.83
Qwen3.8-27B35.504.310.12

Qwen3.8-27B のコード出力はあまりにテンプレート化されているため、攻撃を受けていないクリーンな透かしが z = 4.31 にとどまり、2.33の閾値をわずかに上回るだけです。敵対者は不要です。

これが意味するのは、ドメインをまたいで単一の信頼度閾値を使うのは安全ではなく、短いコードスニペットはほぼ透かしを入れられないということです。JSON、設定、構造化抽出、定型文にも一般化できます。

防御側の要点

これらの検出器のいずれかを提供する場合、入力を正規化することで大部分は対応できますが、すべてではありません:

  1. Cfカテゴリの文字を除去する。ゼロ幅、双方向、およびそれらの組み合わせを排除します。これが最大の効果を生みます。
  2. NFKC フォールド。nbsp や互換形式を処理します。
  3. 異体字セレクタの範囲を明示的に除去する。 NFKC はこれをやってくれず、これが現在開いているギャップです。
  4. ホモグリフ用に Unicode confusables マップ(UTS-39)を保持する。これも NFKC では対応できません。

ステップ3と4は、素朴な正規化では見落とされるものです。

この研究の問題点 / 手が回らなかったこと

ギャップについて正直に述べます。

ツールをダウンロード