零知识证明有两个主要角色:证明者和验证者。证明者的作用是证明他们知道秘密信息。验证者的作用是确定证明者是否诚实。验证者通过多次测试证明者来做到这一点,向他们提供只有知道信息的人才能完成的问题或任务。
一个用来帮助理解零知识证明的常见例子叫做色盲测试。假设有两个人,一个证明者和一个验证者。证明者有两个球,需要向验证者证明它们是不同的颜色,但验证者是色盲。为了证明这一点,证明者将球交给验证者,并让验证者偷偷交换他们持有每个球的手,并要求证明者判断球是否被交换。如果证明者正确地做了一次,有50%的可能性他是真实的,50%的可能性是他猜对了,所以这个实验会重复几次,直到他说谎的概率显著降低。对于证明者来说,这是一种不费吹灰之力的方式来告诉验证者这些球是不同的颜色,而验证者却从未见过这些球的颜色。
另一个示例与2D图形和图形上的两个点有关。假设证明者想向验证者证明他们知道图上的两个秘密点。他们可以通过给验证者一条线来证明这一点,线上有两个点。图中可以画出无数条线,因此这为验证者提供了足够的证据,证明他们知道这两个点的位置。
如第一个例子所示,不能100%保证所说的内容是真实的,因此证明者有一定的可能撒谎。但是,通过适当的测试和预防措施,这种情况的可能性会变得非常低,以至于几乎不可能发生。
零知识证明有多种用途,将彻底改变我们共享数据的方式以及区块链的工作方式。借助数字身份和零知识证明,人们可以证明他们的年龄或公民身份,而不必放弃其身份证明文件中的敏感和有价值的数据。它还可以用于数字投票,并确保匿名投票有效且可计入。另一个用例是在区块链中,因为它允许完全可审计且无需信任的完全私人交易。事实上,这项技术已经在ZCash和Monero等面向隐私的加密货币中实施。
零知识技术仍然是一个令人难以置信的新事物,要成为密码学的主要组成部分还有很长的路要走。然而,它的研究正在取得巨大进展,有朝一日可以为各种事物创建零知识证明,包括以太坊智能合约和金融应用程序。这将彻底改变我们与数据交互的方式,并导致个人隐私的复兴。