美文网首页嵌牛IT观察
什么是零知识证明?

什么是零知识证明?

作者: Spruance117 | 来源:发表于2020-05-29 21:35 被阅读0次

    姓名:王镭璋

    学号:19011110177

    转载自:

    链接:https://zhuanlan.zhihu.com/p/69776256

    https://zhuanlan.zhihu.com/p/104221636

    https://zhuanlan.zhihu.com/p/50121048

    20世纪80年代初,麻省理工学院研究人员S.Goldwasser、S.Micali及C.Rackoff提出了“零知识证明”的概念。

    零知识证明,指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的,它实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。

    证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。

    举个例子,

    假如A要向B证明自己拥有某个房间的钥匙,该房间只能用钥匙打开锁,而其他任何方法都打不开。B确定该房间内有某一物体,A用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给B,从而证明自己确实拥有该房间的钥匙。这就是零知识证明。

    它的好处在于,在整个证明的过程中,B始终不能看到钥匙的样子,从而避免了钥匙的泄露。

    再举一个更具体的例子:

    如下图:

    洞穴里有一个秘密,知道咒语的人能打开C和D之间的密门。对其他任何人来说,两条通道都是死胡同。Peggy知道这个洞穴的秘密。她想对Victor证明这一点,但是她不想透露咒语。下面是她如何使Victor相信的过程:

    1.Victor 站在A点。

    2.Peggy一直走进洞穴,到达C点或者D点。

    3.在Peggy消失在洞穴中之后,Victor走到B点。

    4.Victor向Peggy喊叫,要她:

    从左通道出来,或者  从右通道出来。

    5.Peggy答应了,如果有必要她就用咒语打开密门。

    6.Peggy和Victor 重复第1~5步n次。

    假设这个过程重复了十次,我们把这个例子放到刚才提到的交互式系统中,在Peggy知道咒语的情况下,那么她有很高的概率(1-1/2^10)让Victor相信她知道这个咒语(完备性),但是如果她不知道咒语,那么Victor相信的概率最大为 1/2^10,也就是有很高的概率Peggy没法欺骗Victor(公正性)。

    进一步设想一下,如果Victor和Peggy上面的交互过程用摄像机记录下来,然后Victor拿给第三个人Carol看,Carol会相信吗,答案是否定的,因为Peggy和Victor完全可以事先商量好进入哪个通道,从哪个通道出来,这样Peggy在不知道咒语的情况下也可以正确的按照Victor的要求从通道走出来。或许他们不这么做,Peggy走进其中一条通道,Victor发出一个随机的要求,如果Victor猜对了,好极了;如果他猜错了,他们会从录像带中删除这个试验。总之,Victor获得一个记录,它准确显示与实际证明Peggy知道咒语相同的事件顺序。

    这就说明了两件事情,其一,Victor不可能 使第三方相信这个证明的有效性;其二,它证明了这个协议是零知识的。在Peggy不知道咒语的情况下,Victor显然不能从记录中获悉任何信息。但是,因为无法区分一个真实的记录和一个伪造的记录,所以Victor不能从实际证明中了解任何信息——它必定是零知识。

    零知识证明满足的性质

    (1)正确性。P无法欺骗V。换言之,若P不知道一个定理的证明方法,则P使V相信他会证明定理的概率很低。

    (2)完备性。V无法欺骗P。若P知道一个定理的证明方法,则P使V以绝对优势的概率相信他能证明。

    在零知识协议中,除满足上述两个条件以外,还满足下述的第三个性质。

    (3)零知识性。V无法获取任何额外的知识。

    零知识证明的优点

    安全,随着零知识证明的使用,安全性会大大提高。

    高效,零知识证明过程计算量小,双方交换的信息量会大大减少,因此较为高效。

    零知识证明能够保障数据的安全性,能够解决很多隐私问题,而且能让双方交换的信息量减少,在各个领域都能有较好的应用。

    零知识证明的应用

    零知识证明最初经常被应用于身份验证,数字签名,认证协议等,而后,区块链的出现给零知识证明的应用提供了更多新的方向。

    它可以解决区块链中的隐私问题和安全问题,可以在不知道客户密码的前提下,进行客户登录的验证,即使服务器被攻击,由于并未存储客户明文密码,用户的账户还是安全的。

    运用零知识证明技术来保证个人信息的隐私安全。

    目前的数据以亿为计量单位的,必须对链上的数据进行加密储存,在大部分的数据应用场景中,运用零知识证明,保证链上输出的有效性和安全性。

    数据使用者只可以获取到与其业务相关的有限信息字段,确保数据使用者难以获取完整有效的明文用户信息,

    意义

    区块链兴起之后,密码学受到更大的重视,零知识证明作为一种密码学方法,热度也提高了很多。但是零知识证明到底有什么现实意义,可以用在哪些场合呢?

    以前零知识证明还有一个名字叫“最小暴露证明”,意思是可以在证明一些命题的同时,对信息进行非常好的保密,这个特点显然对保护隐私是有帮助的。例如,我现在要贷款,贷款公司要求我的月收入是大于两千元的,但是我不想暴露具体我的工资是多少,这个时候就可以用零知识证明的方式来达成。

    另外在区块链上,也可以用零知识证明来达成隐藏转账信息的作用。熟悉比特币的同学知道,比特币上每一笔交易都是透明的,谁给谁转了多少钱都是公开可查的。但是,通过零知识证明技术实现的隐私币,例如 Zcash 就可以达成隐藏交易信息,但是同时能让全网验证交易合法性的效果。

    Web3.0 时代是个人持有数据的时代,是隐私需求非常高的时代,这个背景下,零知识证明在很多场景下都会非常有用。

    结论

    这就是对零知识证明的基本介绍了。我们要记住的是,零知识证明是一种密码学方法,示证者要在验证者对信息本身“零知识”的前提下去证明跟信息相关的某个命题是成立的。在 Web3.0 的数据经济时代,个人隐私问题尤其突出,零知识证明会大有用武之地。

    相关文章

      网友评论

        本文标题:什么是零知识证明?

        本文链接:https://www.haomeiwen.com/subject/lcafzhtx.html