您的位置 首页 货币百科

什么是零知识证明?有何应用?

什么是零知识证明?有何应用?零知识证明是由麻省理工学院的研究人员ShafiGoldwasser,SilvioMicali和CharlesRackoff在80年代开发的。他们试图解决与交互式证明系统有关的问题,在该系统中,证明者与验证者进行通信,以说服他们拥有特定证明的知识,而无需详细说明该知识。

在发现之前,大多数证明系统都是基于“声音”属性。通常认为,在任何试图欺骗验证者的案例中,证明者都是恶意者。麻省理工学院的3名研究人员质疑验证者而不是证明者的道德。问题是,人们怎么能确定地知道验证者不会泄漏这些知识。另一个问题是,验证者将在验证过程中找到关于Prover的知识。

在现实世界中,这个难题会产生各种后果,最著名的难题之一与密码保护有关。如果您要使用密码登录网站,则通常的协议是,您(客户端)将填写他们的密码,该密码将被发送到服务器。然后,服务器将对密码进行哈希处理,并查看其是否与存储在其系统中的哈希值匹配。如果值相同,则允许您进入系统。

如您所见,此系统在安全方面存在严重缺陷。服务器(验证者)的密码以纯文本版本存储,您的隐私取决于此。如果服务器受到任何损害,未经授权的第三方可能会访问您的密码。创建了零知识证明来应对这种情况。零知识证明(ZKP)涉及两方(证明方和验证方)。零知识表示证明者可以向验证者证明他们具有某种知识,而无需告诉他们该知识是什么。

1.零知识证明的性质

要运作,零知识证明需要具有一组特定的参数:为了使ZKP正常工作,需要满足某些参数:

完整性:如果陈述是正确的,诚实的证明者可以说服诚实的验证者。

健全性:如果证明者不诚实,他们就不能通过撒谎使说服者确信陈述的合理性。

零知识:如果该语句为真,则验证者将不会发现该语句实际上是什么。

让我们看一个最流行的零知识证明示例,称为阿里巴巴的洞穴。

在此示例中,证明者对验证者说,他们知道洞穴背面的秘密门的密码,并且他们希望向验证者证明它而不透露密码本身。证明者(P)将同时采用路径A和B。假设他们首先采用路径A,然后到达后方的秘密门。然后,验证者(V)在不知道证明者走哪条路径的状态下进入入口,并声明他们希望看到证明者从路径B出现。

上图说明了该过程。但是,如果这只是一个幸运的情况呢?如果证明者实际上不知道密码,该怎么走,选择了路径B并将其卡在门口。然后,幸运的是,验证者告诉他们通过路径B返回,他们已经打开了。为了检验有效性,多次进行实验,证明者每一次都需要出现在正确的路径上。这样,即使验证者不知道实际密码,也将向验证者证明他们知道密码。

什么是零知识证明?有何应用?

2.非交互式零知识证明

最初的零知识验证系统存在一个主要问题。为了使这样的系统正常工作,证明者和验证者必须同时在线,这使过程“交互”。这使系统效率低下,极难扩展。菲亚特(Fiat)和沙米尔(Shamir)于1986年发明了菲亚特-沙米尔(Fiat-Shamir)启发式技术,并将交互式零知识证明转换为非交互式零知识教授,从而使新协议无需任何交互即可工作。

为了了解两者之间的区别,让我们从使用简单离散对数的菲亚特-沙米尔启发式算法开始,了解零知识证明在过去是如何工作的。卡罗尔想证明戴夫,她知道x的值,使得y=g^x等于基数g。

Carol从一组值Z中选择一个随机值v并计算t=g^v并将t发送给Dave。Dave从集合Z中选择一个随机值c并将其发送给Carol。然后Dave检查t=g^r*y^c是否成立(由于r=vc*x,y=g^x并通过简单替换,g^(vc*x)*g^c*x=g^v=t)。

虽然Dave不知道x的值,但他可以检查t=g^r*y^c来验证Anna确实知道x的值。上面的交互是零知识,但是问题是Carol和Dave都需要在线并交换值,这使得过程“交互”。菲亚特-沙米尔(Fiat-Shamir)启发式算法通过使用简单的密码哈希函数解决了该问题。这是上面的示例作为非交互式零知识证明的工作方式:

卡罗尔想证明戴夫,她知道一个值x,以y=g^x为底数g。Carol从一组值Z中选择一个随机值v,然后计算t=g^v。Carol计算c=H(g,y,t),其中H()是哈希函数。卡罗尔计算出r=v–c*x。然后戴夫或其他任何人都可以检查t=g^r*y^c。现在我们讨论了零知识证明如何变为非交互性的,让我们讨论依赖它们的Zk-Snarks。

3.Zk-Snarks如何使用?

正如我已经提到的,Zk-Snarks代表“零知识简洁非知识性争论”。在当前的区块链技术中使用它们非常重要,但是要了解它,您还需要了解智能合约。智能合约是当满足预设条件时自动执行的脚本。如果您想了解有关智能合约的更多信息,请查看我们的深入以太坊指南。

例如,Carol将100ETH放入她与Dave一起输入的智能合约中。Dave需要执行特定任务,完成后,他将从智能合约中获得100ETH。

显然,事情并不总是那么简单,因此Dave可能必须执行几个多层且保密的任务。如果戴夫需要执行任务A,B和C来接收付款,但是您不想透露这些任务的详细信息,因为它们对您的企业是机密的,并且竞争对手不应该知道这些,该怎么办?

Zk-Snarks能够证明任务已在智能合约中完成,而无需透露有关任务的详细信息。它是维护企业和个人隐私的有力工具。它可以简单地揭示流程的一部分,而无需暴露整个流程,并证明您的主张是有效的。

关于作者: szhbsd

热门文章