AlphaProof Code 验证 Signal:650 万行证明与 4 周完成

一句话结论:Google DeepMind 在 2026 年 11 月 10 日公布的 AlphaProof Code,用 Gemini 4 Carbon 驱动的智能体群在四周内为 Signal 协议的 libsignal 实现产出了约 650 万行 Lean 机器可检证明,这是首次把协议级安全保证与一个真实商用加密实现的未修改机器码绑定起来。

过去几个月,AI 用于挖漏洞的新闻已经不少,OpenAI 让模型在 Linux 内核里找出 948 个提权漏洞就是典型案例。挖漏洞是证伪,证明不存在漏洞是证真,后者的成本高出好几个数量级。这次 DeepMind 跨过去的是这道门槛。

这篇拆解 AlphaProof Code 到底证明了什么、用什么证明的、哪些部分没有被覆盖,以及这套方法对普通开发者到底意味着什么。

验证对象落在机器码这一层

过去对加密协议做形式化分析,默认对象是协议的设计图。论文描述一层,实现是另一层,中间还隔着编译器。序列化、可变状态、编译器变换、延迟到达的消息、归档会话,这些实现层的细节,纸面模型往往接不住。

AlphaProof Code 把验证对象往下推了一层。团队用未经修改的 libsignal v0.105.4 和 SPQR v1.6.0,接上一个小命令行外壳,用标准 rustc 1.98.1 静态链接到 musl,产出单个 AArch64 Linux 可执行文件。被验证的二进制约 560 KB,含约 14 万条 AArch64 指令。

然后他们给 Lean 写了一套 AArch64 指令集模型,467 条指令、31 个系统调用,7,578 行,证明真实 ELF 镜像在这个模型下加载执行时仍满足安全性质。rustc、LLVM 和 Rust 语义因此从这次结果的信任基里被拿掉了,换来一个新的依赖:这套形式化的 AArch64 模型必须准确描述处理器行为。

论文把这件事称为首个面向广泛部署加密协议未修改实现的协议级安全证明。Signal 首席技术官 Ehren Kret 的评价是,既有形式化验证只覆盖了更小块的代码,这个方法让验证范围显著扩大。

650 万行证明是怎么写出来的

分工是这件事的核心。论文里有一句很直接的表述:所有证明代码都由智能体生成,作者本人没有写过一行证明代码。

人类负责选性质、处理歧义、做安全权衡、审阅规格,并保留最终批准权。Gemini 4 Carbon 和 Claude Opus 5.5 起草并审阅规格,审阅环节刻意安排了不同模型家族交叉检查。Gemini 4 Carbon 的智能体团队接着填满所有证明空缺。

证明部分 Lean 行数 说明
机器码层 约 530 万行 二进制语义与从符号模型到可执行文件的精化
计算型证明 约 86 万行 针对经典对手的字节串级成功率上界
符号型证明 约 35 万行 10 条定理,Dolev-Yao 模型下用 DyLean 框架
漏洞反证 约 14 万行 两个故意植入的历史 bug 的反证
分配器证明 约 7 万行 内存分配相关性质

一个典型的证明活动会在一台机器上跑 40 到 80 个智能体,持续 24 到 72 小时,由编排器和组长协调证明工作者,架构师与集成者角色维护共享证明库。稳妥起见,人工只批准带理由记录的信任假设修改。

安全防作弊机制同样有设计。生成和验收被拆开,一个看门人角色只看定理名和文件路径,看不到智能体的推理过程。一个证明要被接纳,得先过 Lean 内核检查,再由比对器确认它与人工批准的规格完全一致,包括所有传递定义,只使用 Lean 的标准公理。智能体只能提小幅修正,改动信任假设必须走人工批准。智能体自审时大约 1% 的产出会被标记出来交给人再看一眼。

为什么要这么严。论文里描述了一类真实风险,智能体可能通过加假设、缩前置条件或改定义的方式,让定理更容易成立,甚至变成空洞为真。把验收权从生成方手里拿走,就是为堵这个口子。

验证范围:覆盖了什么,没覆盖什么

这次验证只针对一对一会话代码,覆盖 PQXDH 握手与 Triple Ratchet 消息这两块。Triple Ratchet 是 Double Ratchet 加上 Signal 的后量子 SPQR 机制,握手时同时使用椭圆曲线和后量子密钥材料建立加密会话。

两条论证线并行推进。符号线基于 Dolev-Yao 模型,把密码学运算理想化,攻击者可以控制网络、交织会话、攻破选定的密钥或会话状态,这十条定理覆盖消息密钥前向保密、认证、泄露后安全、握手保密,还额外覆盖了事后 Diffie-Hellman 被攻破情形下的握手保密。计算线则用字节串建模,给出攻击者成功率的具体上界,代价是只覆盖经典对手。

没覆盖的部分清单更长。群聊、sealed sender、侧信道、首次使用信任以及多种多设备场景都不在范围内。密钥生成被排除在外。信任基里,规格约 1.8 万行(含文档 2.8 万行),AArch64 语义约 8,000 行,机器码的 Lean 编码约 9.5 万行。另有 37 个例程是用契约替代而非直接证明,包括 SHA-256 与 SHA-512 压缩、AES-256-CBC、X25519、Edwards 曲线运算、Kyber1024 与 ML-KEM-768,以及 libcrux 的 HMAC。18 个 panic 入口点同样属于假设而非证明。

换句话说,这个结论的适用范围是特定协议的特定性质、特定编译产物、明确记录的假设,这并不等于 Signal 已被证明不可破解。WhatsApp 和谷歌信息跑的是协议变体,结论不能自动迁移过去。谷歌也明确表示,目前无法判断这套技术在更大范围推广的实际可行性,算力规模尚未公布。

用历史漏洞做的对照实验

怎么确认这套规格真的能抓住问题,团队做了一个很直接的设计,把两个已经修复过的 libsignal bug 反向打回隔离构建里。

一个是弱状态缺陷,在消息成功解密后仍保留了一份含签名预密钥副本的未确认会话状态。另一个涉及 X25519 小子群与编码检查,被篡改的基础密钥能创建出共享密钥相同的第二个会话。两个被改坏的二进制,AlphaProof Code 都生成了完整的 Lean 反证,说明符号安全定理不再成立。

这属于历史漏洞的重现,研究也没有把旧缺陷暴露给当前用户。反向植入是为了做一次受控对照,检验这套形式化规格能否区分修好的实现和有已知问题的版本。这个设计比单纯报告一次成功更有说服力。

整个证明材料是公开的,计算型证明、符号型证明、共享二进制和 AArch64 语义分开存放,构建与独立复核脚本一并给出,仓库在 github.com/google-deepmind/code-verification。

四周 vs 几年

这项工作由五人团队完成,耗时四周。研究科学家 Swarat Chaudhuri 对 Axios 表示,这套工具四周就做到了人类可能需要数年的事。

这个对比值得停下来想想。形式化验证一直贵在人类要手写证明。AlphaProof Code 的答案是把最贵的那部分交给智能体,人只负责决定什么必须为真。这和过去几年智能体在代码上的角色变化是同一条线,从辅助补全变成独立产出,只是这次产出物从代码变成了证明。

研究团队的下一步方向包括把验证技术整合进 AI 编码智能体和软件开发流程,以及和 Project Zero、CodeMender 等谷歌现有的漏洞挖掘与修补工具结合。同类的路线此前也有实践参照,比如OpenAI 用模型挖出 948 个 Linux 内核提权漏洞,那是从安全社区的另一边走过来的。

对普通开发者意味着什么

短期内,AlphaProof Code 不会变成可以直接调用的模型,它是一个验证框架。规格、证明和构建脚本已经开源,想复现或者移植到自己的代码库上,门槛比一年前低了很多。

更实际的影响在成本结构上。当证明的边际成本从《一个人几个月》降到《一组智能体跑几天》,可被形式化验证的代码规模就会上一个量级。目前这套流程仍需要一位懂密码学、懂 Lean、能审阅规格的专家在场,人工批准这道口子短期不会消失。

另一层影响是安全边界的重新划分。找漏洞和证漏洞的差别在于,前者永远不知道什么时候算找完了。如果 AI 能证明某些性质成立,那类《检查一下有没有问题》的评审环节就有机会从必做项变成可选项。谷歌自家的提示词注入防御研究可以对照看,AGENTS.md 投毒自查清单里列的排查项,本质都是在做局部证明。

对想借这次研究评估自身代码质量团队的,可以先看GPT-6 Cyber 的越界率拆解,那篇讲的是模型在漏洞任务上的可控性,和这次的可证明性是同一个问题的两面。

常见问题

AlphaProof Code 是一个可以调用的模型吗

它是一个多智能体形式化验证框架,不对外提供可调用的模型接口。人类与模型协作产出 Lean 规格,,智能体填证明,Lean 内核独立检查。规格与证明已经开源在 google-deepmind/code-verification,但目前没有对外的模型接口。

这次验证等于 Signal 已经不可破解了吗

不等于。结论覆盖一对一会话代码的指定性质,针对特定 AArch64 编译产物,依赖明确记录的信任假设。群聊、sealed sender、侧信道、密钥生成和多设备场景都不在范围内。Signal 官方 CTO 的原话是让人们对代码的隐私保证更有信心,也不等于宣告安全终结。

这套方法现在能用在普通项目上吗

还不现实。完整复现需要形式化密码学与 Lean 专家,四周的周期里智能体跑了 40 到 80 个并行任务,算力成本谷歌尚未公布。但它是开源的,规格和证明可以独立复核,作为学习材料和小规模试验的起点是够的。

小结

AlphaProof Code 的意义不在于证明了 Signal 安全,而在于把《证明不存在漏洞》这件事的边际成本降了下来。650 万行 Lean 对 560 KB 二进制,四周对几年,一组智能体对五个人类研究者。

对绝大多数人,AI 辅助验证还会停留在论文和演示阶段。但方向已经清楚,代码生成的速度在飞涨,靠人工逐行审阅来兜底的模式撑不了多久。能证明的那部分交给机器,剩下的交给人,这是接下来几年安全工程的基本分工。

相关阅读