机密计算与可证明推理

E20
概念 · AI 模型与工具生态

机密计算与可证明推理。

"我们看不到你的数据"通常是一句承诺;有了可信执行环境,它变成一句有证明形状的断言——由硬件签名的、关于"究竟在跑哪份代码"的度量值,在解密密钥被释放之前先被核验。这是一份真实而狭窄的保证:它把机器的运营方从你的信任边界里剔除,仅此而已。而对智能体来说,数据几乎从不从内存里泄漏。它从追踪存储、评测集和记忆层泄漏,而这三样都坐在飞地之上,上面这一切一点都碰不到它们。

STEP 1

可信执行环境到底证明了什么。

可信执行环境是机器上一块连这台机器的运营方都读不了的区域。让这句话成立的有三套机制,而真正要紧的是第三套:

  • 内存加密。CPU 用一把存在硬件里的密钥加密飞地的内存,于是虚拟机管理程序、宿主机进程,或者能物理接触到内存条的人,看到的都是密文。CPU 这一侧是 Intel TDX、AMD SEV-SNP 或 AWS Nitro Enclaves;加速器这一侧,NVIDIA Hopper 一代的 H100 与 H200 支持一种机密计算模式,会加密显存以及 CPU 到 GPU 的通路——正是这一条让这套东西能用来做推理,而不只是用来管密钥。
  • 度量。环境启动时,硬件会把被加载的一切——固件、内核、容器镜像、来宾组件——哈希成一个度量值。服务代码改一个字节,度量值就变。
  • 远程证明。硬件用一把根植于芯片厂商证书链的密钥,为这个度量值签一份报告。远端验证者校验签名、把度量值与期望值比对,然后才释放某样东西——通常是解密模型权重或客户数据的那把密钥。全部诀窍就在这里:密钥是释放给一份特定的代码的,而不是释放给一台机器或一个账号。

就 LLM 推理而言,机密模式下公开报告的吞吐损耗通常在个位数百分比的低端,小到性能很少成为团队拒绝它的理由。真正的理由是可得性:机密 GPU 的产能是子集里的子集,价格也照此定。

STEP 2

剔除了一种威胁,还剩四种站着。

被剔除的那种威胁很精确,也确实值得拥有:运营基础设施的那一方——云厂商、托管机房、一个被攻陷的 hypervisor、一个同租户——再也无法从内存里读到你的提示词或模型的激活值。如果你的合规对话卡在"我们不能用托管 GPU,因为运营方理论上能读到数据",那么这项技术就是这句话的答案,而且没有别的答案。

其余的全都还在:

  • 飞地之上的应用。有东西把那条提示词记下来了。智能体会发出包含"实际发出去的提示词"、工具参数与返回结果的 span——这正是可观测性的全部意义——而这些 span 落进的是一个用普通访问控制守着的普通数据库。一块加密的飞地喂给一个明文追踪存储,只是把泄漏点挪了个位置,没有把它堵上。见追踪采样与保留
  • 你自己选的那个对手方。可信执行环境排除的是运营方,不是接收方。如果飞地是模型厂商在跑,那么里头的代码做什么仍然由厂商定义;你得到的是"能核验这份代码就是他们公布的那份"的能力,而不是"可以不再信任他们"的许可。保留期与是否用于训练的问题是合同问题,归数据治理管,不归硅片管。
  • 模型的行为。机密计算与"一次提示词注入会不会让你的智能体自己把数据带出去"是正交的——从飞地的角度看,那次工具调用完全正当。加密不关心明文说了什么。
  • 元数据。请求量、时序、大小与去向,对运营网络的人是可见的。在少数场景里,敏感的正是这条侧信道。

诊断性问题:点名你想排除的那一方。如果答案是"云厂商"或"联合计算里的另一方",可信执行环境是唯一能回答它的技术。如果答案是"我们自己的日志"、"模型厂商的保留策略",或"一个会跟我们智能体说话的攻击者",那你走错了货架,而解法在数据落在哪里、在一份合同里,或在受限范围的权限里。

STEP 3

一份远程证明的价值,正好等于你的核验策略。

度量值是一个哈希。哈希在被拿去和一个期望值比对之前什么也不是,而"这个期望值由谁提供",正是多数部署悄悄把这份保证还回去的地方。

  • 自己核验,否则你买到的只是内存加密。如果你的客户端接受任何格式正确的证明文档、却不拿度量值去和你手里的值比对,你确认的只是某个货真价实的飞地正在跑某个东西。这比宣传页上那句话实质上弱得多。
  • 问清楚期望的度量值从哪儿来。一个既运营飞地、又告诉你它的度量值该是多少的厂商,给你的是一句加了几道工序的承诺。强版本是一份你能独立度量的、公开且可复现的构建;可行版本是一个有文档、有版本的度量值,外加变更前的通知。
  • 拿密钥当闸门,别拿日志当闸门。只有当某样东西在证明通过之前被扣着,远程证明才是承重的。标准做法是:密钥代理只在收到有效报告时才释放数据解密密钥或权重解密密钥——这与智能体身份与证明在上一层划出的"首次使用即信任 vs 经过核验"是同一道分界。
  • 想清楚失败时会怎样。一个失败了只记一条告警然后继续往下走的检查,到了真正要紧的那天也会继续往下走。失败必须意味着拒绝,而这意味着得有人愿意为它承受一次停机。
STEP 4

三种它对得起自身成本的处境。

机密推理不是一次普适升级;它是对一种特定信任结构的特定回答,而它要你付出产能、区域选择、模型选择与运维复杂度。

  • 受监管数据跑在托管加速器上。你没有 GPU,数据涉及医疗、金融或政府密级,而卡住这件事的反对意见正是"运营方"。这是主流场景,也是各家云产品瞄准的那个。
  • 两方都不愿把数据给对方看。两家医院、一家保险公司与一家银行、一个模型持有者与一个数据持有者。飞地就是那个中立的第三地,而远程证明让每一方都能核验"跑的确实是约定好的那份代码"——这与第一种在结构上不同,也是这项技术真正无可替代的那一种。
  • 把权重防着运行这台机器的人。多数人会忘掉的那个方向。一家要把自研闭源模型交付到客户环境里的厂商,可以只向一个通过了证明的运行时释放解密密钥——闭源模型的本地部署正是靠这一条才成为可能。

还有诚实的反面情形:如果你真正想要的是"数据永远不离开这栋楼",那么更简单的手段是根本不把它发出去。跑在你自有硬件上的一个量化开放权重模型,回答了驻留问题,既不用核验证明链,也不用去排机密产能的队——代价是质量,见小模型与本地模型本地知识库

在评估任何一款产品之前,先写下一句话:我们想排除的那一方是 ____。然后检查这句话点到的,是可信执行环境排除得了的人——一个运营方或一个对手方——而不是它排除不了的人,比如你自己的日志栈,或者那个你本来就在往里发数据的厂商。如果点对了,就坚持三件事:一份由你自己的客户端拿你手里的度量值去核验的证明文档、以该核验为条件的密钥释放,以及一条"拒绝而不是告警"的、有文档的失败路径。如果点错了,把钱花在治理你正在制造的那些副本上——因为数据本来也是要从那儿漏出去的。

相关:数据驻留与数据主权是同一个问题的司法管辖那一半,服务与访问讲 API 另一头站着谁,而沙箱与代码执行讲的是反方向的隔离——把智能体的代码挡在你的机器之外,而不是把机器挡在你的数据之外。