ZKDocs新增密码学协议实现指南与安全技术解析

ZKDocs新增四大密码学协议实现指南,包括内积论证(IPA)、Pedersen承诺、KZG多项式承诺及宽模约减技术,为非标准化密码协议提供详细的安全实现方案和协议图解。

内积论证(IPA)

如果您关注密码学领域,可能听说过Bulletproofs——一种近年来流行的零知识证明类型。尽管广受欢迎,但由于其复杂性,很少有人真正详细了解这些证明的工作原理。Bulletproofs的核心构建模块是IPA。与大多数密码协议一样,IPA和Bulletproofs的复杂性源于理论家多年迭代改进。若缺乏先前更简单迭代的上下文,最终协议难以理解。ZKDocs的新章节将IPA分解为更简单的结构,展示如何通过改进实现当前使用的最终协议。与所有ZKDocs内容一样,本节包含实用的协议图解和重要的安全注意事项。

承诺方案

密码学承诺方案的概念相对直观:承诺者首先生成一个密码学承诺,向所有观察者隐藏某个秘密值,随后在某个时间点打开承诺以揭示该值。对于安全方案,承诺不会泄露任何关于秘密的信息,且承诺者无法对秘密值进行抵赖。传统承诺方案允许承诺者提交并揭示特定值(通常是素数模整数)。

多项式承诺是标量承诺方案的泛化,也是零知识协议中的重要构建模块。多项式承诺方案(PCSs)允许一方向另一方证明多项式在某组点上的正确求值,而不泄露多项式的任何其他信息。

ZKDocs更新了最常见承诺方案Pedersen承诺的说明,以及两种常见PCS:IPA PCS(源自IPA)和KZG PCS。

宽模约减

密码学的许多方面常涉及随机值和素数;各种协议的常见需求是需要为某个素数p生成0到p之间的随机值。虽然这听起来相对简单,但安全实现却十分棘手。

问题在于计算机处理的是比特和字节。通常,随机数生成器会生成0到2^n之间的随机数(n为请求的随机比特数)。遗憾的是,2^n不是素数,因此不能直接用于生成0到某个p之间的值。这种根本性不匹配导致许多人使用以下明显、简单但不安全的方法(ZKDocs中详细说明):

[不安全随机采样模p示意图(来源)]

ZKDocs记录了几种避免上述模偏差的技术。最优雅的技术称为宽模约减,其概念简单:如果素数p有k比特,则生成一个(k + 256)比特的随机值(256为可调整的安全参数),然后对其取模p。(请注意该方法也适用于复合模数,因此p甚至不必是素数,但此处使用素数作为常见示例)。如果您好奇为何该方法安全,ZKDocs的最新补充内容详细解释了其统计依据。

我们需要您的帮助!

(页面底部导航内容未作技术性翻译)

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计