AI花4周证明Signal代码安全,人类只审1%
Google DeepMind 的 AlphaProof Code 花4周,证明了 Signal 实际编译出来的代码是安全的。人类专家审查了约1%。
重点是它验证的层级。这次覆盖的是实现——实际跑起来的代码,而不是协议的设计文档。大多数协议验证做到规格说明就停了。真正的 bug 往往藏在规格和代码之间那道缝里。停在规格,验的只是设计意图。
600万行证明,谁来读
具体做法是这样:Gemini 驱动的智能体写了超过600万行 Lean 证明。Lean 这个证明检查器自己再把证明过一遍。人类专家只看智能体标出来“这里可能有问题”的那约1%。
团队还做了一次健全性检查,确认系统不是摆设。他们把两个旧的、已经修好的 Signal bug 重新塞回代码里。系统给出了机器检查的证明,说明这两个版本不安全。已知的坏东西,它抓得到。
但规格是人写的
这条链路上,规格还是人写、人审。证明的质量,取决于你决定证明什么。
口子也留在这里:证明“代码等于规格”,不等于“代码没有 bug”。规格本身可能写错,系统会一丝不苟地证明一个错误的需求。但能消掉整类 bug,这是实打实的收益。
有人把矛头指向那1%:人类只看智能体标记出来的内容。标记要是偏了,剩下99%除了证明检查器没人碰,而检查器只覆盖规格写了的东西。更狠的玩法是直接攻击规格——故意放一个太弱的属性进去,看系统会不会抱怨。或者给边缘情况写对抗性样例,再找个团队外的人来挑测试漏掉的假设。规格是最先被尝试攻破的地方,因为证明能把一个糟糕的需求做得完全自洽。
真要用,成本在规格上
一位开发者在自己编译器上用了类似方法,规模小得多。只挑最关键的部分,因为 token 要花钱。还有一种更窄的做法:只对高风险路径做这种验证,写规格和审规格才是成本的大头。
对某些东西来说这接近硬要求。任何 TCP 服务器,多半都得证明它在未认证输入上不会崩溃,不会被拿去打远程代码执行。也有人说得更直接:今天做真正的软件产品,不做这类验证就会被黑,没有绕开的路。
从 AlphaProof 到 AlphaCode 这条线,被一位评论者读成递归改进:AI 写的代码能被信任,因为它可以被验证。前提是经过同行评审。
它在 Signal 之外的代码库上泛化得怎么样,没有数据。规格编写和审查的成本会不会成为瓶颈,也没有。普通开发者什么时候能上手,目前不清楚。
关键事实
- AlphaProof Code在4周内证明了Signal实际编译代码的安全性,人类只审查了约1%的代码。
- 该验证覆盖了实现层面,而不仅仅是协议设计。
- 大多数协议验证止步于规格说明,而真正的bug往往存在于规格与代码之间的差距。
- Gemini驱动的智能体编写了超过600万行Lean证明,Lean检查了这些证明,人类专家只审查了智能体标记的约1%。
- 作为健全性检查,他们重新引入了两个旧的、已修复的Signal bug,系统产生了机器检查的证明,表明这些版本不安全。
- 人类仍然编写和审查每个规格,因此证明的质量取决于你决定证明什么。
- 证明代码等于规格并不能保证没有bug,因为规格本身可能有bug,但它能消除整类bug。