ZK零知识证明

以太坊 零知识证明

Zero—Knowledge Proof 零知识证明,一种密码学工具,证明者可以向验证者证明某个声明是真实的,并且除了证明该声明是真实的之外不会透露任何额外信息。

例如,“我是 X 国的公民”。你需要提供“证据”来支持你的声明,例如护照或身份证。但这种方法缺乏隐私,我的个人身份信息储存在中心化数据库中与其他第三方服务商共享,这些数据库很容易受到黑客攻击,导致身份泄露或被盗用。那么零知识证明就可以在不透露我的护照、身份证的情况下证明我确实是 X 国公民!

交互式证明

证明者和验证者相互提问验证对方是否是真的。

  1. 证明者先行动,选择一个随机数(或路径),并计算出一个公开的“承诺”发送给验证者。

  2. 验证者收到承诺后,随机生成一个“挑战”问题发给证明者。

  3. 证明者根据自己知道的秘密和收到的挑战,计算出一个“响应”答案发回给验证者。验证者通过证明者的回复可以检验证明者是否是真的。

为了确保证明者并不是偶然盲目猜对答案的,验证者会多次来提问,证明者造假的可能性会极大的降低,直到最终验证者满意。

非交互式证明

互动式证明的作用有限,因为它要求双方同时在线,反复互动。 即使验证者相信证明者是诚实的,该证明也不能用于独立验证(计算一个新的证明需要证明者和验证者之间一个新的信息集)。

非互动式证明只需要证明者和验证者之间进行一轮沟通。证明者把秘密信息输入到一个特殊的算法中,然后计算出一个零知识证明。这个证明会被发送给验证者,验证者使用另一个算法来检验证明者是否知道秘密信息,就好像他们的公钥和私钥。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计