零知识证明,英文名为Zero-Knowledge Proof,是由S.Goldwasser、S.Micali以及C.Rackoff在20世纪80年代初提出的。它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。大量事实证明,零知识证明在密码学中非常有用。如果能够将零知识证明用于验证,将可以有效解决许多问题。
为什么便于理解零知识证明
举几个栗子
栗子①
李雷要向韩梅梅证明自己拥有某个房间的钥匙,假定该房间的锁只能用这把钥匙打开,而其他任何方法都不可以。有2个方法:
1、李雷把钥匙出示给韩梅梅,韩梅梅用这把钥匙打开该房间的锁,从而证明A拥有打开这个房间的钥匙;
2、李雷告诉韩梅梅该房间内有某一特定的物体,李雷用自己的钥匙打开该房间的门,然后把物体拿出来出示给韩梅梅,从而间接地证明自己确实拥有打开这个房间的钥匙。有一个前提,在一个密闭的系统内,没有第二个地方存在这个相同的物体
栗子②
一个数独题目,小明和小红一起在做
做了2分钟小明就做出来了,小红做了2个小时都没做出来,小红觉得太不可思议了,因为她感觉自己的智商收到了侮辱,她一口咬定,这道题目无解,是一个错题,小明想要向她证明他是真的做出来了,有2种办法,第一种是直接把答案给她看,这样小红就相信了,但是小明不想要告诉小红正确答案,但又想让小红相信自己是真的把这个数独题目给解出来了,这时候怎么办呢?
小明想了一个办法,他写了9*9=81张卡片,把卡片上写上正确的答案,然后把题目中提供线索的数字正面朝上,自己填的数字正面朝下,她让小红选任何一行,一列,或者一宫,然后把卡片放到一个盒子里面,搅乱,最后拿出来检查,是不是1-9,这9个数字,用这种方式,多验证几次,小红自然就相信,小明确实在2分钟内找出了这道题目的解,她也就心服口服了。
栗子③
小伙伴们还记得《阿里巴巴和四十大盗》的故事吗?
强盗们抓住了阿里巴巴,要他说出打开宝藏洞穴的密语,阿里巴巴心里想“我说出来你们还不把我给杀了啊,我都没有利用价值了”但是我如果不说出来,那么强盗仍然会把他给杀了,这时候他想了一个办法,他站到洞口,当强盗头举起手上的刀时候,他就说出开门密语,这时候门就打开了,当强盗头放下刀的时候,他就说出关门密语,这时候门关了,来回试了几次,强盗相信了他的话,而且阿里巴巴也并没有泄露自己的密语
零知识证明也不是一个新概念了,它早在20世纪80年代初就被提出。目前在匿名性方面十分突出的加密资产ZCash的匿名交易就是依靠“零知识证明”实现的。
Zcash 是首个使用零知识证明机制的区块链系统,它可提供完全的支付保密性,同时仍能够使用公有区块链来维护一个去中心化网络。与比特币相同的是,Zcash代币(ZEC)的总量也是2100万,不同之处在于,Zcash交易自动隐藏区块链上所有交易的发送者、接受者及数额。只用那些拥有查看秘钥的人才能看到交易的内容。用户拥有完全的控制权,他们可自行选择向其他人提供查看秘钥。
Zcash保留了 bitcoin 原有的模式,基于比特币 0.11.2 版代码修改的。 Zcash 钱包资金分 2 种:透明资金、私有资金,透明资金类似比特币资金;私有资金加强了 隐私性,涉及到私有资金的交易是保密不可查的,透明资金与透明资金的交易是公开可查的。
Zcash以其匿名性使其市场热度一度很高,但其仍面临一些问题:首先,要实现匿名性,其所需要的证明信息所花费的计算资源就非常多,带来了大量的资源浪费,也导致了其可扩展性面临巨大挑战。另外,匿名性会带来大量的额外监管问题,一旦有不法份子利用其用户黄、赌、毒等违法领域,将会给追踪与监管带来非常大的挑战,造成一系列社会问题。