永发信息网

什么是零知识证明

答案:1  悬赏:20  手机版
解决时间 2021-12-04 04:01
  • 提问者网友:寂寞梧桐
  • 2021-12-04 00:33
什么是零知识证明
最佳答案
  • 五星知识达人网友:荒野風
  • 2021-12-04 01:23
零知识证明,指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的

从本质上讲,零知识证明是一种协议。所谓协议(Protocol),就是两个或两个以上的参与者为完成某项特定的任务而采取的一系列步骤,包括以下三个特征:

1. 协议自始至终是有序的过程,每一步骤必须依次执行,在前一步骤没有执行完之前,后面的步骤不可能执行。
2. 协议至少需要两个参与者,一个人可以通过执行一系列的步骤来完成某项任务,但它不构成协议。
3. 通过执行协议必须能够完成某项任务。

基于数学的推理虽然非常复杂,但思路却很简单一些方案。

所谓零知识证明,指的是示证者在证明自己身份时不泄露任何信息,验证者得不到示证者的任何私有信息,但又能有效证明对方身份的一种方法。看起来有点别扭,给出几个个例子:(摘自百度百科)

1)A要向B证明自己拥有某个房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开。这时有2个方法:
(一)A把钥匙出示给B,B用这把钥匙打开该房间的锁,从而证明A拥有该房间的正确的钥匙。
(二)B确定该房间内有某一物体,A用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给B,从而证明自己确实拥有该房间的钥匙
后面这个方法属于零知识证明。好处在于在整个证明的过程中,B始终不能看到钥匙的样子,从而避免了钥匙的泄露。

2)A拥有B的公钥,A没有见过B,而B见过A的照片,偶然一天2人见面了,B认出了A,但A不能确定面前的人是否是B,这时B要向A证明自己是B,也有2个方法。

(一)B把自己的私钥给A,A用这个私钥对某个数据加密,然后用B的公钥解密,如果正确,则证明对方确实是B。
(二)A给出一个随机值,B用自己的私钥对其加密,然后把加密后的数据交给A,A用B的公钥解密,如果能够得到原来的随机值,则证明对方是B。
后面的方法属于零知识证明。

3)有一个缺口环形的长廊,出口和入口距离非常近(在目距之内),但走廊中间某处有一道只能用钥匙打开的门,A要向B证明自己拥有该门的钥匙。采用零知识证明,则B看着A从入口进入走廊,然后又从出口走出走廊,这时B没有得到任何关于这个钥匙的信息,但是完全可以证明A拥有钥匙。
==========================================================

我的理解,零知识证明就是一种认证协议,A向B证明自己拥有“某种东西”(例如身份),而不会给B有使用自己特性的机会,也就是不能让B拥有向别人证明他是A的能力,现实生活中,比如,身份证,你可以出示身份证给他人证明自己,但你不用把你的身份证给他,否则他就可以冒充你,这就是零知识证明协议。

零知识证明协议通常由三个协议步骤组成:

目击者:证明者选择了一个随机数字,发给验证者一个这一秘密数字的知识。这个数字与一系列的问题相关,而证明者能够回答这些问题。

挑战:验证者在这些问题集中随机选择一个问题发给证明者

回复:证明者利用他的秘密数字解决了这个问题,并发给验证者
还是身份证的例子:
A:我是A,并告诉B我有身份证
B:身份证给我看一下?
A:出示身份证。
--------------------
零知识性证明应该是证明A到底泄露了多少信息给B,例如,我的身份证例子必须是在B无法复制伪造身份证的前提下,否则,我们还是泄露了信息给B,建立的曲线模型应该就是考虑了这些。
我再举个认证的的例子(甲校验乙):
方式一:
甲产生一个随机消息发给乙,乙用其私钥加密后发给甲,甲用乙的公钥解密并验证消息
这里就有一个问题,乙有时候并不知道他加密的是什么消息,甲可以拿着乙加密后的消息冒充乙,或者解密(虽然很难)。这种验证的零知识性就不好。

改进一下:在甲确定乙的公钥的前提下,乙自己找一个无关紧要的消息,发送两个消息给甲,一个消息首先使用了消息摘要,然后用私钥加密,另一个是没有加密的消息,这样甲仍然可以验证乙,但零知识性就很好了。
---------------------
==============================
网上有很多关于零知识证明的有趣的故事。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯