教我兄弟学零知识证明----01证明和零知识

教我兄弟学零知识证明----01零知识和证明

我的兄弟,老王,目前对零知识证明很有兴趣,我在给他讲的过程中,为什么不出一个教程呢?这样给他当教案也很方便。老王,莫要催更

证明

什么是证明呢?Wiki给出如下定义:


A mathematical proof is an inferential argument for a mathematical statement, showing that the stated assumptions logically guarantee the conclusion.
----Wiki


上边是摘自wiki百科的数学证明的定义,翻译下来就是:

数学证明是数学陈述的推论论证,表明所陈述的假设在逻辑上保证了结论。

Note:

argument-------论证,证据
statement-----陈述

这两个东西是很重要的,在接下来的系列教程会用到。


比如,大家都熟悉的欧几里得几何:
五大公理:

  • 从一点向另一点可以引一条直线。
  • 任意线段能无限延伸成一条直线。
  • 给定任意线段,可以以其一个端点作为圆心,该线段作为半径作一个圆。
  • 所有直角都相等。
  • 若两条直线都与第三条直线相交,并且在同一边的内角之和小于两个直角,则这两条直线在这一边必定相交。

由五大公理可以推出整个欧式几何。而这个推理的过程和形式化的表达就是证明

零知识证明

什么是零知识证明呢?零知识证明是如何产生的呢?

下面是一个故事:
Alice:”我知道公司主机的密码“
Bob:”不,你不知道“
Alice:”我知道!“
Bob:”你证明给我看!“
Alice:”是:XXXX“
Bob:”我这就去告诉敌手公司“
Alice:”mmp“

零知识证明在这种背景下产生了。


零知识证明是一种证明,它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。 [ 1 ] ^{[1]} [1]

Jean-JacquesQuisquater 和 Louis Guillou [ 2 ] ^{[2]} [2] 用洞穴故事来解释零知识证明:

教我兄弟学零知识证明----01证明和零知识_第1张图片
洞穴里有一个秘密,知道咒语的人能打开C和D之间的密门。对其他人来说,两条道路都是死胡同。
Peggy知道这个洞穴的秘密。她想对Victor证明这一点,但她不想泄露咒语。下面是她如 何使Victor相信的过程:

  1. Vector站在A点
  2. Peggy一直走进洞穴,到达C点或者D点。
  3. 在Peggy消失在洞穴中之后,Victor走到B点。
  4. Victor向Peggy喊叫,要她:
    (a)从左边出来,或者(b)从右边出来
  5. Peggy答应了,如果又必要她就用咒语开门
  6. Peggy和Victor重复1~5,n次

如果Peggy不知道咒语,那么她不能打开门,她只能猜测Victor会让他从左边出来还是右边出来,然后她选择到C还是到D,这样她正确的概率就是1/2
那么,随着Victor要求2,3,…n次,Peggey成功的概率就是1/4,1/8,…, ( 1 / 2 ) n (1/2)^n (1/2)n, 总会小到可以忽略。

所以,Peggy只有知道这个秘密才能每次都对,而且Peggy没有泄露这个秘密就让Vicotr相信她,这样就证明成功了。


下面来总结一下零知识证明的一般步骤:

假没Peggy知道一部分信息而且这个信息是一个难题的解法,基本的零知识证明又下面几轮组成:

  1. Peggy用她的信息和一个随机数将这个难题转变成另一难题,新的难题和原来的难题 同构。然后她用她的信息和这个随机数解这个新的难题。
  2. Peggy利用位承诺方案提交这个新的难题的解法。
  3. Peggy向Victor透露这个新难题。Victor不能用这个新难题得到关于原难题或其解法 的任何信息
  4. Victor要求Peggy:
    (a)向他证明新、旧难题是同构的(即两个相关问题的两种不同解法),或者:
    (b)公开她在第(2)步中提交的解法并证明是新难题的解法。
  5. Peggy同意
  6. Peggy和Victor:重复第(1)至第(5)步n次。

如果Peggy知道这个问题的解法,那么她很容易就提供了难题的同构并给出新解法。

如果Peggy在骗人,那么她只能:

  1. 给出难题的同构但不能给出新解法,或者
  2. 给出一个问题的解法,但是此问题是伪造的,无法与原有问题同构

这样就像上边的洞穴问题,她只能猜测而且猜对的概率是 ( 1 / 2 ) n (1/2)^n (1/2)n


OK,第一节课就到此为止了,讲解了零知识证明的大概概念,给老王一个基本的印象。

参考文献:
【1】百度,零知识证明,https://baike.baidu.com/item/%E9%9B%B6%E7%9F%A5%E8%AF%86%E8%AF%81%E6%98%8E
【2】Quisquater JJ. et al. (1990) How to Explain Zero-Knowledge Protocols to Your Children. In: Brassard G. (eds) Advances in Cryptology — CRYPTO’ 89 Proceedings. CRYPTO 1989. Lecture Notes in Computer Science, vol 435. Springer, New York, NY. https://doi.org/10.1007/0-387-34805-0_60
【3】应用密码学—协议、算法与c源程序,第二版,Bruce Schneier

你可能感兴趣的:(密码学,零知识证明)