首页 财经正文

欧博代理:为何我明白不了零知识证实:ZKP常见误区剖析

博华太平洋 财经 2020-08-26 00:07:20 90 1

我在零知识证实这个领域里兜兜转转了无数圈,之以是走了许多弯路,缘故原由在于从一最先就对零知识证实有先入为主的错误熟悉,这些熟悉是后续制作零知识证实这个屋子时的框架,由于框架是错误的,那在它基础之上是无论若何也确立不起一个不会坍毁的屋子的。

在这篇文章中,我将试着纠正这些错误熟悉,若是你正在学习零知识证实并以为一头雾水,希望我犯过的错误能对你有所启发;若是你才刚最先去领会零知识证实,希望本文有助你搭建一个基础的框架。在我眼中,文中讨论的这些点恰是零知识证实这件事的奇妙所在,它们展现了为何零知识证实是行得通的。

需要注重的是,下述的这些所谓纠正后的熟悉依然可能是不准确的熟悉,你只能用它做参考,并对它保持质疑。

一、零知识证实是一种证实的方式

如果我们知道宇宙演化的算法,但不知道宇宙的初始值,这时候Alice说她知道这个初始值,我们不信,于是她把一组数据作为算法的输入,一通盘算,获得一个和我们所处的宇宙一模一样的宇宙,这时候我们是不是会信赖Alice的那组数据就是宇宙的初始值?我们会信赖。

这就是一个零知识证实,确切来讲它应该叫零知识的证实。Alice通过这种证实方式可以证实自己拥有知识(宇宙的初始值),同时又不泄露知识。

若是考察Alice的证实历程,就会发现它只涉及三个工具:初始值,演化算法,演化效果(现状),我们可以把其抽象为:算法的输入、算法、算法的输出,而零知识证实要做到能够证实输出确实是输入通过确定的算法盘算出来的。

这样一来,若是验证者看到输出是对的,同时证实显示输出是用输入盘算而来的,那么验证者就可以在不知道输入的情况下信赖输入。

随之而来的问题就是:若何证实输出是由输入通过某个确定的算法盘算出来的?而不是其他的输入、其他的输出、或者其他的算法?这便是零知识证实协议要解决的问题。

在zk-SNARK系列的协议中,接纳的方式是把输入、算法、输出转换为一个多项式,通过多项式把这三者绑定到一起。若是能够证实Alice知道这个多项式,就可以以为Alice的输出是输入通过算法盘算出来的。

总而言之,由于零知识证实被广泛地用于实现隐私珍爱,隐私珍爱又意味着不泄露数据,以是我们会对照容易在一最先就围绕它是怎样隐藏数据的为偏向去思索。但若是以「它是若何实现零知识的」为线索去熟悉它,就会一团乱麻,而若是以「它是若何实现证实的」为线索,就会一条线清晰地贯串始终。

二、零知识证实只能实现特定知识的「零知识」

对于哈希函数、基于椭圆曲线的加密算法等密码学工具而言,险些在任何情况下给出任何数据,它们都能够把这个数据隐藏起来(实践角度若是输入空间过小是无法隐藏的);当我们知道零知识证实可以不泄露知识时,往往也会以为能够把随便的知识交给它来处置,但实际上,零知识证实只能在特定的场景下实现特定知识的「零知识」。

回到Alice的例子,在她的零知识证实历程中,至少涉及到三种可以被称为知识的器械:1.宇宙的初始值;2.宇宙的演化算法;3.宇宙的演化效果。可以通过零知识证实不泄露这些差别类型的知识吗?不能,我们甚至必须知道宇宙的演化算法和演化效果,才气证实Alice是否知道宇宙的初始值。

换言之,零知识证实只能证实但不泄露「输入」这个位置上的知识。当在思索或使用零知识证实协议解决问题时,需要看不想泄露的知识是否可以被放在输入的位置上,并能通过确定的算法发生一个可判断真伪的输出(更准确而言在于能否组织一个 NP-relation)。 

举例来说,若是Alice在不附带任何条件的情况下声称自己知道一个数x,我们是难以用零知识证实证实她知道数x但又不泄露x的;但若是Alice声称自己知道一个数x知足某个条件a,那就可以先有一个算法,该算法的输出一定知足条件a(可以转换为输出一定为真),然后,若是输入x能够知足这个算法,就可以信赖数x知足条件a,这也意味着Alice能够在不泄露数据的情况下使用数据。

不外这里有另一个容易混淆的地方,就是零知识证实并不能直接证实某人有解某个问题的能力,好比有解舆图三染色问题的能力,它证实的是某人知道该问题的一组解。(注:可以通过让证实者解多次差别的三染色问题实例,证实证实者有盘算能力可以解三染色问题。) 

这与零知识证实协议的组织有关,如前所述,它证实的是一个把输入、算法、输出绑定到一起形成的多项式,而不是某个求解算法的多项式,证实这个多项式建立,实际上是在证实输入、算法、输出之间具有确定的关系,而不是在证实其他事情。 

一方面,这种组织限制了零知识证实的应用,它只能在输入、算法、输出完好的情况下实现输入的零知识证实,若是输出为真,就可以信赖输入为真;但另一方面,这种组织扩展了零知识证实的其他应用,即若是输入为真,我们也可以信赖输出为真。

三、零知识证实为何与区块链云云契合 

区块链激活了零知识证实的应用,零知识证实则提供给区块链一种卓越的解决方案,两者能够相互促进更主要的缘故原由在于区块链的系统特点和零知识证实的证实方式特点,而不仅仅由于零知识证实能珍爱隐私。

回忆我们做数学的证实大题,那是一种推理式证实,有着严酷的可被验证的推导历程;但另有另一种证实叫交互式证实,它不通过推导,而是借助于证实者和验证者的交互,验证者向证实者提出问题,若是证实者能给出准确的回覆,就以为证实者声称的命题是对的。

举一个不算稀奇准确的例子:Alice声称当宇宙的输入为x时,输出为42,推理式证实是指她要代入x一步步盘算,算出42,并把盘算历程展示出来以供验证;交互式证实看起来则是:给验证者一台平行宇宙穿梭机,验证者随机穿梭到有输出的宇宙(输入都为x),然后凭据宇宙的输出是否为42来判断Alice声称的是否可信赖。

相较于推理式证实,交互式证实的验证者只需验证一个点或几个点,这是零知识证实与区块链契合的一个主要缘故原由:区块链是一种分布式系统,每个节点都要重复完成验证的事情,受益于只需验证挑战点,简练(Succinct)零知识证实系统可以削减验证的事情,它提供给验证者的是一个比原命题小得多的证实。

形象化而言就是:在非区块链的系统中,零知识证实削减一份验证者的事情,同时可能增添一份证实者的事情(纷歧定是1:1的关系),这或许就算不上利益;可在区块链系统中,零知识证实每削减一份验证者的事情,若是有100个节点,就能削减100份的总事情量,而此时增添的仍然只是一份证实者的事情,那么这种利益就很显著了。

此外,单从用零知识证实来解决问题的角度,区块链上的空间资源和时间资源都是极为稀缺的,而简练零知识证实发生的证实小、验证时间短,适合作为区块链上的解决方案。

但需要注重,交互式证实只需验证挑战点,与之相伴的推理式证实和交互式证实的另一个区别就是:推理式证实能够证实一个命题是否建立,交互式证实却只能证实一个命题在概率上是否建立。

也就是说,如果证实者声称的命题是错的,但当验证者提出问题时证实者蒙对了谜底,验证者会以为命题是对的。因此在零知识证实协议的设计中,非常主要的一部分事情就是用数学的方式让证实者几无可能蒙对谜底(基于对证实者盘算能力的某种假设,证实者使用虚伪证实使验证者信以为真的概率是一个可忽略的函数)。

回到zk-SNARK。zk-SNARK把证实输入、算法、输出的关系转换为证实一个绑定三者关系的多项式,就能够给验证者提供一台平行宇宙穿梭机。在皮诺曹协议中(zk-SNARK的一种),交互式证实是这样的:

证实者声称自己知道一个多项式p(x),该多项式是可以被分解成t(x)和h(x)的,即p(x)=t(x)·h(x) ;验证者随机选择一个挑战点s,通过对s加密让证实者只能算出p(s)和h(s),而无法盘算t(s);证实者把p(s)和h(s)给验证者,验证者手中有t(s),就可以盘算t(s) ·h(s) 是否即是p(s),若是相等,就信赖证实者确实知道一个多项式。

而知道一个多项式,就意味着输入、算法、输出之间存在确定的关系,若是输出为真,我们就可以在并不知道输入的情况下信赖输入为真,即实现零知识证实。那么到现在,我们就不仅知道了零知识证实是一种证实的方式,而且知道了它是若何来做证实的。

四、不要被「无需交互」诱骗

零知识证实是一种交互式的证实系统,它依赖于两个主要元素:交互、随机。

交互是指一方提出挑战,一方给出证实,若是没有这种交互,零知识证实就无法开展;随机是指挑战点必须是随机的,也就是不能被证实者预测到的,否则证实者就可以在挑战点上构建一个假证实。若是Alice事先知道验证者会去73号平行宇宙,她就可以提前把73号的谜底改为42。 

那为什么zk-SNARK称自己为非交互(Non-interactive)?在所谓的交互式证实中,需要先由验证者给出随机点,再由证实者构建证实;在所谓的非交互证实中,好比皮诺曹协议,它不再需要验证者给出随机点,转而由一个可信的第三方在初始化阶段给出随机点,这样一来,证实者就可以直接给出证实,验证者只需要验证证实即可,验证者和证实者之间不再需要交互。

可信第三方给出随机点就是皮诺曹协议的可信设置(Trusted-setup),相较于直接交互,可信设置在给出随机点s之外,还需多给出一个t(s),由于验证者需要用t(s)举行验证。但问题在于t(s)不能被证实者得知,否则他可以容易组织出一个假证实,以是需要用一个方式对t(s)做变换,使得变换后的t(s)可用于验证,但不可用于证实者的盘算。皮诺曹协议选择双线性配对操作来完成这一事情。

以是无需交互更多的是一种技术上的处置,对于零知识证实而言,验证总是在随机挑战点上完成的,所差别的是这个挑战点从何而来。差别的详细协议,在用非交互取代交互时选择的方式会有对照大的区别,即便它们都叫zk-SNARK协议,这是分外需要注重的。

五、模块化和年轻学科

希望上述四点能对你明白零知识证实有所辅助,在文章的最后,是两个小的可能会失足的熟悉。

第一,零知识证实协议,好比zk-SNARK,并不是围绕某个确定的焦点公式睁开的,它是模块式的,每个模块卖力完成自己的事情,然后人人组合到一起。以是若是你想通过捉住一个焦点点来明白零知识证实就会对照难题,更好的方式是通过一条线索来明白它。

同时,zk-SNARK不是指某个详细的协议,它是一类方式的统称,组成它的那些模块大要不会变,但这些模块选择的详细方式是可变的。以是当你看到差别的zk-SNARK时,不用疑惑,跳出来站在模块的高度去看它,而不是陷入详细的方式。

第二,或许由于零知识证实是在与数学打交道,它经常带给人一种古老学科的感受,但实际上零知识证实的研究还很早期,零知识证实的应用更是刚刚最先。当选择使用零知识证实时,开发者们并不是只需工程化实现一套成熟的理论,而是要一边找到/发现方式一边应用方式。

以是也许我们可以给零知识证实多一些的耐心,它可能是未来数字天下主要的组成部分,它不仅是使用组成数字天下的数据的工具,也是节约数字天下中最稀缺资源的工具。

封面图片来自 Unsplash, 作者 Beatriz Pérez Moya

致谢:郭宇

撰文:李画,安比实验室特约研究员

,

环球UG

欢迎进入环球UG官网(UG环球):www.ugbet.us,环球UG官方网站:www.ugbet.net开放环球UG网址访问、环球UG会员注册、环球UG代理申请、环球UG电脑客户端、环球UG手机版下载等业务。

版权声明

本文仅代表作者观点,
不代表本站欧博allbet网址的立场。
本文系作者授权发表,未经许可,不得转载。

发表评论

评论列表(1人评论 , 90人围观)
  • 2020-08-26 00:07:20

    欧博亚洲APP下载欢迎进入欧博亚洲APP下载(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。是我最近的读物