如果只是回答标题问题,两个字就可以了:不会。不过我还是想顺便说一下,到底什么是零知识证明(ZKP)。零知识证明和零信任这两个词,虽然都带有“零”,但与“信任”有关,但它们不是一回事。两者本质上都是增强“信任”,但在增强“信任”的过程中,零知识证明强调不泄露知识;零信任强调不要过度授权。简单来说,零知识就是隐藏知识;零信任是关于控制信任。零知识证明解决了信任与隐私的矛盾:既通过“证明”增强“信任”,又通过“零知识”保护“隐私”。这是两全其美的。这篇文章想表达的观点其实是:探索零知识证明的过程,可以探索安全的本质。以笔者目前的理解,安全性的最终定义并不是启发式的CIA三大特征,而是使用形式化验证的可证明安全性——上帝(“模拟器”)与科学(数学、计算复杂性)的完美结合推演过程。一、理解零知识证明1、零知识证明的定义零知识证明(ZKP,Zero-KnowledgeProof)定义为:证明者(prover)可以在不向验证者(verifier)提供任何有用信息的情况下,说服验证者某个断言是正确的。根据定义,零知识证明具有以下三个重要性质:完备性:只要证明者拥有相应的知识,就可以通过验证者的验证,即证明者有足够高的概率说服被验证者验证者。(这里所说的“概率”,详见下文“ColorblindGame”)可靠性(Soundness):如果证明者不具备相应的知识,则无法通过验证者的验证,即证明者认为的概率欺骗验证者可以忽略。零知识:在交互过程中,证明方只向验证方公开其是否拥有相应知识的声明,不会公开关于该知识的任何额外信息。从定义中还可以提炼出两个关键词:“不泄露信息”+“证明断言有效”。再次浓缩就是:隐藏+证明。因此,零知识证明的核心目的是隐藏和证明各种需要隐藏的秘密。(感觉很矛盾是吧?)2、零知识证明的来源零知识证明是Goldwasser、Micali和Rackoff在1984年提出的,论文题目是《The Knowledge Complextiy of Interactive Proof Systems》(《交互式证明系统中的知识复杂性》)。从上图左上角可以看出,这篇论文其实是1989年发表的,原因是这篇论文的思想太超前了,从1984年写出初稿到正式接受用了五年时间并于1989年发表。正是因为零知识证明的开创性工作,Goldwasser和Micali在2012年分享了图灵奖——计算机领域的最高奖项,也被称为“计算机界的诺贝尔奖”。3、零知识证明的核心价值:杜绝可信第三方。在互联网电子商务和在线交易蓬勃发展的今天,可信第三方(TTP,TrustedThirdParty)几乎是不可或缺的。但让大家无法理解的是,受信任的第三方引入了巨大的“信任成本”。过度信任第三方会导致“隐私泄露”、“单点故障”、“个人信息滥用”等严重问题。虽然学术界也提出了“半可信第三方”(Semi-trustedThirdParty)来放宽条件,但“半可信”仍然没有解决根本问题。根本问题是第三方能否被淘汰。那么,如果取消可信第三方,交易的公平性能否得到保证呢?想象一下这样的交易场景:一个买家提着一个钱箱,另一个卖家也提着一个箱子,里面装着某种贵重的货物。在电影中的剧情中,买卖双方会坐在一张桌子的两边,双方倒数3-2-1,然后同时将箱子推给对方。当然,最好双方都携带武器,以防对方作弊。除了买卖双方,没有第三方在场,双方互不信任。很容易理解,双方都不愿意先出手,把自己的箱子交给对方,因为担心对方拿到箱子后马上跑掉,从而导致结局。金钱和货物。2008年,比特币诞生,中本聪想出了一个天才的设计:在一个没有任何访问权限的P2P网络中,利用区块链技术,以一种非常去中心化的公平记账方式。我们可以从另一个角度来理解中本聪的创新:比特币实现了分布式协议,以去中心化的方式“模拟”了一个“虚拟”的“可信第三方”。”。零知识证明也可以这样理解:零知识证明实现了一类密码学理论技术,它基于一些安全假设,“模拟”了一个虚拟的可信第三方。可见,一个重要的作用“零知识证明”的目的是消除可信第三方,换句话说,零知识证明提供的“信任”可以替代一个“可信第三方”,需要注意的是“零知识证明”替代的是什么不是“第三方”,而是“可信第三方”。4、零知识证明的经典例子:色盲游戏的零知识证明背后的逻辑并不复杂,下面是一个经典例子交互式零知识证明的一种——色盲游戏,帮助理解零知识证明的概念。色盲游戏:参与者:Alice是色盲,Bob不是。Bob有两个大小和形状完全相同的球,但是不同颜色的:一种是蓝色,另一种是红色。因为爱丽丝我爱丽丝是色盲,无法判断这两个球是否相同。而鲍勃需要向爱丽丝证明这两个球是不同的。在这个游戏中:Alice被称为验证者:他需要验证Bob的陈述是否正确;Bob被称为证明者:他需要证明他的陈述(有两个不同颜色的球)。采取零知识证明的方式:Bob需要在Alice无法知道两个球的颜色的情况下向Alice证明这两个球的颜色不同,这符合零知识证明的定义。零知识证明方法如下:Alice在Bob面前拿起两个球,左手拿着一个蓝色的球,右手拿着一个红色的球(当然Alice并不知道自己手里拿着的是不是篮球或红色球,因为她是色盲);爱丽丝然后把手放在背后,这样鲍勃就看不到爱丽丝手里的球;爱丽丝在背后随意交换左右手的球,并在心里默默记住自己交换的方法;交换完成后,爱丽丝伸出手,问鲍勃“两个球交换位置了吗?”;如果鲍勃能看到球上的颜色,那么爱丽丝每次改变球的位置,鲍勃都能正确回答爱丽丝的问题。分析推理过程如下:第一次:假设爱丽丝确实交换了两人手中的球。如果Bob的答案是正确的,Alice仍然不会完全相信Bob可以区分两个球的颜色,因为Bob有50%的概率是正确的;因此,即使Bob的答案是正确的,Alice也会进行第二次测试;如果Bob的答案是错误的,那么Alice就可以确定Bob无法区分这两个球的颜色。测试可以终止。第二次:假设这次爱丽丝没有交换两人手中球的位置,然后爱丽丝问鲍勃是否交换了球的位置。如果Bob的答案是正确的,那么Alice有75%的概率Bob可以区分这两个球的颜色;当然,Alice也可以进行第三次测试;如果Bob的答案是错误的,那么Alice就可以确定Bob无法区分这两个球的颜色。本次测试特此终止。下图为上述情况的概率树:概率计算结果如下:当Bob第一次回答正确时,Alice可以说Bob的断言为真的概率是50%;如果Bob第二次回答正确,那么Alice可以说Bob的陈述为真的概率是75%;如果第三次正确,则概率将达到87.5%;...如果Bob连续n次通过测试,Alice将以1-(1/2)^n的概率表示Bob说的是没错,这两个球确实是红色和蓝色的。本例中的零知识证明是一种基于概率的验证方法(probabilityproof,notdeterministicproof)。验证者(verifier)根据一定的随机性向证明者(prover)提出问题。如果能够给出正确答案,就意味着证明者很有可能拥有他所宣称的“知识”。看看这个例子如何满足零知识证明定义中的三个属性:完整性:如果Bob知道球的颜色,那么Bob每次都会正确回答。可靠性:如果Bob不知道球的颜色,那么Bob不能总是正确回答。零知识:直到最后,Alice都不知道这两个球的具体颜色,因为Bob从来没有透露过这些信息。二、信任与安全的理解1、信任的产生机制零知识证明是如何“凭空产生信任”的?零知识证明的信任建立在相对客观的理论之上:一是基础理论:如《数论与代数》、《数理逻辑》、《计算论》等;另一类是安全假设:如“离散对数问题”等。如果我们相信这些基本理论(数学、逻辑),相信安全假设没有被攻破,那么我们确实可以得出以下结论:零-知识证明实现了一类密码学理论技术,这些技术基于一些安全假设,“模拟”出一个虚拟的可信第三方。2016年,《经济学人》提出“区块链是一台信任机器”。仔细思考信任的推导机制,我们可以发现:区块链:解决的是“分布式计算的信任”;零知识证明:解决“数据的信任”;形式验证:它解决了“逻辑信任”。以上三点:逻辑<->计算<->数据,共同形成一个闭环,或许“信任机器”的概念才能真正实现。总之,任何“信任”都需要建立在一定的信任基础上(如可信计算基),任何“安全”都有安全假设。信任的最后一个环节是“形式验证”。形式化验证实际上是对逻辑、流程或业务的形式化建模。你可以把它理解为一种数学语言的描述。模型是一些数学概念(或数学对象),如集合、代数、类别等。那么所有的形式验证都是以“显式”或“隐式”的方式“严格证明”某个结论(或称为定理)。理解零知识证明理论的核心是理解“模拟”这个概念。上面我们提到了两个“模拟”:一个是区块链,一个是零知识证明。我们再回顾一下:比特币实现了一个分布式协议,以去中心化的方式“模拟”一个“虚拟”的“可信第三方”。零知识证明实现了一种密码学理论技术,它基于一些安全假设“模拟”了一个虚拟的可信第三方。它们是可信的,因为它们可以“模仿可信赖的第三方”。这个模拟过程可以被形式化和证明。现在,模拟和安全证明是密码学界的共识,也是基本的形式化工具。没有证明/验证的模拟不能被所有人接受。理论上,所有的客观标准都可以被验证,小到安全协议,大到一行代码,都可以使用形式化的验证方法。恰好笔者研究过provablesecurity,从那些密码学的安全证明中,体会到了“模拟”和“provablesecurity”所表达的神奇概念。从某种程度上,你可以理解“安全”的真正含义。如果你对模拟、安全、不可区分性等形式化验证方法感兴趣,请参考[6],它将带你进入另一个“上帝”存在的“平行世界”,跨越科学和哲学问题。2.Proofvs.Verification零知识证明的实现可以用三个旅程来描述:隐藏秘密的旅程:单向函数;求证之旅:同态映射;构建通用零知识证明之旅:证明NPC问题的多项式。“零知识证明”中的“证明”与其定义中的“验证”是什么关系?这涉及证明存在的意义。所有的证明都体现了“证明”和“验证”之间的“不对称”。证明:这可能是一个计算量或脑力非常大的活动,无论是花费了数百年的“费马大定理”,还是比特币中的POW证明,这些证明都浓缩了在寻找证明能量的过程中花费的时间.证明可能非常复杂,有时需要天才。验证:必须(或应该)是一个非常简单的、机械的、在有效时间内终止的活动(多项式复杂度)。从某种意义上说,“证明”与“验证”的不对称,真正体现了证明的意义,彰显了零知识证明的价值。关于这部分的详细信息,请参见参考文献[2]。3.信任与隐私信任从根本上说是一件好事。我们创建了信用系统,使我们能够向我们信任的人和组织提供信用;依靠声誉、信用记录等,也可以和我们不信任的人做生意。然而,信任通常是以牺牲隐私为代价建立的。为了相互信任,通常不得不放弃一些隐私。信任通常与你是谁密切相关。零知识证明恰恰是一种“两全其美”的解决方案:既通过“证明”增强“信任”,又通过“零知识”保护“隐私”。4.Anonymousvs.Pseudonym对于隐私其实有两种理解:第一种是匿名(Anonymous),即用户不需要公开任何与自己相关的信息。它就像学校里的忏悔墙。不管是谁写的,反正上面写了字。第二种是假名(Pseudonymous),即用户通过自己创建的假名发布信息,比如贴吧。如果不了解用户,就无法建立网名与真实姓名的联系,也不认识发帖人。是谁。目前,大多数当前的区块链技术都只是假名。例如在比特币中,每个用户都会随机生成自己的公钥(化名)地址来收钱。这种公钥地址其实就是一个假名。一旦在某处实名制认证,网名就可以与实名关联起来,完全没有隐私可言。如果黑客或政府可以将真实姓名链接到网络地址,则它可以将区块链交易链接回用户进行交易时的身份。虽然区块链被誉为完美的安全解决方案,但知情人士都知道这个弱点。事实上,世界各地的执法机构一直在利用这一漏洞来抓捕罪犯。这就好比有人用自己的网名在贴吧发帖批评别人,然后有人用密保找手机号,再用手机号找注册的实名,所以是一个要充实的真理。零知识证明可以弥补这种匿名性的不足。用零知识证明创造一个信任的社会,是一个更加注重个人隐私的社会。它将真正把隐私控制权交给消费者,而不是交给政府或组织。3、零知识证明的应用零知识证明的定义中有两个关键词:“不泄露信息”和“证明断言有效”。基于这两个特点,直接扩展了零知识证明在区块链上的两大应用场景:发件人、交易余额)来证明区块链上的资产转移是有效的。扩展:在扩展场景中,较少关注零知识证明技术“不泄露信息”的特性,更多关注“证明断言有效”的特性。由于链上资源有限,我们需要将大量的计算迁移到链下。因此,我们需要一种技术来证明这些发生在链下的行为是可信的。零知识证明正好可以帮助我们做可信计算的链下背书。端到端通信加密:用户可以互相发送消息,但无需担心服务器获取所有消息记录。同时,消息也可以根据服务器的要求产生相应的零知识证明,如消息的来源、消息的目的地等。.认证:用户可以向网站证明自己有私钥,或者知道一个只有自己知道的秘密答案,网站不需要知道私钥和秘密,但网站可以验证这个零知识证明,从而确认用户的身份。去中心化存储:服务器可以向用户证明他们的数据被妥善保管,不会泄露数据的任何内容。信用历史:信用历史是另一个可以充分发挥零知识证明优势的领域。用户可以选择性地向对方展示自己的信用记录,同时证明信用记录的真实性。更多示例,可以是任何形式的数据共享、数据处理和数据传输。2019年7月,美国国防高级研究计划局(DARPA)发布了一份关于加密验证和评估信息保障(SIEVE)计划的广泛机构公告(HR001119S0076)。该项目寻求最先进的零知识证明,目的是在不泄露秘密信息的情况下验证军事能力。该项目侧重于验证网络安全和网络空间作战军事能力的零知识证明,包括大量复杂的概率证明和不确定的分支条件。项目研究分为三个技术领域:构建有用的零知识陈述;构建高效的零知识证明生成编译器;后量子零知识研究。
