基于隐私保护的零知识证明原理及应用实例

自从互联网时代开始,信息的传播速度就成指数级增加,隐私的问题也一度成为了人们关注的重点。直到如今,保护隐私也都是各行各业必须考虑的问题,那怕是最火热的“区块链”。
一、区块链的隐私保护
说到区块链,我们都知道区块链上的每个数据都是公开透明的,但是它对交易人的信息却是完全保密的,比如我们在通过区块链账本支付虚拟币的时候,双方完全不知道对方是谁,然而却并不影响相互间的交易。然而现实中我们还会有可能泄露个人身份,比如实物交易,虽然采用的区块链账本转账,但是要进行实物交易的时候,总要进行面对面或者让第三者帮助交易,但不管采用哪种,只要有实物交易,都会留下身份的线索。有人说,我学电影里的交易方法,把实物放在一个没人的地方,告诉对方去取就可以,那是看多了,现实中不可能的。因为实物交易一定会牵扯到对实物进行验证的问题,也就是基本的信任问题又出来了,所以必须得相互接触才可能达成交易的共识,不然免谈!实际上,不仅是实物交易,以如今的大数据分析手段,也是有可能通过区块链地址使用频率和转账关联等等蛛丝马迹来找到使用人的。

二、区块链隐私保护工作路径
那么要怎么解决以上所说的区块链在现实生活中的隐私问题呢?有人早在20世纪80年代初就已经提出了一种解决办法,即“零知识证明”。而早前的零知识证明采用的是交互式的,要求证明者和验证者之间必须进行交互,但是交互容易作弊,所以也是有很大信用风险。到80年代末,有人进一步提出了“非交互式零知识证明”的概念,用一个短随机串代替交互过程,直到现在被应用于区块链上面,用来隐匿交易双方和交易金额。

三、零知识证明原理
零知识证明满足三个属性:(节选自百度百科)
1、如果语句为真,诚实的验证者(即,正确遵循协议的验证者)将由诚实的证明者确信这一事实。
2、如果语句为假,不排除有概率欺骗者可以说服诚实的验证者它是真的。
3、如果语句为真,证明者的目的就是向验证者证明并使验证者相信自己知道或拥有某一消息,而在证明过程中不可向验证者泄漏任何有关被证明消息的内容。
零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。
PS:实际上这是一种概率游戏,对方不直接告诉你答案,而是采用另一种表达方式来让向你证明,直到你认为对方确实知道答案为止。
举两个例子:
1、 A确实认识B,现在要像C证明他真的认识B,但是A不能直接给C看他和B的认证视频,而是和C说,我认识D且有视频认证,如果这时候C不认识D,那么A就要继续换个人证明下去,如果当A说到Z的时候,而C认识Z且知道Z和B是认识的,并且A也拿出来视频证明,不过C并不能确定(因为只有一个人满足,说服力还不够),这时候A就得继续去说出更多的人,直到把B身边很多的人都说一遍并给出视频证明,且满足条件的人越来越多了,这时候C开始确信A确实认识B了,那么整个过程,A是没有直接去透露一点关于B的信息的。
2、A实际上不认识B,然后A也开始重复例1的办法开始说服C,然后到最后C也相信了A的话,认为A确实认识B。
上面的例子是交互式的零知识证明,是一种说服验证的过程,它的缺陷就在于有一定概率使得欺诈者说服验证者(例2),而造成误判,或者当验证者和证明者相互提前沟通好的时候,也会造成作弊行为的发生。但是在区块链技术的支持下,这种欺诈性会被修正,因为区块链上的协议会取代双方的交互行为而进行自动验证,也即非交互零知识证明。当然大量验证需花费大量的CPU来签署交易,这就导致了区块链的可扩展性面临着巨大的挑战。

四、零知识证明应用实例
以ZCash为例,代币为ZEC,假如我们要转账1个ZEC给接收方,那么这个ZEC会被分成若干份然后被随机投入到一个“混合池”里进行混合打乱(PS:有点像彩票机把号码球给打乱),同时混入的时候还有其他交易方输出的若干份ZEC。这些ZEC又被“混合池”随机拆分,再从这些被拆分生成的所有的ZEC中取出合计币数为1ZEC的若干份,转移到指定接收方的地址中,同时在发送的时间上也可以设置一定的延迟。
PS:其中的“混合池”,就是指的区块链,即网络基础构架。混币的过程就是零知识证明,也就是把一个时间段内的所有信息进行切割和打乱后再重组,而重组后的信息已经不是原来被切割前的信息了,采用这样的方法使得区块链上交易的信息(双方地址和金额)变得混杂而无法被准确获取。

五、总结
区块链上的匿名性交易虽然保护了我们的隐私,但由于无法进行监管,也给作恶者带来了方便。所以,现实生活中,我们应该正确客观的去对待隐私问题,不要给作恶者带来便利,也不要让自己该有的隐私失去保护。

猜你喜欢

转载自blog.csdn.net/u012176591/article/details/79811450