← 最新论文
💻 computer science

GCD: Garbled, Corrected, Demonstrandum -- Fixing and Proving Go's Extended GCD Implementation

本文识别并修复了 Go 语言扩展 GCD 实现中两个危及 RSA 密钥生成的关键偏差,随后利用 Gobra 和 Lean 验证工具证明了修正后代码的正确性与终止性,同时展示了 AI 智能体如何辅助完善形式化证明。

原作者: Linard Arquint

发布于 2026-06-05
📖 1 分钟阅读☕ 轻松阅读

原作者: Linard Arquint

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正在建造一个高安全性的数字保险库(就像用于在线银行或加密消息的那些一样)。为了锁定和解锁这个保险库,你需要一个非常特定且复杂的数学密钥。在计算机科学的世界里,这个密钥是使用一种被称为扩展最大公约数 (Extended GCD) 算法的“配方”生成的。

这篇论文讲述了一组研究人员如何进入 Go 编程语言(一种用于构建软件的流行工具)的“厨房”,去检查这个密钥的配方是否被正确执行。他们发现这个配方被轻微篡改了,并在证明了新版本完美运行的同时修复了它。

以下是他们发现的过程,分为几个简单的部分:

1. “复制粘贴”错误

Go 的开发者想要更新他们的软件,以满足严格的政府安全标准。为此,他们从一个名为 BoringSSL(由 Google 使用的安全库)的可信知名来源中提取了一个配方,并将其“移植”(翻译)到了 Go 语言中。

你可以把这想象成一位著名的厨师给了你一个秘密蛋糕配方。你决定用自己的手写体重新书写这个配方,以便于阅读。论文声称,在重写过程中,Go 开发者不小心改变了两个重要的步骤。

  • 问题所在: 原本的配方有一个严格的规则:“如果你把这两个数字相加,结果太大,你必须同时从两者中减去一个特定的数值。”这能保证蛋糕不会塌陷。
  • Bug(缺陷): Go 版本对每个数字分别进行了这个“太大”的检查。这就像是分别检查面粉和糖一样。这破坏了保证密钥正确的数学平衡(“不变性”)。
  • 令人惊讶的是: 三位不同的专家评审了这段代码,却都漏掉了这个错误。这个错误如此微妙,以至于它从人工审查的网中溜走了。

2. “过大”的原料

第二个问题是关于允许的原料大小。

  • 规则: 原本的配方说:“第一个原料必须始终小于第二个原料。”
  • 变化: Go 版本允许第一个原料比第二个更大。
  • 修复方法: 研究人员并不需要为此修改代码。相反,他们需要更新“证明”(数学保证),以展示即使使用更大的原料,该配方依然有效。

3. 神奇的侦探 (Gobra)

为了证明他们修复了这些 Bug,研究人员使用了一个名为 Gobra 的工具。

  • 类比: 想象一个超级严格、高度专注的机器人检查员。你把代码和一系列规则(规范)喂给它。这个机器人不仅仅是运行代码;它会模拟代码可能运行的每一种方式,检查每一条路径以确保它永远不会违反规则。
  • 结果: 机器人确认,一旦修复了“同步 Bug”,代码就是

100% 正确的。事实上,由于修复程序移除了不必要的步骤,新代码的运行速度实际上比有 Bug 的版本快了 24%

4. AI 助手

研究人员并不是独自完成所有繁重工作的。他们使用了一个 AI Agent(智能计算机程序)来提供帮助。

  • 它是如何工作的: AI 扮演着勤奋学徒的角色。当机器人检查员(Gobra)说“这部分逻辑不通”时,AI 会建议修改规则或代码。
  • 关键点: AI 最初假设代码是完美的,并试图强行让数学逻辑去适应代码。人类研究人员必须告诉 AI:“不,代码实际上是错的;请寻找其中的差异。”一旦 AI 理解了这一点,它就变得非常有帮助,能够提出修复方案并协助编写数学证明。

5. 总结

论文最后总结了三个主要教训:

  1. 即使是专家也会犯下微妙的错误: 三位人类评审员漏掉了一个关键 Bug,而一个形式化证明工具却发现了它。
  2. 形式化验证非常强大: 使用像 Gobra 这样的工具,就像拥有一个数学上的保证,证明你的代码确实有效,而不仅仅是希望它通过几次测试就能正常工作。
  3. AI 是一个伟大的伙伴: AI 可以帮助人类编写这些复杂的证明,但人类仍然需要引导 AI 去质疑代码,而不是盲目接受它。

简而言之: 研究人员发现了 Go 标准库中一个隐藏的关键安全算法缺陷,修复了它,通过数学证明了修复方案的有效性,并展示了该修复实际上提高了软件的运行速度。他们结合了人类的洞察力、自动化证明工具以及 AI 的辅助完成了这项工作。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →