编译:Cindy,SophonLabs

随着计算机技术的不断发展,我们可以轻松地在互联网上存储、传输和处理大量的个人和企业数据。然而在这个数字化时代,大家对数据隐私和安全的担忧也越来越高。为了保护数据的隐私性,密码学家们开发了许多技术,其中零知识证明(Zero-Knowledge Proof,ZKP)是其中一项核心技术。在本文中,我们将盘点细分零知识证明中的实现差异。

交互式与非交互式零知识证明

零知识证明的两种主要类型是交互式和非交互式。交互式零知识证明和非交互式零知识证明都是证明者(prover)和验证者(verifier)之间进行的过程,但它们在证明的交互流程上有所不同。

交互式零知识证明 (IZKP) 要求证明者和验证者进行来回对话,在对话中证明者对验证者的查询做出响应。这种互动可以亲自进行,也可以通过互联网等网络进行。需要与验证者进行多轮的交互,以便验证者可以询问有关所证明语句之外的附加信息。在每一轮中,证明者需要根据验证者的询问提供一个回答。

这种交互式证明方法对于某些复杂的问题可行,但可能会带来时间和计算成本的问题,并需要所有参与者进行通信。另一方面,非交互式零知识证明 (NIZKP) 不需要证明者和验证者之间的任何交互。非交互式零知识证明是指证明者可以一次性地生成证明,并将它发送给验证者,而不需要进行多轮的交互。与交互式证明相比,非交互式证明速度更快,需要的计算成本和通信量也更少。但是,它有时可能不是可行的方案,如需要涉及附加信息的证明,或需要证明一个非常复杂的语句时。相反,证明者创建了一个单一的、自包含的证明,验证者可以在没有进一步沟通的情况下独立验证。这比交互式证明更方便和高效,因为它不需要证明者和验证者同时在线或交换多条消息。

实现这一目标的最经典方法之一是使用基于数字签名的 Fiat-Shamir 启发式技术。交互式和非交互式零知识证明之间的主要区别之一是证明者和验证者之间所需的信任级别。在交互式证明中,验证者必须信任证明者遵守协议并对他们的查询提供诚实的回应。另一方面,在非交互式证明中,验证者根本不需要信任证明者,因为他们可以在不依赖证明者提供的任何信息的情况下独立验证证明。两种类型的零知识证明之间的另一个区别是所需的计算复杂度级别。

交互式证明往往比非交互式证明计算量更大,因为它们需要证明者和验证者交换多条消息并执行额外的计算。另一方面,非交互式证明只需要验证者进行一次计算,从而使它们更加高效和可扩展。交互式和非交互式零知识证明各有利弊,给定场景的最佳选择将取决于具体要求和约束。交互式证明可能更适用于证明者和验证者同时在线且可以轻松沟通的情况。相比之下,非交互式证明可能更适用于证明者和验证者不同时在线或证明者可信度不确定的情况。总之,交互式零知识证明和非交互式零知识证明通常是根据特定问题和应用场景来选择的。

交互式零知识证明(IZKP)的局限性

交互式零知识证明是最早被研究和广泛应用的零知识证明类型之一。在这种证明过程中,证明者和验证者之间会进行多轮的交互。这些交互旨在允许验证者向证明者询问特定的信息,以验证被证明的内容。这种交互性质使得交互式证明可以非常有效地解决复杂的问题。

一个简单的例子是著名的“彩色图问题”,它是关于如何在任何图中着色的问题。如果证明者声称他能够在任何图中为每个节点着色,而且相邻节点必须使用不同的颜色,那么验证者可以采取交互式零知识证明方法来判断该声称是否正确。在证明过程中,证明者首先以某种方式着色图形,接着验证者选择任意两个节点并询问证明者它们是否被用了同一种颜色。证明者需要回答这个问题,但不能透露为什么他会如此选择。这个过程会持续几轮,验证者可以检查一些有关证明者如何着色图形的随机数据。如果证明者可靠地回答了问题,证明者就可以认为是正确的。交互式零知识证明 (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(零知识简洁非交互式知识论证)最早由 Eli Ben-Sasson、Alessandro Chiesa、Daniel Genkin、Eran Tromer 和 Madars Virza 于 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)。此 CRS 必须保密且安全,zkSTARK 证明才能被视为有效。如果 CRS 受到损害,那么证明的安全性也会受到损害。

此外,zkSTARKs 尚未被广泛使用或被充分理解,因此可能尚未发现潜在的漏洞。缺乏广泛采用和理解也意味着缺乏使用 zkSTARKs 的工具和资源,使得在实践中实施和使用它们变得更加困难。

最后,与其他零知识证明系统相比,zkSTARKs 仍然相对较新且未经测试,这意味着它们的长期安全性和可靠性尚未得到充分了解。对于寻求经过验证且可靠的方法来验证声明真实性的组织或个人而言,这种不确定性可能是一个缺点。

总结

虽然 zkSTARKs 在效率和安全性方面提供了一些好处,但在决定是否使用它们时也有一些缺点需要考虑。这些缺点包括适用范围有限、需要可信的设置阶段、缺乏广泛采用和理解,以及对其长期安全性和可靠性的不确定性。zkSNARKs基于曲线上的折线算法,可以用于证明一些计算结果在不泄露计算输入和密钥的情况下是正确的。这种技术可以应用于区块链、加密货币和密码学等领域。

与zkSNARKs不同,zkSTARKs是在简洁交互证明的框架下建立的,这意味着证明可以很容易地验证,而不需要涉及证明者和验证者之间的任何交互。因此,zkSTARKs在安全性和可扩展性方面都具有更大的优势。

随着技术的发展零知识证明技术将继续发展和应用,在保护隐私和进行安全验证等方面,零知识证明技术具有非常广泛的应用前景。同时随着协议的发展和优化,零知识证明技术的计算效率和证明大小等方面也将得到改善,从而进一步推动其在实际应用中的普及和应用。