当前位置:比特币价格 > 百科 > 如何理解零知识证明(ZKPs) 零知识证明有哪些类型?

如何理解零知识证明(ZKPs) 零知识证明有哪些类型?

小欧2022-06-15 14:16:07百科120

零知识证明(Zero—Knowledge Proof,ZKPs)是一种证明方法,通过这种方法,一方(证明者, prover)可以在不透露任何实际信息的情况下,向另一方(验证者,verifier)证明它知道一个秘密或一个声明是真实的。


放到加密应用中,ZKPs 这种加密方法可在证明用户拥有钱包私钥的情况下不泄露私钥信息,从而保护了数据隐私。例如你的交易数据对于系统来说是透明可追踪的,但采用零知识证明可以保护你的信息不会被贸然公开,某某的钱包有多少个比特币,某某买了多少个比特币之类的信息可以变成选择性隐私。具体关于这类证明过程是怎么实现的?我们要先从受信任初始化阶段这个起点讲起。 


许多分布式计算和密码学协议都设计了一个初始化阶段,我们称第一个阶段为初始化阶段(setup phase),第二个阶段为主阶段(main phase)。主阶段通常会执行许多重复的任务,而初始化阶段只需执行一次,就能开启重复运行许多实例的主阶段。对于一个多阶段协议(multi-phase protocol)而言,受信任初始化阶段 (trUSTed setup phase)设置有其特殊性。


在受信任初始化阶段,密钥生成器会获取一个秘密参数和一个程序,然后生成两个可用的公钥,一个用于创建证明,另一个用于验证证明。这两个公钥只需为给定程序生成一次的参数,后续用户则只需使用公共参数并相信秘密参数密钥的创建者会诚实行事并尽力保护他们。


这里就产生了一个辩证性的漏洞,因为知悉秘密参数便可生成假证明,从而欺骗验证者,因此秘密参数在受信任初始化阶段中其实有潜在安全隐患。


02


零知识证明的类型


ZKPs 有交互式和非交互式两种。交互式 ZKPs,要求证明者对每个验证者相互区分,并对每个验证者发送所需要验证的数据,重复执行相同操作;而非交互式 ZKPs 去掉了交互过程,证明者直接一次性公开验证所需的数据,保证了一次证明即可被多个验证者同时验证。非交互式知识论证是从证明者到验证者的单条信息,会让整个验证过程变得更加高效。


此外,ZKPs 的性能通常根据以下三个标准来评估:


完备性(Completeness):如果证明者对证明给出诚实的回答,则验证者就能以极高的置信度确定证明者了解关键数据。


正确性(Soundness):证明者如果不了解关键数据,就无法欺骗验证者。


零知识性(Zero-knowledge):证明者不会对验证者透露任何关键数据,而只是间接证明其了解数据。


同时,ZKPs 也可根据其扩容的方式进行更精细的流派分类,其中包括SNARK、STARK、PLONK 和 DARK(Bulletproofs)等,他们都有其各自的优劣势,涉及证明的数据足迹、证明时间、验证时间、串通风险等。下图为常见 ZKPs 基于各自安全强度和规模的比较:




如何理解零知识证明(ZKPs) 零知识证明有哪些类型?-第1张图片




【如图】横轴代表证明尺寸的大小,纵轴则代表安全性假设。其中,安全性最高的是 STARK 算法,该种算法不依赖数学难题假设,具有抗量子性;证明尺寸最小的是 SNARK 方案中的 Groth16 算法;PLONK 也是 SNARK 方案中的一种,安全性和证明尺寸都处于适中。目前应用最广泛的就是 zk-STARK 和 zk-SNARK 两类。


ZK-SNARK


SNRK, Succinct Non-Interactive Argument of Knowledge,即简洁非交互式知识论据。所谓简洁性,通常是指即使验证程序很大,生成的 proof size 也不会很大,同时又能很快的完成验证。


在加密应用中,尽管受信任初始化阶段并不是个必要条件,但SNARK之前一直都有采用。因此按照我们之前解释的,受信任阶段的隐藏参数其实存在潜在的安全隐患的。如果这些敏感数据在创世后没有销毁,那么秘密参数可能会被用来欺骗验证安全措施、执行欺诈性交易。这样一来,黑客就可以获得相应私钥的副本,以此伪造通证或加密资产。值得注意的是,黑客其实并不能侵犯其他用户的敏感数据,也无法从其他钱包中窃取加密货币。因此这个受信任初始化成了SNARK的潜在问题。


据估计,SNARK的汽油费比STARK要少得多,成本更低,更适合散户。SNARK的证明规模也比STARK小得多,它们需要的链上存储更少,占用融入新区块的内存也很少,这使得SNARK更容易随着网络用户和复杂性增加而扩展。


虽然 SNARK 因较早开发而存在受信任初始化阶段问题,但也正是因为在技术上的先人一步,它比其他 ZKPs 应用得更广泛。例如,ZCash 是 ZKPs 在加密空间中的最早应用,他们随后也创建了大量开发库,学术研究和开发社区。




如何理解零知识证明(ZKPs) 零知识证明有哪些类型?-第2张图片




▲ 使用公钥参数,用户可以在维护隐私的同时在表层公开交互。只要私钥参数保密并在创建后销毁,系统就会保持安全。


STARKs


与SNARK不同,STARK(Scalable Transparent Argument of Knowledge,即可扩透明知识论证)依赖于哈希函数,类似于工作证明区块链,可以更好地抵抗量子,从而保障应用STARK的协议。因此,STARK的证明规模更大,网络供电需求更高,且验证证明时间更长。


不同于SNARK和PLONK,STARK在程序创世阶段不需要受信私钥初始化。此外,STARK依赖于抗冲突哈希函数形式的更精简的加密技术,因而被认为是一种更有效的ZKPs。


由于社区较小,资料库或论坛等资源也不多,开发人员并不能轻松使用zk-STARK构建协议。尽管有几个项目创建了基于STARK的扩容方案,如Polygon的Miden和Starkware的Starknet,但SNARK社区还需要长时间的发展并增加可用资源。


ZK-PLONK


PLONK, Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge,即通用非交互式知识论据的拉格朗日排列。


PLONK在学术上也被称为SNORK,是SNARK非交互式的一种。由于创世受信任初始化阶段是通用且可更新的,PLONK 兼容使用相同证明方案的后续程序,并且允许多方参与受信任初始化,所以只要有一个初始参与者是诚实的,就可以更好地保证安全。


PLONK的另一显著特征是其标准化多项式承诺的模块化,这会让该方案在设计和实施方面更加灵活。例如,某些开发人员可能需要优先考虑保证安全而不是证明规模,这样一来,证明便需要更长的时间和更大的数据包,还会增加网络费用,并大规模影响网络可扩展性。无论如何,由于其标准化的Kate承诺,无论选择哪个多项式承诺来验证证明者,大多数基本工具都通用,以便相关智能合约能够相应地执行。


ZK-DARK 


DARK(Diophantine Arguments of Knowledge,即丢番图知识论证)是一种使用隐藏顺序组(hidden order groups)的新方案。其使用名为类组(class groups)的隐藏组子集来实现与 SNARK 或 STARK 不同的多项式承诺。隐藏顺序组的独特之处在于它们将任意大的整数压缩为组元素以防止欺骗。许多类型的证明都可以建立在这些多项式承诺结构之上。


使用DARK时,还可以使用 Bulletproofs。这是一种简短的非交互式ZKPs,不需要受信初始化。Bulletproofs很小,单个证明只有不到1kB,而其他ZKPs则有10kB以上。此外,Bulletproofs也使用椭圆曲线组,不过这会导致验证过程更慢,费用更高。


换个角度来看,SNARK比STARK小数千倍,而Bulletproofs的性能则居于两者之间。由于其规模较小且简洁,Bulletproofs和类似的多项式承诺可能会在web3的某些领域中激增,如Monero的区块链,它们的优势和权衡在这些领域最有意义。


“如何理解零知识证明(ZKPs) 零知识证明有哪些类型?” 的相关文章

区块链侧链前景怎么样?区块链侧链的应用功能怎么样?

侧链毫无疑问是很有前景的,如果一切顺利的话,它很有可能就是区块链的未来。有效率的跨区块链通信是可扩展性和协议改革的关键。当我们学习如何扩展时,一个代币可以很容易地从一个生成链迁移到另一个,现在和未来的几代可以同步运行。但是,侧链的可能性到底是什么呢?它可以解决目前区块链面临的哪些主要问题呢?首先,最...

一文读懂加密钱包多账户概念:为何说助记词不要告诉任何人?

一文读懂加密钱包多账户概念:为何说助记词不要告诉任何人?

相信无论是入币圈已久的老炮儿还是刚入圈的萌新,对于“钱包”一定不陌生,毕竟进入web3.0第一件事就是创建钱包,没有钱包可以说是寸步难行。钱包的主要类型分为冷钱包和热钱包,而对于大部分人来说使用的基本都是热钱包。热钱包最常见的形式有浏览器插件、电脑软件或者是手机App,无论是哪种,使用起来都非常便捷...

时间戳在区块链中担当什么角色?

时间戳,是指能表示其他的数据在某个特定时间之前已经完整存在, 并且可以验证的一种数据。一般是一个字符序列,能够唯一的标识某一刻的时间。 区块链通过时间戳保证每个区块依次按顺序相连,时间戳是区块链上每一笔数据都根据时间来表现。简单的说,时间戳就相当于是数据的生产日期,并起到数据验证的作用。&...

零知识证明有哪些分类?

零知识证明有哪些分类?

根据证明者(Prover)和验证者(Verifier)之间的交互方式和形态,零知识证明可被分为交互式零知识证明和非交互式零知识证明。交互式零知识证明(Interactive zero-knowledge proofs):证明者和验证者需要进行多次互动,验证者会不断提出问题来挑战证明者,证明者则要不断...

OKX常见的身份认证及安全设置问题(APP/Web端)

OKX常见的身份认证及安全设置问题(APP/Web端)

APP端完成KYC身份认证以及安全设置可以保障我们的资金安全,开启不同等级的身份认证可以解锁对应的交易权限。KYC身份认证:打开OKXAPP,在页面左上角点击【个人中心】—【身份认证】,进入身份认证页面,按照页面提示完成LV.1基础认证、LV.2高级认证和LV.3视频认证。注意事项:认证级别越高,在...

okx子账户是什么?如何创建子账户?

okx子账户是什么?如何创建子账户?

子账户是您在欧易开设的一种账户类型,与主账户绑定。您可以创建多个子账户与主账户绑定,实践不同交易策略并降低风险。子账户支持币币,币币杠杆和合约交易,不支持充币和提币。 1.打开OKX官网,点击页面右上角【个人中心】—【子账户】—【创建子账户】。2.输入子账户登录名、登录密码、选择账户类别,...