Administrator
Published on 2026-08-12 / 3 Visits
0
0

加密推理块也是不记名凭证:31.5 万条解码轨迹暴露了什么

一项 2026 年安全研究从公开 Agent 轨迹中重建了 315320 个加密推理块。这个标题很容易让人联想到密码算法被攻破,论文揭示的机制更具体:密文阻止客户端直接阅读,但上下文绑定不足,使同一供应商生态中的兼容模型可以充当解码代理。

这个区别决定了文章应该如何下结论。作者披露问题后,原攻击已经无法复现。因此,本文讨论的是一类已经被缓解的历史漏洞,以及它留下的通用工程教训。它不主张 Anthropic、OpenAI 和 Google 当前仍可被相同方法攻击。

把这些块称为不记名凭证是一种安全类比。它们不是 API key,也不负责调用者认证。但在论文测试的 2026 年 7 月系统中,攻击者只要持有有效块,再通过普通 API 访问同一供应商内的兼容模型,就可能让服务端处理并泄露其中内容。加密外观掩盖了一项更重要的协议问题:谁可以在什么上下文中兑现这段状态。

客户端推理块原本要解决什么

推理模型会在生成可见答案前进行内部计算。供应商可以只返回摘要,同时把更完整的状态放进不透明字段,让客户端在后续轮次原样回传。当前官方文档仍能确认这种架构的基本形态:

这种设计有三个合理目标。第一,客户端无法直接读取完整推理,保护模型知识产权和敏感中间内容。第二,认证加密可以发现篡改。第三,客户端保存状态可以减少服务端存储,让 API 保持无状态。

机密性和完整性无法自动提供授权与防重放。一个密文可以完全真实、从未被修改,同时出现在错误用户、错误会话、错误模型和错误位置上。

研究者实际证明了什么

8 月 10 日提交的预印本 Stealing Reasoning Traces from Proprietary LLM APIs测试了 2026 年 7 月初可用的 API。论文区分了三种可移植性:

  1. 跨会话:同一用户可将旧块重排或放入新会话。
  2. 跨用户:攻击者取得他人公开的块后,可在自己的 API 会话中回放。
  3. 跨模型:一个模型生成的块可被同一供应商内的另一个兼容模型处理。

第三层形成了安全不对称。旗舰模型可能拒绝暴露隐藏推理,较小的同门模型却缺少同等强度的反提取能力。研究者把有效块送进较弱模型,再诱导它转写内容。

实验覆盖 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、工具调用、路由和批准后的模型切换。破坏正常恢复能力的安全控制最终会被客户端绕过。兼容性和隔离必须一起设计。

应用团队现在应该做什么

论文称原攻击在披露后已无法运行。这降低了当前可利用性,却无法证明历史日志已经安全。

应用团队应盘点所有承载不透明推理状态的字段,包括 signatureencrypted_contentthoughtSignature。即使可见文本已经脱敏,原始 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?

隐藏推理可能再次写出已从明文删除的秘密,也可能包含可见历史中从未出现的值。客户端无法可靠清理自己无法检查的内容。

参考资料


Comment