Zero Knowledge Proof

零知识证明的定义

零知识证明(Zero Knowledge Proof, ZKP)是一种基于密码学的技术,它允许证明者(prover)在不泄露任何有用信息的情况下,向验证者(verifier)证明某个论断的正确性。简单来说,证明者只需证明自己拥有能够证明论断的信息,而不需要公开这些信息的内容,从而保护了自己的隐私

根据定义,零知识证明具有以下三个重要性质:

  1. 完备性(Completeness):

    只要证明者拥有相应的知识,那么就能通过验证者的验证,即证明者有足够大的概率使验证者确信。

    (关于这里提到的“概率”,详见后面的“色盲游戏”)

  2. 可靠性(Soundness):

    如果证明者没有相应的知识,则无法通过验证者的验证,即证明者欺骗验证者的概率可以忽略。

  3. 零知识性(Zero-Knowledge):

    证明者在交互过程中仅向验证者透露是否拥有相应知识的陈述,不会泄露任何关于知识的额外信息

总结来说就是隐藏 + 证明

零知识证明的历史

1984年,Goldwasser、Micali、Rackoff三位学者提出了零知识证明技术,并发表了论文《The Knowledge Complexity of Interactive Proof Systems》(《交互式证明系统中的知识复杂性》)。然而,这项开创性工作因思想太过超前在当时并未得到广泛的认可和应用。直到1989年,这篇论文才正式发表,并成为现代密码学理论的重要基础之一。值得注意的是,这项技术之所以能够被广泛应用,是因为它能够有效地保护个人隐私和机密信息,同时在数字身份认证、电子投票以及区块链等领域具有广泛应用前景。

image-20230527192632798

消灭可信第三方

当今互联网电子商务和在线交易的快速发展,可信第三方(TTP,Trusted Third Party)几乎成为了不可或缺的存在。然而,很多人并未意识到,可信第三方引入了巨大的“信任成本”,过度依赖它可能会导致隐私泄露、单点失效、个人信息滥用等问题的出现。虽然学术界也提出了“半可信第三方”(Semi-trusted Third Party)来放宽条件,但这种方法并不能从根本上解决问题。因此,有必要探索如何取消可信第三方。

然而,如果取消可信第三方,我们是否可以保证交易的公平性呢?

一个常见的交易场景是,买家和卖家之间直接交换货物和现金,没有可信第三方的介入。这种情况下,双方互不信任,容易出现僵持局面,谁都不愿意先将自己的货物或现金交付给对方。为了解决这个问题,中本聪在2008年提出了比特币,并采用了区块链技术作为一种去中心化的公平记账方式。

从另一个角度来看,比特币通过去中心化的方式,实现了一种可信第三方的模拟。它基于分布式协议和区块链技术,消除了对中央集权机构的需求,同时确保交易的安全性和公平性。类似地,零知识证明作为一种密码学理论技术,也可以模拟出一个虚拟的可信第三方,并且可以用于消除对可信第三方的依赖。

注:区块链解决的是分布式计算的信任,而零知识证明解决的是数据的信任

需要注意的是,零知识证明并不是取代“第三方”,而是取代“可信第三方”。因此,虽然取消可信第三方对于交易的公正性可能会带来一定挑战,但通过新兴的技术手段,我们可以更加安全、高效地进行去中心化的交易

经典示例:色盲游戏

如何更好的理解零知识证明的概念呢?下面给出交互式零知识证明的经典示例——色盲游戏

色盲游戏

  • 参与者:Alice是色盲,Bob不是色盲
  • Bob手上有两个大小、形状完全一样的球,但颜色不同:一个蓝色,另一个红色。
  • 由于Alice是色盲,所以Alice无法分辨这两个球是否是一样的。
  • Bob需要向Alice证明这两个球是不一样的

在这个游戏中:

  • Alice被称为验证者:他需要验证Bob的陈述正确与否;
  • Bob被称为证明者:他需要证明自己的陈述(存在两个颜色不一样的球)。
  • 采取零知识证明方式:Bob需要在Alice不能获知两个球的颜色的情况下,向Alice证明这两个球的颜色是不一样的这个事实,这与零知识证明的定义是相符合的。

零知识证明方法如下:

  1. Alice当着Bob的面拿起两个球,左手拿蓝球,右手拿红球(当然,Alice并不知道拿的是蓝球还是红球,因为她是色盲);
  2. Alice然后将双手放到背后,这样Bob就看不到Alice手上的球了;
  3. Alice在背后随机交换左右手上的球,并在心里默默记住自己的交换方式;
  4. 交换完成后,Alice将手伸出,并询问Bob“两个球是否交换过位置?”;
  5. 如果Bob能看到球上的颜色,那么每次Alice换过球的位置后,Bob都能正确回答出Alice的问题。

分析推理过程如下:

第一次:假设Alice交换了手中两个小球的位置。

  • 如果Bob回答正确,Alice仍然不会完全相信Bob可以区分这两个球的颜色,因为Bob有50%的概率可能猜对了。因此,即使Bob回答正确,Alice可能还会进行第二次测试。
  • 如果Bob回答错误,那么Alice可以确定Bob不能区分两个球的颜色,此项测试就可以终止了

db892aac9a6c71cbbe36fa2d863b6175 (1)

第二次:假设Alice没交换了手中两个小球的位置。

  • 如果Bob回答正确,那么Alice可能会相信Bob可以区分两个球的颜色,因为Bob有75%的概率可能猜对了。但是,这并不意味着Alice完全相信Bob,因为还存在25%的概率Bob是通过瞎猜得到正确答案的。因此,Alice可能会进行第三次测试以确认
  • 如果Bob回答错误,那么Alice可以确定Bob不能区分两个球的颜色。此项测试就可以终止了。

给出了上述情况的概率树:

db892aac9a6c71cbbe36fa2d863b6175 (1)

概率计算结果如下:

  1. 当Bob第一次回答正确时,Alice认为Bob陈述为真的概率为50%。
  2. 如果Bob第二次也回答正确,那么Alice认为Bob陈述为真的概率将提高到75%。
  3. 如果连续三次Bob都回答正确,那么Alice认为Bob陈述为真的概率将进一步提高到87.5%。
  4. 如果连续n次Bob都回答正确,那么Alice以 1-(1/2)^n 的概率认为Bob说的是真的,即两个球颜色确实是不一样的。

这个示例中的零知识证明,是一种基于概率的验证方式(即概率证明,而非确定性证明)

验证者使用随机性向证明者提出问题,如果证明者能够正确回答,则认为证明者大概率拥有所声称的“知识”。零知识证明并不像传统的数学证明那样完全确定,因为它存在一定的概率误差。欺骗性的证明者有可能通过虚假的陈述骗过验证者,但是通过技术手段可以将误差控制在可以忽略的范围内

这个示例是如何满足零知识证明的定义中的三个性质:

  • 完备性

    如果Bob确实拥有分辨两个球颜色的能力,则他每次都能正确回答Alice提出的问题

  • 可靠性

    如果Bob不能分辨两个球的颜色,则他无法总是回答正确

  • 零知识性

    Bob从未透露两个球具体的颜色,只是通过回答Alice的问题来证明自己是否真的能够分辨两个球颜色。因此,Alice无法通过这个测试得知两个球的具体颜色

信任的产生机理

零知识证明提供的信任,是能够代替一个可信第三方

信任的产生是基于一些客观标准的,在密码学领域中,零知识证明技术基于数论、代数、计算理论等基础理论和安全假设,可以模拟出一个虚拟的可信第三方,从而实现数据的可信性。

而区块链则以去中心化的方式模拟出一个虚拟的可信第三方,实现分布式计算的信任。同时,形式化验证可以为逻辑、流程或业务进行形式化建模,并通过严格证明某个结论来提高其可信度。对于任何信任和安全性,都需要建立在某些基础之上,而形式化验证则是其中最重要的一环。

关于零知识证明的理解,核心在于理解“模拟”的概念。比特币和零知识证明之所以被认为是可信的,是因为它们能够模拟出可信第三方,而这个模拟过程是可以进行形式化验证的。在密码学领域中,“模拟”和“安全性证明”已经成为了共识和基本形式化工具。所有客观标准都可以通过形式化验证的方法进行验证,这对于提高信任和安全性至关重要。

证明 vs 验证

零知识证明的实现可以通过三个阶段描述:

  1. 隐藏秘密之旅:单向功能;
  2. 证明秘密之旅:同态映射;
  3. 构建通用零知识证明之旅:证明NPC问题的多项式。

在零知识证明中,“证明”和“验证”的关系体现了证明与验证的不对称性

证明可能是一项非常复杂、耗费大量算力或脑力的活动,比如耗时几百年的费马大定理和比特币中的工作量证明(POW)。这些证明凝聚了在寻找证明过程中所消耗的能量,证明过程可能是超乎寻常的复杂,偶尔需要天才横空出世。

相反,验证应该是一项非常简单、机械化的活动,在有效时间内(即多项式复杂度)必须能够得到终止。

证明和验证之间的这种不对称性真正展现了证明的意义,也展示了零知识证明的价值

信任 vs 隐私

信任是一个重要的概念,我们建立了信用体系来向那些我们信任的个人和组织提供信贷,也能够与那些我们不信任的人开展业务。然而,通常情况下,信任的建立需要放弃一些隐私,并且信任与身份信息密切相关。

零知识证明恰好提供了一种“两全其美”的方案:通过证明提升信任,同时通过零知识保护隐私。对于隐私的理解,有匿名和假名两种方式。目前,大多数区块链技术只提供假名,每个用户都会随机生成公钥地址来收款。这种公钥地址其实是一种假名,一旦在哪里实名制认证过,就可以将网名和实名关联起来,失去了隐私保护。

如果黑客或政府可以将真实姓名与网络地址相关联,那么可以通过链接区块链交易追溯到用户交易时的身份。尽管区块链被赞誉为完美安全方案,但知情人士都知道这种弱点。事实上,世界各地的执法机构一直在利用这一漏洞来抓住犯罪分子。 这就好比有人用网名在贴吧上发帖子喷人,然后被人用密保找到了手机号,再用手机号找到了注册的实名,从而被人肉是一个道理。

相反,零知识证明可以弥补这种匿名缺陷。利用零知识证明创建信任的社会,更注重个人隐私。它可以将隐私控制权真正转移到消费者手中,而不是交给政府或组织等

零知识证明的应用

零知识证明定义中有两个关键词:“不泄露信息”、“证明论断有效”。基于这两个特点,直接扩展出零知识证明在区块链上的两大应用场景:

  • 隐私:在隐私场景中,我们可以借助零知识证明的“不泄露信息”特性,在不泄漏交易细节(接收方、发送方、交易余额)的情况下,证明区块链上的资产转移是有效的。

  • 扩容:在扩容场景中,不太关注零知识证明技术的“不泄露信息”这个特性,更加关注“证明论断有效”这个特性。由于链上资源是有限的,所以我们需要把大量的计算迁移到链下进行,因此需要有一种技术能够证明这些在链下发生的动作是可信的,零知识证明正好可以帮助我们做链下可信计算的背书。

  • 端到端的通讯加密:用户之间可以互相发消息,但是不用担心服务器拿到所有的消息记录,同时消息也可以按照服务器的要求,出示相应的零知识证明,比如消息的来源、发送的目的地。

  • 身份认证:用户可以向网站证明,他拥有私钥,或者知道某个只要用户自己才知道的秘密答案,而网站并不需要知道这个私钥和秘密,但是网站可以通过验证这个零知识证明, 从而确认用户的身份。

  • 去中心化存储:服务器可以向用户证明他们的数据被妥善保存,并且不泄露数据的任何内容。

  • 信用记录:信用记录是另一个可以充分发挥零知识证明优势的领域,用户可以有选择性的向另一方出示自己的信用记录,同时证明信用记录的真实性。

  • 更多的例子,可以是任何形式的数据共享、数据处理、数据传输

2019年7月,美国国防部高级研究计划局(DARPA)发布了一份加密验证和评估信息安全保障(SIEVE)项目的广泛机构公告(HR001119S0076)。该项目寻求在零知识证明方面最先进的技术,目标是在不泄露秘密信息的前提下验证军事能力。该项目关注的是网络安全和网络空间作战方面用于验证军事能力的零知识证明,包括概率和不确定分支条件在内的大型复杂的证明。项目研究分为三个技术领域:构建有用的零知识语句;构建高效的零知识证明生成编译器;后量子零知识研究。

参考

[1] 零知识证明介绍

[2] 初识「零知识」与「证明」

[3] 一文读懂零知识证明背后的简单逻辑

[4] zkPoD:区块链,零知识证明与形式化验证,实现无中介、零信任的公平交易

[5] 浅谈零知识证明:背景与起源

[6] 从「模拟」理解零知识证明:平行宇宙与时光倒流

[7] Maxwell, G. "Zero knowledge contingent payment. 2011."

[8] 比特币:一种点对点电子货币系统

[9] 零知识证明是零信任吗?