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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
reverse-SynthID-text — テキスト用SynthIDのリバースエンジニアリング | Kitploit
ツール/GitHubGitHub/aloshdenny/reverse-synthid-text
リバースエンジニアリングステガノグラフィー暗号化機械学習論文と研究学習と教育AIセキュリティ敵対的攻撃
GitHubaloshdenny/reverse-synthid-text

reverse-SynthID-text

テキスト用SynthIDのリバースエンジニアリング

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

SynthID ウォーターマークのリバースエンジニアリング

SynthID ウォーターマーク解析

概要

このディレクトリには、AI 生成テキストから SynthID ウォーターマークを分析・除去するためのツールが含まれています。このウォーターマークは Google DeepMind によって開発され、Nature (2024) に掲載されました。

SynthID の仕組み

ウォーターマーク埋め込みプロセス

  1. N-gram コンテキスト: 各トークン位置について、SynthID は直前の ngram_len - 1 トークン (デフォルト: 4 トークン) をコンテキストとして考慮します。

  2. ハッシュ計算: 以下を元にハッシュを計算します:

    • コンテキストトークン
    • 候補となる次のトークン
    • 秘密のウォーターマーク鍵のセット (デフォルトで 30 個)
  3. G 値の割り当て: ハッシュを使用して、各キーレイヤーにおける可能な次のトークンそれぞれにバイナリの g 値 (0 または 1) を割り当てます。

  4. 確率の修正: g 値 = 1 のトークンが有利になるようにトークン確率を修正します:

    new_prob[i] = prob[i] * (1 + g[i] - mean(g * prob))
    
  5. サンプリング: モデルは修正された分布からサンプリングします。

検出プロセス

  1. テキストをトークン化する
  2. 各 n-gram について、同じ鍵を用いて g 値を計算する
  3. 平均 g 値が有意に > 0.5 の場合、テキストはウォーターマーク付きと判定される

脆弱性

1. パラフレーズ攻撃 (最も効果的)

効果: 90-100%

ウォーターマークは特定のトークンシーケンスに埋め込まれており、意味には埋め込まれていません。ウォーターマークのないモデルでパラフレーズを行うと、トークンシーケンスが完全に再生成されます。

from reverse_synthid import ParaphrasingAttack
attack = ParaphrasingAttack(model_name="gpt2")
clean_text = attack.paraphrase(watermarked_text)

2. トークン置換攻撃

効果: 50-70%

トークンを同義語に置き換えることで、n-gram パターンを崩します:

from reverse_synthid import TokenPerturbationAttack
attack = TokenPerturbationAttack()
clean_text = attack.substitute_synonyms(text, rate=0.3)

3. ホモグリフ攻撃

効果: 95-100%

文字を視覚的に同一の Unicode 文字に置き換えることでハッシュを崩します:

from reverse_synthid import HomoglyphAttack
attack = HomoglyphAttack()
clean_text = attack.apply_homoglyphs(text, rate=0.1)

4. N-gram 境界シフト

効果: 30-50%

単語の挿入や削除により、後続のすべての n-gram 境界がシフトします:

from reverse_synthid import TokenPerturbationAttack
attack = TokenPerturbationAttack()
clean_text = attack.insert_fillers(text, rate=0.1)

ファイル

  • reverse_synthid.py - 複数の手法を含むメインの攻撃ツールキット
  • analyze_watermark.py - ウォーターマーク検出・解析ツール
  • test_removal.py - ウォーターマーク除去を実演するテストスクリプト

使い方

ウォーターマークの解析

python analyze_watermark.py --input text.txt --verbose

ウォーターマークの除去

# パラフレーズを使用 (最も効果的、モデルが必要)
python analysis/reverse_synthid.py --input text.txt --output clean.txt --method paraphrase

# 摂動を使用 (モデル不要)
python analysis/reverse_synthid.py --input text.txt --output clean.txt --method perturb

# 複合攻撃を使用
python reverse_synthid.py --input text.txt --output clean.txt --method combined

テストの実行

python analysis/test_removal.py

SynthID ウォーターマーク付きテキストと除去後のテキストの比較

比較

技術的詳細

重要な洞察: ウォーターマークは脆弱である

ウォーターマークは以下に依存します:

  1. 正確なトークンシーケンス - トークンへの変更は n-gram に影響を与える
  2. コンテキストウィンドウ - トークンの挿入はすべてのコンテキストをシフトさせる
  3. ハッシュ関数 - 異なるバイトは異なるハッシュを生成する

パラフレーズが機能する理由

テキストをパラフレーズする場合:

  1. 意味内容は保持される
  2. しかし、正確なトークンは完全に異なる
  3. n-gram ハッシュは完全に異なる
  4. g 値のパターンが破壊される

理論的解析

長さ N、ウォーターマーク強度 W のテキストについて:

  • 置換率 r は信号を約 1 - (1-r)^(ngram_len) だけ減少させる
  • 挿入率 r は N*r 個の n-gram 境界をシフトさせる
  • パラフレーズ は本質的に W → 0 に設定する (完全な再生成)

制限事項

  1. パラフレーズにより意味のニュアンスが変わる可能性がある
  2. 単純な攻撃は検出される可能性がある
  3. 将来のウォーターマークはより堅牢になる可能性がある

免責事項

このコードは教育および研究目的のみに使用されます。より堅牢な手法を開発するために、ウォーターマークスキームの脆弱性を示すものです。

参考文献

  1. Dathathri et al. "Scalable watermarking for identifying large language model outputs." Nature 634, 818-823 (2024).
  2. https://github.com/google-deepmind/synthid-text
ツールをダウンロード