在零知识证明中,我们将 Peggy(证明者)和 Victor(验证者)进行类比:
在这个故事中,佩吉发现了用来在洞穴中打开一扇魔法门的秘密词。洞窟呈圆形,入口在一侧,魔门挡在对面。维克多说他会为这个秘密付钱给她,但在他确定她真的知道之前不会。佩吉说她会告诉他这个秘密,但直到她收到钱。他们设计了一个计划,佩吉可以证明她知道这个词而不告诉维克多。
首先,维克多在佩吉进去的时候在洞外等着。他们标记了从入口 A 和 B 开始的左右路径。佩吉随机选择路径 A 或 B。然后,维克多进入洞穴并喊出他想要的路径的名称她用来返回,A 或 B,随机选择。如果她真的知道这个神奇的词,这很容易:如果有必要,她会打开门,然后沿着想要的路径返回。请注意,维克多不知道她走了哪条路。
但是,假设她不认识这个词。然后,如果维克多给出了她进入的相同路径的名称,她将只能从指定的路径返回。由于维克多会随机选择 A 或 B,因此他有 50% 的机会猜对。如果他们重复这个技巧很多次,比如连续20次,她成功预测维克多所有请求的机会将变得微乎其微。因此,如果 Peggy 可靠地出现在出口 Victor 的名字中,他可以断定她很可能知道这个秘密词。
以下验证方法对我来说足够有说服力:
维克多穿过走廊 A 和 B 并向自己保证没有办法走到另一端。(由于维克多不知道秘密,他确信这是真的)。
他可以去走廊 A 的入口,让 Peggy 从 B 入口从 A 的尽头走出来。(Peggy 做了,从 A 的尽头出来)
维克多也会站在另一条路,站在 B 的入口处,让佩吉在穿过 A 后从 B 的尽头过来。
如果 Peggy 可以同时做 2 和 3,Victor 相信 Peggy 知道这个秘密。
我觉得这种方法是错误的,想知道为什么。那么,为什么经典方法比这个更受欢迎呢?这种方法的缺点是什么?