暗号化した推論が兄弟モデルには読めた――reasoning traceの境界に穴

APIが返す暗号化済みのreasoning blockは、人間には読めない領収書のように見える。ところが新しい研究「Stolen Thoughts」は、それが別のモデルにも渡せる状態データとして機能すると示した。研究チームはOpenAI、Anthropic、GoogleのAPIが返す署名・暗号化ブロックを、別セッション、別ユーザー、別モデルへ移動。高性能モデルのtraceを弱い兄弟モデルに再入力し、そのモデルの制限を回避することで、わずか2回のAPI呼び出しから推論を平文に近い形で復元した。

検証は印象的なデモだけではない。120問のCodeforces問題では、APIが報告するhidden thinking token数と復元した推論の長さが連動した。Opusのtrace冒頭だけをKimi-K3へ与える実験では、答え自体を見せていないのに、Kimiの表現がOpusの回答へ近づいた。reasoning blockが保存用メタデータではなく、互換性のあるモデルが再び消費できる情報を含むことが分かる。

公開データを大規模に調べると、問題はプライバシーへ広がる。GitHubとHugging Faceで公開されていた6,708件のagent trajectoryから315,320個のreasoning blockを再構成し、704件の機密artifactを確認した。内訳にはAPI key 62件、password 33件、access token 24件、個人メールアドレス30件が含まれる。64件はユーザーに見える会話には存在せず、隠れた推論だけに残っていた。最終回答だけを検査してログを公開しても、十分なsanitizeにはならない。

reasoning summaryの忠実性にも疑問が残る。数学問題の一部では、復元したtraceが最初に答えを思い出し、その後で導出を組み立てていた。一方、APIのsummaryは最初から順番に解いたように整えていた。読みやすい説明としては役立つが、モデルの判断過程をそのまま記録した監査ログとは扱えない。

コミュニティの論点は「stealing」という名前の是非より、なぜtraceがユーザーやセッションに結び付いていないのかへ移った。利用者が料金を払ったtokenの復元を窃取と呼べるのかという反論もある。ただし対策の方向は共通する。提供者はreasoning stateをアカウント、セッション、モデルへ強くbindingし、開発者は公開trajectoryの暗号化フィールドもpromptや回答と同じ機密検査の対象にする必要がある。

測定結果と論文情報は研究サイトで確認できる。Hacker Newsの議論では所有権と防御策が掘り下げられている。本稿では研究で見つかった実際のsecret値は再掲せず、結果の範囲と防御上の意味だけを扱った。