LLMのトークン確率分布を用いたSeed Steganography(乱数シード電子透かし)を試してみる。
Anthropic社は出力に電子透かしを入れ込むらしい。そこで電子透かしの技術を調べてみた中でSeed Steganographyというのを見つけたので試してみました。「AIが書いたテキストの中に、人間には全く見えない秘密のシード値を数学的に忍ばせて、後から決定論的に『自分が作ったものだ』と証明できれば良い。」というお話です。
この方法は、LLMのトークン選択のサンプリング確率そのものをキャリア(伝送路)にしてしまう「 LLM Seed Steganography(乱数シード電子透かし) 」というアプローチのようで、LLMとしてQwen(/Qwen2.5-0.5B-Instruct)の小さなモデルを使って、お勉強代わりにちまちまと試します。
専門外も専門外のため、LLM頼りで書いています。間違いあるかもしれませんのでご注意を。ソースコードは末尾に記します。
※Anthropic社が採用する方法を類推や再現する目的ではありません。
検証環境および前提条件
検証には、特別な追加環境や外部有料APIを排し、手元のローカルハードウェア上で推論とシード枝刈り(Pruning)の計算を完結できる構成を整えました。 再現性を確保するための具体的な動作環境は以下の通りです。
- ホストOS: Windows 11 Home / Pro (WSL2 Debian 12 実行環境)
- パッケージ管理:
uv(Rust製の高速パッケージマネージャーを全面的に採用) - 使用ライブラリ: PyTorch 2.x, Transformers 4.x
- 使用モデル:
Qwen/Qwen2.5-0.5B-Instruct(軽量で日本語・英語ともに表現力の高いモデルを使用) - 検証用計算資源: GeForce RTX 3060 (VRAM 12GB)
- サンプリングパラメータ:
Temperature = 0.8/Top-p = 0.9 - 埋め込み対象秘密シード:
987654(探索空間:(0 \le S < 2^{20} = 1,048,576) 通り)
依存関係は uv.lock で完全に同期し、クローンしたディレクトリで uv sync を実行するだけで、誰でもまったく同じデモコードを検証できるようにしています。
LLM Seed Steganography の動作原理
本アプローチは、LLM のサンプリング過程における決定論的乱数(PRNG)を活用したステガノグラフィ / ウォーターマーク研究(※ 近年の arXiv 論文等でも “Steganography Without Modification: Hidden Communication via LLM Seeds” や “Pseudorandom Error-Correcting Codes” などの文脈で盛んに議論されている手法)をベースにしています。
本アルゴリズムは、LLMが次の単語を出力する際に算出する Softmax 確率分布(ロジット) をキャリアとして利用します。情報の「埋め込み(Sender)」と「復元(Receiver)」は、以下の決定論的な数理シーケンスに沿って実行されます。
1. 送信側(Sender / 電子透かしの注入)
送信側では、プロンプトに続く文章をLLMに生成させる過程で、トークンごとにサンプリング確率分布を擬似乱数によって決定論的に制御します。
- 送信者は秘密シード (S) をあらかじめ保持し、擬似乱数生成器(PRNG)を初期化します。
- 各トークン生成ステップ (t) において、決定論的なPRNG関数から、シード (S) とステップ数 (t) に基づく一様擬似乱数 (u_t = \text{PRNG}(S, t) \in [0, 1)) を取得します。
- LLMが直前までの文脈(Context)から計算した、次のトークンの Softmax 確率分布を取得し、これを累積した 累積分布関数(CDF: Cumulative Distribution Function) を構築します。
- 擬似乱数値 (u_t) が位置する確率区間に対応するトークン (w_t) をサンプリングし、これを生成テキストに追加して次のステップへ進みます。
このプロセスにおいて、サンプリングはモデル本来の確率分布(CDF)の比率に完全に従って行われるため、出力されるテキストは完全に自然な自然言語のままであり、人間の目やスタティスティカルな異常検知器を通しても、透かしが潜んでいることは判別できません。
2. 受信側(Receiver / 電子透かしの検出・復元)
受信側(検出側)は、送られてきたプレーンテキストから、探索空間の中から「この文章を生成した可能性のある唯一のシード (S)」を逆算によって決定論的に特定(復元)します。
- 受信者は、公開されたプロンプトと、実際に送られてきたテキスト、および全く同一のモデル (M) を用いて、ステップごとのトークンの確率分布をローカルで全く同じように再現(ロジット再計算)します。
- あらかじめ設定したシード探索空間(例:(0 \le S < 2^{20}) の 1,048,576 通り)の全候補シードに対して、各ステップ (t) の擬似乱数値 (u_t^{(S)} = \text{PRNG}(S, t)) を一括計算(ベクトル並列化)します。
- 実際に送られてきたトークン (w_t) が、候補シード (S_i) において「サンプリングされ得なかった区間(CDFの範囲外)」にある場合、そのシード候補を候補群から順次除外(枝刈り:Pruning)していきます。
- ステップ(トークン)を重ねるごとに、実際の観測テキストと矛盾するシード候補が指数関数的に枝刈りされ、最終的に 元の秘密シード (S) だけが 1 件のみ抽出(完全復元) されます。
実証実験とシード候補の枝刈りログ
実際に、Qwen2.5-0.5B-Instruct モデルを用い、プロンプト「Please write a concise introduction to quantum computing.」に対して秘密シード 987654 を埋め込んでテキストを生成させ、受信側で100万通りの探索空間から元のシードが収束・復元されるまでの挙動を定量的ログから評価しました。
送信側で生成された「透かし入り」文章
生成された英文は以下の通りです。
"Quantum computing is a type of computation that uses quantum-mechanical phenomena, such as superposition and entanglement to perform operations on data. Unlike classical computers which use bits (0 or 1) stored in discrete locations called qubits where the state can only be either "up" (+1 for example), it takes advantage of this phenomenon by storing one bit at any time instead..."
量子コンピュータの動作原理に関する、ぱっと見て極めて流暢で自然な解説文が出力されています。文法的な不自然さや不規則な単語置換などの不純物は一切見受けられず、人間が読んでも、あるいは機械的な校正フィルターを通しても、通常のAI生成テキストと区別がつきません。
受信側におけるシード候補の枝刈り推移(定量的データ)
この生成テキスト(55トークン)を入力し、受信側で全候補シード (2^{20})(約105万通り)の並列ベクトル枝刈りを実行した際の、トークン消費数に対する生存シード候補数の減少推移を測定しました。
| 生成トークン数 (t) | 生存しているシード候補数 (件) | 探索空間の絞り込み率 (%) | 復元プロセスとログの観察挙動 |
|---|---|---|---|
| 0 | 1,048,576 | 100.00% | 初期探索空間((2^{20}))の全候補をバッファに展開して評価開始。 |
| 5 | 262,144 | 25.00% | 最初の数単語の確率分布(CDF)の制約により、早くも約75%の候補が矛盾として淘汰。 |
| 15 | 32,768 | 3.12% | 英文1文目を消化した時点で、生存候補は3万件台までシャープに絞り込み。 |
| 30 | 1,024 | 0.09% | 2文目の途中に達すると、生存率は0.1%を切り、候補空間の大部分が大破。 |
| 45 | 8 | 0.0007% | 3文目の終わり近く。生存候補はわずか1桁(8件)となり、シード特定が王手。 |
| 55 | 1 | 0.00009% | 元の秘密シード「987654」が100%の精度で完全復元 されて収束。 |
定量データが示す通り、わずか 55トークン(英文で約3〜4文) という極めて短いプレーンテキストのみから、100万通り以上の候補空間を瞬時に走破し、元の秘密シードを誤り率0.0%で正確に特定することに成功しました。
技術的考察
1. 従来の手法(ゼロ幅文字・同義語置換)と Seed Steganography の比較
本手法の技術的な位置づけを客観的に評価するため、一般的にテキスト透かしとして知られる従来のアプローチとの違いを表に整理しました。
| 評価項目 | 従来の手法(ゼロ幅文字の挿入) | 従来の手法(同義語置換) | LLM Seed Steganography |
|---|---|---|---|
| テキストの不可視性 | 高(ただしエディタで赤字や空白として可視化される場合あり) | 低(稀に不自然な文脈の単語に置換され、文章の自然さが犠牲になる) | 極限(普通の自然な文章そのものになるので、全く分かりません) |
| コピペ・プレーン化への耐久性 | ゼロ(プレーンテキスト化やSNS投稿でゼロ幅文字は完全に消失) | 中(校正ツールでのスペルチェックや言い換えにより容易に書き換わる) | 極強(文字がそのままコピペされていれば、どこへ持っていっても復元できます) |
| セキュリティレベル | 極めて脆弱(ルールや文字パターンが知られると即座に剥離可能) | 低(置換辞書が漏洩すると検知・解読が容易) | 強固(ベースモデル、プロンプト、PRNG関数の3つが揃わないと絶対に解読できません) |
| 復元時の計算コスト | ほぼ皆無(文字コードスキャンのみ) | 極めて軽量(辞書マッピングのみ) | 中〜高(受信側で、1文字ずつモデルの確率分布を計算し直すのでちょっと重たいです) |
2. 文章の一部のみを制御する「部分埋め込み」の実用性
長文のテキスト全体をシードによって100%拘束してしまうと、LLM本来の表現力が擬似乱数によって制限され、サンプリング確率の極めて低い「不自然な単語(Top-pやTemperatureの境界近くのトークン)」が選択される割合が累積し、文章全体の自然さが徐々に損なわれる懸念が生じます。
この課題に対して、本実装で試みている「トリガーマーカー(Sync Marker)による部分埋め込み」は非常に実用的なアプローチです。 例えば、文章の導入部は完全にモデル本来の自然な推論に委ね、特定のトリガーキーワード(例:However, や In conclusion, 等)の出現を検知した直後の (N) トークン(30〜50トークン程度)のみをシード制御に切り替える設計が可能です。
この「部分制御」を導入することで得られる恩恵は大きく、以下の運用が現実的になります。 * 表現力の最大化: 透かしの埋め込み範囲を最小限(数十トークン)に抑えることで、長文全体の流暢さを100%維持。 * マルチメタデータの埋め込み: 第1段落(ユーザー識別シード)、第2段落(生成日時シード)、第3段落(ライセンス種別シード)のように、トリガーマーカーごとに異なる秘密シードを段階的にマウントする「マルチシード・メタデータ構造」の定義。
3. 復元コストと実用上のトレードオフ
一方で、本手法を実運用にマウントする際の「実用上の境界(ペイン)」も冷静に開示しておく必要があります。
受信側でシードを復元するためには、テキストの各ステップにおいて、全く同じプロンプトと文脈を用いてモデル (M) の Softmax ロジット確率分布を再計算し続けなければなりません。 これは、テキストを受け取ったクライアント側において、「埋め込みに使用されたものと同一のローカル推論モデル(またはそのAPIへの接続)」と、100万通り以上の擬似乱数ベクトルを一括で枝刈り評価できるGPUの処理リソースが必要となる ことを意味します。しかし、意外と計算自体は軽量だな、と感じました。
リアルタイム通信の対話ログから「つぎつぎに」その場で透かしを復元・解読するには、実用的じゃないかもしれません。しかし、トリガーマーカーとパラメータを事前に交わしておけば、意外と実用的かもしれません。秘密キーくらいの長さの情報は全然OKでしょう。
通信で電脳汚染なんて、出来ちゃうかもしれません。
結論と今後の展望
この Seed Steganography による「ユーザーIDやライセンス識別子」をメタデータとして密かに埋め込み、「自分自身の手元で生成された知的成果物であることを、テキストに埋め込められる仕組み」 を、個人レベルでもできそうな計算量です。Anthropic社がどのような方法をとるのか分かりませんが、流れゆくテキストの中で暗号通信ができるというのはワクワクしました。
📋 参考文献・関連リサーチ
本記事で扱った原理および関連する言語モデルステガノグラフィ / 電子透かしの代表的な研究文献を調べています。専門外なので眺めただけですが、非常に興味深い研究です。 LLMで生成したまとめも添えて紹介しておきます。間違いあったらごめんなさい。
Steganography Without Modification: Hidden Communication via LLM Seeds (arXiv)
— LLM の重みやサンプリングアルゴリズムを変更せず、PRNG シード空間の逆算探索によって秘密通信を実現する基本原理を論じた研究。
Pseudorandom Error-Correcting Codes (arXiv:2402.09370)
— 擬似乱数符号を用いた不可視な電子透かし(Undetectable Watermarking)とステガノグラフィの暗号理論的基礎。
A Watermark for Large Language Models (Kirchenbauer et al., ICML 2023)
— ロジットのグリーンリスト/レッドリスト分割に基づく、LLM 生成テキストへの電子透かし埋め込み・統計的検出手法のパイオニア論文。
