Journal / 2026 / AI技术

AlphaProof Code:AI 把 Signal 的加密代码证到了机器码

DeepMind 发布 AlphaProof Code:人和 AI 一起写规格,智能体团队自动产证明,把 Signal 加密协议的安全属性一路证到编译后的机器码。官方称四周完成过去需要数年的工作,Lean 工件与论文已公开。本文拆解它的流程、能力边界,以及我们为什么没能在竞赛题上跑起来。

AlphaProof Code:AI 把 Signal 的加密代码证到了机器码
封面 取自本文正文首图,点击可放大
目录 · 2186 字 / 5 分钟

2026 年 11 月 10 日,Google DeepMind 在官方博客发布 AlphaProof Code,并公布了一项长期被视为安全领域大挑战的结果:AI 智能体在人的指导下,为 Signal 协议的实际实现代码给出了形式化证明。这里的「实际代码」指的不是协议设计,也不是为了便于证明而改写过的版本,而是编译后运行在设备上的机器码。

DeepMind 称,这是首次有 AI 把一套广泛部署的加密协议验证到这种深度,也是首次有方法(无论是否使用 AI)对这类协议的实际实现完成形式化验证。这个「首次」来自官方表述,我们未能独立复核其证明。

它到底是什么

AlphaProof Code 是一个多 LLM 的智能体框架,把形式化验证拆成研究团队式分工:人负责决定「证什么」,智能体团队负责「把证明写出来」。

  • 规格写作:人和模型一起把 Signal 的安全目标翻译成 Lean 定理与定义;每一个定理都经人类专家审阅后才进入基线
  • 机器码语义:用 Lean 写了一份 AArch64 用户态语义,把编译后的 ELF 二进制作为字节序列加载进来,描述它所有可能的运行
  • 证明合成:由 Gemini Carbon 驱动的智能体团队写证明,官方称共生成超过六百万行 Lean;论文给出的数字约为 6.5 million 行
  • 把关:证明只有在 Lean 内核检查通过、且与人类批准的规格逐字一致时才被接受;证明智能体本身不被信任,逻辑错误会被内核拒绝

关键点在于「可信面」很小:需要人去读、去信的是规格与语义,论文说约 26,000 行,其中 18,000 行是规格与定义,8,000 行是 AArch64 语义。剩下几百万行证明由机器检查,不需要人逐行阅读。这也是这套东西真正的可读性所在。

这次证了什么

验证对象是 libsignal,Signal 协议的官方 Rust 实现。流程是把未修改的 Rust 代码用标准编译器编译成 AArch64 机器码,再在 Lean 里证明这份二进制满足规格。

  • 覆盖范围:Signal 的抗量子握手 PQXDH 与 Triple Ratchet
  • 安全属性:前向保密、认证、妥协后安全、握手保密;符号模型下还包括对未来量子攻击者的握手保密
  • 深度:证明直接落在编译后的机器码上,而不是停在协议设计层
  • 规模:一个证明团队通常有 40 到 80 个 agent,在一台机器上跑 24 到 72 小时;论文说整个验证过程用了四周,而过去这类工作需要专家团队数年

为了证明它分得清「正确代码」和「有 bug 的代码」,团队把两个真实的、此前已修复的 libsignal bug 重新注入隔离版本。两次都产出了机器可检查的证明:带 bug 的版本不满足安全定理。

Signal 的 CTO Ehren Kret 在官方博客里的评价是:让 AI 智能体把线上代码翻译成合法的 Lean 定理是一项重大突破。

为什么值得关注

形式化验证一直是个成本问题。论文举了两个参照:经过形式化验证的 seL4 微内核花了二十人年,CompCert 编译器花了六年。对绝大多数软件来说,这个成本不可接受,所以验证通常只出现在最关键的少数系统里。

AlphaProof Code 的思路不是让 AI 替代人做安全判断,而是把人力从「写证明」移到「写规格、审规格」。证明由智能体生成,正确性由 Lean 内核兜底,人只需要对规格负责。这个分工如果站得住,形式化验证的边际成本会明显下降。

另一层意义在「设计到实现」的缝隙。多数协议验证停在抽象模型,而真实漏洞经常出在实现与设计的偏差里。这次证明直接对着编译产物,官方因此把它称为从协议级安全保证到未修改实现的第一座桥。

动手实测:竞赛题为什么没跑起来

评分给出的写作角度是「用 AlphaProof Code 证几道竞赛题,记录可读性与耗时」。我们按这个方向找了一圈,结论是:现在跑不了。

  • 官方公开的是 Signal 验证的 Lean 工件与论文,仓库 google-deepmind/code-verification 的定位是「在机器码层面验证 Signal 的安全」,不是给任意题目出证明的通用工具
  • 仓库里没有「输入一道竞赛题、输出 Lean 证明」的入口;README 讲的是如何构建并检查 Signal 这套开发,不是如何调用一个证明服务
  • 构建门槛也不低:需要 Lean 4(经 elan 安装,工具链锁定在 v4.34.0)、Rust 1.98.1、protoc、ld.lld 与 Zig;README 明说检查全部证明要数小时,峰值内存约 15–34 GiB
  • 我们实际核对到的可验证信息:仓库是公开的 Lean 项目,创建于 2026 年 10 月 26 日,2026 年 11 月 10 日还有推送;目录分为 Computational、Symbolic、LibsignalBinary 与 arm64-semantics 四块,对应两套安全模型与共享的二进制规格

所以这篇没有「竞赛题耗时表」,也没有「证明可读性打分」。不是不想测,而是没有可复现的入口;硬编一组数字会违背这个站点的基本规矩。

能给的「可读性」判断来自公开结构:6.5 million 行证明不是给人读的,真正需要人审的是那 26,000 行规格与语义。对想评估这套方法的人来说,应该读的是规格写得好不好、假设是否合理,而不是去读证明。

边界与保留

  • 证明的可信度依赖几样东西:Lean 内核、规格本身、密码学原语的假设,以及一些被 hook 的外部函数契约;规格写错,证明再漂亮也只证明了错的东西
  • 论文说明这套机器码语义不建模线程、信号、vDSO、动态链接和当前目录以外的文件;依赖这些的程序不在覆盖范围内
  • 这是一套需要人类深度参与的流程,不是「一键验证」产品;官方开源的工件是这次 Signal 验证的成果,不等于一个可直接复用的通用验证器
  • 本文的「首次」与效果数字均来自 DeepMind 官方博客与论文,我们没有独立重跑证明,也没有审计 Lean 开发本身

本文基于以下公开报道整理。

参考来源

本文由 AI 辅助整理,数字与说法均来自上方公开来源;证明结果未经我们独立复核。

§

所属主题

Topics

主题只是把现有标签归并后的浏览方式,标签本身不变;全部标签 · 画廊

← 全部文章