星想法 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 进行验证。