ZKDocs新增内容 - The Trail of Bits博客
我们为ZKDocs添加了更多内容——四个新章节以及对现有内容的补充。ZKDocs为实践中使用但缺乏讨论的密码协议提供解释、指导和文档。因此,我们新增了四个章节,详细介绍了此前缺乏实现指导的常见协议:
- 内积论证(IPA),Bulletproofs的基础
- Pedersen承诺
- KZG多项式承诺
- IPA多项式承诺
我们还在随机采样章节新增了子节,详细介绍了一种称为宽模约减的有效随机采样技术。该技术在特定密码学圈内广为人知,但据我们所知尚未被广泛公开。
本文高层次总结了这些新增内容。
ICYMI:什么是ZKDocs?
近两年前,我们首次发布ZKDocs网站,旨在为非标准密码协议提供更好的实现指导。ZKDocs为零知识证明等常见非标准化密码协议提供高层次摘要、协议图、重要安全注意事项等内容。
内积论证(IPA)
如果你关注密码学领域,可能听说过Bulletproofs——一种近年来流行的零知识证明。尽管广受欢迎,但很少有人真正详细理解这些证明的工作原理,因为它们非常复杂!要感受其复杂性,可查看dalek密码学Bulletproofs实现中的优秀协议图:
Bulletproofs的基本构建块是IPA。与大多数密码协议一样,IPA和Bulletproofs之所以复杂,是因为它们经过理论家多年迭代改进。没有先前更简单迭代的上下文,很难理解最终协议。幸运的是,ZKDocs的新章节将IPA分解为更简单的结构,并展示了如何通过改进实现当前使用的最终协议。与所有ZKDocs内容一样,本节包含有用的协议图和重要安全注意事项。
承诺方案
密码学承诺方案的概念相对直观:承诺者首先产生一个密码学承诺,向所有其他观察者隐藏某个秘密值,然后在稍后时间打开承诺以揭示该值。对于安全方案,承诺不会泄露任何关于秘密的信息,且承诺者无法对秘密值进行狡辩。传统承诺方案允许承诺者提交和揭示特定值,通常是素数模整数。
多项式承诺是标量承诺方案的泛化,也是零知识协议中的重要构建块。多项式承诺方案(PCS)允许一方向另一方证明多项式在某个点集上的正确求值,而不泄露关于多项式的任何其他信息。
我们更新了ZKDocs,解释了最常见的承诺方案——Pedersen承诺,以及两种常见PCS:IPA PCS(源自IPA)和KZG PCS。
宽模约减
密码学的许多方面常涉及随机值和素数;各种协议的常见需求是需要生成0到p之间的随机值,其中p为素数。虽然这听起来相对简单,但在实践中安全地实现却很棘手。
问题在于计算机处理的是比特和字节。通常,随机数生成器会产生0到2^n之间的随机数,其中n是请求的随机比特数。不幸的是,2^n不是素数,因此不能直接用于生成0到p之间的值。这种根本性不匹配导致许多人使用以下明显、简单但不安全的方法生成随机数(我们在ZKDocs中详细说明):
ZKDocs记录了几种避免上述模偏差的技术。最优雅的技术称为宽模约减,其概念简单:如果有一个k比特的素数p,则生成一个(k + 256)比特的随机值(其中256是可调整的安全参数),然后将其模p约减。(注意这也适用于复合模数,因此p甚至不必是素数,但我们使用素数作为常见示例)。如果你好奇这种方法为何安全,ZKDocs的最新补充内容分解了统计论证。
我们需要你的帮助!
如果你喜欢这篇文章,请分享: Twitter | LinkedIn | GitHub | Mastodon | Hacker News
页面内容
近期文章
- 使用Deptective调查你的依赖项
- 系好安全带,Buttercup,AIxCC评分轮正在进行中!
- 使智能合约超越私钥风险成熟化
- Go解析器中意外的安全隐患
- 我们审查首批DKLs23库的收获
- Silence Laboratories的23个库
© 2025 Trail of Bits.
使用Hugo和Mainroad主题生成。