目录
零知识机制定义:
零知识证明是一种密码学技术,允许证明方(Prover)在不向验证方(Verifier)泄露任何具体信息的前提下,证明自己知道某个秘密或满足某个条件。
简单来说,就是「证明你知道某事,但不说出具体是什么」。
主要在对实体身份认证场景里会用到。
实体是什么?
TODO
阿里巴巴山洞案例(交互式零知识证明)
场景:有一个山洞,洞口有一扇需要咒语才能打开的门,洞内是一个环形岔路,分A和B两条路径(如下图)。
角色:
- Alice(证明者):声称自己知道打开门的咒语,但不想告诉任何人。
- Bob(验证者):想确认Alice是否真的知道咒语,但不想让Alice泄露咒语。

零知识证明的目标:
- Alice需要向Bob证明她知道咒语,但不透露咒语本身。
- Bob最终只能得出"Alice是否知道咒语"的结论,而无法获取任何关于咒语的信息。
第1轮验证:
- Alice进入山洞:
-
Alice当着Bob的面进入山洞,并随机选择走A或B路径到达终点(假设她选了A)。
-
此时,Alice在终点位置,Bob在洞外。
-
Bob发起挑战:
- Bob对着山洞喊:"请从B路径出来!"(B是他随机选的路径)。
-
Alice的响应:
- 如果Alice真的知道咒语:
- 她可以随时打开门,因此无论自己最初选的哪条路,都能从B路径出来(比如原路返回A到洞口,或穿过门从B出来)。
- 如果Alice不知道咒语:
- 她无法打开门,只能原路返回(比如最初选A,就只能从A出来)。此时若Bob要求从B出来,她无法做到。
- 如果Alice真的知道咒语:
-
结果:
- 如果Alice成功从B路径出来,Bob暂时相信她可能知道咒语。
- 如果失败,Bob直接判定她不知道咒语。
-
第N轮验证:
...
重复多次后,Bob 确信 Alice 知道咒语(概率上无法多次蒙混过关)。
零知识机制的分类
-
交互式零知识证明(Interactive ZKP)
- 需要证明者和验证者多次交互(如上述山洞例子)。
- 依赖随机挑战(Challenge)和响应(Response)机制。
-
非交互式零知识证明(Non-Interactive ZKP, NIZK)
- 仅需一次通信,无需实时交互(例如通过数学算法生成证明)。
- 常用技术:zk-SNARKs(零知识简洁非交互式知识论证),应用于隐私加密货币(如 Zcash)。