您好!刚知道Zcash吗?
Zcash网络很年轻,但发展迅速! 注册以后我们将与您联系告知有关如何开始使用Zcash的更多信息!

语言

升级版zk-SNARK多方计算协议

Sean Bowe, Ariel Gabizon and Ian Miers | Oct 31, 2017

对每一个你希望为之创造证明的声明来说,zk-SNARk——也就是Zcash核心的零知识证明(Zero-Knowledge Proof)——需要一个 参数生成程序 _ 来产生。然而,个人隐私在zk-SNARK上是被无条件地保护起来的,如果这一程序打了折扣,伪造Zcash可能会实现。因此,保证安全地产生这些参数对我们来说是很重要的。

去年,Zcash使用一个 多方计算 _ (Multi-party Computation,MPC)协议来 执行 _ 这样一种程序。这些协议具有这样一种属性:为了产生的参数是安全的,只需要有 方是不妥协的。换句话来说,若要背离该程序, 每一个 参与者都得是易于妥协的。

但是,我们为这一程序而使用的协议无法扩展到一小群参与者之外。因为我们持续更新Zcash,我们将需要执行许多措施,所以提高可扩展性和这个协议的表现对我们来说很重要。类似地,Zcash以外的、希望使用zk-SNARK的项目也许需要执行他们自己的措施,所以我们希望让它变得对他们来说也同样更便宜且更容易。

Ariel Gabizon, Ian Miers和我刚刚出版了一篇 文章,给出了一个新的MPC协议的细节描述。该协议可以扩展到几乎无数个参与者。而这篇文章同样包括了加强的椭圆曲线(Elliptic Curve)构造,也就是我们曾经在 博客 _ 上写的 BLS12-381.

玩家可交易(Player-Exchangeable)MPC

初始的 <https://eprint.iacr.org/2017/602> _ MPC协议中,所有参与者都需要提前声明他们拥有的“有毒废料(Toxic Waste)”的份额以防范自适应攻击(Adaptive Attack)。这意味着,为了这个协议的完整持续,所有的参与者都需要是可以取得联系的,没有人可以在不导致整个协议中断的情况下中断。参与者需要着保持对他们的硬件的监护贯穿整个过程,这就意味着该程序无法扩展到一小群人以外。

我们喜欢管我们的新协议叫做一个 玩家可交易MPC 。跟之前的版本一样,为了程序是安全的,只需要一个参与者是诚实的就够了。但与之前的版本不同的是,参与者加入这一协议、完成他们的部分然后立即离开。它允许该程序扩展到一个大数量的参与者,并在一个更长的时间内产生(参数)。它同样为参与者减少了受攻击的范围并避免了昂贵的同步化过程的需要。

两个阶段

初始MPC协议包括了三个运算阶段。参与者需要先行动,然后等待在下一个阶段中轮到他们。在第一个阶段与第二个阶段中间,我们需要运行非常昂贵的快速傅立叶变换(Fast-Fourier Transform)。所有这一切的一个结果是,初始MPC的表现实在是糟糕。

 在新的协议中,我们已经成功将MPC减少到了两个阶段。更重要的是,第一阶段并不确定准确的zk-SNARK路线,所以一个大型的共通程序可以用来为所有希望使用zk-SNARK的项目评估这一阶段的价值。第二个阶段并不包括快速傅立叶变换,也就意味着Zcash和其它项目的MPC可以扩展到无限数量的参与者,而无需极度昂贵的运算过程。

我们已经开始实现多方计算程序的这个 第一阶段 ,(代码)是Rust写的,用上了新的BLS12-381椭圆曲线。

总结

这一新协议允许更安全的zk-SNARK参数生成程序:

  • 它允许程序包含大量的参与者,并具备同样的属性:只需要他们中的一个是诚实的,就足以保证参数是安全的。
  • 它允许我们给予参与者可观的灵活性,在硬件和他们用来参与的操作系统方面。结果是,它允许我们减少依赖性和我们必须审计的代码的数量。
  • 它极大地减少了参与者必须花在程序上的时间、减少了攻击面积,以及允许一个更大的参与者集合做出贡献。
  • 它使用了更有力的提高安全性的椭圆曲线建构。

我们准备在不远的将来分享更多关于zk-SNARK参数生成程序的细节。

zkSNARKs, cryptography, Parameter Generation | 查看所有标签