从小故事带你理解零知识证实 | 区块链一千零一问

开胃小故事

阿里巴巴证实

阿里巴巴被强盗抓住,为了保命,他须要向强盗证实本身拥有打开石门的密码,同时又不能把密码告诉强盗。他想出一个解决办法,先让强盗离开本身一箭之地,距离足够远让强盗没法听到口令,足够近让阿里巴巴没法在强盗的弓箭下逃生。阿里巴巴就在这个距离下向强盗展现了石门的打开和关闭。网络

失物认领证实

小李子不当心丢了钱包,急急忙忙跑去派出所报案,几天以后派出所打电话联系他去失物认领,因而:
“姓名"
“小李子”
“年龄”
“别问,问就是18”
“性别”
“emmm…要不你抬头本身看下?”
“钱包还想不想要了?”
“要啊,那确定得要,我本身的钱包我为啥不要”
“你怎么证实钱包是你的?”
“钱包是黑色的”
“这个证实不了,黑色的钱包多了去了”
“里面有几张银行卡和现金”
“废话,钱包不放卡和现金放什么?”
“有四张卡,还有250的现金”
“还有别的信息么?这些证实不够充分?”
“里面第二个夹层里面有个内夹层,里面有一张我珍藏多年的照片”
“嗯,行了,签个字把钱包领回去吧”
最后,小李子喜滋滋的拿着钱包回家了。ide

顺便附上珍藏图片:区块链

在这里插入图片描述

手机归属证实

小李子兴高采烈的拿着失而复得的钱包准备回家大吃一顿,挤上了公交,戴上了耳机,忽然发现没有声音,一低头,直呼一声好家伙,光天化日之下,一只手刚从他裤兜里拿出来,手里面还握着他的手机,小李子一把就把手机抢过来,还没开口,结果对方先开口了:
“来人啊,有人抢劫了。。。。。。”
小李子愣了一下:“好家伙,恶人先告状的本事能够啊”
小偷看小李子没说话,嚣张的补了一句:“麻溜的,手机乖乖还给我,不要不识抬举。”
小李子不能忍了:“你说手机是你的,那你怎么证实?”
小偷机智的反问:“个人手机我凭什么证实?,却是你,手机上有写你的名字吗?”
小李子笑了笑:“哟,还挺犟的啊。手机上虽然没写个人名字,可是它有名字啊”
小偷:“呵呵,你在逗我呢?那你喊它一声它会应你吗?”
小李子:“固然会啊!hei,siri”
siri:“。。。。。。”
小偷:“大意了。。。。。。”
因而小李子带着苦逼的小偷,又回到了派出所。blog

背景

零知识证实(Zero—Knowledge Proof),是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的。它指的是证实者可以在不向验证者提供任何有用的信息的状况下,使验证者相信某个论断是正确的。其实,早在16世纪的文艺复兴时期,意大利有两位数学家为竞争一元三次方程求根公式发现者的桂冠,就采用了零知识证实的方法。当时,数学家塔尔塔里雅和菲奥都宣称本身掌握了这个求根公式,为了证实本身没有说谎,又不把公式的具体内容公布出来(可能在当时数学公式也是一种技术秘密),他们摆开了擂台:双方各出30个一元三次方程给对方解,谁能所有解出,就说明谁掌握了这个公式。比赛结果显示,塔尔塔里雅解出了菲奥出的所有30个方程,而菲奥一个也解不出。因而人们相信塔尔塔里雅是一元三次方程求根公式的真正发现者,虽然当时除了塔尔塔里雅外,谁也不知道这个公式究竟是个什么样子。图片

概念

顾名思义,零知识证实就是既能充分证实本身是某种权益的合法拥有者,又不把有关的信息泄露出去——即给外界的“知识”为“零”。零知识证实实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采起的一系列步骤。证实者向验证者证实并使其相信本身知道或拥有某一消息,但证实过程不能向验证者泄漏任何关于被证实消息的信息。ci

分类

交互式证实

       零知识证实协议的基础是交互式的。它要求验证者不断对证实者所拥有的“知识”进行一系列提问。证实者经过回答一系列问题,让验证者相信证实者的确知道这些“知识”。然而,这种简单的方法并不能令人相信证实者和验证者都是真实的,二者能够提早串通,以便证实者能够在不知道答案的状况下依然经过验证。就像上面的失误认领证实小故事。字符串

非交互式证实

       非交互式零知识证实不须要交互过程,避免了串通的可能性,可是可能须要额外的机器和程序来肯定实验的顺序。就像上面的手机归属证实小故事。数学

角色

证实人(prover)

证实人提供一系列的结论以供验证者进行验证it

验证者(verifier)

验证者根据证实人提供的结论进行验证,没法获取其它的信息io

特性

正确性

prover没法欺骗verifier。换言之,若prover不知道一个定理的证实方法,则P使verifier相信他会证实定理的几率很低。

完备性

verifier没法欺骗prover。若prover知道一个定理的证实方法,则prover使verifier以绝对优点的几率相信他能证实。

零知识性

verifier没法获取任何额外的知识。

条件

零知识证实须要知足三个条件。
    一、若是语句为真,诚实的验证者(即:正确遵循协议的验证者)将由诚实的证实者确信这一事实。
    二、若是语句为假,不排除有几率欺骗者能够说服诚实的验证者它是真的。
    三、若是语句为真,证实者的目的就是向验证者证实并使验证者相信本身知道或拥有某一消息,而在证实过程当中不可向验证者泄漏任何有关被证实消息的内容。
       零知识证实是几率证实而不是肯定性证实,可是也能够经过技术将偏差下降到能够忽略的值。

应用

zk-SNARK

zk-SNARK是zero-knowledge succint non-interactive arguments of knowledge的简称,全称里面每一个单词都有特定的含义:

zero knowledge:零知识,证实过程当中不会透露任何信息。

succinct:证据信息较短,方便验证

non-interactivity:无交互的,证实者基本上只要提供一个字符串以供验证。对于区块链来讲,这一点相当重要,意味着能够把该消息放在链上公开验证。

arguments:证实过程是计算无缺(computationally soundness)的,证实者没法在合理的时间内造出伪证(破解)。跟计算无缺对应的是理论无缺(perfect soundness),密码学里面通常都是要求计算无缺。

of knowledge:对于一个证实者来讲,在不知晓特定证实 (witness) 的前提下,构建一个有效的零知识证据是不可能的。

前景

相信你们对当前网络的发达程度并不陌生,常常会有由于肖像权,隐私权等引发的诉讼新闻。而在零知识证实的网络中,可以很好的隔离窥探者、爬虫,完美的保护用户的隐私。

相关文章
相关标签/搜索