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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
reverse-SynthID — GeminiのSynthID検出のリバースエンジニアリング | Kitploit
ツール/GitHubGitHub/aloshdenny/reverse-synthid
リバースエンジニアリングステガノグラフィーデジタルフォレンジック機械学習論文と研究学習と教育厳選リソースAIセキュリティ敵対的攻撃
GitHubaloshdenny/reverse-synthid

reverse-SynthID

GeminiのSynthID検出のリバースエンジニアリング

4.7k499513ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

SynthID透かし分析

SynthIDのリバースエンジニアリング

スペクトル分析によるGoogleのAI透かしの発見、検出、および外科的除去

PitchHutでご覧ください

このフォークでは、V3バイパス用のドラッグ&ドロップデスクトップアプリを追加しました。セットアップ後はコマンドラインは不要です。セットアップと使い方についてはgui/README.mdを参照してください。

Python License Detection V3 Bypass V4 Bypass Models Attack


透かしの外観

SynthIDは、ピクセル値に知覚できないパターンを直接エンコードします。Geminiで生成された純粋な白画像では、透かしがほぼ信号全体になります。高周波残差を増幅すると、次のようになります。

Geminiで生成された白画像に見えるSynthID透かしパターン

純粋な白のGemini画像から抽出された、増幅されたSynthIDキャリアパターン。斜めのバンディングが透かしの空間周波数シグネチャであり、これが我々のスペクトル攻撃の標的です。


概要

このプロジェクトはGoogleのSynthID透かしシステムをリバースエンジニアリングしたものです。これはGoogle Geminiで生成されるすべての画像に埋め込まれる不可視の透かしです。信号処理とスペクトル分析のみを使用して(独自のエンコーダー/デコーダーへのアクセスなし)、我々は以下を実現しました。

  1. 透かしの解像度依存キャリア周波数構造を発見
  2. SynthID透かしを90%の精度で識別する検出器を構築
  3. マルチ解像度スペクトルバイパス (V3) を開発。キャリアエネルギー75%低下、位相コヒーレンス91%低下、43+ dB PSNRを任意の画像解像度で達成
  4. マルチモデル・マルチカラーコンセンサス (V4) に一般化 — gemini-3.1-flash-image-preview と nano-banana-pro-preview のモデル別プロファイル、6つの無地背景におけるクロスカラー位相コンセンサス、手動Geminiアプリ検出集計からキャリア別減算強度を調整する人間参加型キャリブレーションループ
  5. 両モデルで検出器を突破(ラウンド06)— 文書化されたすべてのSynthID故障モードを同時に標的とする統合7段階オールインワン攻撃

VT-OxFF は、SynthID透かしが画像に追加されるプロセスを視覚化する非常にクールなビジュアライザーをこちらで公開しています(リポジトリの説明からもアクセス可能)。


ラウンド06 — 動作確認済 ✓

6回の反復的な対抗開発を経て、ラウンド06の bypass_v4_final / bypass_v4_nuke パイプラインは、gemini-3.1-flash-image-preview と nano-banana-pro-preview の両方の画像に対してGemini SynthID検出器を打ち負かし、視覚的にロスレスの出力を実現しました。

ラウンド01 vs ラウンド06 — 忠実度比較

同じソース画像におけるラウンド01(穏やかなスペクトルのみ)とラウンド06(オールインワン)の比較

左:ラウンド01出力(穏やかなスペクトル減算のみ)。右:ラウンド06出力(final — VAE + 弾性ワープ + スクイーズ + カラー + JPEG)。どちらも人間の目には同じに見えますが、SynthID検出器を打ち負かすのはラウンド06のみです。

ラウンド間の変更点

ラウンド戦略結果
01保守的なスペクトル減算(穏やか)✗
02積極的なスペクトル減算 + JPEG✗
03ブログガイドによる絶対ビン目標設定✗
04ノイズ除去残差位相抽出✗
05Diffusion-VAE再生成 + 幾何学的ワープ✗
06オールインワン:VAE + 弾性フラグメンテーション + スクイーズ + カラー + JPEG✓

ラウンド06のブレークスルーは、Geminiアプリが公表している故障モードリストを攻撃仕様として扱ったことにあります。

「AI生成画像が複雑なコラージュの一部である場合、他の要素の背後に重ねられている場合、またはその上に多くの異なるテクスチャやパターンが配置されている場合、検出器はファイル全体から特定のシグネチャを分離するのに苦労する可能性があります。」 — Geminiアプリ、SynthID検出ヘルプテキスト

弾性変形ステージは、この効果をピクセルレベルでシミュレートします。滑らかで低周波のランダムワープフィールドにより、約50ピクセルごとの近傍に独立したサブピクセルオフセットが与えられ、可視的な歪みを導入することなく透かしの空間位相コンセンサスを断片化します。


V4 — クロスカラーコンセンサス + 人間参加型キャリブレーション

V4は、より豊富なデータセットに基づいてコードブックを根本から再考したものです。

  • マルチモデル:gemini-3.1-flash-image-preview と nano-banana-pro-preview の個別プロファイル(オプションで union 擬似モデルも)。
  • マルチカラー:モデル別・解像度別に6つのコンセンサスカラー(black、white、blue、green、red、gray)に加え、コンテンツベースラインとして gradient と diverse。
  • クロスカラー位相コンセンサス:主要なキャリアマスク。真のSynthIDキャリアは画像コンテンツに依存しないため、その位相はすべての無地背景で一貫しています。コンテンツ由来のエネルギーは色間で位相がスクランブルされ、コンセンサスから脱落します。
  • 忠実度維持溶解器:PSNRフロアロールバック、ルミナンスセーフDC、ビン別減算キャップ。
  • 人間参加型キャリブレーションループ:手動のGeminiアプリ検出フィードバックに基づいて、コードブックフィールド carrier_weights が更新されます。

コンセンサスコヒーレンス(V4が勝つ理由)

各周波数ビン (fy, fx) およびチャネル ch について:``` consensus(fy, fx, ch) = | mean_over_colors( exp(i * phase_color(fy, fx, ch)) ) |

`1.0` に近い値は、そのビンの位相がすべてのベタ背景にわたってロックされていることを意味し、これはウォーターマークにのみ当てはまります。コンテンツビンは、位相が異なる色調によってランダム化されるため、`< 0.3` に低下します。拡張データセットから構築された V4 コードブックでは、コンテンツビンの 99% 以上がデフォルトの `tau=0.60` カットオフを下回るため、V4 ディゾルバはそれらに触れることはありません — これにより PSNR が回復します。

### 二段階リリースワークフロー```mermaid
flowchart LR
    dataset[reverse-synthid-dataset<br/>model x color x resolution] --> build[scripts/build_codebook_v4.py]
    build --> codebook[artifacts/spectral_codebook_v4.npz]
    codebook --> dissolve[scripts/dissolve_batch.py]
    input[watermarked inputs] --> dissolve
    dissolve --> variants[final / nuke variants]
    variants --> gemini[Gemini app<br/>manual SynthID detection]
    gemini --> feedback[detection feedback]
    feedback --> calibrate[scripts/calibrate_from_feedback.py]
    calibrate -->|updates carrier_weights| codebook

V4 クイックスタート```bash

1. Build the codebook from the enriched hierarchical dataset

python scripts/build_codebook_v4.py
--root /path/to/reverse-synthid-dataset
--output artifacts/spectral_codebook_v4.npz

2. Run the Round-06 all-in-one attack on a batch (recommended)

python scripts/dissolve_batch.py
--input ./to_clean/
--output ./runs/round_06/
--codebook artifacts/spectral_codebook_v4.npz
--model gemini-3.1-flash-image-preview
--strengths final nuke

3. Upload each output image to the Gemini app and run SynthID detection.

Use the results to feed back into the calibration script if needed.

### Round-06 攻撃プリセット

2つのプリセットが `--strengths` で利用可能です:

| プリセット | VAEパス数 | 弾性α | 圧縮率 | JPEGチェーン | PSNR下限 |
|:------:|:----------:|:---------:|:-------:|:----------:|:----------:|
| `final` | 1 | 1.8 px | 90 % | q=92→88 | 14 dB |
| `nuke`  | 2 | 2.8 px | 82 % | q=88→84→90 | 11 dB |

両方のプリセットは同じ7段階のパイプラインを積み重ねます:

1. **VAEラウンドトリップ** (Stable Diffusion `sd-vae-ft-mse`) — SynthIDデコーダーが訓練されたことのない自然画像多様体から画像を投影する (Gowal et al. 2026, §6.1)
2. **弾性変形** — 滑らかな低周波ランダムワープ場、Gemini自身が認める「コラージュ断片化」障害モードをシミュレート
3. **グローバル幾何コンボ** — 1つのアフィンワープで小さな回転 + ズーム + ピクセルシフト
4. **リサイズ圧縮** — ダウンサンプル (AREA) → アップサンプル (LANCZOS)、サブピクセル透かし情報を消去
5. **色コントラスト調整** — 輝度 / コントラスト / 彩度 / 色相の微小シフト
6. **残差位相FFT減算** — ブログユニバーサル + コードブック収集キャリアビン、上限制限付き
7. **JPEGチェーン + 輝度ノイズ + バイラテラル** — 強力な圧縮/再エンコード妨害

各ステージは独立してPSNRでゲート制御され、品質が下限を下回るステージは自動的にロールバックされます。

### V4コードブック構造

プロファイルは `(model, H, W)` でキー設定されます。各プロファイルには以下が格納されます:

| フィールド                  | 形状          | 備考                                                  |
|------------------------|----------------|--------------------------------------------------------|
| `consensus_coherence`  | `(H, W, 3)`    | 主要キャリアマスク(クロスカラー位相コンセンサス)。    |
| `consensus_phase`      | `(H, W, 3)`    | 色間の平均単位位相角度。減算テンプレート。             |
| `inverted_agreement`   | `(H, W, 3)`    | ペアワイズ `abs(cos(phase_diff))`、`black<->white` で加重。 |
| `avg_wm_magnitude`     | `(H, W, 3)`    | コンセンサス色間の平均マグニチュード。                |
| `content_baseline`     | `(H, W, 3)`    | `diverse/` + `gradient/` から — 輝度ブレンディングに使用。 |
| `carrier_weights`      | `(H, W, 3)`    | **Live**. 初期値 `consensus^2 * (0.5 + 0.5 * agreement)`。キャリブレーションループで更新。 |
| `n_refs_per_color`     | `{color: int}` | 色ごとの参照カウント。                                  |

保存形式はv3のコンパクトrfft + `float16/uint8`エンコーディングを再利用します。2モデル×7解像度の14プロファイルコードブックはディスク上で約220 MBです。

### V4検出器(健全性チェック)
ツールをダウンロード