零知识证明伴随着加密行业的发展,也从理论逐渐发展到实际应用中了。而且这两年更是热点不断,接下来大量的零知识证明的应用将面世。
本文也是对零知识证明的一个简单的学习总结,更注重的是具体的应用的探索和整理。

首先零知识证明(英语:zero-knowledge proof 简称:zk)或零知识协议(zero-knowledge protocol)是指一方(证明者)向另一方(检验者)证明某命题的方法,特点是过程中除“该命题为真”之事外,不泄露任何资讯。
举个例子:某人证实了哥德巴赫猜想,而验证人需要在不清楚证明人具体的验证过程的同时确定证明人真的证实了哥德巴赫猜想。
或者比如:假设A有一个带密码锁的盒子,他想在不告诉B真正密码的情况下,又让B相信A知道这个盒子的密码。那么他要怎么做呢?
A让B写了一个全世界只有B自己知道的秘密,B写下了一张“我的小狗叫Bob”的字条放入盒子中。A通过正确的密码打开盒子后获取了此信息并告知B。在这个交互过程中,B并没有得知任何此前自己不知道的信息(盒子的密码),但A还是成功的让B相信了A知道密码。
零知识证明有三条性质:
(1)完备性。如果证明方和验证方都是诚实的,并遵循证明过程的每一步,进行正确的计算,那么这个证明一定是成功的,验证方一定能够接受证明方;
(2)合理性。若命题为假,则作弊证明者仅得极小机会能说服诚实验证者该事为真;
(3)零知识性。证明过程执行完之后,验证方只获得了“证明方拥有这个知识”这条信息,而没有获得关于这个知识本身的任何一点信息。
交互式零知识证明中,需要各方互动,靠通讯过程证明某方具备某知识,而另一方检验该证明是否成立。
也有某种非交互式零知识证明,但证明之所以成立,依赖计算假设(典型假设是理想的密码杂凑函数)。
在加密行业大多利用零知识证明的隐私性和可拓展性。 很多涉及隐私的应用都采用零知识证明协议。
下面将罗列一些使用零知识证明的应用集合。


随着加密行业的发展,零知识证明应该有越来越多的实际应用场景。
参考链接:
