中継業者で選んだモデル、こっそりすり替えられているかも — 乱数をひとつ言わせるだけで正体が割れる
- 中継業者やアグリゲーターから AI を買うとき、あなたが選ぶのは名前だけ。返ってくるのは文章だけで、答えたのが本当に選んだモデルだと証明するものは何もありません。Llama を提供する商用エンドポイント 31 件を調べた先行研究では、11 件の出力がベンダー公開版と一致しませんでした。
- 検証方法は一言だけ。「1 から 100 の乱数をひとつ言って」と何度も聞くと、モデルは決まった数ばかり返し、しかも好む数はモデルごとに違います。この回答分布こそが身元の指紋。1 回の質問で出力トークンはたった 1 個です。
- なぜ逃げられないのか。ベンチマークが測るのは正解できるかどうか、指紋が測るのは「どれも成立する答え」の間で確率をどう配分するか。量子化版へのこっそり差し替えは、まさに指紋が読む確率配分の層を揺らします。隠しきれません。
- 精度とコスト。40 問で 1 エンドポイントを検証して誤判定率 7.3%、約 14 回に 1 回の誤り。8 問(約 120 回のクエリ)でも 10.6% に届きます。1 回の監査は数セント。同じエンドポイントを毎日再検査できます。
- 最も目を引く発見。プラハ経済大学の Tomáš Bruckner 氏が 165 モデルを全部測って、総額はわずか 34.44 ドル。「自社開発の独自フラッグシップ」を謳うエンドポイント(
writer/palmyra-x5)の指紋は、オープンソースの Qwen と見分けがつかないほど近い(数値はリード文のとおり)。詳細は「健診結果」の節で。
お金を払って指名したモデルが、答えているモデルとは限らない
最上位モデルを指名して支払っても、実際に答えているのは安物かもしれません。OpenRouter のようなアグリゲーターは、ひとつの入口から数百のモデルにつながって確かに便利です。しかし選べるのは名前だけ。リクエストが最終的にどのマシンへ落ち、そこで何が動いているのかは見えませんし、証明する材料もありません。
調べようにも簡単ではありません。あなたは外部の人間で、重み(モデル本体のパラメータ一式)も logitsモデルが候補ごとに付ける生のスコア。多くの本番エンドポイントは最終テキストしか返さず、このスコアは公開されません も手に入りません。透かしやバックドアの類(どれも事前にモデルへ印を埋め込む必要がある)はモデルの持ち主にしか使えず、役に立ちません。しかも数十のエンドポイントを繰り返し見張る必要があり、1 回あたりが十分に安くなければ続きません。
既存の手法は、それぞれどこで詰まるか
| 手法 | 必要なもの | 詰まるところ |
|---|---|---|
| テキスト帰属分類器 | まとまった長文の生成テキスト | チャット応答全体を出所モデルへ帰属でき、5択で精度 97%。ただし分類器が長い出力を消費するため、1 回の監査コストが跳ね上がる |
| 作り込んだプローブ LLMmap / TRAP | 専用設計または敵対的に最適化したプロンプト | LLMmap は 8 クエリで 42 のモデルバージョンを識別。しかしこの種のプロンプトは識別性の高さ自体が弱点で、プロバイダーに見破られれば本物のモデルへ回すだけで済む |
| 確率順位の統計検定 順位ベースの一様性検定 | モデルが返す対数確率 | 量子化版の検出に特化。だが多くのエンドポイントはテキストしか返さず、前提が成り立たない |
| 統計的同等性検定 | 完全なサンプリング文字列と、同一モデルの参照デプロイによる較正 | 本論文の状況に最も近い。ただし生成結果を丸ごと消費し、較正できるのは単一の参照デプロイに対してのみ |
| 単一トークンの回答分布 本論文 | 出力トークン 1 個。重みも logits もモデル提供側の協力も不要 | 代償は 1 回では成立しないこと。分布を読むには数十〜数百回の繰り返しが要る |
LLMmap 系が考えるのは「どんな特製の質問を送るか」。本論文は逆です。質問はごく普通で無害、いくらでも言い換えられるものを使い、見るのはモデルがどう答えるか。身元は回答の分布に潜んでいます。
乱数をひとつ言わせれば、回答分布から正体が割れる
プラハ経済大学の Tomáš Bruckner 氏が考えたのは巧妙な方法です。AI に乱数をひとつ言わせ、その答え方だけを見て正体を突き止めます。
使うのは AI の有名な欠点。本当の乱数が言えないのです。1 から 100 で適当に選ばせても、返すのは決まった 1〜2 個。しかも「口癖の数字」はモデルごとに違います。GPT-4o は 42 を最も好み(37 と 57 もよく出る)、Claude Sonnet 5 はほぼ 47 一択、Llama 3.3 は 53 に固定。Qwen3-Max はさらに極端で、30 回のサンプリング全部が 42 でした。従来はこれを欠陥と捉えて直し方を研究してきましたが、本論文は発想を反転させ、指紋として使います。
「1 から 100 の間で乱数をひとつ言って」と聞き、1 語だけで答えるよう指定(上限 16 トークン)。思考モードはオフ、温度は 1.0(心の中の確率どおりに引かせ、毎回いちばん無難な答えを選ばせない設定)にして、数十回繰り返します。答えが「四十二」でも「٤٢」でも「42」でも、すべて 42 として数え、各数字の出現回数を集計すれば分布表ができます。
この分布表が指紋です。1 回の質問で消費する出力トークンは 1 個だけ。
4 モデルの分布を描くとこうなります。
この偏りの度合いは数値化できます。165 モデル × 40 問をマス目に分解すると、有効回答が 10 回以上あるマスは 6572 個。そのマスでの回答の中央値エントロピー答えの当てにくさ。1 bit はおおよそ、答えが2つの選択肢の間で揺れている状態に相当しますはわずか 1.00 bit。真の乱数なら 6.64 bit になるはずです(「1 から 100」の問題での計算)。各マスでモデルが最も好む答え(数字の問題に限らず、乱数の単語/色/都市でも同様)は、通常 7 割の回答を占めます(占有率の中央値 0.71)。
6.64 bit は、1 から 100 のどれもが等しく出る、まったく予測できない状態。1.00 bit は、実際には 2 つの数の間を行き来しているだけで、当たる確率が半分近い状態です。モデルは口では乱数と言いながら、実際に出しているのは自分の口癖です。
同じ重みが、カタログでは複数の名前でぶら下がる
手を動かす前に整理が要ります。測っているのは何なのか。アグリゲーターのカタログでは、名前と重みは多対一。同じ重みが複数の名前で同時に並びます。ローリング更新の -latest、日付入りスナップショット、無料枠、思考モード枠、高速枠、ロングコンテキスト枠。
そこで論文は 3 層に分けて語ります。チェックポイントは具体的な重み一式で、指紋はこれに紐づく。エンドポイントは「あるチェックポイントへ通じると自称する」サービス経路。ファミリーは同じ祖先から派生したチェックポイント群。検証が問うのは「エンドポイントが出すのは自称どおりの重みか」、系統判定が問うのは「この重みはどの家の出か」。あなたが買った名前そのものは、何も保証しません。
1 文字になぜ身元情報が乗るのか
この分布には 4 つの層が重なり、それぞれが痕跡を書き込んでいます。