# 零知识证明简介

By [kutong](https://paragraph.com/@kutong) · 2022-08-01

---

[auction://0xabEFBc9fD2F806065b4f3C237d4b59D9A97Bcac7?auctionId=0xc8fbcb8c72764971329a9d9a9dd8376a08a0f03fe4779f6f5f2a14ef9988db0f&tokenId=24401](https://etherscan.io/address/0xabEFBc9fD2F806065b4f3C237d4b59D9A97Bcac7)

零知识证明 zero-knowledge proofs，简称ZKPs，我们都知道区块链本身的一个关键优势就是透明性，但是在很多情况下，智能合约应用却出于各种商业或法律原因需要保障数据隐私，比如传入真实有效的数据来触发智能合约执行，但这涉及到信息会有泄露的风险。如何避免这种情况的发生呢？零知识证明的出现很好地解决了这个问题。

零知识证明（Zero Knowledge Proof）的研究最早始于1985年，由MIT教授Shafi Goldwasser， Silvio Micali 和 密码学大师Charles在《The Knowledge Complexity of Interactive Proof-Systems》论文中提出。正是这篇文章提出了 零知识证明 这个伟大概念，并逐步成为了现代密码学理论的根基之一，而Shafi Goldwasser和Silvio Micali也于2012 年获得了有“计算机界诺贝尔奖”之称的图灵奖。零知识证明系统所要完成的任务是\*\*「证明某一个事实并且不泄露知识」\*\*。这个过程就是零知识证明。

阿里巴巴的故事想必大家都听过，有一天，劫匪抓住了阿里巴巴，拷问他想要得到进入山洞的咒语，但是聪明的阿里巴巴知道，如果把咒语告诉了劫匪，那么他也就彻底没有了价值，肯定会将他杀掉，死活不说，那么也会杀掉他，于是他想到一个好办法，即能不泄露咒语，又能让劫匪相信他知道咒语。

阿里巴巴说：“你们离我一箭远，然后用弓箭指着我，当你们举右手我会念咒语打开石门，当你们举左手我会念咒语关上石门，如果我逃跑或没有做到，证明我不知道咒语，你们可以一箭杀掉我。”劫匪同意了这个提议，多次尝试后阿里巴巴都成功按照指示让石门打开或关上了，但是由于有一定距离，他们听不清楚咒语到底是什么，就这样，阿里巴巴没有透露任何消息就向劫匪证明了他的真实性。

这个例子非常简单，虽然只是零知识证明机制简单的概念演示，真正的零知识证明运用的是密码学，在不透露数据的情况下证明数据的存在。总而言之，\*\*要创建零知识证明，验证者（劫匪）需要让证明者（阿里巴巴）执行一系列操作，而证明者只有在得知底层信息的情况下才能正确执行。\*\*如果证明者乱蒙一个结果，那么验证者极有可能在验证中发现并证明他的错误。**那么零知识证明应用在区块链中有哪些价值呢？**

自从这个概念被提出来后，人们就将其应用到了各个领域，比如身份认证系统、存证系统、数据共享、水印检测，密钥交换等等，在隐私数据越来越受到大家关注的今天，零知识证明在隐私数据保护的应用中大放异彩：

\*\*保护隐私数据：\*\*日常生活中，比如只想证明考生及格了，但不想透露具体考了多少分；买保险的时候，只想证明自己没有心脏病，却不想暴露病例的所有信息，不管是哪种信息，都可以把不想暴露的部分换成一个很像随机数字的零知识证明，能够证明数据真实可信。

\*\*身份认证：\*\*在使用网站时，用户可以向网站证明他拥有私钥，或者知道某个只有自己才知道的答案，网站不用知道密钥，但可以通过零知识证明确认用户身份，通过去中心化存储，服务器可以向用户证明数据被妥善保存下来且不被泄露。

\*\*计算压缩与区块链扩容：\*\*在传统的区块架构中，同样的计算被重复多次，比如签名校验，交易的合法性校验，智能合约执行等一些其他的地方，因为有了计算的证明，同一个计算就不需要多次重复了，计算过程可以被零知识技术证明压缩。

由此，零知识证明真正解决了\*\*「数据的信任」**，实现了**「隐私数据的保护」**，也让区块链真正实现了**「信任机器」\*\*这一构想。

---

*Originally published on [kutong](https://paragraph.com/@kutong/c6G1MTsPiGs4p0ODqvbq)*
