# 零知识证明入门

*了解什么是零知识证明*

By [Confucian](https://paragraph.com/@confucian) · 2022-11-01

zk

---

**什么是零知识证明**
============

**概念**
------

维基百科中的定义：

> 密码学中，**零知识证明**（英语：zero-knowledge proof）或**零知识协议**（zero-knowledge protocol）是一方（证明者）向另一方（检验者）证明某命题的方法，特点是过程中除“该命题为真”之事外，不泄露任何资讯。因此，可理解成“零泄密证明”。例如，欲向人证明自己拥有某情报，则直接公开该情报即可，但如此则会将该细节亦一并泄露；零知识证明的精粹在于，如何证明自己拥有该情报而不必透露情报内容。这也是零知识证明的难点。

李永乐老师的视频讲的很通俗易懂： [神奇的零知识证明！既能保守秘密，又让别人信你！](https://youtu.be/FuKEpOhiVPg)

chainlink 对零知识证明的总体介绍： [一文读懂零知识证明（ZKP）](https://blog.chain.link/what-is-a-zero-knowledge-proof-zkp-zh/)

**概括成一句话：不泄密还得让人相信你知道**

**特征**
------

*   完备性：若所证为真，则诚实的证明者能说服诚实的验证者
    
*   可靠性：若所证为假，则作弊的证明者只有极小机会说服诚实的验证者此事为真
    
*   零知识性：若所证为真，则验证者除了得知此事为真外，其他什么都不知道
    

**分类**
------

*   交互式
    
*   非交互式
    

### **举例**

**_交互式_**

> 阿里巴巴知道打开藏着财宝的山洞的咒语。强盗抓住他说：说出咒语，否则杀死你。阿里巴巴：如果我说出咒语，就会因为没有利用价值而被杀死。强盗：如果你不向我证明你知道咒语，我也会杀你。
> 
> 阿里巴巴想了一个好办法。他对强盗说：“你们离我一箭之地，用弓箭指着我，你们举起右手我就念咒语打开石门，举起左手我就念咒语关上石门，如果我做不到或逃跑，你们就用弓箭射死我。这样我既不会因为透露了密码而丧生，也向你们证明了我知道咒语。

在这个例子中，阿里巴巴叫**证明者**，强盗叫**验证者**。证明者掌握着某个秘密，他想让验证者相信他掌握着秘密，但是又不想泄漏这个秘密给验证者。双方按照一个协议，**通过一系列交互**，最终验证者会得出一个明确的结论，证明者掌握或不掌握这个秘密。

**_非交互式_**

> 非交互式零知识证明可以用来构造身份认证协议。在一个系统中，A要向B证明自己的身份，就要向B证明自己拥有A的独特信息，而且不能透露这个独特信息，使得B能够向他人伪造证明自己是A。在身份认证系统中，一般只存在**一次交互**，即prover向verifier发送一次信息。这就是非交互式的零知识证明。一般在一个认证系统中，都会有一个中心机构，用来分发最开始的身份信息。同时也可以提供CRS（common reference string）用来实现非交互式零知识证明。

非交互式效率更高，无需等待多次的问答，我们可以在一轮中完成证明。

**储备知识**
--------

*   密码学
    

**解决了哪些问题**
-----------

零知识证明解决了信息交换过程中的信任问题，利于数据的隐私保护

**零知识证明为什么适合区块链（个人思考）**
-----------------------

1.  **隐私保护**：区块链本身是为了解决陌生人之间的不信任问题，它把很多数据公开透明化来降低信任门槛，这在一定程度上暴露了一些隐私，但零知识证明在建立信任的同时保护了用户的数据隐私。
    
2.  **证明与验证**：区块链上的数据处理比较低效，通常为了安全需要大量的证明与验证，而这占用了很多空间，零知识证明能在一定程度上减少该过程，进而把空间腾出来给其他链上活动。
    
3.  **密码学的发展**：零知识证明和区块链都十分依赖密码学，零知识证明的创新会推动密码学的发展，从而反哺区块链发展。

---

*Originally published on [Confucian](https://paragraph.com/@confucian/zk)*
