零知识证明是一种验证方式,让验证者在不获取任何有效信息的前提下能够对被验证者进行验证。
这种验证方式是基于概率的,验证者基于一定的随机性向被验证者提出问题,如果都能给出正确回答,则说明被验证者大概率拥有他所声称的“知识”。
我们称验证者为 verifier,被验证者为 prover,即 prover 向 verifier 证明自己拥有某项知识,但不让 verifier
知道任何有效信息。
下面是一个经典的例子:
> 阿里巴巴被强盗抓住,为了保命,他需要向强盗证明自己拥有打开石门的口令,同时又不能把密码告诉强盗。他想出一个解决办法,先让强盗离开自己一箭之地,距离足够远让强盗无法听到口令,足够近让阿里巴巴无法在强盗的弓箭下逃生。如果强盗举起左手,阿里巴巴就使用口令将石门打开,如果举起右手,就将石门关闭。阿里巴巴就在这个距离下向强盗展示了石门的打开和关闭。