zkFuzz: Foundation and Framework for Effective Fuzzing of Zero-Knowledge Circuits
本文介绍了 zkFuzz,这是一种基于理论迹约束一致性测试(TCCT)的新型变异模糊测试框架,该框架通过克服现有静态分析和形式化分析工具的局限性,有效检测零知识电路中的约束不足和约束过度漏洞。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正在建造一个魔法金库,它能证明你知道一个秘密密码,却从不真正展示该密码。这就是“零知识(ZK)电路”在数字世界中所做的事情。它们是匿名加密货币和安全投票系统等隐私保护技术的安保人员。
然而,建造这些金库极其棘手。如果你在蓝图上犯了一个微小的错误,金库可能会:
- 让任何人进入(即使他们不知道密码)。
- 将真正的拥有者拒之门外(即使他们拥有正确的密码)。
这篇论文介绍了一种名为ZKFUZZ的新工具,用于在恶意行为者发现这些错误之前将其找出。以下是其工作原理的简单解释:
问题:“蓝图”与“现实”之间的脱节
在这些系统中,开发人员编写一个程序,同时执行两件事:
- 计算:用于推导秘密的实际数学运算(例如在地图上计算路线)。
- 约束:用于证明数学运算正确执行的规则(例如验证路线存在的检查清单)。
问题在于,这两部分经常不同步。
- 约束不足:规则过于宽松。黑客可以诱骗系统接受一条虚假路线。
- 约束过度:规则过于严格。系统因为一条微小且不必要的规则而拒绝了一条完全有效的路线。
现有的用于发现这些错误的工具就像糟糕的拼写检查器。它们基于模式进行猜测,并对实际上没问题的事物大喊“错误!”(误报),或者完全遗漏深层、复杂的错误。
解决方案:ZKFUZZ(“变异模糊测试器”)
作者创建了一个名为ZKFUZZ的新框架。ZKFUZZ 不仅仅读取代码,它更像一位顽皮的测试工程师,故意试图破坏系统。
以下是类比:
想象你有一份食谱(计算)和一次品尝测试(约束)。
- 旧工具:查看食谱并说:“这看起来很可疑,因为它用了盐。”(它们基于规则进行猜测)。
- ZKFUZZ:实际烹饪这道菜,但随后它变异了食谱。它将“糖”换成“盐”,或者改变烹饪时间。然后,它将这道变异后的菜肴喂给品尝测试。
- 如果品尝测试对一道本应难吃的菜肴(因为食谱被修改了)说“美味!”,ZKFUZZ 就知道规则太宽松(约束不足)。
- 如果品尝测试对一道本应美味的菜肴(因为原始食谱是正确的)说“难吃!”,ZKFUZZ 就知道规则太严格(约束过度)。
秘密武器:“适应度”与“定向”
在 ZK 电路中发现一个漏洞,就像在行星大小的干草堆里找一根针。涉及的数字如此巨大,以至于计算机无法尝试每一种可能性。
ZKFUZZ 使用遗传算法(类似于进化):
- 变异:它创建成千上万个略有损坏的程序版本。
- 适应度评分:它对这些损坏的版本进行评级。如果一个损坏的版本接近通过测试(即使它失败了),它就会获得“高分”。这告诉系统:“你越来越接近了!”
- 定向:它不仅仅是随机猜测。它知道漏洞通常发生在“边缘情况”(例如当数字为零或极大时)。它专门尝试向系统输入这些棘手数字,以观察系统是否会崩溃。
结果:捕捉未被发现的漏洞
该团队在452 个实际项目中使用的真实世界电路上测试了 ZKFUZZ。
- 得分:它发现了85 个漏洞。
- 零日漏洞:其中 59 个是全新的、未知的漏洞(零日漏洞),此前无人知晓其存在。
- 影响:其中 39 个得到了开发人员的确认,14 个已被修复。这包括zkSync(一个加密货币平台)和passport-zk-circuits(数字身份系统)等主要项目中的漏洞。
- 无误报:与其他工具不同,ZKFUZZ 没有将任何非漏洞标记为漏洞。
为什么这很重要
该论文认为,之前的工具遗漏了问题的很大一部分。它们只寻找规则中的“随机性”。ZKFUZZ 引入了一种名为TCCT(轨迹 - 约束一致性测试)的新理论,该理论检查计算机实际采取的路径是否与其应遵循的规则相匹配。
这一新理论发现了当计算机“崩溃”或意外停止时发生的漏洞,而之前的工具完全忽略了这些情况。
一句话总结
ZKFUZZ 是一个智能的自动化“漏洞猎手”,它通过变异代码并向其输入棘手数据来破坏零知识电路。它发现了数十个其他工具遗漏的关键安全漏洞,证明了即使在隐私数学的复杂世界中,一点点受控的混乱也是发现真相的最佳方式。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。