基础知识
- 首先,我们来介绍一下什么是普遍意义上的零知识证明?
- 即:Bob向Alice证明自己很有钱,但是在让Alice相信自己有很钱的同时不能让Alice知道自己具体有多少钱(此时,Bob作为证明者,Alice作为验证者)
- 但是ZK-SNARKS相比于普遍意义上的零知识证明,增加了两个特性,分别是非交互、简洁。接下来我们将对基础知识进行详细介绍。
ZK-SNARKS的概念
-
我们首先来介绍一下ZK-SNARKS的概念?
- ZK-SNARK是"Zero-Knowledge Succinct Non-Interactive Argument of Knowledge"的缩写,中文名称是零知识简明非交互式知识。
-
其次在对"Zero-Knowledge Succinct Non-Interactive Argument of Knowledge"进行解析:
- 此句中Argument of Knowledge(知情证明)是主体,三个修饰词分别是Zero-Knowledge(零知识)、Succinct(简洁的)、 Non-Interactive(无交互)
-
接下来解释一下句中主体“Argument of Knowledge--知情论证”:
- 证明有两个单词,分别是proof和argument,虽然这两个词含义相同,但是在零知识证明中这两个词是有区别的,在proof system中,就算拥有无限计算能力的证明者也无法欺骗验证者,即证明者让验证者去相信一个错误的陈述;在argument system中,只有拥有多项式时间计算能力的证明者才没办法欺骗,如果破解了椭圆曲线离散对数问题,可能就不再安全。
- of knowledge:如果证明者没有相应的witness(证据),那么构造相应的proof(对于proof system)和 argument(对于argument system)是不可能的。
-
接下来介绍三个形容词:
- Zero-Knowledge(零知识):不泄露任何其他信息的情况下证明某个陈述的真实性
- succinct(简洁的):表示证明大小很短并且容易验证
- Non-Interactive(无交互):证明者只需要提供一些信息,公开后任何人都可以直接进行验证并且不需要跟证明者进行交互。
多项式
- 多项式概念:即有限个形如C*X 的t次方形式的项的和,示例:X^3+3X^2+3X+1
- 多项式等式:代表的是A(x)+B(x)=C(x),A(x)、B(x)、C(x)分别代表的均是一个多项式,对任意点,此等式成立
- 此时有四个等式: 12+1=13 10+8=18 15+8=23 15+13=28 如果想验证以上4个等式成立,只需要验证A(x)+B(x)=C(x)这个等式成立
- 此时可以运用拉格朗日插值分别构建A(x)、B(x)、C(x)这3个多项式。假如给定4个坐标,分别是x=1,x=2,x=3,x=4,则3个多项式对应这4个坐标的输出分别是(12,10,15,15),(1,8,8,13),(13,18,23,28),从而推断出这三个多项式分别是:
- A(x)=-2x^3+(19/2)x^2-(19/2)x+12
- B(x)=2x^3-(19/2)x^2+(29/2)x+1
- C(x)=5x+13
- 此时一次性验证A(x)+B(x)=C(x)成立,以上四个等式便成立