请选择 进入手机版 | 继续访问电脑版

tokentop

【Lava科普】一文读懂零知识证明(二)

Lava社区 发表于 2020-5-20 09:38:43 | |阅读模式
Lava社区 | 新手上路 | 发表于 2020-5-20 09:38:43 | 显示全部楼层 |阅读模式
举例理解
例1
A要向B证明自己拥有某个房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开。这时有两个方法:
1. A把钥匙出示给B,B用这把钥匙打开该房间的锁,从而证明A拥有该房间的正确的钥匙。
2. B确定该房间内有某一物体,A用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给B,从而证明自己确实拥有该房间的钥匙。
2属于零知识证明。在整个证明的过程中,B始终不能看到钥匙的样子,从而避免了钥匙的泄露。
例2
有一个缺口环形的长廊,出口和入口距离非常近(在目距之内),但走廊中间某处有一道只能用钥匙打开的门,A要向B证明自己拥有该门的钥匙。
采用零知识证明,则B看着A从入口进入走廊,然后又从出口走出走廊,这时B没有得到任何关于这个钥匙的信息,但是完全可以证明A拥有钥匙。
例3
在密码学中运用的比喻,A拥有B的公钥,A没有见过B,而B见过A的照片,偶然一天2人见面了,B认出了A,但A不能确定面前的人是否是B,这时B要向A证明自己是B。
1. B把自己的私钥给A,A用这个私钥对某个数据加密,然后用B的公钥解密,如果正确,则证明对方确实是B。(直接证明公钥正确)
2. A给出一个随机值,并使用B的公钥对其加密,然后将加密后的数据交给B,B用自己的私钥解密并展示给A,如果与A给出的随机值相同,则证明对方是B。(间接证明公钥正确)
第二种方法属于零知识证明。
#公钥和私钥:公钥与私钥是通过一种算法得到的一个密钥对。公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。通过这种算法得到的密钥对能保证在世界范围内是唯一的。
使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。
注意
零知识证明并不是数学意义上的证明,因为它存在小概率的误差,欺骗者有可能通过虚假陈述骗过证明者。换句话来说,零知识证明是概率证明而不是确定性证明。但是也存在有技术能将误差降低到可以忽略的值。
例1
阿里巴巴知道打开藏着财宝的山洞的咒语。强盗抓住他,让他说出咒语。如果阿里巴巴说出咒语,就会因为没有利用价值而被杀死。如果阿里巴巴坚持不说,强盗不会相信他真的掌握咒语,也会杀死他。
但阿里巴巴想了一个好办法,他对强盗说:“你们离我一箭之地,用弓箭指着我,你们举起右手我就念咒语打开石门,举起左手我就念咒语关上石门,如果我做不到或逃跑,你们就用弓箭射死我。”
这个故事存在的欺骗可能在于阿里巴巴并不真的掌握咒语,而是跟一个真正掌握咒语的人事先串通好。强盗举手之后,阿里巴巴偷偷把要不要开门的信息传递给暗中真正掌握咒语的人,由他来念咒语开门,就把强盗给骗过去了。所以强盗还应该增加难度,限制阿里巴巴做除了念咒语之外其他多余的动作。
您需要登录后才可以发帖 登录 | 立即注册  

本版积分规则

发表主题
返回顶部 返回列表