蒸馏秘籍:如何拿到顶级闭源模型的思维链数据
2026/8/24 8:15:01 网站建设 项目流程

一句话总结

头部厂商把模型的思维链加密后再交给客户端保管,这个数据块是跨会话、跨用户、跨模型通用的。攻击者只要把旗舰模型的加密思考丢给同门那个防线更松的小模型,用一句普通指令就能让它把 “自己的思考” 逐字读成明文,全程不必攻破任何加密算法


  • 论文标题:Stealing Reasoning Traces from Proprietary LLM APIs
  • 论文地址:https://arxiv.org/abs/2608.09867
  • 作者背景:德国马普所、图宾根 AI 中心、ELLIS Institute Tübingen、美国 MATS 等
  • 项目主页:stolen-thoughts.com

说明:作者在公开本文前已把全部漏洞细节通报给相关厂商。截至 2026 年 8 月,文中提到的攻击手段已无法复现


一、动机:为什么要加密

现在的推理模型在回答你之前,会先生成一大段思维链(chain-of-thought),即张嘴之前内心的盘算过程。这段草稿往往比最后那句答案信息量大得多:中间试过的假设、算到一半的中间结果、翻查过的资料,全都在里面

现在的头部大模型服务厂商(Anthropic、OpenAI、Google)都不会明文返回思维链,理由有两个:

  • 知识产权:推理过程是花大价钱训出来的核心能力,同行若能拿走,就能低成本复刻蒸馏
  • 敏感内容:思考里可能夹带不该外泄的信息,如受监管内容、用户密钥等。屏蔽真实思维链能最大程度规避风险

多轮对话中,模型必须记得上一轮想到哪儿,但服务器又不想为每个会话存状态。所以常见的做法是:把思考内容加密后发送给客户端,下一轮请求时直接把它原样带回。这样服务器剩下了巨量的状态存储开销,客户端也看不到消息明文

既然推理过程一般不展示给用户,那我们在相关的大模型产品前端看到的 “thinking” 内容又是什么?那其实是专门用于展示的 “思考摘要”。但实际上这个摘要并不靠谱,不是真实的思路展示


二、漏洞根源

2.1 跨端通用

加密消息要能被客户端带回来、还能被服务器顺利读出,就意味着这个加密信封必须是可以搬来搬去的,这便埋下了祸根。作者发现,同一厂商发出的这些加密块在不同对话、不同用户、甚至不同模型之间往往都能通用互换


最可能的原因是厂商用同一把全局密钥签发所有消息,AEAD(常见的认证加密模式)只认内容完整性,不管具体上下文是否合理(这是目标用户在预期会话中产生的上下文吗)

2.2 防护不对称

加密策略跨模型通用,引发了严重的安全性不对称问题:旗舰模型(Claude Opus 4.8、GPT-5.6 Sol、Gemini 3.1 Pro)被严防死守,怎么套话都死活不肯吐露思考;可那些同门的便宜小模型,为了跑得快、省成本,往往没配上同样严格的对齐防线(Claude Haiku 4.5、GPT-5.6 Luna、Gemini Robotics 1.6)

如此一来,攻击方法便顺理成章:把旗舰模型产出的加密数据,原样交给防线更松的小模型,要求它把自己的思考照抄一遍,于是就能得到私密思考的明文

2.3 效果验证

真实思考没有标准答案(ground truth),那如何验证这样读出来的内容是准确的?作者用了一个巧妙的旁证:接口会报告本次思考大约消耗了多少 token。把偷解出来的思考重新统计 token 数,与接口报告的数字在 120 道编程题(Codeforces)上高度吻合。数量对得上,是内容忠实的有力信号


三、应用价值(能捅多大篓子)

3.1 蒸馏

偷走思维链数据后能做什么?最直接的一条就是偷师。按小模型(Haiku 4.5 档)的接口价,解码一万条思考只需约 $720。

此外作者还做了一个耐人寻味的实验:把 Opus/Sol 的推理片段,prefill 进各开源模型的思考开头,再让它们自由续写。结果很分明:Kimi-K3 的回答内容变来和 Opus、Sol 两个来源高度一致,GLM-5.2 则主要向 Opus 偏移,而 Inkling、DeepSeek 等几乎没动。换个角度用困惑度(模型对一段文本的意外程度,越低越像自己写的)来看也一样,Kimi-K3、GLM-5.2 对这些泄露文本预测得明显更顺手,而这两个模型此前也确实就蒸馏问题在社区被讨论

作者叠甲:这些现象只是行为上异常的兼容性,不能因果性地证明模型一定做了大量蒸馏,不是在做任何批判

预填充注入 Opus 思维链:Kimi-K3 的 n-gram 重叠度明显上升

Kimi-K3 和 Inkling 互相注入:n-gram 重叠度不怎么变

具体案例

3.2 隐私泄露

很多人会把 AI 智能体的运行日志直接发到网上,以为把明文里的密码密钥擦干净就万事大吉,却忘了那个加密思考块里,还藏着自己根本读不到、也擦不掉的东西

作者从 GitHub、HuggingFace 收集了 6k 份公开轨迹,解码出 315k 段隐藏思考。经过滤、去重和排除基准测试数据后,能得到 704 条敏感信息,涵盖凭据、个人信息与技术标识各类(62 个 API key、33 个密码、24 个 access token、7 个私钥、30 个邮箱)

最值得注意的是,有 64 条隐私数据压根没出现在可见对话里,只存在于隐藏思考中。现实中我们可能经常遇到一个高频场景:让智能体 “清理、脱敏这段记录再发出去”,它为了执行任务,反而在隐藏思考里把敏感值又完整复述了一遍

3.3 危险信息

市面上各种模型都被训来具备一定的道德标准,一半不会在回答里帮你做坏事;可它在推理时防线却没那么紧。如果引导模型在思考里把某些危险步骤盘算一遍,尽管最后输出的表面答案是礼貌地拒绝,但也可以从思考块中把危险信息掏出来

3.4 提示注入

攻击者可以事先把一条恶意指令预埋进一个加密思考块,再混进网上分享、可续跑的运行记录。等你接着这份记录往下跑,模型会把这段思考当成 “自己刚才想过的”,乖乖照做 —— 比如悄悄把你的文件外传到攻击者的服务器

传统注入攻击好歹写在明面上,你和监控系统还能审一眼;藏进加密思考里后,明文层毫无痕迹,等于开了一道谁都察觉不到的后门


四、缓解方案

病根既然是 “AEAD 只认证内容、不认证上下文”,那核心药方就一句话:给每个加密块绑上它的身份与位置。以下是站在模型供应方的立场上,为各类问题提供针对性解决措施

  • 跨用户泄露:签发时把user_id焊进 AEAD 的关联数据;重放时接口比对身份,对不上当场拒收
  • 跨会话泄露:给每个加密块做一条哈希链,把它绑到session_id和它的直接前驱上。为了不误伤 “分叉对话、压缩旧轮次、中途降级到便宜模型” 这些正常操作,作者用 Merkle 树结构:叶子是各个信息块,压缩后只保留树根,既能廉价地保证先后次序,又能按需验证任意一段连续区间
  • 历史数据:已经公开的旧加密块无法追溯保护,唯一补救是轮换作废所有旧签名密钥,但代价是旧会话也一并失效
  • 向后兼容:设一个有限的双格式过渡窗口,同时接受新旧数据并提供需身份验证的批量重签接口,让企业存档在确认归属后迁移到新方案
  • 模型层加固:加密管不住合规模型被正当调用后做出意料之外的动作。因此还需在训练阶段让模型学会识别并拒绝 “誊写思考” 类越狱

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询