本周优壹组织的学习中学习到了加密相关的知识,其中出现了零知识证明,做了一些检索以期解惑。
如何理解零知识证明
零知识证明的定义:零知识证明就是既能充分证明自己是某种权益的合法拥有者,又不把有关的信息泄露出去——即给外界的“知识”为“零”。
我向你证明我会魔术,但是我不告诉你我的魔术是如何实现的,我表演了空手变大蛇,我表演了拦腰斩,然后你相信了。对于你和周围的人来说,并不了解魔术的每一个环节,即不了解魔术中的“知识”,所以被称为零知识。
理解零知识证明中的2个干扰项:
1. 知识:知识更准确的表达是保密信息。意思是对于需要保密的信息,我不希望外界知道一丁点儿。上面例子中的保密信息就是魔术的全过程。
2. 零:零是针对保密信息的。无论如何要自我证明都是要透露一些信息的,一般来说原理、过程是需要保密的,结果是可以用来验证的。对原理、过程进行零透露,对于结果进行公开是零知识证明的常用方式。
经典举例
1、A要向B证明自己拥有某个房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开。这时有2个方法:
①A把钥匙出示给B,B用这把钥匙打开该房间的锁,从而证明A拥有该房间的正确的钥匙。
②B确定该房间内有某一物体,A用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给B,从而证明自己确实拥有该房间的钥匙。
后面的②方法属于零知识证明。它的好处在于,在整个证明的过程中,B始终不能看到钥匙的样子,从而避免了钥匙的泄露。
2、有一个缺口环形的长廊,出口和入口距离非常近(在目距之内),但走廊中间某处有一道只能用钥匙打开的门,A要向B证明自己拥有该门的钥匙。采用零知识证明,则B看着A从入口进入走廊,然后又从出口走出走廊,这时B没有得到任何关于这个钥匙的信息,但是完全可以证明A拥有钥匙。
Zcash中零知识证明的应用
根据网络中搜索的比较简明的描述:
- Zcash的交易中A向B支付Zcash,类比于A向B用支票支付,“支票”上用“支票号”标记(A的支票号R1,B的支票号R2)。
- 支付过程中A的支票号R1被添加进了作废列表。
- B是否拥有了Zcash,查看B的支票号R2是不是在作废列表中,如果R2不在则代表B拥有Zcash。
该种方式最大的好处在于:每笔交易矿工能接收到的东西只有一个发票代号,和一张新的发票,而且这两样东西都是被加密的。所以矿工并不知道转账双方是谁,也不知道转账金额是多少。
网友评论