阿拉伯童话《一千零一夜》中《阿里巴巴与四十大盗的故事》有这样一个片段。
强盗想知道打开石门的咒语,这个咒语只有阿里巴巴知道,但是阿里巴巴不想让别人听到自己所念的咒语,于是便对强盗说:“你们离我一箭之地,用弓箭指着我,你们举起右手我就念咒语打开石门,举起左手我就念咒语关上石门,如果我做不到或逃跑,你们就用弓箭射死我。”
这个方案对强盗来说没有什么损失,对阿里巴巴来说也保护了咒语不被其他人听到,而且强盗还能搞清楚阿里巴巴念的咒语是不是正确的,两全其美。强盗举起了右手,只见阿里巴巴的嘴动了几下,石门果真打开了,强盗举起了左手,阿里巴巴的嘴动了几下后石门又关上了。强盗还是有点不信,说不准这是巧合呢,他们不断地换着节奏举右手举左手,石门跟着他们的节奏开开关关,最后强盗们想,如果还认为这只是巧合,自己未免是个傻瓜,那还是相信了阿里巴巴吧。
这就是零知识证明最简单易懂的案例,所谓零知识证明(Zero-Knowledge Proof)是由S.Goldwasser、S.Micali以及C.Rackoff在20世纪80年代初提出的。它指的是证明者(被验证者)能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。
零知识证明的性质
根据零知识证明的定义,可以得出零知识证明具有以下三条性质:
1)完备性
如果证明方和验证方都是诚实的,并遵循证明过程的每一步,进行正确的计算,那么这个证明一定是成功的,验证方一定能够接受证明方。
2)合理性
没有人能够假冒证明方,使这个证明成功。
3)零知识性
证明过程执行完之后,验证方只获得了“证明方拥有这个知识”这条信息,而没有获得关于这个知识本身的任何一点信息。
零知识证明及其有关的协议主要优点:
1)随着零知识证明的使用,安全性不会降级, 因为该证明具有零知识性质。
2)高效性。该过程计算量小,双方交换的信息量少。
3)安全性依赖于未解决的数学难题,如离散对数,大整数因子分解,平方根等。
4)许多零知识证明相关的技术避免了直接使用有政府限制的加密算法,这就给相关产品的出口带来了优势。
零知识证明提供了一种能向别人证明拥有某知识但不透漏该知识的一种方法。
为什么要将零知识证明加入区块链?
在区块链的公有链中,所有的交易数据都是公开透明且可以回溯的,这是区块链的优势,同时这个特点又具有一定的危险性。因为很多时候用户在进行交易的时候不希望账户隐私和交易信息被别人看到,有些商业机构对于涉及重要资产和商业机密的部分不希望同行或者竞争对手可以追查到。
比特币对隐私保护的解决思路是,通过隔断交易地址和地址持有人真实身份的关联,以达到匿名的效果。这样的结果就是虽然能够看到每一笔转账记录的发送方和接受方的地址,但是无法和现实世界中具体某个人的信息对应起来,其实这种保护一点都不强大,通过观察和跟踪区块链的信息,通过地址ID、IP信息等还是可以追查到帐户和交易的关联性。
目前来说加入零知识证明是解决区块链的隐私保护问题最有效的手段。
零知识证明是一种密码学技术,是一种在无需泄露数据本身情况下证明某些数据运算的一种行为,允许两方(证明者和验证者)来证明某个提议是真实的,而且无需泄露除了它是真实的之外的任何信息。在密码学货币和区块链中,这通常是指交易信息数据,Zcash和Zcoin都引入的零知识证明。
Zcash 是首个使用零知识证明机制的区块链系统,它可提供完全的支付保密性,同时仍能够使用公有区块链来维护一个去中心化网络。
SBTC首次在比特币分叉币网络中加入将零知识证明,将会易自动隐藏区块链上所有交易的发送者、接受者及数额。只有那些拥有查看密钥的人才能看到交易的内容。用户拥有完全的控制权,他们可自行选择向其他人提供查看密钥。
按照SBTC官方公布的消息来看,到2018年年中将会上线零知识证明,如果真的能成功也是大功一件。