首页 > 代码库 > 密码学之《零知识证明》

密码学之《零知识证明》

零知识证明是什么?

假设我们知道某些秘密信息,如果我们想让别人相信我们知道这些秘密信息,同时还不想让别人知道这些秘密信息,则我们可以用零知识证明来向被人证明我们知道这些密码信息。

从程序猿的角度来看,就相当于我掌握了一个很酷炫的算法,可以计算什么东西,我不想告诉你具体的算法,但是还想让你炫耀。于是让你给我一组数字,我用这个函数做计算之后,把结果告诉你,多次下来,如果我每次都能正确快速的计算,那证明我是有一个很炫的算法的,在证明过程中,你对算法的具体内容完全没有了解。

为了说明,零知识证明,有两个人举了个灰常形象的例子----《零知识洞穴》

技术分享

C和D之间有一道门,只有咒语能打开。假设P知道咒语,P想向V证明自己知道咒语,但又不想泄露咒语。如下为证明协议:

1. V停留在A,P走到B,然后在左通道和右通道任选一个进入。。

2. V走到B,然后向P下命令说,从左通道(右通道)出来。

3. P收到命令,从对应通道走出去,必要时用咒语开门。

4. 重复以上步骤多次。

 

如果重复次数很多 ,且P每次都能按照V的要求从洞穴深处返回B,则V就可以相信P知道咒语。

介个就是零知识洞穴。

密码学之《零知识证明》