言語ステガノグラフィ (linguistic steganography) とは、テキストを偽装媒体として秘密データを送る技術のこと。(言語に限らない) ステガノグラフィの特徴は、秘密データの存在自体を隠す点にある。暗号はデータを第三者が解読できないようにするだけで、通信の怪しさに気づかれるリスクは残る。一方、ステガノグラフィは秘密データを偽装媒体に埋め込むことで、秘密データの存在自体を第三者に気づかせないようにする。

偽装媒体として一番わかりやすいのがビットマップ画像。各ピクセルの下位バイトの数値をいじる、例えば #F2BDCD を #F0BECE に変えても、画像の見た目にはほぼ影響がない。この性質を利用して、偽装画像の各ピクセルの下位バイトの数値を秘密データに応じて書き換える。このように、偽装媒体の冗長性を利用してデータを埋め込むのがステガノグラフィの基本戦略になる。

テキストは冗長性が乏しく、偽装媒体として使うのが難しい。古典的な方法をいくつか紹介すると: 1) 単語間のスペースを1文字にするか、2文字にするかで0/1を埋め込む。2) 他動詞文を能動態にするか受動態にするかで0/1を埋め込む。3) 同義語集合を用意しておいて、ビット列に対応付ける。例えば、{marry: 0, wed: 1} として、She will marry/wed him. の3単語目を埋め込みたいビットに応じて選択する。

2-3はペイロード容量が恐ろしく低い。ツイート1個あたり数ビットが限界。それに、2は受信者が構文解析に失敗してデータの復号に失敗するリスクがある。3は同義語の文脈依存性が問題になる。例えば、marry into という句の marry を wed で置き換えると不自然。かといって文脈適合性や語の多義性等を考慮し始めると手法が複雑化して手に負えなくなる。1は単純で頑健だが、不自然さが露見するリスクは縦読みと同程度であろう。

そんなこんなで、言語ステガノグラフィは長年、実用化の見込みのないオモチャでしかなかった。この状況を一変させたのが大規模言語モデル (提案自体は大規模化競争以前なので、当時は小規模なニューラル言語モデル) である。(続く)

Reply to this note

Please Login to reply.

Discussion

ニューラル言語モデルを用いたステガノグラフィは2017年に提案された。https://aclanthology.org/P17-3017/ ステガノグラフィの手法自体は言語モデルがニューラルネットであることに依存しているわけではないが、言語モデルが生成するテキストがそれ以前とは質的に異なることが大きい。以前の n-gram 言語モデルは、局所的な単語列が自然なだけで、テキスト全体を見ると支離滅裂であり、テキスト生成モデルとしては使い物にならなかった。これに対し、ニューラル言語モデルの登場後は、内容的に一貫したテキストが生成できるようになり始めた。その後現れた大規模言語モデルの流暢さは誰もが知る通り。

言語モデルは単語列が与えられたとき、それに続く単語候補に確率分布を与える。この確率分布に基づいてランダムに単語を選択し、単語列にその単語を追加するという操作を繰り返す、つまり自己回帰型の処理を行うことでテキストが生成できる。高性能な言語モデルは、文脈に即した単語候補にだけ高い確率質量を割り振るので、雑なランダム生成で十分に自然なテキストが得られる。

言語モデルをステガノグラフィに応用するのは簡単。送信者は、適当な規則を使って単語候補に確率分布に応じたビット列を割り当て、埋め込みたい秘密データに応じて単語を選べば良い。ビット列の割り当てには、ハフマン符号や算術符号といった古典的な符号化が使える。受信者は、言語モデルとビット列割り当て規則を事前に共有しておけば、送信者とほぼ同じ手順をなぞることで秘密データが復号化できる。

言語モデルの導入によりペイロード容量が劇的に向上した。具体的な手法や設定次第だが、単語あたり2-4ビットは埋め込める。https://aclanthology.org/D19-1115/ これが意味するところを知るために、具体的に何の秘密データを埋め込むか考えてみよう。いくらペイロード容量が高いといっても、テキストに画像を埋め込むのは無謀。そうするとテキストぐらいしか候補が残らない。テキストを秘密データとするには、まずはテキストをビット列に変換しなければならない。ここで、実はステガノグラフィに使うビット割り当て規則がそのまま流用できる (というよりも、そちらが符号化の典型的な使い方であって、ステガノグラフィの方が応用)。結論として、偽装テキストに、それとほぼ同じ長さの秘密テキストが埋め込める。

これは冷静に考えると驚くべきこと。適当なテキストがあったとき、それと同じくらいの長さの、内容的には無関係の別のテキストが隠れているかもしれないのである。

偽装テキストの性質をもう少し考えてみよう。言語ステガノグラフィは、偽装テキストの作り方によって、生成型と編集型の大きく2種類に分類できる。

編集型は既にあるテキストを加工することで秘密データを埋め込む。古典的な方法として紹介した1-3はいずれも編集型。テキストではないが、ビットマップ画像への埋め込みも編集型とみなせる。2021年に私が学生と出した論文も編集型。https://aclanthology.org/2021.naacl-main.433/

生成型はステガノグラフィのモデルがテキストを一から作る。編集型の手法は昔もなかったわけではないが、テキスト生成の品質が低すぎてお話にならなかったことから、事実上ニューラル言語モデルの産物。

生成型と編集型を比較すると、編集型は加工対象のテキストを送信者が自分で用意しなければならない。利用者から見るとこれは面倒。システムから見ると、送信者がいかにも書きそうなテキストを作る責任を利用者に押し付けられていた。

一方、生成型では、どんなテキストが生成されるかわからない。送信者がいかにも書きそうな偽装テキストを作る責任をシステムが負っている。しかし、既存研究はこの点を十分に検討していない。

既存研究が主要な評価指標として用いるのが、テキストの分布と偽装テキストの分布という2つの確率分布の間の距離 (的なもの)。小さいほど良い。もしテキストの分布と偽装テキストの分布が完全一致するなら、両者は識別できないはず。秘密データを埋め込む都合で分布が歪むにしても、元の分布に近ければ近いほど良いという理屈。この目的にはルバック・ライブラー (KL) 情報量という尺度が使える。

KL情報量は理論的に美しいので、ステガノグラフィに取り組むような研究者が好んで採用するのはわからないでもない。しかし、2つの点でずれている。第一に、テキストの真の分布を誰も知らないこと。仕方がないので、言語モデル自身が推定する確率分布を近似として用いる。これは明らかにインチキ。第二に、こちらの方が本題だが、本当に必要なのはテキスト一般の分布ではなく、送信者が書きそうなテキストの分布であること。言語モデルの訓練には大量のテキスト、主としてウェブ由来の雑多なテキストが使われている。言語モデルがウォール・ストリート・ジャーナルの記事のような凝った偽装テキストを生成したとして、テキスト一般の分布から見て自然だったとしても、送信者が書いたものとしては不自然かもしれない。

ここまでは送信者・受信者という用語を使っていたが、通信研究の慣例に従って、送信者を Alice、受信者を Bob とよぶことにする。そして、もう一人の登場人物、通信路を監視する盗聴者 Eve を導入しよう。ステガノグラフィの目標は秘密データの存在自体を第三者に気づかせないようにすることだったが、Eve を導入すると、この目標が具体的なタスクに化ける。評価尺度として KL 情報量を使うよりもずっと直接的。このタスクはステガナリシス (steganalysis) とよばれている。

ステガナリシスの目標は秘密のメッセージの存在を検出すること。暗号に対する cryptanalysis と異なり、秘密のメッセージの解読までを目標に入れない設定が一般的。

目標は良いとして、残りの定式化は自明ではない。Eve が何をどこまで知っているかによってタスクの難易度が大きく左右される。

ステガナリシスのタスク設定の分類にはいろいろあるようだが、古典的なのは Katzenbeisser and Petitcolas (2000) で採用されているという分類 (未見)。https://www.amazon.com/exec/obidos/ASIN/1580530354 編集型を前提として、Eve が何を知っているかに基づいて分類する:

- stego only: ステゴテキスト (秘密のメッセージが埋め込まれた偽装テキスト) のみ既知

- known cover: カバーテキスト (編集前の偽装テキスト) とステゴテキストが既知

- known message: 秘密のメッセージとステゴテキストが既知で、そこからステガノグラフィのアルゴリズムを推測

- chosen stego: アルゴリズムとステゴテキストが既知

- chosen message: メッセージを起点に様々なアルゴリズムを試してステゴテキストが当該アルゴリズムを使っているか推測

- known stego: アルゴリズム、カバーテキスト、ステゴテキストが既知

生成型の場合はカバーテキストが存在しない。known cover 設定では、カバーテキストとステゴテキストの差分を調べてアルゴリズムを推測するが、こうした手法の出番はない。

この分類を改めてみると、計算機ではなく人間が直接分析する雰囲気があって現代的ではない。

画像を主な対象にステガノグラフィの教科書を書いたは Jessica Fridrich は、より単純な二分法 blind steganalysis v. targeted steganalysis を採用する。https://www.cambridge.org/core/books/steganography-in-digital-media/2D5989F2462923428BE01F2042A532AB blind steganalysis は採用されているステガノグラフィの具体的なアルゴリズムを Eve が知らない設定。対する targeted steganalysis はアルゴリズムが絞り込まれている設定。

教科書的なテキストではあまり議論されているのを見ないが、ステゴテキストと普通のテキストの割合も重要なはず。あてもなくネットの海からステゴテキストを検出する needle in a haystack 設定は難しすぎる。一方で、両者の割合を半々にする (論文でよく見かける) 設定も極端すぎるように思う。

長々と書いたが、最近のステガナリシス論文では、ほとんどの場合、教師あり分類問題設定を採用している。具体的には、アルゴリズムが既知 (targeted steganalysis) であり、ステゴテキストと普通のテキストが (通常半々の割合で) 用意できることを前提に、その一部を訓練データとして2値分類器を訓練し、残りをテストデータとして分類精度を評価する。ステガナリシスとしては分類精度が上がれば良いし、ステガノグラフィ側は分類精度を下げて50%に近づけたい。敵対的設定であることを除けば、何のひねりもないただのテキスト分類問題。実際、最近のステガナリシス論文は、分類器を構成するニューラルネットをいじくり回しただけの退屈なものばかり。本当はもっと面白いことができるはず。

ステガノグラフィの教科書や最近の研究を見ていて思うのは、コミュニケーションとしての側面が軽視されているということ。

もともと Simmons (1983) はステガノグラフィを囚人の問題として定式化した。https://link.springer.com/chapter/10.1007/978-1-4684-4730-9_5 Alice と Bob は別々の独房に入れられた囚人で、脱獄の相談をしたいが、両者のコミュニケーションは看守 Eve の監視下にある。Eve に疑われたらコミュニケーションが取れなくなるので、Eve に疑われないような何気ないメッセージのなかに脱獄の情報を忍び込ませる手法が求められる。この定式化では、人間のコミュニケーションと通信 (telecommunication) が未分化。

しかしその後の研究では、Fridrich の教科書がそうであるように、偽装媒体として画像を用いるのが主流となった。画像を人間のコミュニケーションとしての自然さ (人間らしさ) という観点から評価するのは難しい。そのため人間らしさという側面が捨てられ、デジタル通信としての分析に特化してしまった。

大規模言語モデル (LLM) の登場とともに生成型言語ステガノグラフィが急浮上したいま、人間らしさという観点からの評価が不可欠なはず。人間らしさは捉えがたい問題だが、ステガノグラフィを題材とすると、ステガナリシスに打ち勝つというわかりやすい目標に変換できる。

とはいえ、この方向で研究を進めるには2つ難点がある。第一に、既に複数の既存研究で指摘されていることだが、ウェブ時代、特に SNS 時代においては、Alice が Bob を通信相手として明示する必要がない。https://link.springer.com/chapter/10.1007/978-3-031-49803-9_7 Eve による検出を防ぐという観点からはむしろ明示すべきではない。Alice は相手を明示することなく単につぶやけば良くて、Bob は他のフォロワに紛れてそれを見に行けば良い。この設定においては、ステゴテキストが Alice から Bob へのコミュニケーションとして自然かを評価する必要はない。Alice が書いたものとして自然かを評価すれば十分。

第二に、LLM に基づく生成型言語ステガノグラフィでは、(A) 人間、(B) 素の LLM、(C) ステガノグラフィ用 LLM の三項対立が想定される。ステガノグラフィの研究としては A (+B) 対 C で、C を A から識別できないようにしたいが、実際の断絶は A と BC の間にある可能性が高い。LLM が生成したテキストをそうだと見破りたいという需要は多く、そのための研究も大量にある。もし仮定が正しいとすると、そうした研究のなかに埋没してしまい、秘密のメッセージを埋め込むことに独自性を見いだせないことになる。(ひとまず完)

最後の点にもう少し詳しく触れると、(A) 人間、(B) 素の LLM、(C) ステガノグラフィ用 LLM の三項対立は Dai and Cai (2019) で議論されている。

https://aclanthology.org/P19-1422/

言語モデル=テキストの確率分布間の距離 d を total variation distance で定義すると、d(A, C) <= d(A, B) + d(B, C) という不等式が成り立つ (数学苦手勢なので結論だけを引用)。

この不等式は、ステガノグラフィの研究が d(A, B) は言語モデルの研究がなんとかするということで感知せず、d(B, C) の最小化のみに注力することを正当化するのに使われている。

しかし d(B, C) は実際上はすでにほぼゼロ。これを更に減らすのは情報理論が好きな狭い業界の自己満足にしか見えない。

実用化という観点からは、文脈プロンプト共有問題を何とかしなければならない。

Ziegler et al. (2019) は、ニュース記事の最初の3文を文脈として与え、その後を言語モデルに生成させるという実験設定を採用している。

https://aclanthology.org/D19-1115/

しかし評価実験から離れて実際に使う場面を考えるとどうすべきか悩ましい。そもそもの前提として、送信者 Alice は復号化に必要な情報を事前に受信者 Bob と密かに共有しておかなければならない。この前提を踏まえると以下の2つの選択肢が考えられる。

1) 最初の3文も含めて送信する。Bob と共有しておくべきなのは、最初の3文が文脈プロンプトであるというハイパーパラメータだけで済む。しかし、最初の3文は既存テキスト、4文目以降は独自生成テキストというやり取りが繰り返されれば、不自然に思われかねない。

2) 最初の3文を除いて送信する。この場合、Bob とは最初の3文自体を事前に共有しておく必要がある。これは使い勝手が悪い。おまけに、生成部分が文脈部分を参照していると不自然なテキストになるリスクもある。

Ziegler et al. (2019) の設定は後続研究 (我々の研究も含む) で踏襲されがちだが、これは悪しき前例主義であり、そろそろ改めるべき。

この点で重要なのが SNS 設定。以前は「ウェブ時代、特に SNS 時代においては、Alice が Bob を通信相手として明示する必要がない」という主張に賛同していたが、今は考えを改めている。

https://link.springer.com/chapter/10.1007/978-3-031-49803-9_7

Liao et al. (2024) は、他の利用者の投稿を文脈として言語モデルに与え、返信をステガノグラフィに利用している。

https://dl.acm.org/doi/abs/10.1145/3658664.3659657

この設定なら文脈プロンプトを事前に共有する必要がなく、既存テキストと独自テキストの組み合わせも自然に見える。通信相手を明示するという欠点を補って余りある利点があるように思える。

実用化の課題としては、計算非決定性問題も外せない。既存論文で議論された形跡がないのに査読者から突っ込まれた。

受信者 Bob は送信者 Alice の言語モデルが生成時に参照したトークン生成の確率分布を完全に再現しなければならない。しかし Bob は当然ながら Alice とは別の計算環境を使っているはずで、本当に再現性が確保できるか怪しい。

実際には、同じ計算環境ですら GPU が絡むと決定性が損なわれがち。最適化テクニックの多くは非決定的であり、無効化しなければならない。それで十分かというと怪しい。

非決定性問題は開発者向け文書では言及されることがあるが、論文では見かけない。

https://docs.pytorch.org/docs/stable/notes/randomness.html

Atil et al. (2025) は珍しく非決定性を調べているが、温度パラメータ=0の貪欲生成設定しか調べていない。しかも、OpenAI などのクローズドモデルが非決定的な最適化テクニックを使っている (と推測される) ことに原因を求めており、手元の GPU で Llama3-8b を動かしたら決定的だったと述べる。詰めが甘い。

https://arxiv.org/abs/2408.04667

以前 Textcoder を紹介した際にも書いたが、出力を人間が作成したと見せかける行為を禁じる条項がある言語モデルは、ステガノグラフィ用途では使えない。BLOOM と Llama が該当することは以前から知っていた、ChatGPT 5 Thinking に他のモデルも確認してもらった。

Gemma: 禁止

"misrepresentation of the provenance of generated content by claiming content was created by a human … in order to deceive"

https://ai.google.dev/gemma/prohibited_use_policy

NVIDIA のモデル: 禁止

"intentionally misleading or deceiving others"

https://developer.download.nvidia.com/licenses/nvidia-open-model-license-agreement-june-2024.pdf

Qwen2.5-72B は独自ライセンスだが、当該の禁止条項は見当たらないため OK。ほかのモデルはだいたい Apache-2.0 なので当然 OK。

https://huggingface.co/Qwen/Qwen2.5-72B/blob/main/LICENSE