查看原文
其他

【了解】Filecoin之零知识证明

“零知识证明”这是区块链技术的区块链技术的重要组成部分,同时也是filecoin世界中的重要证明之一。

在讲解之前,问一个问题,如何在不泄露隐私的情况下,如何证明自己很有钱?

答案很简答:把自己的玛莎拉蒂车钥匙、别墅、还有高级貂等一系列事物展示出来,就可以不泄露自己有多少钱就能证明自己有钱。

其实零知识证明也是同样的原理

零知识证明就是既能充分证明自己是某种权益的合法拥有者,又不把有关的信息泄漏出去,即给外界的 “知识” 为“零”。



证零知识证明里的角色

证明者:证实自己

验证者:通过间接证据,验证证实者的证据



零知识证明分类

交互式零知识证明

零知识证明协议的基础是交互式的。它要求验证者不断地提出一系列关于证明者所知道的 “知识” 的问题。

这种简单的验证方式并不能使人们相信证明者和验证者都未做伪证,事先证明者和验证者可能会串通,提前准备答案

 非交互式零知识证明

 非交互式零知识证明,顾名思义,不需要交互式过程,避免了验证者和证明者串通的可能性,但可能需要第三方机器和程序来确定验证的顺序。


知识证明在filecoin中的应用

零知识证明在filecoin也是一个重要的证明技术,最大限度的保证数据的安全与市场的环境。

举个例子,你也许遇到这样的情况

  • 客户在矿工那存了数据,但是就说没有存

  • 矿工没存数据,却说它存了

  • 矿工说存了数据,但是实际没存,客户取数据的时候,用其他地方的数据充数)

这时候就需要一种技术既能保证客户数据不被外人所知,而且还得有一个明确的证明。

零知识证明的同态加密应运而生

  • 通过一系列加密算法,对数据进行同态加密

  • 矿工在看不见任何数据的情况下,进行存储的处理。

  • 过后第三方(系统)对存储的数据不断的进行验证,保证矿工与客户的利益

  • 想要解锁这个数据,只有拥有此数据的客户才能解开。


Filecoin引入零知识证明,既保护了filecoin的市场,又保证客户和矿工的权益,让市场朝着良性的方向发展。这种相对公平的环境,极大概率会吸引更多的矿工入场。


但是入场filecoin并不简单,既需要过硬的技术实力,也需要不断提升综合实力,云际网络能助你一臂之力。



————————————————

IPFS,也就是星际文件系统,事实上是一个协议层的设计,就像http也是协议层一个道理。而Filecoin则是IPFS的金融层应用,所以二者其实并不是同一个东西。

那么什么是零知识证明呢?简单来说,就是:

我知道一个秘密,我在不告诉你秘密是什么的前提下,让你知道我知道这个秘密,而不是在蒙你。

看上去有点无厘头,但这样的思想在我们的生活中随处可见。

比如窃格瓦拉偷了一部手机,结果遇到了警察,那么警察应该如何证明这步手机是不是窃格瓦拉偷的呢?

答案很简单,就看窃格瓦拉能否解锁这个手机。(无论是开机密码或者是指纹)

关键来了,警察根本不需要知道具体的密码是什么,只要看切格瓦拉能不能打开手机桌面就行了。这就是零知识证明,因为警察压根就不知道具体打开手机的信息(知识)。

那么为什么这个零知识证明技术在filecoin中如此重要呢?

这是因为filecoin是基于IPFS的,而IPFS又是分布式的,这下问题来了,由于没有任何一个强有力的中央力量,如何防范每个人作弊呢?

我们首先来看看,有哪几种作弊方式,比如小明是存数据的小红是存储矿工。

第一种:小明明明存了数据,但小明硬说他没存,不想给钱。

第二种:小红明明没存数据,但她硬说她存了,非得要钱。

第三种:小红声称她存了,但实际没存,当小明要数据时,小红跑到别的地方下载了一份,再传给小明,然后骗钱。

当然,在利益的驱使下一定还有各种形形色色的作弊方式,这里就不赘述了。

解决这个问题的思路很简单,就是要时时刻刻保证矿工存了客户的数据。

就好比小明把一本书放在了小红家保管,怎么证明小红没有吧书丢掉或者送给隔壁的小王呢?

小明可以的一个做法就是随机地给小红打电话,问:书的某一页的某一行的某一个字是什么,如果小红答上来了,就说明小红还有这本书,如果没答出来就说明书不在小红这里。

但在分布式网络里打电话的这个人不应该是小明(不然小明太累了),而是其他的人(也就是矿工),但是小红并不想让其他人知道这本书里的具体内容,那么怎么做呢?

这里就涉及到同态加密,为了不出现数学公式,将通俗进行到底,我这边再讲一个小故事。

哆啦A梦有一个缩小隧道,人走过去之后就会变小,东西也会变小。如果大雄手上有一把钥匙和一把锁,在缩小之前钥匙是能打开锁的,在缩小之后钥匙还是能打开锁的。但钥匙和锁都不是原来的钥匙和锁了。那么也就是如果大雄在缩小之后钥匙还能打开锁,那么他就一定知道在缩小之前钥匙也是可以打开锁的。那么缩小隧道就是同态加密函数。

Filecoin就是这样做的,数据经过同态加密之后再进行随机挑战,就能保证没有人可以作弊了,同时发起挑战的矿工也不会知道数据具体是什么了。

最后总结一下,零知识证明是分布式存储进入大规模应用的基础,而filecoin是第一个做到的,它彻底解决了分布式的不信任问题,同时结合了IPFS的技术的前景,未来的存储将一定是filecoin与IPFS的天下。

很多人以为filecoin只是一个普普通通的区块链数字货币,但殊不知一个真正伟大的应用已经来临了。


————————————————

1简介


      “零知识证明”-zero-knowledge proof,是由Goldwasser等人在20世纪80年代初提出的。它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。在Goldwasser等人提出的零知识证明中,证明者和验证者之间必须进行交互,这样的零知识证明被称为“交互零知识证明”。80年代末,Blum等人进一步提出了“非交互零知识证明”的概念,用一个短随机串代替交互过程并实现了零知识证明。非交互零知识证明的一个重要应用场合是需要执行大量密码协议的大型网络。大量事实证明,零知识证明在密码学中非常有用。

  在零知识证明中,一个人(或器件)可以在不泄漏任何秘密的情况下,证明他知道这个秘密..如果能够将零知识证明用于验证,将可以有效解决许多问题..

2解释


  战争中你被俘了,敌人拷问你情报。你是这么想的:如果我把情报都告诉他们,他们就会认为我没有价值了,就会杀了我省粮食,但如果我死活不说,他们也会认为我没有价值而杀了我。怎样才能做到既让他们确信我知道情报,但又一丁点情报也不泄露呢?

       这的确是一个令人纠结的问题,但阿里巴巴想了一个好办法,当强盗向他拷问打开山洞石门的咒语时,他对强盗说:“你们离我一箭之地,用弓箭指着我,你们举起右手我就念咒语打开石门,举起左手我就念咒语关上石门,如果我做不到或逃跑,你们就用弓箭射死我。”

强盗们当然会同意,因为这个方案不仅对他们没有任何损失,而且还能帮助他们搞清楚阿里巴巴到底是否知道咒语这个问题。阿里巴巴也没损失,因为处于一箭之地的强盗听不到他念的咒语,不必担心泄露了秘密,而且他确信自己的咒语有效,也不会发生被射死的杯具。

强盗举起了右手,只见阿里巴巴的嘴动了几下,石门果真打开了,强盗举起了左手,阿里巴巴的嘴动了几下后石门又关上了。强盗还是有点不信,说不准这是巧合呢,他们不断地换着节奏举右手举左手,石门跟着他们的节奏开开关关,最后强盗们想,如果还认为这只是巧合,自己未免是个傻瓜,那还是相信了阿里巴巴吧。

  “零知识证明”说的是示证者向验证者表明他知道某种秘密,不仅能使验证者完全确信他的确知道这个秘密,同时还保证一丁点秘密也不泄露给验证者。阿里巴巴的这个方案,就是认证理论“零知识证明”的一个重要协议。

除了被俘后如何靠情报保命这个问题,零知识证明在社会领域中还有着很多应用场合。例如你证明了一个世界级的数学难题,但在发表出来之前,总是要找个泰斗级的数学家审稿吧,于是你将证明过程发给了他,他看懂后却动了歪心思,他把你的稿子压住,把你的证明用自己的名义发表,他名利双收,你郁闷至死,你去告他也没用,因为学术界更相信的是这位泰斗,而不是你这个无名之辈。

  这并不是天方夜谭,而是学术界常见的难题,前些年有个博士生告他的泰斗级导师剽窃他的成果,但除了令师生关系恶化外没有任何效果,最后他使出了撒手锏,称他在给导师审阅的论文的关键公式中,故意标错了一个下标,而这会导致整个推导失败。学术委员会一查果真如此,但还是有倾向于泰斗的声音,有人说那是泰斗的笔误,只不过让你发现了而矣,并不能证明那公式就是你推导出来的。

这个博士生故意标错下标,不能说他没有心眼,但他没有把“零知识证明”理论用好,以致于落到这种地步。“零知识证明”早在1986年就被A.Fiat和A.Shamir用数学的方法给出了解决方案,并在同年申请了美国专利,但由于该理论可能被用于军事领域,专利局被军方密令搁置,6个月后,军方命令:“该申请发表后会有害于国家安全……所有美国人的研究未经许可而泄露将会被判刑罚款”。看来军方认为作者肯定是美国人了,但作者实际上是在美国申请专利的以色列人,研究也是在以色列的大学里做的,军方这个命令摆了个大乌龙,虽然两天后撤消了,但已经成为了学术界的笑柄。

  这个笑柄也说明了一个问题,即“零知识证明”非常重要。基于数学的推理虽然非常复杂,但思路却很简单,上述的阿里巴巴方案就是其中之一。其它的一些方案,也都是像这样遵循着分割和选择(Cut and Chose)协议的。

  例如图论中有个哈米尔顿回路(Hamiltonian Cyclic)问题,说的是多个顶点的全连通图,若有一条通路通过了所有顶点,且每个顶点只通过一次,那这就是哈米尔顿回路。如果顶点较多的话,即使用计算机穷举计算很难找出这条回路,因为通路的可能性真在是太多了。

如果松鼠会贴了一张全连通图(命名为A图)悬赏哈米尔顿回路,而且任命我(奥卡姆剃刀)作为评审官,你幸运的找到了一条,那该怎么办呢,将结果直接发给我吗?千万不要,因为保不齐我会将你的成果让给了我的亲信。那你该怎么办呢?应该这么办:

1、你将A图的顶点搞乱了,并生成一张新图,只是顶点的位置变了,而新图顶点之间的连线关系与A图是完全一致的。这时,新图中每个顶点与A图中每个顶点的对应关系你是清楚的,而且新图中的哈米尔顿回路你也是知道的。

2、你将这张新图发给我,没错,就是仅仅一张新图,上面并没有画着你发现的牛B回路。

3、我收到后,对你提出两个问题中的一个:一是证明新图就是从A图变形过来的,所有顶点和连线的关系完全一致,二是画出新图中的哈米尔顿回路。

4、如果你真的找到了A图的哈米尔顿回路,这两个问题当然都能轻松回答。需要注意的是:你只需要回答第3步的其中一个问题,千万不要两个问题一并回答,否则我就知道你关于A图的哈米尔顿回路了,你就SB了。

5、我还是不相信你,因为有可能你只是将A图变了形,却根本不知道A图的哈米尔顿回路,而我在第3步时恰好要求你证明新图就是从A图变形过来的,你当然能证明。或者有可能你找了个你知道哈米尔顿回路的图,但这张图跟A图一点关系都没有,而我在第3步恰好要求你画出这张图的哈米尔顿回路。

6、我要求你从第1步开始重复这个验证过程,随着次数的增加,第5步那种巧合的可能性就越来越低,如果你多次能回答对第3步中的问题,那我还不相信你已经找到了A图的哈米尔顿回路,那我就是一个傻瓜。

7、为了表明我不是傻瓜,我在松鼠会群博里宣布你找到了A图的哈米尔顿回路,而这时我并没有看到你所画的A图的哈米尔顿回路。

  回到你证明了世界级的数学难题的问题,你可以用这种分割和选择协议来进行零知识证明,来保护你的权利。你公开声称你解决了这个数学难题后,验证者会给你出一个其它的题,而能做出这道题的前提条件是已经解决了那个数学难题,否则的话无解,而且这个条件是学术界所公认的,这个题就是所谓的平行问题。不出所料,你靠着已经解开数学难题的基础把这个平行问题做出来了,但验证者还是不信,他又出了一道平行问题,你又做出来了,多次较量后,验证者就确信了你已经解决了那个数学难题,虽然他并没有看到具体的解法。

大家已经看出来了,零知识证明需要示证者和验证者的密切配合,但如果你只是一个数学界的无名之辈,即使你宣称你解决了数学难题,也不会有人跟你配合着玩零知识证明,那你该怎么办呢?

我告诉你一个可以在法庭上都能当作有效证据的招数,你将证明打印好,选择一个最可靠最权威的邮政公司,把它寄给自己,当你收到这个扣着邮戳的包裹后,不要打开,把它放好,然后就可以把证明寄给数学泰斗。如果他用自己的名义发表了,不必着急,等他依靠其影响力把这个证明炒热后再出手,你上法庭控告他,他当然不承认,在法庭上你将那个没开封的包裹拿出来,上面清清楚楚地盖着时间戳,这就证明了你包裹里的证明是发生在那个时间戳之前的,加上之后的你邮给泰斗论文的邮件存根,和泰斗以自己名义发表论文的时间,三者就构成了一个完整的证据链,泰斗灰头土脸名声扫地,而你大获全胜名利双收。

这是我前几天在网络上看到得,觉得很有意思,但现的问题是:要怎么做?

  诸位发表点看法:

  附相关零知识证明材料:

  零知识证明不是证明在条款的数学感觉因为有一个固定的可能性 p 在任一零知识证明Peggy 能提供对挑战的正确反应即使她不知道钥匙。但是如果测试被重覆 n 计时欺诈被减少Peggy 的可能性 p n , 和由增加测试胜者的数字可能使Peggy 的可能性降低欺诈到一个任意水平。

  例子战略

  Peggy 的公开密钥是一张大图表, 我们将称 G。Peggy 被组建的 G 某时从前, 和广泛然后出版它。由于她特别地制造了它为目的, Peggy 知道一个汉密尔顿的周期在 G。Peggy 将证明她的身份对胜者由证明, 她知道一个汉密尔顿的周期在 G。即使 G 是公开信息, 没人可能做这, 因为没人知道G 的一个汉密尔顿的周期 , 并且发现汉密尔顿的周期在图表是一个困难的问题(参见NP 完整性) 。

  但是, Peggy 不能简单地显露汉密尔顿的周期对胜者, 胜者(或偷听者) 从那以后能在将来扮演Peggy 。Peggy 不能显露任何信息在所有周期, 因为偷听者也许收集信息关于几个不同的场合和装配它入足够的信息能扮演Peggy 。

  证明她的身份, Peggy 和胜者扮演以下比赛的几个圆:

  Peggy 标记G 端点 以随机号。边缘可能然后代表作为一对这些数字。她列出G 边缘 , 和编成密码各个边缘以一个另外密钥。她然后寄发被编成密码的边缘到胜者。

  胜者翻转硬币。

  * 如果硬币过来头, Peggy 向随机号投降密钥和测绘从端点。胜者解码边缘和然后核实, 被编成密码的边缘被派在步骤1 实际上做 graph.g 和没有某一其它图表。

  * 如果硬币过来尾巴, Peggy 投降密钥只为实际上形成汉密尔顿的周期的边缘。胜者解码这些边缘和核实, 他们的确形成正确长度的周期。

  冒名顶替者(' Pamela ') 能设法扮演Peggy, 和有成功地唬弄胜者的50% 机会在任何尤其圆。有二个可能的扮演战略。Pamela 能派Peggy 的graph.g 的编成密码 。在这种情况下, 她逃脱侦查如果胜者投掷头; 她显露编成密码, 并且胜者核实图表的确是 G。但如果胜者投掷尾巴, Pamela 被捉住。她被要求显露的一套的钥匙组成一个汉密尔顿的周期G 边缘, 并且她无法做那, 因为她不认识一。

  Pamela 能跟随的另一战略是准备某一其它图表她 知道一个汉密尔顿的周期的H编成密码。她在这种情况下是安全的如果胜者投掷尾巴; 她显露周期, 并且, 因为胜者从未看边缘的剩余, 他从未获悉图表是 H 和不是 G。但如果胜者投掷头, Pamela 被要求显露整个图表, 并且胜者看见这不是 G。

  由扮演这场游戏二十回合, 胜者能使由Pamela 被唬弄的可能性降低到一仅仅2-20。由扮演更多圆, 胜者能减少可能性就渴望。

  信息由Peggy 显露提供胜者任何信息在所有不G 的汉密尔顿的周期 。看这, 注意胜者能制造比赛的抄本没有谈话与Peggy 根本。他能选择序列头和尾巴, 和然后准备假定回复从Peggy, 没有曾经知道汉密尔顿的周期, 由从事适当的冒名顶替者战略在每个圆。抄本, 和它不遏制, 有线索关于Peggy 的身份合法的信息。Peggy 证明她的身份不是因为她能基于正确的答复, 但因为她能基于正确的答复没有知道将是什么问题。

  零知识证明的几个例子[原创]

  所谓零知识证明,指的是示证者在证明自己身份时不泄露任何信息,验证者得不到示证者的任何私有信息,但又能有效证明对方身份的一种方法。看起来有点别扭,我给2个例子,也许好明白一些。

  1)A要向B证明自己拥有某个房间的钥匙,假设该房间只能用钥匙打开锁,而其他任何方法都打不开。这时有2个方法:(一)A把钥匙出示给B,B用这把钥匙打开该房间的锁,从而证明A拥有该房间的正确的钥匙。(二)B确定该房间内有某一物体,A用自己拥有的钥匙打开该房间的门,然后把物体拿出来出示给B,从而证明自己确实拥有该房间的钥匙。后面这个方法属于零知识证明。好处在于在整个证明的过程中,B始终不能看到钥匙的样子,从而避免了钥匙的泄露。

  2)A拥有B的公钥,A没有见过B,而B见过A的照片,偶然一天2人见面了,B认出了A,但A不能确定面前的人是否是B,这时B要向A证明自己是B,也有2个方法。(一)B把自己的私钥给A,A用这个私钥对某个数据加密,然后用B的公钥解密,如果正确,则证明对方确实是B。(二)A给出一个随机值,B用自己的私钥对其加密,然后把加密后的数据交给A,A用B的公钥解密,如果能够得到原来的随机值,则证明对方是B。后面的方法属于零知识证明。

  3)有一个缺口环形的长廊,出口和入口距离非常近(在目距之内),但走廊中间某处有一道只能用钥匙打开的门,A要向B证明自己拥有该门的钥匙。采用零知识证明,则B看着A从入口进入走廊,然后又从出口走出走廊,这时B没有得到任何关于这个钥匙的信息,但是完全可以证明A拥有钥匙。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存