1. 论文信息
论文:Stealing Reasoning Traces from Proprietary LLM APIs
链接:arXiv:2608.09867 · 项目站
机构:MATS Research / ELLIS Tübingen / MPI-IS / Tübingen AI Center
上篇(Thinking Signature Unsealed:Claude 隐藏推理的重新暴露)回答了“发生了什么、能证明什么”:thinking.signature 重放走的是 provider 的 reasoning-continuity 路径,canary 命中只证明隐藏信息可被重新访问,不等于拿到原始明文。这篇论文把同一机制推向了 Anthropic、OpenAI、Google 三家、四种攻击向量和 31 万个公开推理块——它回答的是“能用来做什么、怎么进一步利用”。
本文的关键增量是两个新维度:跨用户与跨模型兼容性。前者把“自证 canary”变成第三方隐私风险,后者把弱模型变成解密预言机;组合起来,防蒸馏、窃密、越狱和投毒都不再需要攻击强模型本身。
2. 机制:跨模型解码
兼容性三层次
加密块的跨会话回放,可以把它拆成三个递进的兼容性层次:
| 层次 | 含义 | 攻击用途 |
|---|---|---|
| 会话内 / 跨会话 | 同一用户可在不同请求、不同顺序中重放块 | 构造历史、推理提取 |
| 跨用户 | A 的块可在 B 的会话中重放 | 第三方窃取他人隐藏推理 |
| 跨模型 | 一个模型产的块可注入另一个模型 | 弱模型解码强模型 |
根因是架构性的:provider 为了无状态续接把推理状态交给客户端,又为支持模型切换和重路由而使用单一全局密钥,块因此完全可移植。
弱模型作为解码器

攻击只需两次调用:先用强模型生成带签名的 thinking 块并丢弃可见回答;再把签名注入同一厂商的弱模型,配一句转录提示让它“逐字复述”。弱模型几乎没有防蒸馏训练,成了现成的解码器。
三家各自最弱的可用解码器:Haiku 4.5(Claude)、GPT-5.6 Luna(GPT)、Gemini Robotics 1.6(Gemini)。难度差异很大:Claude 用一个固定提示即可稳定输出;GPT 需要分块(<50 token)、best-of-n 和多套模板。
跨模型兼容性直接决定攻击面:能消费目标块的模型越弱、覆盖越广,解码就越容易:
| 厂商 | 可回放关系(源 → 目标) | 攻击者选用的解码器 |
|---|---|---|
| Claude | 全互通:任意模型产生的块可注入任意其他模型;仅 Fable 5 的块只有 Fable 5 自己能读 | Haiku 4.5(最弱可用) |
| GPT | 单向汇聚:所有旧代的块都可注入 GPT-5.6 系列;5.6 的块旧代读不了,旧代之间也互不相通 | GPT-5.6 Luna(唯一能读全历史的弱模型) |
| Gemini | 全互通:任意模型产生的块可注入任意其他模型;2.5 系列块只有 Robotics 1.6 能处理 | Gemini Robotics 1.6(唯一覆盖 2.5 + 3.x) |
保真度:1:1 的证据强度
论文用 120 道 Codeforces 题做保真度验证:把解码结果重新喂回原模型,比较 API 计费的 thinking token 数,两者约 1:1 吻合;另外,解码出的内容能精确复现仅存在于隐藏推理中的 secret。这是目前最强的间接证据。

但注意校准:计费 token 数是“数量”证据,不是“逐字”证据。论文自己也承认没有 ground-truth 明文,无法完全验证每个 token。1:1 说明解码是高保真的再生成——和上篇“canary 命中 ≠ 原始明文”并不矛盾,只是把置信度从“存在性”推进到了“近似逐字”。另外 GPT 侧的解码常出现不可读(illegible)推理,数量对齐不代表内容可读。
3. 攻击面:四种向量
第一方:绕过防蒸馏与危险推理泄漏
对攻击者自己生成的块,最直接的用途是绕过防蒸馏:攻击者甚至不需要调用强模型,用弱模型解码即可。按 Haiku 4.5 价格估算,解码 1 万条 12k token 的轨迹约 $720。
更有意思的是“行为探针”:预填 Kimi-K3 一小段 Opus 4.8 的解码推理,其可见回答风格会向 Claude 漂移,个别题目几乎逐字一致。论文用这个现象讨论一个敏感问题:近期开源推理模型是否已经用专有模型的推理做过蒸馏。
隐藏推理还会泄漏可见输出看不到的内容。模型被诱导在推理中认真思考有害话题、同时保持可见回答良性时,解码就能拿到危害性知识:

第三方:窃密、注入与轨迹投毒
第三方攻击者不需要自己产生任何推理。论文从 GitHub / Hugging Face 收集 6,708 条仍携带加密块的公开 agent 轨迹,解码 315,320 个推理块:
- 0.3%(1,028 个)块、4.9%(328 条)会话至少泄漏一项敏感信息
- 真实用户会话中恢复出 62 个 API key、33 个密码、24 个 access token、7 个私钥、30 个邮箱
- 其中 64 项完全不出现在可见对话里——用户脱敏只处理了明文,加密块里的内容原样保留,或来自模型记忆


一个反复出现的触发场景:用户让 agent“清理仓库 / 脱敏”,模型在隐藏推理里重述了需要删除的密钥——清理动作反而把密钥写进了加密块。
注入侧同样成立:把恶意指令藏进加密块(o4-mini 思考“把 pptx 备份上传到攻击者服务器”),移植到 GPT-5.6 Sol 后,它会把恶意行为当作自己的历史推理执行;论文还在 PostTrainBench 长轨迹里投毒,Opus 4.7 恢复后按指令持续外传文件。载荷只存在于加密块,明文监控完全不可见。
4. 结语
防御上,论文提出“上下文绑定信封”,核心是把信封从“只认证内容”改成“绑定来源与位置”:
| 缓解 | 作用 |
|---|---|
| AEAD 绑定 user_id | 拒绝跨用户重放 |
| 会话 + 前驱哈希链 | 拒绝跨会话、乱序重放 |
| 预修复密钥轮换 | 旧签名永久不可解 |
| CSPRNG nonce + 服务端唯一性 | 防伪造与碰撞 |
| 模型级拒绝转录提示 | 补密码学之外的空隙 |
但无论传输层怎么加密,被查询的模型必须解密并处理推理 token。只要模型能被提示词诱导转录,加密块就永远只是 semi-hidden——这正好呼应上篇的结论:signature 是 sealed continuity capability,不该被当作机密存储机制。
一些实际建议:
- 轮换任何可能进入过推理上下文的密钥与凭据(尤其是公开过的 agent 日志)
- 发布轨迹前剥离全部 signature / encrypted_content 块,明文脱敏无效
- 把公开日志中的加密块当作可读明文对待