#禁止右键复制模块,去掉下面的/*注释可使用#

零知识证明入门(简单明了的例子,防止知识老化)

零知识证明入门

什么是零知识证明

零知识证明的定义为:证明者(prover)能够在不向验证者(verifier)提供任何有用的信息的情况下,使验证者(verifier)相信某个论断是正确的。

为了理解上面这段话的含义,接下来给出一个有关零知识证明的非常经典的例子:

交互式零知识证明---色盲游戏

Alice是色盲,Bob不是色盲,在Bob手上有两个大小,形状完全一样的球,但这两个球的颜色不一样,一个球是蓝色的,另一个球是红色的,由于Alice是色盲,所以Alice无法分辨这两个球是否是一样的,Bob需要向Alice证明这两个球是不一样的。在这里,Alice被称为验证者,他需要验证Bob的陈述正确与否,Bob被称为证明者,他需要证明自己的陈述(存在两个颜色不一样的球),Bob需要在Alice不能获得两个球的颜色的情况下,向Alice证明这两个球的颜色是不一样的这个事实,这与零知识证明的定义是相符合的。

AliceBob的面拿起两个球,左手拿蓝球,右手拿红球,然后将双手放到背后,这样Bob就看不到Alice手上的球了,Alice在背后随机交换左右手上的球,交换完成后Alice将手伸出,并询问Bob两个球是否交换过位置,如果Bob能看到球上的颜色,那么每次Alice换过球的位置后,Bob都能正确回答出Alice的问题。

 
第一次,Alice偷偷交换了手中球的位置,然后AliceBob是否交换了球的位置,如果Bob回答Yes,那么Alice有50%的概率相信Bob是可以区分这两个球的颜色,因为Bob有1/2的概率蒙对,所以Alice可以在进行一次测试。如果Bob回答No,那么Alice可以肯定Bob不能区分两个球的颜色。
 
第二次,Alice没有交换手中球的位置,然后AliceBob是否交换了球的位置。如果Bob回答No,那么Alice有75%的概率相信Bob是可以区分两个球的颜色。
 

第一次迭代后,Alice可以说Bob陈述的断言为真的概率为50%。如果Bob第二次回答正确,那么Alice可以说Bob陈述为真的概率达75%。在第三次迭代后,它将是87.5%。如果连续nBob都通过了检查,则Alice1-(1/2)^n 的概率可以认为 Bob 说的是真的,这两个球的确是有红蓝两种颜色。

零知识证明是一种基于概率的验证方式,验证者(verifier)基于一定的随机性向证明者(prover)提出问题,如果证明者都能给出正确回答,则说明证明者大概率拥有他所声称的“知识”。零知识证明并不是数学意义上的证明,因为它存在小概率的误差,欺骗的证明者有可能通过虚假的陈诉骗过验证者。换句话说,零知识证明是概率证明而不是确定性证明,但是也存在技术能将误差降低到可以忽略的值。

根据零知识证明的定义可以得知零知识证明具有以下三个重要的性质:

  1. 完备性(Completeness):只要证明者拥有相应的知识,那么就能通过验证者的验证,即证明者有足够大的概率使验证者确信。;
  2. 可靠性(Soundness):如果证明者没有相应的知识,则无法通过验证者的验证,即证明者欺骗验证者的概率可以忽略。
  3. 零知识性(Zero-Knowledge):证明者在交互过程中仅向验证者透露是否拥有相应知识的陈述,不会泄露任何关于知识的额外信息。

在此示例中,如果Bob的拥有分别球颜色的知识,则Bob每次都会正确回答。这称为完备性。如果Bob不具备分别球颜色的相关知识,则Bob无法分辨Alice是否调换了球。这称为可靠性。在此协议中,Alice无法看到球的颜色。这称为零知识性。

应用(例子)

下面再看一个简单密码学中的应用

 

假如证明者具有私钥,验证者具有公钥,但他想验证证明者是否具有私钥,而且又不能让证明者直接出示私钥,出于零知识证明他可以这么做。

验证者公钥加密只有自己知道的信息形成密文,发给证明者,证明者使用私钥解密后形成原文,再将我解密后的原文和你的加密前的信息对比就可以证明我是具有私钥的

 生活中的应用:比如说,你想向银行贷款,但银行贷款的要求是你一个月收入最少要6k,你不想让银行知道你的月收入,又想通过银行的贷款,那么便使用到了零知识证明。

又比如说你应届生成绩都是61、62,就业单位要求你提供不挂科的证明,但你有不想让单位知道你成绩才61,又想证明你没有挂科,那么可以向学校申请不挂科证明间接解决问题。

零知识证明实际上属于多方安全计算的一种。

 

参考:https://zhuanlan.zhihu.com/p/152065162

posted @ 2023-03-15 20:00  Hndreamer  阅读(221)  评论(0编辑  收藏  举报
#百度统计#