编译:Cindy,SophonLabs
随着计算机技术的不断发展,我们可以轻松地在互联网上存储、传输和处理大量的个人和企业数据。然而在这个数字化时代,大家对数据隐私和安全的担忧也越来越高。为了保护数据的隐私性,密码学家们开发了许多技术,其中零知识证明是其中一项核心技术。在本文中,我们将盘点细分零知识证明中的实现差异。
交互式与非交互式零知识证明
零知识证明的两种主要类型是交互式和非交互式。交互式零知识证明和非交互式零知识证明都是证明者和验证者之间进行的过程,但它们在证明的交互流程上有所不同。
交互式零知识证明(IZKP)要求证明者和验证者进行来回对话,在对话中证明者对验证者的查询做出响应。这种互动可以亲自进行,也可以通过互联网等网络进行。需要与验证者进行多轮的交互,以便验证者可以询问有关所证明语句之外的附加信息。在每一轮中,证明者需要根据验证者的询问提供一个回答。
这种交互式证明方法对于某些复杂的问题可行,但可能会带来时间和计算成本的问题,并需要所有参与者进行通信。另一方面,非交互式零知识证明(NIZKP)不需要证明者和验证者之间的任何交互。非交互式零知识证明是指证明者可以一次性地生成证明,并将它发送给验证者,而不需要进行多轮的交互。与交互式证明相比,非交互式证明速度更快,需要的计算成本和通信量也更少。但是,它有时可能不是可行的方案,如需要涉及附加信息的证明,或需要证明一个非常复杂的语句时。相反,证明者创建了一个单一的、自包含的证明,验证者可以在没有进一步沟通的情况下独立验证。这比交互式证明更方便和高效,因为它不需要证明者和验证者同时在线或交换多条消息。
实现这一目标的最经典方法之一是使用基于数字签名的Fiat-Shamir启发式技术。交互式和非交互式零知识证明之间的主要区别之一是证明者和验证者之间所需的信任级别。在交互式证明中,验证者必须信任证明者遵守协议并对他们的查询提供诚实的回应。另一方面,在非交互式证明中,验证者根本不需要信任证明者,因为他们可以在不依赖证明者提供的任何信息的情况下独立验证证明。两种类型的零知识证明之间的另一个区别是所需的计算复杂度级别。
交互式证明往往比非交互式证明计算量更大,因为它们需要证明者和验证者交换多条消息并执行额外的计算。另一方面,非交互式证明只需要验证者进行一次计算,从而使它们更加高效和可扩展。交互式和非交互式零知识证明各有利弊,给定场景的最佳选择将取决于具体要求和约束。交互式证明可能更适用于证明者和验证者同时在线且可以轻松沟通的情况。相比之下,非交互式证明可能更适用于证明者和验证者不同时在线或证明者可信度不确定的情况。总之,交互式零知识证明和非交互式零知识证明通常是根据特定问题和应用场景来选择的。
交互式零知识证明的局限性
交互式零知识证明是最早被研究和广泛应用的零知识证明类型之一。在这种证明过程中,证明者和验证者之间会进行多轮的交互。这些交互旨在允许验证者向证明者询问特定的信息,以验证被证明的内容。这种交互性质使得交互式证明可以非常有效地解决复杂的问题。
一个简单的例子是著名的“彩色图问题”,它是关于如何在任何图中着色的问题。如果证明者声称他能够在任何图中为每个节点着色,而且相邻节点必须使用不同的颜色,那么验证者可以采取交互式零知识证明方法来判断该声称是否正确。在证明过程中,证明者首先以某种方式着色图形,接着验证者选择任意两个节点并询问证明者它们是否被用了同一种颜色。证明者需要回答这个问题,但不能透露为什么他会如此选择。这个过程会持续几轮,验证者可以检查一些有关证明者如何着色图形的随机数据。如果证明者可靠地回答了问题,证明者就可以认为是正确的。交互式零知识证明(IZKP)有几个局限性,因此使它们更加昂贵和复杂。
IZKP需要证明者和验证者之间的交互,这可能是低效且耗时的。为了完成证明,证明者必须与验证者来回发送多条消息。这可能会花费大量时间,尤其是在证明很复杂或涉及大量数据的情况下。当速度至关重要时,例如在高频交易或实时决策中,这可能是个问题。
IZKP不能很好地扩展。随着被证明数据的增加,证明的复杂性也随之增加,难以在合理的时间内完成证明。当需要证明大量数据时,例如在供应链管理或医疗保健中,这可能是一个问题。
IZKP依赖于证明者和验证者是诚实的并且不会试图或操纵证明的假设。然而,这个假设并不总是有效的,证明者可以通过发送虚假消息或以某种方式操纵证明来试图验证者。这可能会损害证明的完整性并破坏其实用性。
IZKP需要专门的加密技术,这可能难以实施并且需要高水平的技术专长。这可能会使非技术用户使用IZKP变得困难,并且可能会限制它们在某些情况下的采用。
总的来说,虽然IZKP有可能提供强大的安全和隐私保证,但上述限制在历史上阻碍了它们的广泛使用。但它存在一些缺点。尤其是这种证明需要证明者和验证者之间进行多轮的交互,这会带来时间和计算成本的问题,并需要所有参与者进行通信。其次,有些应用程序可能需要处理的信息太复杂,以至于证明者和验证者之间必须进行多轮交互才能得到完整的证明,这就使得交互式证明方法不太可行。一旦理解了交互式和非交互式ZKP之间的区别,就该深入研究最流行的区块链和加密行业实现—zkSNARKs。虽然zkSync使用zkSNARKs,可以说是最流行的使用ZKPs的L2,但紧随其后的是Starkware的zkSTARKs。让我们了解这两种实现方式的不同之处以及各自的优缺点。
zkSNARKs与zkSTARKs
zkSNARKs和zkSTARKs都是零知识证明(ZKP)系统,允许一方向另一方证明陈述是真实的,而无需透露关于陈述本身的任何信息。ZKP有很多应用,包括区块链上的隐私保护交易、安全的多方计算和匿名通信。它们都是用于保护数据交易和计算中的隐私,但它们的应用场景和技术方案有很大的不同。zkSNARKs技术优势在于高度压缩的小证明,在保证计算安全性的同时,支持高度隐私保护和高效交易。zkSTARKs技术优势在于对复杂算法和大型数据处理性能方面的优化,可以实现更高级别的保护和证明。
zkSNARKs
zkSNARKs是一种使用高度压缩的算法来提供非常小的证明的方法,这些证明可以用来证明满足某些条件的任意计算。通过使用zkSNARKs技术,可以得到一个经过验证的证明,证明所描述的计算的具体值和详细步骤是未知的。zkSNARKs的优点是证明大小非常小,只需要大约200字节的证明就可以验证一个数百万次计算后的结果,证明的计算成本也相对较低。同时,它们允许对基于密码学的计算进行高效的隐私保护,特别是在需要验证但不愿意透露信息时非常有用。因此,zkSNARKs广泛应用于无信任环境下的交易、加密货币、身份验证和隐私保护领域。zkSNARKs最早由EliBen-Sasson、AlessandroChiesa、DanielGenkin、EranTromer和MadarsVirza于2014年在一篇论文中提出。它们基于“非-交互式证明”,这意味着证明者和验证者在证明过程中不需要相互通信。这使得zkSNARKs非常适合在区块链中使用,在区块链中,各方之间的通信受到达成共识的需要的限制。zkSNARKs使用公钥和私钥的组合来创建证明。证明者可以访问私钥,他们用它来生成他们希望做出的陈述的证明。验证者可以访问相应的公钥,用于验证证明。如果证明是有效的,验证者可以确信该陈述是真实的,即使他们没有关于该陈述本身的任何信息。
zkSNARKs的优势
zkSNARKs的主要优势之一是它们的效率。证明过程非常快,使得在区块链等高吞吐量系统中使用zkSNARKs成为可能。
zkSNARKs的缺点
他们依赖于“可信设置”过程,其中一组参与者生成并销毁一组公钥和私钥。如果未正确执行此过程,可能会危及系统的安全性。因此需要够在可信的第三方中进行设置和参与、视数据的不同而具有不同的性能,并且它们的证明可能会被各种攻击技术攻击。
此外,zkSNARKs不是透明的,这意味着如果不访问私钥就无法验证证明的正确性。
zkSTARKs
zkSTARKs是另一种零知识证明技术,专门用于处理复杂算法和大规模数据。相比之下,zkSTARKs可以在不需要中间方的情况下提供更高的安全性,因为它们不需要可信的第三方进行参与和设置。zkSTARKs的优点包括不需要选择特定曲线进行计算,证明更加通用,并且具有良好的可扩展性和抗攻击性。它们也没有任何机密密钥或公共参数,这使得它们非常适合用于无信任环境下进行的基于密钥的计算。然而,zkSTARKs技术需要更高的计算成本和证明大小比zkSNARKs技术更大,因此在一些场景中可能不适合使用。
zkSTARKs的优势
zkSTARKs的主要优势之一是它们的透明度。使用zkSNARKs,无法在不访问私钥的情况下验证证明的正确性。使用zkSTARKs,可以创建一个“验证证明”,它允许任何人在不访问任何秘密信息的情况下验证证明的正确性。这使得zkSTARKs成为信任必不可少的应用程序的更安全和透明的选择。
zkSTARKs的另一个优势是它们的可扩展性。zkSNARKs依赖于资源密集型的复杂数学运算,随着证明规模的增加,它们的效率会降低。
zkSTARK的缺点
一个主要缺点是zkSTARKs仅适用于证明某些类型声明的真实性。特别是,它们只能用于证明以多项式表示的陈述的真实性,这限制了它们的适用性。
另一个缺点是zkSTARKs不是完全非交互的,需要一个可信的设置阶段,在这个阶段生成一个公共参考字符串。此CRS必须保密且安全,zkSTARK证明才能被视为有效。如果CRS受到损害,那么证明的安全性也会受到损害。
此外,zkSTARKs尚未被广泛使用或被充分理解,因此可能尚未发现潜在的漏洞。缺乏广泛采用和理解也意味着缺乏使用zkSTARKs的工具和资源,使得在实践中实施和使用它们变得更加困难。
最后,与其他零知识证明系统相比,zkSTARKs仍然相对较新且未经测试,这意味着它们的长期安全性和可靠性尚未得到充分了解。对于寻求经过验证且可靠的方法来验证声明真实性的组织或个人而言,这种不确定性可能是一个缺点。
总结
虽然zkSTARKs在效率和安全性方面提供了一些好处,但在决定是否使用它们时也有一些缺点需要考虑。这些缺点包括适用范围有限、需要可信的设置阶段、缺乏广泛采用和理解,以及对其长期安全性和可靠性的不确定性。zkSNARKs基于曲线上的折线算法,可以用于证明一些计算结果在不泄露计算输入和密钥的情况下是正确的。这种技术可以应用于区块链、加密货币和密码学等领域。
与zkSNARKs不同,zkSTARKs是在简洁交互证明的框架下建立的,这意味着证明可以很容易地验证,而不需要涉及证明者和验证者之间的任何交互。因此,zkSTARKs在安全性和可扩展性方面都具有更大的优势。
随着技术的发展零知识证明技术将继续发展和应用,在保护隐私和进行安全验证等方面,零知识证明技术具有非常广泛的应用前景。同时随着协议的发展和优化,零知识证明技术的计算效率和证明大小等方面也将得到改善,从而进一步推动其在实际应用中的普及和应用。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。