Zcash核心:零知识证明(一)

in #cn7 years ago (edited)

Crazy Social Engineer. Cypherpunk Follower in China. 丧心病狂的社会攻城狮,加密朋克追随者。Weibo.com@Warrior比特币玩家,twitter『Bitcoin Warrior!』。

Zcash:黑夜中潜行一文中曾提到Zcash的突破之处在于使用了零知识证明(zero knowledge proof)实现了私密交易与去中心化共存,那么,零知识证明究竟是什么?

它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。比如证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。 其中又分为交互式零知识证明和非交互式零知识证明。

交互式证明

举个例子,如何向色盲证明两个球颜色不同。
19627_large.jpg

假设A有一个红球和黄球,她的一个色盲朋友B不相信A的球颜色不同,A如何才能让B相信这是真的呢?一个简单的办法如下:

  1. A把两个球给B,B每只手拿一个球
  2. A转过身背对B
  3. B抛一枚硬币,如果正面朝上,则保持不动,否则交换左右手的球
  4. A转过身,B问A是否交换过球
  5. 如果A回答错误,则B不相信;否则,重复100次实验,如果A都回答正确,则B相信这两个球是不同颜色的

为什么?如果两个球颜色不一样,那么A每次都应该能分辨;如果两个球颜色一样,则不管B有没有交换过,A都无法分辨,只能乱猜。这样每次猜对的概率只有1/2,重复100次,都猜对的概率将小到可以忽略,所以A将必然猜错。

这就是交互式零知识证明的一个例子,上述证明有三个特点:1)交互过程,整个证明需要A和B进行交互才能完成;2)具有随机性,即B需要抛一枚硬币,来决定是否交换球;3)零知识,虽然B最终相信了这两个球是不同颜色的,但B还是不知道这两个球是什么颜色的。

(未完待续)

本文由币乎社区(bihu.com)内容支持计划赞助

Coin Marketplace

STEEM 0.18
TRX 0.16
JST 0.030
BTC 62784.93
ETH 2465.43
USDT 1.00
SBD 2.63