Hacker News 中文摘要

RSS订阅

AI遇见密码学1:AI在Cloudflare的Circl中发现了什么 -- AI Meets Cryptography 1: What AI Found in Cloudflare's Circl

文章摘要

我们使用AI审计工具检测Cloudflare的CIRCL密码学库,发现了七个真实漏洞,包括阈值RSA中的关键精度损失和属性加密的访问控制失效。所有漏洞已被修复。这是系列文章的第一篇。

文章总结

好的,这是根据您的要求,对原文进行的中文重述:

标题:AI遇上密码学(一):AI在Cloudflare的CIRCL库中发现了什么

核心内容:

zkSecurity团队利用其AI审计工具,对Cloudflare的CIRCL实验性密码学库进行了扫描,并确认了7个真实存在的漏洞。这些漏洞的严重程度不一,从阈值RSA中的关键性float64精度丢失,到基于属性加密中完全访问控制被攻破。目前,所有7个漏洞均已被Cloudflare修复。

背景与方法:

zkSecurity正在开发一个名为zkao的AI审计代理,其目标是持续对代码进行审计,直至找出所有可被AI工具发现的漏洞。本次实验是构建该工具过程中的一部分,旨在探索AI(特别是大语言模型)在密码学代码审计中的能力与局限。

研究人员使用了两种配置对CIRCL库进行扫描: 1. 仅使用大语言模型,配合简单提示。 2. 使用大语言模型,并辅以由安全专家维护的“技能”库。

对于发现真实漏洞的项目,他们还运行了zkao工具,以验证其是否能独立发现相同问题。结果显示,zkao不仅能发现所有已知问题,还能识别出更复杂、更严重的漏洞。

发现的7个漏洞概览:

  1. float64精度丢失(阈值RSA):在计算多项式时使用了float64类型,导致大数运算时精度丢失,生成错误的密钥分片。AI评为“严重”,Cloudflare评为“低危”。
  2. 证明者控制安全参数(DLEQ证明):安全参数SecParam被包含在证明结构中,攻击者可将其设为极小值,从而轻易伪造证明。AI评为“高危”,Cloudflare评为“低危”。
  3. BLS聚合签名缺少消息唯一性检查:BLS BASIC聚合模式要求所有签名的消息必须唯一,但代码未做此检查,导致经典的“流氓密钥攻击”。AI评为“中危”,Cloudflare评为“高危”。
  4. 通过符号碰撞破坏DLEQ可靠性:利用big.IntFillBytes方法会忽略符号位的特性,结合代数恒等式,攻击者可以伪造一个关于负数公钥的有效证明。AI评为“高危”,Cloudflare评为“低危”。
  5. 位或操作符导致HPKE PSK验证绕过:Go语言中,switch语句的case使用位或操作符|,导致本应检查预共享密钥(PSK)的分支被错误地跳过。AI评为“中危”,Cloudflare评为“中危”(重复报告)。
  6. int64类型计算拉格朗日系数(阈值RSA):使用int64计算拉格朗日插值系数,存在整数溢出和截断两个独立问题,导致签名组合错误。AI评为“高危”,Cloudflare评为“中危”。
  7. CP-ABE访问控制完全失效:在实现密文策略属性基加密(CP-ABE)的AND门时,代码错误地将一个子节点设为0,另一个子节点获得完整秘密,导致任何拥有单个属性的用户都能解密所有密文。AI评为“严重”,Cloudflare评为“严重”。

主要发现与反思:

  • AI对漏洞严重性的评估不准确:AI倾向于高估或低估漏洞的严重性,尤其是在库被多种应用场景使用时。目前仍需人工介入进行严重性评估。
  • 不同模型的能力差异显著且不稳定:不同版本的大语言模型在发现和验证漏洞方面的能力会随时间变化,甚至出现角色互换。因此,审计工具应保持模型无关性。
  • AI能发现问题,但难以进行关联分析:AI能够发现多个独立的漏洞,但有时会将它们打包成一个报告,而未能深入分析它们之间的关联,从而可能错过更复杂的攻击链。

后续计划:

zkSecurity团队已扫描超过200个密码学项目,发现了上千个候选问题。目前最大的瓶颈是人工验证。他们欢迎密码学项目维护者联系合作,以便及时发现并修复严重漏洞。

评论总结

根据评论内容,总结如下:

主要观点与论据:

  1. 对使用浮点数实现加密算法的质疑(评论1,评分无)

    • 评论者惊讶于现代加密算法竟使用浮点数实现,认为这不符合常规做法。
    • 关键引用:"People do crypto using floats these days?" / "I would never have expected people to use floats the 'intended way' to implement crypto algorithms."
  2. 对文章内容的技术提问与反馈(评论2,评分无)

    • 评论者感谢作者,并提出了三个具体问题:
      • 关于AI候选发现与可信报告的比例:询问LLM生成了多少候选报告,最终只有7个真实漏洞。
      • 关于测试缺失:质疑为何没有更高层级的测试(如检查“缺少属性时无法解密”),尽管已添加回归测试。
      • 关于zkao的定义:询问zkao是否是一个持续运行LLM审计的系统,还是其他工具。
    • 关键引用:"Roughly how many candidate reports did the LLMs create vs the eventual 7 true vulnerabilities?" / "I'm wondering why there isn't a test further up the stack that is simply checking 'can't decrypt if the required attribute isn't present'?" / "Is it an LLM? (but better than the frontier LLMs?)"

平衡性总结: - 评论1对技术实现提出质疑,强调浮点数在加密中的非常规性。 - 评论2则聚焦于文章的技术细节,提出建设性问题和改进建议,同时表达对作者工作的认可。两者均未涉及明显争议,观点互补。