亚瑟王的「随机」挑战:从交互到非交互式零知识证明

星想法 2019-11-01 12:14

编者荐语:

郭宇的文章,值得细细的看,慢慢的品。除了零知识证明的娓娓道来,还有他自己对零知识证明的惊叹和感动。学习~

以下文章来源于安比实验室 ,作者郭宇

安比实验室. 硬核区块链技术团队,致力于参与共建共识、可信、有序的区块链经济体。

本文已更新至Github

https://github.com/sec-bit/learning-zkp/blob/master/zkp-intro/4/zkp-rom.md


Challenges are at times an indication of Lord's trust in you.

挑战,有时是上天信任你的一种表现。

——  D. Todd Christofferson

本文继续长篇大论零知识证明背后的机制原理,希望帮助大家理解这一类「现代密码学工具」的大致轮廓。本文约8000字,少量数学公式。

交互与挑战

我们之前介绍的零知识证明系统都是「交互式」的,需要验证者 Bob 在交互中提供一个或若干个「随机数」来挑战,比如「地图三染色问题」(参看『系列二』)中,验证者 Bob 需要「不断地」随机挑选一条边来挑战 Alice 的答案,直到 Bob 满意为止,而 Alice 的作弊概率会「指数级」地衰减。而让 Bob 相信证明的「基础」取决于 Bob 所挑选的随机数是不是足够随机。如果 Alice 能够提前预测到 Bob 的随机数,灾难就会发生,现实世界就会退化成「理想世界」,而 Alice 就可以立即升级成「模拟器」,通过超能力来愚弄 Bob。

而『系列三』中,我们分析了 Schnorr 协议,协议中虽然验证者 Bob 只需要挑选一个随机数 *c* 来挑战 Alice ,让她计算一个值 *z*,但 Bob 绝对不能让 Alice 有能力来预测到 *c* 的任何知识,否则,Alice 也会变身成模拟器。

随机数的重要性不言而喻:

通过随机数挑战是交互式零知识证明的「信任根基」。

但,「交互过程」会限制应用场景。如果能将交互式零知识证明变成「非交互」?这会非常非常激动人心。所谓的非交互可以看成是只有「一轮」的证明过程,即Alice 直接发一个证明给 Bob 进行验证。