上QQ阅读APP看书,第一时间看更新
3.2.2 场景二:洞穴
如图3-2所示,R和S之间存在一道密门,并且只有知道咒语的人才能打开它。小明知道咒语并想向小丽证明,但证明过程中又不想泄露咒语。他该怎么办呢?
(1)首先两人都走到P,然后小明走到R或者S。
(2)小丽走到Q,然后让小明从洞穴的一边或者另一边出来。
(3)如果小明知道咒语,就能正确地从小丽要求的那一边出来。
小丽重复上述过程很多次,直到她相信小明确实知道打开密门的咒语为止。
在这里,小明是证明方,小丽是验证方。小明通过上述方法证明了自己确实知道咒语,但是没有跟小丽透露任何咒语的相关信息,这一过程也就是零知识证明。
这个例子似乎让我们想到了什么——《阿里巴巴和四十大盗》。
阿里巴巴不幸遭遇四十大盗,他如果说出藏有财宝的山洞的咒语,他自然也就没命了;但是,如果他不能证明自己知道山洞的开启咒语,也会没命。阿里巴巴灵机一动,想出了一个办法,他对强盗们说:“你们必须保持距离我一箭之地,并用弓箭指着我,你们举起右手我就念咒语打开石门,举起左手我就念咒语关上石门,如果我做不到或逃跑,你们就用弓箭射死我”。这样,阿里巴巴就能在距离大盗足够远的位置,说出咒语打开石门,同时,大盗们也无法获知咒语。但是大盗们也眼见为实,看到石门的确被打开,验证了阿里巴巴的确掌握咒语。这个过程阿里巴巴没有直接把咒语透露给大盗们,咒语就是有用的信息。
图3-2 洞穴游戏