零知识证明入门(简单明了的例子,防止知识老化)
零知识证明入门
什么是零知识证明
零知识证明的定义为:证明者(prover
)能够在不向验证者(verifier
)提供任何有用的信息的情况下,使验证者(verifier
)相信某个论断是正确的。
为了理解上面这段话的含义,接下来给出一个有关零知识证明的非常经典的例子:
交互式零知识证明---色盲游戏
Alice
是色盲,Bob
不是色盲,在Bob
手上有两个大小,形状完全一样的球,但这两个球的颜色不一样,一个球是蓝色的,另一个球是红色的,由于Alice
是色盲,所以Alice
无法分辨这两个球是否是一样的,Bob
需要向Alice
证明这两个球是不一样的。在这里,Alice
被称为验证者,他需要验证Bob
的陈述正确与否,Bob
被称为证明者,他需要证明自己的陈述(存在两个颜色不一样的球),Bob
需要在Alice
不能获得两个球的颜色的情况下,向Alice
证明这两个球的颜色是不一样的这个事实,这与零知识证明的定义是相符合的。
Alice
当Bob
的面拿起两个球,左手拿蓝球,右手拿红球,然后将双手放到背后,这样Bob
就看不到Alice
手上的球了,Alice
在背后随机交换左右手上的球,交换完成后Alice
将手伸出,并询问Bob
两个球是否交换过位置,如果Bob
能看到球上的颜色,那么每次Alice
换过球的位置后,Bob
都能正确回答出Alice
的问题。
Alice
偷偷交换了手中球的位置,然后Alice
问Bob
是否交换了球的位置,如果Bob
回答Yes,那么Alice
有50%的概率相信Bob
是可以区分这两个球的颜色,因为Bob
有1/2的概率蒙对,所以Alice
可以在进行一次测试。如果Bob
回答No,那么Alice
可以肯定Bob
不能区分两个球的颜色。Alice
没有交换手中球的位置,然后Alice
问Bob
是否交换了球的位置。如果Bob
回答No,那么Alice
有75%的概率相信Bob
是可以区分两个球的颜色。第一次迭代后,Alice
可以说Bob
陈述的断言为真的概率为50%。如果Bob
第二次回答正确,那么Alice
可以说Bob
陈述为真的概率达75%。在第三次迭代后,它将是87.5%。如果连续n
次Bob
都通过了检查,则Alice
有1-(1/2)^n
的概率可以认为 Bob
说的是真的,这两个球的确是有红蓝两种颜色。
零知识证明是一种基于概率的验证方式,验证者(verifier
)基于一定的随机性向证明者(prover
)提出问题,如果证明者都能给出正确回答,则说明证明者大概率拥有他所声称的“知识”。零知识证明并不是数学意义上的证明,因为它存在小概率的误差,欺骗的证明者有可能通过虚假的陈诉骗过验证者。换句话说,零知识证明是概率证明而不是确定性证明,但是也存在技术能将误差降低到可以忽略的值。
根据零知识证明的定义可以得知零知识证明具有以下三个重要的性质:
- 完备性(
Completeness
):只要证明者拥有相应的知识,那么就能通过验证者的验证,即证明者有足够大的概率使验证者确信。; - 可靠性(
Soundness
):如果证明者没有相应的知识,则无法通过验证者的验证,即证明者欺骗验证者的概率可以忽略。 - 零知识性(
Zero-Knowledge
):证明者在交互过程中仅向验证者透露是否拥有相应知识的陈述,不会泄露任何关于知识的额外信息。
在此示例中,如果Bob
的拥有分别球颜色的知识,则Bob
每次都会正确回答。这称为完备性。如果Bob
不具备分别球颜色的相关知识,则Bob
无法分辨Alice
是否调换了球。这称为可靠性。在此协议中,Alice
无法看到球的颜色。这称为零知识性。
应用(例子)
下面再看一个简单密码学中的应用
假如证明者具有私钥,验证者具有公钥,但他想验证证明者是否具有私钥,而且又不能让证明者直接出示私钥,出于零知识证明他可以这么做。
验证者公钥加密只有自己知道的信息形成密文,发给证明者,证明者使用私钥解密后形成原文,再将我解密后的原文和你的加密前的信息对比就可以证明我是具有私钥的
生活中的应用:比如说,你想向银行贷款,但银行贷款的要求是你一个月收入最少要6k,你不想让银行知道你的月收入,又想通过银行的贷款,那么便使用到了零知识证明。
又比如说你应届生成绩都是61、62,就业单位要求你提供不挂科的证明,但你有不想让单位知道你成绩才61,又想证明你没有挂科,那么可以向学校申请不挂科证明间接解决问题。
零知识证明实际上属于多方安全计算的一种。
参考:https://zhuanlan.zhihu.com/p/152065162
本功法来自三千大道(博客园),由小仙:{Hndreamer}创作,本文章均采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,转载请注明源功法及作者链接:https://www.cnblogs.com/Hndreamer/p/17219775.html