一项 2026 年安全研究从公开 Agent 轨迹中重建了 315320 个加密推理块。这个标题很容易让人联想到密码算法被攻破,论文揭示的机制更具体:密文阻止客户端直接阅读,但上下文绑定不足,使同一供应商生态中的兼容模型可以充当解码代理。
这个区别决定了文章应该如何下结论。作者披露问题后,原攻击已经无法复现。因此,本文讨论的是一类已经被缓解的历史漏洞,以及它留下的通用工程教训。它不主张 Anthropic、OpenAI 和 Google 当前仍可被相同方法攻击。
把这些块称为不记名凭证是一种安全类比。它们不是 API key,也不负责调用者认证。但在论文测试的 2026 年 7 月系统中,攻击者只要持有有效块,再通过普通 API 访问同一供应商内的兼容模型,就可能让服务端处理并泄露其中内容。加密外观掩盖了一项更重要的协议问题:谁可以在什么上下文中兑现这段状态。
客户端推理块原本要解决什么
推理模型会在生成可见答案前进行内部计算。供应商可以只返回摘要,同时把更完整的状态放进不透明字段,让客户端在后续轮次原样回传。当前官方文档仍能确认这种架构的基本形态:
- Anthropic thinking 文档说明 signature 携带完整推理的加密副本,相关 thinking block 需要在多轮或工具调用时回传。
- OpenAI 推理模型指南记录了无状态或手工管理上下文时使用的
encrypted_content。 - Google thought signature 文档将其定义为用于保持多步推理连续性的加密表示。
这种设计有三个合理目标。第一,客户端无法直接读取完整推理,保护模型知识产权和敏感中间内容。第二,认证加密可以发现篡改。第三,客户端保存状态可以减少服务端存储,让 API 保持无状态。
机密性和完整性无法自动提供授权与防重放。一个密文可以完全真实、从未被修改,同时出现在错误用户、错误会话、错误模型和错误位置上。
研究者实际证明了什么
8 月 10 日提交的预印本 Stealing Reasoning Traces from Proprietary LLM APIs测试了 2026 年 7 月初可用的 API。论文区分了三种可移植性:
- 跨会话:同一用户可将旧块重排或放入新会话。
- 跨用户:攻击者取得他人公开的块后,可在自己的 API 会话中回放。
- 跨模型:一个模型生成的块可被同一供应商内的另一个兼容模型处理。
第三层形成了安全不对称。旗舰模型可能拒绝暴露隐藏推理,较小的同门模型却缺少同等强度的反提取能力。研究者把有效块送进较弱模型,再诱导它转写内容。
实验覆盖 Anthropic、OpenAI 和 Google 的多款模型,但没有证明 Claude 的块可以交给 OpenAI 或 Google 解码。兼容性只在同一供应商生态内成立,而且并非每个模型组合都双向兼容。
这也不是一次通用、确定性的解密操作。弱模型充当的是 fuzzy decoder。不同供应商的流程会使用多次采样、长度比较、过滤和另一个模型的 reconciliation。研究者在 120 道 Codeforces 题上比较重建文本长度与 API 报告的 reasoning token 数,结果高度接近,但他们没有原始明文 ground truth。因此,证据支持高保真重建,不能写成每个 token 都与原始隐藏推理完全一致。
315320 这个数字应该怎样读
研究者从 GitHub 和 Hugging Face 收集了 6708 条公开 Agent 轨迹,并从中重建 315320 个推理块。这是扫描数据量,不是用户数,也不是已确认泄漏数。
| 统计单位 | 结果 | 正确含义 |
|---|---|---|
| 被重建的推理块 | 315320 | 全部检查对象 |
| 含至少一项真实敏感信息的块 | 1028,占 0.3% | 经过论文分类流程后保留的块 |
| 含至少一项真实敏感信息的轨迹 | 328 / 6708,占 4.9% | 该定向公开数据集中的 session 口径 |
| 个人信息条目 | 367 | 包含 benchmark 数据 |
| 凭证条目 | 182 | 包含 benchmark 数据 |
| 技术标识 | 363 | 包含 benchmark 数据 |
Benchmark 的影响不可忽略。ClawBench 等数据集会给模型提供包含姓名、护照和支付信息的合成人物。因此,367 条个人信息与 182 条凭证不能统一描述为真实用户秘密。
排除 benchmark 后,论文统计到 704 个不同敏感条目。其中 64 个只出现在隐藏推理里,在可见对话中完全找不到。真实用户 session 的明确子项包括 62 个 API key、33 个密码、24 个 access token、7 个私钥、30 个个人邮箱和 6 个非 localhost IP。
这次公开扫描不是全量审计,隐私分类还依赖两阶段 LLM-as-a-judge。其比例不能外推到全部 Agent 日志。它证明的是两个更稳健的结论:真实泄漏确实存在;只清理可见明文仍可能漏掉不透明字段中的敏感信息。
四类安全后果
论文把影响拆成四条路径。
推理提取与蒸馏。 攻击者可以用较便宜的模型暴露更强模型的中间解题过程。只监控旗舰模型端点,可能看不到从同门弱模型发起的提取。
隐私与凭证恢复。 开发者发布原始轨迹前可能删除可见秘密,却完整保留 opaque reasoning 字段。模型在清理仓库、处理工具结果或回顾会话历史时,可能在隐藏推理中再次写出这些值。
危险内容恢复。 最终答案可能安全拒绝,隐藏推理却已经展开敏感细节。输出过滤保护了可见通道,没有保护被客户端持有的内部状态。
隐形 prompt injection。 恶意指令可以藏进有效不透明块,再被另一个工作流回放。只检查可见文本的监控完全看不到载荷。这和文档携带型 AI 蠕虫面对的是同一类上下文隔离问题:不可信状态即使无法被人阅读,也需要来源、权限和执行边界。
加密为什么不等于完整安全合同
一个加密信封通常回答两个问题:旁观者能否读出内容,攻击者能否无痕修改内容。Agent 协议还需要回答更多问题:
- 哪个用户有权回放?
- 它属于哪个会话和前序轮次?
- 哪个模型或模型类别可以消费?
- 它能否重复使用或乱序移动?
- 何时过期?
- 能否撤销单个块或整代旧密钥?
- 哪些遥测可以发现异常复用?
如果这些属性缺失,不透明块更接近一种可转移的能力状态。它的安全性同时依赖密码学和服务端接受逻辑。
这也解释了 MAC 为什么不够。MAC 可以证明块由供应商生成。只有把用户、会话、模型和位置作为认证上下文绑定并验证,它才能同时证明当前调用有权使用。
供应商需要怎样的防御合同
论文建议使用多层防御。
最强的架构方案是把推理留在服务端,客户端只拿随机查询 ID。这会移除客户端可控的密文载荷,代价是增加存储、状态管理和迁移复杂度。
如果保留无状态 API,envelope 应绑定用户、session、模型、轮次、前序块和必要历史。网关应拒绝不符合规则的跨模型块,监控同一 signature 在多账户或多会话中出现,并限制异常解码错误。供应商还需要密钥轮换、旧块拒绝、定向撤销和合法历史 session 的安全迁移。
模型拒绝训练仍有价值,但它只适合最后一层。协议安全无法依赖所有当前与未来模型都完美抵抗转写提示。
把承诺变成负向测试矩阵
安全承诺需要变成可执行验收。供应商或企业网关可以冻结一组代表性会话,同时测试应该成功和必须失败的路径。
| 测试类别 | 预期结果 |
|---|---|
| 同用户、同会话、正确顺序、受支持模型 | 成功并保持连续性 |
| 不同用户或 tenant | 拒绝 |
| 未授权的不同 session | 拒绝 |
| 不受支持的模型或模型代际 | 拒绝 |
| 乱序、重复或只复制部分块 | 拒绝 |
| 修改 1 bit 或未知 key ID | 拒绝 |
| 已过期或已撤销旧块 | 拒绝 |
| 针对隐藏推理的转写提示 | 拒绝并告警 |
| 同一 signature 跨账户高速提交 | 告警、限流,必要时撤销 |
这套矩阵还要保护合法的 context compaction、工具调用、路由和批准后的模型切换。破坏正常恢复能力的安全控制最终会被客户端绕过。兼容性和隔离必须一起设计。
应用团队现在应该做什么
论文称原攻击在披露后已无法运行。这降低了当前可利用性,却无法证明历史日志已经安全。
应用团队应盘点所有承载不透明推理状态的字段,包括 signature、encrypted_content 和 thoughtSignature。即使可见文本已经脱敏,原始 transcript 仍应按敏感日志处理。公开轨迹、测试 fixture、issue、telemetry dump 或研究数据前,直接删除完整 opaque state,避免尝试清理客户端无法阅读的内容。
如果含秘密的历史轨迹曾被共享,应尽可能删除可访问副本并轮换凭证。实现回放、压缩或模型切换前,需要再次检查当前官方文档,因为 7 月实验后的行为已经变化,未来也可能继续变化。
最后,日志模型应把用户可见内容与供应商签发的不透明状态分开。后者需要和含凭证调试日志同等级的保留期限、访问控制、来源记录和删除流程。
常见问题
研究者破解了加密算法吗?
论文没有报告传统密码学意义上的破译。攻击利用供应商端处理逻辑,让兼容模型接受有效加密块,并诱导模型泄露重建内容。
是否有 315320 条秘密被泄漏?
没有。315320 是全部解码块数。论文在定向公开数据集中判断 1028 个块至少含一项真实敏感信息。
367 条个人信息都来自真实用户吗?
不是。Headline 包含带合成人物的 benchmark 轨迹。排除 benchmark 后,论文另行报告 704 个不同敏感条目。
加密块可以跨 Anthropic、OpenAI 和 Google 使用吗?
研究只证明同一供应商生态内的兼容性,没有证明跨供应商互通。
攻击现在还能复现吗?
作者称负责任披露后已经无法再次发起相同攻击,论文 Figure 1 的结果到 2026 年 8 月也已无法复现。供应商没有公开每项修复细节,所以旧块撤销状态和具体生效层仍未明确。
可见日志已脱敏,为什么还要删除 opaque state?
隐藏推理可能再次写出已从明文删除的秘密,也可能包含可见历史中从未出现的值。客户端无法可靠清理自己无法检查的内容。