零知识证明学习(一)—— 初始零知识证明

初始零知识证明

零知识证明(Zero-Knowledge Proofs,ZKP)背景知识,主要介绍一下研究的动机


这里我简单介绍一下背景知识,希望能引起你们研究的兴趣!

起源

Goldwasser等人1在1985年提出交互是证明概念,通过将交互性和随机性引入到传统的NP证明系统中,提出了交互式证明系统。在交互式证明的系统中,验证者V可以向证明者P提随机问题。V可以验证超出它计算能力以外的问题,P的私密信息不会泄露给V。

一个ZKP引发的爱情故事2

这里以数独为例引入零知识证明,Alice和Bob两人非常喜欢完数独,两人一直喜欢用自己设计的数独互相挑战对方。其中Alice经常给Bob出一些非常有挑战难度的数独

证明(Proof)

有一天,Alice和Bob打赌解开Alice设计超级困难的数独,如果解开的话,Alice答应Bob做他的女朋友。Bob听到这个消息后闭关三天三夜,下定决心一定要解开,然而功夫不负有心人…,他没有解开。Bob冥思苦想,Alice是不是不喜欢我?故意出一个无解的题。当想到这一刻,Bob崩溃了…
零知识证明学习(一)—— 初始零知识证明_第1张图片

终于Bob鼓起勇气质疑Alice出的数独根本没有解,向Alice抱怨是在耍他,Alice听到后,暴脾气上来直接骂他笨蛋,这题都解不开,还想做我男朋友。但是Alice为了保持数独的神秘性,告诉Bob能证明该数独是有答案的,而且不要告诉他答案是啥就能证明,Bob心想,只想你能证明我就知道答案是啥,到时间我就能解出来了。心里暗自偷笑

承诺(Commitment)

Alice分别用卡片代表她设计的数独,然后Bob转过身后,Alice将卡片按照数独解的排列放在桌子上,代表解的卡片数字面依旧朝下,其他数字按数独原来位置排放。
零知识证明学习(一)—— 初始零知识证明_第2张图片

随机挑战(Random Challenge)

Alice整理好卡片后让Bob睁开眼转过身来,Bob非常开心,因为他想着可以揭穿Alice的无解数独,或者偷偷看到答案,这样可以厚脸皮拿着答案去向Alice表白。

当Bob转过身的那一瞬间,Bob傻眼了,这是什么东西,这跟我解题的数独有什么关系?啥提示也没有啊!这时,Alice对Bob笑着说,我已经把数独的答案摆好,但是你看不到呦。不过你能验证这些数独的答案,你可以随意选择按照行,或者按照列,或者按照3$\times$3的九宫格检验。你随机挑选一种,保证结果正确…

Bob想着,这是什么解题方式?这样就能告诉我答案吗?会不会有诈?但是为了幸福,要勇敢的卖出那一步,所以Bob就按照行来选,看看Alice玩的什么把戏?这时Alice根据Bob的选择按照行的方法来验证,将每一行卡片秘密的收入一个麻袋里,然后将九个麻袋打乱顺序交给Bob手中。

Bob心里想着这时什么操作?我能打开麻袋看吗?我怎么验证?
零知识证明学习(一)—— 初始零知识证明_第3张图片

验证(Verification)

Bob收到九个麻袋后,一脸懵逼的看着Alice,这时什么意思?Alice对着Bob说,见证奇迹的时刻到了,你可以打开这9个麻袋,每个麻袋正好9张,没有重复的数字,分别1-9的卡片。Bob按照Alice的说法打开后,直呼NB,还真的是这样。
零知识证明学习(一)—— 初始零知识证明_第4张图片

但是Bob始终不相信Alice,不相信这个数独有解,所以狡辩说:我也可以这样做给你看。我只要保证每一行都是1-9这9张卡片,不去管纵列和九宫格里的数字是不是也都是没有重复的不就行了。Alice反问,我也不知道你会按照行来收集卡片啊,或者按照列?你菜就别狡辩,OK?还敢质疑我!你选什么方式验证我都不怕…

接着,Bob心里服,要再次进行验证,Alice重复上面的步骤,这次Bob选择3$\times$3的九宫格验证,然后结果还是正确,此时,Bob心里非常复杂,难道我没有机会了吗?我真的很菜吗?Alice竟然在不告诉我答案的情况就能正确有解。实际上他不知道是,刚才Alice就是用零知识证明的方式向Bob展示该数独有解。

总结

经过Alice和Bob的故事,大概总结为:Alice作为证明者,Bob作为验证者,两者之间根据数独的答案进行交互。
零知识证明学习(一)—— 初始零知识证明_第5张图片

零知识证明技术满足以下三个性质:

  1. 完备性(Completeness):如果证明者 P 知道证据(Witness)能证明命题的正确性,则能以极大概率让验证者 V 信任。
  2. 正确性(Soundness):一个恶意的证明者 P’ 难以用一个错误的命题欺骗验证者 V。这里的正确性区分为计算正确性和完美正确性。满足计算正确性的零知识证明方案能防止只能做多项式时间计算的恶意证明者(可以简单理解为恶意证明者只有有限计算资源)。
  3. 零知识性(Zero-knowledge):一个恶意的验证者 V’ 不能获取除了命题是否正确以外的信息。同样,我们区分计算零知识性和完美零知识性。

参考文献


  1. Goldwasser S, Micali S, Rackoff C. The knowledge complexity of interactive proof systems[J]. SIAM Journal on computing, 1989, 18(1): 186-208. ↩︎

  2. https://medium.com/qed-it/the-incredible-machine-4d1270d7363a ↩︎

你可能感兴趣的:(ZK,零知识证明,区块链,安全,信息安全,密码学)