零知识证明(Zero-Knowledge Proof,ZKP)是一种密码学技术,最早由由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初的一篇名为《The Knowledge Complexity Of Interactive Proof Systems》的论文中提出的。在该文中,它是作为一个理论模型被构想出来,解决的是在不透露证据的情况下如何验证数学陈述的问题。这一概念在学术界引起了广泛关注,因为它挑战了传统加密技术的界限,并为处理敏感信息提供了全新的方法。
随着时间的推移,ZKP从一个抽象的理论构想逐步演变成具体的协议,它们能够被集成进各种应用中。在21世纪初,随着互联网和数字通信的爆炸性增长,ZKP的潜力开始得到现实世界中的探索。特别是在区块链和加密货币的兴起中,ZKP展示了其在提供增强隐私和安全性的同时,还能保持交易和数据处理的高效性。
现在,ZKP已经不仅仅是密码学研究的热点话题,它已经被集成到多个区块链平台和应用中,如zk-SNARKs在以太坊Layer2上的应用,提供了无需透露交易细节的匿名交易。这种从理论到实际应用的转变,不仅证明了ZKP的实用价值,也推动了对更高效、更安全数字互动方式的探索。随着技术的不断进步,ZKP在保护个人隐私、确保数据安全性以及建立信任的数字系统中扮演着越来越关键的角色
零知识证明(ZKP)是一种加密方法,它使得一方(称为证明者)能够向另一方(称为验证者)证明某个陈述是正确的,而无需提供任何其他的信息,即不泄露证明陈述正确性所依据的任何知识。这个过程不仅保护了证明者的隐私,而且还确保了验证者不能复制证明过程或者利用它来得到任何额外的信息。
零知识证明概念演示图(来源:ChainLink)
ZKP的核心原理可以通过以下三个特性来定义:
ZKP的原理通常通过简单的例子来理解:如果我需要向A证明我拥有B的电话号码,我不需要直接把B的电话号码告诉B,而是可以直接通过拨打B的电话,在打通后即可证明我确实拥有B的电话号码,这个过程并不会泄露B的号码信息。
在现实应用中,ZKP通常需要复杂的数学构造,如多项式方程、椭圆曲线或其他数学难题,这些构造的安全性基于问题的计算难度,如因数分解或离散对数问题。随着密码学的发展,出现了多种ZKP的实现,如zk-SNARKs和zk-STARKs,这些实现能够在不同的上下文中提供有效的隐私保护,尤其是在区块链和加密货币领域中。
零知识证明的基本形式由三个要素组成:证人、挑战和回复。
在上文打电话的例子中,“我”是不希望透露信息的证人,而A是验证者,提出的挑战是“证明‘我’拥有B的号码”。回复过程是指“我”打通B的号码证明我确实掌握了B的电话号码。
在前文中,我们已经探讨了零知识证明(ZKP)在隐私保护领域的固有优势。在当前这个信息爆炸的时代,个人数据往往存储于第三方平台,这不仅增加了数据泄露的风险,而且由于技术门槛和法律制裁的滞后性,信息安全大多依靠道德约束,使得用户难以真正掌控自己的隐私信息。零知识证明技术的出现,为用户提供了一个既保护隐私又提升验证效率和安全性的解决方案。相比于其他加密技术,ZKP拥有多种优势:
无论是传统的Web2.0还是新兴的Web3.0领域,ZKP的应用前景都是广阔的。
零知识证明目前有多种实现方式,如zk-SNARKS、zk-STARKS、PLONK以及Bulletproofs等。每种方式在证明大小、证明者时间以及验证时间上都有自己的优缺点,本文着重介绍应用场景较多的四种实现方式。
zk-SNARKs,全称为“Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”,直译为“零知识简洁非交互式知识论证”,是一种用于在不泄露任何信息的前提下证明某个人知道某个信息的密码学工具。
在zk-SNARKs中,”零知识”意味着证明者能够证明某个陈述是真的,而无需提供除正确性以外的任何信息。”简洁”指的是证明的大小很小,验证过程很快。”非交互式”意味着一旦证明生成后,它可以被任何人验证,无需证明者和验证者进行进一步的互动。
zk-SNARKs的核心组件包括:
zk-SNARKs可以用于各种需要隐私保护的场景,如匿名交易的加密货币、安全投票系统、隐私保护的身份验证和数据共享,以及区块链扩容技术。
zk-STARKs,即“Zero-Knowledge Scalable Transparent Arguments of Knowledge”,中文可译为“零知识可扩展透明参数化知识的参数化证明”,也是一种零知识证明机制,它允许一方(证明者)向另一方(验证者)证明他们知道某个信息而无需透露该信息本身。
与zk-SNARKs相比,zk-STARKs的关键特点在于它们不需要一个可信的设置过程。这意味着它们不依赖于对某些私密信息的保密性;这在很多情况下被认为是一个重要的安全特性,因为可信设置过程可能是一个系统弱点。
zk-STARKs的工作原理基于几个数学领域的概念,包括哈希函数、多项式计算、以及误差校正理论。它们使用了一种称作“零知识可扩展透明参数化”的构造,从而无需可信设置即可生成证明。
zk-STARKs的潜在应用与zk-SNARKs类似,但由于其可扩展性和透明性,它们尤其适合大规模的应用场景,包括加密货币的隐私保护、区块链扩容技术、云计算中的安全验证等。
PLONK 不是一个缩写,而是代指该方案的创建者们的姓氏首字母。PLONK 是为了提供一种通用且高效的ZKP方案,特别是在区块链应用,如智能合约和隐私保护交易中。
PLONK 的核心是使用一种“同态隐藏”的技术,它使得在不泄露原始数据的情况下对数据进行算术运算成为可能。它使用一种特殊的算法——多项式提交方案——来创建证明,这允许证明者有效地证明他们对一组数据拥有正确的计算结果。
PLONK 的关键特点之一是它的通用性。一旦为特定的计算任务设置了参数(通过一次可信设置),就可以多次重用这些参数来创建新的证明,无需每次都进行新的设置。这使得PLONK在创建和验证证明方面非常高效。
PLONK 常被设计来支持区块链和其他分布式系统中的各种计算任务
Bulletproofs 是一种新推出的ZKP解决方案,它不需要可信的设置,并专为构建范围证明和某些特定类型的算术证明而设计。Bulletproofs 是由Benedikt Bunz, Jonathan Bootle, Dan Boneh等人在2017年提出的。
Bulletproofs 的工作原理基于复杂的数学构造,如同态加密和椭圆曲线密码学。它们利用了一系列的数学技巧来允许证明者创建一个关于数字的有效范围证明,而不会泄露该数字的确切值。特别是在加密货币领域,这可以用来证明交易值在某个合法的范围内,而不暴露实际的交易金额。
由于其范围证明的特性,Bulletproofs 被广泛用于加密货币和区块链领域,特别是在隐私币中,如Monero,以隐藏交易金额的同时验证交易的有效性。此外,它们也可用于其它需要保证数字隐私的应用场景。
让我们用一个藏宝图的例子来理解这四种不同的ZKP技术:zk-SNARKs、zk-STARKs、PLONK和Bulletproofs。
假设你有一张藏宝图,它能指引你到一个埋藏宝藏的确切位置。你想证明给某人看你知道宝藏的位置,但你不想揭露宝藏图的内容或宝藏的实际位置。
zk-SNARKs:
你制作了一份藏宝图的复杂拼图。你选择了一小块关键拼图(一个证明),并展示给对方看,足以让他们确信你知道完整的拼图如何组合,即宝藏的位置,而无需看到整个拼图。但是,为了做到这一点,你需要从一个可信的印刷厂获取一些特殊的标记,这些标记用来证明你的拼图片段是真实的。
zk-STARKs:
你给对方看了藏宝图的一部分,并告诉他们可以使用一种特殊的放大镜(验证算法),随机检查图中的细节,验证它确实指向宝藏,而不需要知道宝藏的确切位置。这个放大镜是如此强大,以至于即使未来的技术(量子计算机)也无法破解你藏宝图的秘密。
PLONK:
这次,你创造了一套解谜游戏,每个谜题的答案都指向宝藏的位置。你向对方展示了一个通用的谜题解决方案的验证方法(通用设置),这个方法足以让对方确信你知道所有谜题的答案,而无需逐一解开每个谜题。
Bulletproofs:
你决定用一种方法证明你知道宝藏的大致范围,而不透露确切位置。你提供了一系列的数学题解答,这些解答证明了宝藏位置的范围,而且你所用的方法不需要任何特殊的标记或印刷工艺,这意味着没有初始信任的要求。
在这个例子中:
每种方法在实际应用中都有其权衡,选择哪种取决于具体的应用场景和安全需求。
在进行比较前,我们需要先理解评价ZKP的标准都有哪些:
现在,让我们根据这些指标对zk-SNARKs、zk-STARKs、PLONK和Bulletproofs进行比较,并分别讨论他们的优缺点。
优点:
缺点:
优点:
缺点:
优点:
缺点:
优点:
缺点:
Web3中有很多ZKP的应用案例,我们选取了两个典型案例进行研究。
【1】区块链扩容 - 以以太坊Layer2为例
zk-Rollups是一种Layer 2解决方案,它将成百上千的交易打包在链下,并生成zk-SNARK的证明。这个证明连同交易数据一起被提交到以太坊主链上。这允许验证交易的有效性,而无需主链处理每一笔交易,从而降低了费用并提高了吞吐量。
Layer2中对zk-SNARK的应用演示(来源:Simon Brown)
目前zk-Sync Era、Starknet都采用了zk-roolup技术,Polygon在最近也推出了使用zk-rollup的Polygon zk-EVM。
【2】数据隐私 - 以交易所储备金证明为例
交易所储备金证明指对加密货币交易所或任何其他金融机构持有的余额进行审查,核实公司记录在案的资产量与实际资产持有量是否相当的证明。在最初,交易所通过默克尔树和第三方审计公司进行证明,但这个过程需要依赖第三方主体,也会泄露用户的账户余额等隐私数据。以Gate.io为代表的交易所们在利用zk-SNARKs技术进行储备金证明,将用户数据经过加密后,通过zk-SNARK电路得到用户资产数,从而出具完整的储备金证明报告。
零知识证明技术的多样化方案彰显了其在Web3中的强大潜力,从数据隐私保护到区块链扩容,ZKP正成为构建安全、高效Web3基础设施的关键。各种方案虽有不同的优势和局限,但共同指向一个更加可信和隐私保护的数字未来。随着技术进步,ZKP在优化性能和安全性方面的挑战也将逐步克服,预示着其在数字世界中的作用将日益增强。
零知识证明(Zero-Knowledge Proof,ZKP)是一种密码学技术,最早由由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初的一篇名为《The Knowledge Complexity Of Interactive Proof Systems》的论文中提出的。在该文中,它是作为一个理论模型被构想出来,解决的是在不透露证据的情况下如何验证数学陈述的问题。这一概念在学术界引起了广泛关注,因为它挑战了传统加密技术的界限,并为处理敏感信息提供了全新的方法。
随着时间的推移,ZKP从一个抽象的理论构想逐步演变成具体的协议,它们能够被集成进各种应用中。在21世纪初,随着互联网和数字通信的爆炸性增长,ZKP的潜力开始得到现实世界中的探索。特别是在区块链和加密货币的兴起中,ZKP展示了其在提供增强隐私和安全性的同时,还能保持交易和数据处理的高效性。
现在,ZKP已经不仅仅是密码学研究的热点话题,它已经被集成到多个区块链平台和应用中,如zk-SNARKs在以太坊Layer2上的应用,提供了无需透露交易细节的匿名交易。这种从理论到实际应用的转变,不仅证明了ZKP的实用价值,也推动了对更高效、更安全数字互动方式的探索。随着技术的不断进步,ZKP在保护个人隐私、确保数据安全性以及建立信任的数字系统中扮演着越来越关键的角色
零知识证明(ZKP)是一种加密方法,它使得一方(称为证明者)能够向另一方(称为验证者)证明某个陈述是正确的,而无需提供任何其他的信息,即不泄露证明陈述正确性所依据的任何知识。这个过程不仅保护了证明者的隐私,而且还确保了验证者不能复制证明过程或者利用它来得到任何额外的信息。
零知识证明概念演示图(来源:ChainLink)
ZKP的核心原理可以通过以下三个特性来定义:
ZKP的原理通常通过简单的例子来理解:如果我需要向A证明我拥有B的电话号码,我不需要直接把B的电话号码告诉B,而是可以直接通过拨打B的电话,在打通后即可证明我确实拥有B的电话号码,这个过程并不会泄露B的号码信息。
在现实应用中,ZKP通常需要复杂的数学构造,如多项式方程、椭圆曲线或其他数学难题,这些构造的安全性基于问题的计算难度,如因数分解或离散对数问题。随着密码学的发展,出现了多种ZKP的实现,如zk-SNARKs和zk-STARKs,这些实现能够在不同的上下文中提供有效的隐私保护,尤其是在区块链和加密货币领域中。
零知识证明的基本形式由三个要素组成:证人、挑战和回复。
在上文打电话的例子中,“我”是不希望透露信息的证人,而A是验证者,提出的挑战是“证明‘我’拥有B的号码”。回复过程是指“我”打通B的号码证明我确实掌握了B的电话号码。
在前文中,我们已经探讨了零知识证明(ZKP)在隐私保护领域的固有优势。在当前这个信息爆炸的时代,个人数据往往存储于第三方平台,这不仅增加了数据泄露的风险,而且由于技术门槛和法律制裁的滞后性,信息安全大多依靠道德约束,使得用户难以真正掌控自己的隐私信息。零知识证明技术的出现,为用户提供了一个既保护隐私又提升验证效率和安全性的解决方案。相比于其他加密技术,ZKP拥有多种优势:
无论是传统的Web2.0还是新兴的Web3.0领域,ZKP的应用前景都是广阔的。
零知识证明目前有多种实现方式,如zk-SNARKS、zk-STARKS、PLONK以及Bulletproofs等。每种方式在证明大小、证明者时间以及验证时间上都有自己的优缺点,本文着重介绍应用场景较多的四种实现方式。
zk-SNARKs,全称为“Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”,直译为“零知识简洁非交互式知识论证”,是一种用于在不泄露任何信息的前提下证明某个人知道某个信息的密码学工具。
在zk-SNARKs中,”零知识”意味着证明者能够证明某个陈述是真的,而无需提供除正确性以外的任何信息。”简洁”指的是证明的大小很小,验证过程很快。”非交互式”意味着一旦证明生成后,它可以被任何人验证,无需证明者和验证者进行进一步的互动。
zk-SNARKs的核心组件包括:
zk-SNARKs可以用于各种需要隐私保护的场景,如匿名交易的加密货币、安全投票系统、隐私保护的身份验证和数据共享,以及区块链扩容技术。
zk-STARKs,即“Zero-Knowledge Scalable Transparent Arguments of Knowledge”,中文可译为“零知识可扩展透明参数化知识的参数化证明”,也是一种零知识证明机制,它允许一方(证明者)向另一方(验证者)证明他们知道某个信息而无需透露该信息本身。
与zk-SNARKs相比,zk-STARKs的关键特点在于它们不需要一个可信的设置过程。这意味着它们不依赖于对某些私密信息的保密性;这在很多情况下被认为是一个重要的安全特性,因为可信设置过程可能是一个系统弱点。
zk-STARKs的工作原理基于几个数学领域的概念,包括哈希函数、多项式计算、以及误差校正理论。它们使用了一种称作“零知识可扩展透明参数化”的构造,从而无需可信设置即可生成证明。
zk-STARKs的潜在应用与zk-SNARKs类似,但由于其可扩展性和透明性,它们尤其适合大规模的应用场景,包括加密货币的隐私保护、区块链扩容技术、云计算中的安全验证等。
PLONK 不是一个缩写,而是代指该方案的创建者们的姓氏首字母。PLONK 是为了提供一种通用且高效的ZKP方案,特别是在区块链应用,如智能合约和隐私保护交易中。
PLONK 的核心是使用一种“同态隐藏”的技术,它使得在不泄露原始数据的情况下对数据进行算术运算成为可能。它使用一种特殊的算法——多项式提交方案——来创建证明,这允许证明者有效地证明他们对一组数据拥有正确的计算结果。
PLONK 的关键特点之一是它的通用性。一旦为特定的计算任务设置了参数(通过一次可信设置),就可以多次重用这些参数来创建新的证明,无需每次都进行新的设置。这使得PLONK在创建和验证证明方面非常高效。
PLONK 常被设计来支持区块链和其他分布式系统中的各种计算任务
Bulletproofs 是一种新推出的ZKP解决方案,它不需要可信的设置,并专为构建范围证明和某些特定类型的算术证明而设计。Bulletproofs 是由Benedikt Bunz, Jonathan Bootle, Dan Boneh等人在2017年提出的。
Bulletproofs 的工作原理基于复杂的数学构造,如同态加密和椭圆曲线密码学。它们利用了一系列的数学技巧来允许证明者创建一个关于数字的有效范围证明,而不会泄露该数字的确切值。特别是在加密货币领域,这可以用来证明交易值在某个合法的范围内,而不暴露实际的交易金额。
由于其范围证明的特性,Bulletproofs 被广泛用于加密货币和区块链领域,特别是在隐私币中,如Monero,以隐藏交易金额的同时验证交易的有效性。此外,它们也可用于其它需要保证数字隐私的应用场景。
让我们用一个藏宝图的例子来理解这四种不同的ZKP技术:zk-SNARKs、zk-STARKs、PLONK和Bulletproofs。
假设你有一张藏宝图,它能指引你到一个埋藏宝藏的确切位置。你想证明给某人看你知道宝藏的位置,但你不想揭露宝藏图的内容或宝藏的实际位置。
zk-SNARKs:
你制作了一份藏宝图的复杂拼图。你选择了一小块关键拼图(一个证明),并展示给对方看,足以让他们确信你知道完整的拼图如何组合,即宝藏的位置,而无需看到整个拼图。但是,为了做到这一点,你需要从一个可信的印刷厂获取一些特殊的标记,这些标记用来证明你的拼图片段是真实的。
zk-STARKs:
你给对方看了藏宝图的一部分,并告诉他们可以使用一种特殊的放大镜(验证算法),随机检查图中的细节,验证它确实指向宝藏,而不需要知道宝藏的确切位置。这个放大镜是如此强大,以至于即使未来的技术(量子计算机)也无法破解你藏宝图的秘密。
PLONK:
这次,你创造了一套解谜游戏,每个谜题的答案都指向宝藏的位置。你向对方展示了一个通用的谜题解决方案的验证方法(通用设置),这个方法足以让对方确信你知道所有谜题的答案,而无需逐一解开每个谜题。
Bulletproofs:
你决定用一种方法证明你知道宝藏的大致范围,而不透露确切位置。你提供了一系列的数学题解答,这些解答证明了宝藏位置的范围,而且你所用的方法不需要任何特殊的标记或印刷工艺,这意味着没有初始信任的要求。
在这个例子中:
每种方法在实际应用中都有其权衡,选择哪种取决于具体的应用场景和安全需求。
在进行比较前,我们需要先理解评价ZKP的标准都有哪些:
现在,让我们根据这些指标对zk-SNARKs、zk-STARKs、PLONK和Bulletproofs进行比较,并分别讨论他们的优缺点。
优点:
缺点:
优点:
缺点:
优点:
缺点:
优点:
缺点:
Web3中有很多ZKP的应用案例,我们选取了两个典型案例进行研究。
【1】区块链扩容 - 以以太坊Layer2为例
zk-Rollups是一种Layer 2解决方案,它将成百上千的交易打包在链下,并生成zk-SNARK的证明。这个证明连同交易数据一起被提交到以太坊主链上。这允许验证交易的有效性,而无需主链处理每一笔交易,从而降低了费用并提高了吞吐量。
Layer2中对zk-SNARK的应用演示(来源:Simon Brown)
目前zk-Sync Era、Starknet都采用了zk-roolup技术,Polygon在最近也推出了使用zk-rollup的Polygon zk-EVM。
【2】数据隐私 - 以交易所储备金证明为例
交易所储备金证明指对加密货币交易所或任何其他金融机构持有的余额进行审查,核实公司记录在案的资产量与实际资产持有量是否相当的证明。在最初,交易所通过默克尔树和第三方审计公司进行证明,但这个过程需要依赖第三方主体,也会泄露用户的账户余额等隐私数据。以Gate.io为代表的交易所们在利用zk-SNARKs技术进行储备金证明,将用户数据经过加密后,通过zk-SNARK电路得到用户资产数,从而出具完整的储备金证明报告。
零知识证明技术的多样化方案彰显了其在Web3中的强大潜力,从数据隐私保护到区块链扩容,ZKP正成为构建安全、高效Web3基础设施的关键。各种方案虽有不同的优势和局限,但共同指向一个更加可信和隐私保护的数字未来。随着技术进步,ZKP在优化性能和安全性方面的挑战也将逐步克服,预示着其在数字世界中的作用将日益增强。