原文来源于Oasis Network官方Medium,本文为原文译文,以下请Enjoy:
https://medium.com/oasis-protocol-project/4-ways-to-compare-trusted-execution-environments-and-zero-knowledge-proofs-293615b8c1b6
区块链通过数十个为全球数百万用户提供服务的开放和无需许可的网络,为互联网提供了一种完全透明的方法。然而,透明度虽然提供了许多好处,但它必须与强大的隐私工具相平衡,这些工具可以加强每个链上用户的机密性和数据安全性。随着Web3越来越和隐私保护挂钩,洞察推动链上隐私向前发展的趋势和技术是至关重要的。
下文提供了两种Web3隐私方法不同维度的比较:零知识证明(Zero-Knowledge Proofs)和可信执行环境(Trusted Execution Environments)。无论是开发人员还是用户,了解这些技术之间的差异对于理解Web3的未来都十分重要。在比较这些技术之前,让我们先定义一些术语。
- 零知识证明:零知识证明(ZKP)是一种加密机制,它允许任何人证明一个陈述的真实性,而不需要分享陈述中的信息,也不需要透露信息是如何获得的。在区块链中,有些人可以运行计算来验证一个证明是否正确,如果是的话,就根据证明更新系统状态,而不需要了解被验证的数据是什么。
- 可信执行环境:可信执行环境 (TEE) 通过将处理器的一个区域与CPU的其余部分分开来使用基于硬件的安全计算模型。当用于启用机密区块链时,这些环境会接收加密数据并运行无法被任何人(甚至是硬件主机)直接监视或篡改的计算。
现在来让我们深入探讨这两种隐私保护技术。
应用可扩展性
ZKP的一个关键特征是经常需要在某些应用程序中开发独特的电路以满足特定用例,来让证明者在不泄露任何信息的情况下证明知识的准确性。通常通过构建一个基于特定秘密的特定计算的电路来执行此操作。然后验证者会收到证明该电路已被正确执行的证据。
在某些应用中,同一电路不能由多个证明者使用,而在其他应用中,使用通用ZKP方案,单个电路可以被多个证明者使用。但是,多次使用的电路需要仔细设计,以确保它们不能用于揭示有关正在证明的秘密的任何信息。
对于TEE,跨多个用例和应用的可扩展性取决于它是如何实现的,而这是由一系列因素决定的,包括硬件和软件架构以及TEE用例的具体要求。在某些情况下,例如在移动设备上实现TEE时,可能仅限于简单的应用程序。然而,对于Web3 dApp,区块链验证者使用的TEE通常能够处理大型计算工作负载。这些环境支持执行任意机器代码,因此可以被多个开发人员用于众多应用。
Oasis可以处理一些低级但是安全至关重要的细节,比如建立可信执行环境(TEE),进行远程(重新)认证,组织计算委员会,提供可信的防篡改存储,数据可用性等等。对于用户和开发者来说,Oasis将TEE封装成在Oasis网络上运行的Runtime,有着精心设计的外部接口,让基于TEE的机密计算变得容易使用和安全。
对于Solidity开发人员来说,这意味着在Oasis网络上使用TEE进行构建时,不会有基于用户数量或特定生态系统的独特限制或要求。开发人员不仅可以通过只进行几个修改即可将加密状态添加到任何Solidity dApp中,还可以明确选择他们希望加密的状态,以及他们希望保持公开的地方。Web3开发人员可以利用TEE的显著灵活性和可扩展性,为任何建立在任何区块链网络上的应用程序提供安全执行,而不必费力开发ZKP电路。
安全性和性能
ZKP的计算成本可能很高,这取决于所使用的算法类型和所要证明问题的复杂度。ZKP通常需要大量的计算资源来生成证明,因为它们的安全性完全来自加密操作。然而,证明验证本身是很快的,但是大多数ZKP算法的复杂度与其电路的大小成正比,且ZKP算法有很多种。某些类型的计算成本要高于其他类型。使用ZKP的开发人员通常认为其安全性和隐私保护优势将超过计算成本。
TEE旨在为运行敏感代码提供一个安全和隔离的环境,而无需承担昂贵的加密操作成本。由于 TEE的安全性是基于具有一些软件要素的硬件,而不是完全依赖密码学,因此可以提高复杂工作负载的性能。然而,TEE也不能幸免于攻击,尤其是试图利用系统意外信息泄露的侧信道攻击。但另一方面,也存在各种缓和技术,包括一些常规通用的、众所周知的技术(例如恒定时间密码学)和个别用例所需要的特定方法。
TEE旨在平衡安全性和性能,因此大多数TEE设置都针对效率进行了优化,并且通常会使用专用硬件来最大限度地减少任何额外安全操作对性能的影响。实际上,基于TEE操作的大部分计算开销主要来自偶尔需要进行额外的安全相关任务,例如加密和解密数据或验证在TEE中运行的代码的完整性。
例如,如果我们想为Web3 DEX提供隐私功能,仅仅使用ZKP是不够的,而且将被证明是一项极其困难的任务。相比之下,TEE实现提供了更大的灵活性,可以更轻松高效地实现DEX所需的更复杂的私有数据聚合任务。
或者设想一个涉及发送者和接收者之间的稳定币交易的场景。当今,所有交易数据对发送方、接收方、发行方和任何其他查看区块链的人完全可见已成为一种常态规范。然而,使用TEE,开发人员可以建立复杂和精密的应用程序,自定义链上数据的可见性。无论是只有发送方和接收方看到数据,还是发行方也有可见权限,甚至只有发送方可以查看数据——所有这些选项都可以供dApp开发者在强大而灵活的TEE中构建。
智能合约灵活性
TEE是为在大量计算工作负载下实现高性能而构建的,例如高级智能合约和数据密集型Web3应用程序产生的那些。易用性和开发人员灵活性是TEE环境适用于Web3构建复杂应用程序的主要原因。
总的来说,TEE很适合通用智能合约的执行,尤其是需要聚合大量私有数据的智能合约。开发者的体验也更为简单。例如,建立在Oasis Sapphire(由TEE提供支持的保密EVM)上的保密应用程序可以在几天内开发完成,而使用其他隐私技术可能需要数月甚至数年的时间。
ZKP以往并没有针对智能合约执行进行优化。近来,其在支持EVM兼容性方面已经取得了显著进展,但是这些兼容性改进主要集中在可扩展性(而不是隐私)用例上,例如ZK-EVM。ZKP在通用智能合约执行中保障隐私方面仍然存在局限性。这是因为ZKP需要证明者能够获得所有全局状态和交易数据的访问权限,但如果一些全局状态是私有的,它将无法做到这一点。这对需要在多方参与的情况下实现隐私的应用产生了严重的限制,因为在这种情况下需要来自多个参与者的知识。
在某些用例较为简单的应用中,ZKP可以轻松解决用户隐私问题。但随着计算负载变得更加复杂和数据输入量的增长,这种隐私变得更具挑战性、成本更高且灵活性更低。为了缓解这些问题,有时需要定制电路来保护具有大量复杂数据负载的dApp。一些使用ZKP构建的团队正在构建框架以简化将ZKP集成到智能合约中的过程,但它们没有提供与TEE所提供的相同级别的隐私灵活性。
信任权衡
了解任何Web3隐私技术的信任模型对开发者和用户都很重要。尽管ZKP可以成为一种有效的扩展工具,但我们应该清楚为什么ZKP作为Web3的隐私解决方案是有限的。例如,一些基于ZKP的解决方案可以依赖半可信的排序器来验证信息。如果一个应用程序允许多个排序器,那么隐私就会变得更糟。但在特定的用例中,ZKP可以提供有效的隐私——一个典型的例子是Zcash加密货币。在不透露用户拥有或正在花费多少硬币的情况下,每个用户需要证明他们没有重复花费硬币。使用ZKP来证明一个用户没有作弊是非常必要的。但要明确的是:这种技术仅限于非常具体的用例(如货币),并没有为可通用的安全计算而进行优化。
对于TEE,信任的概念就在名称中。但是,TEE的可信度在很大程度上仅限于基于硬件的信任,在这种情况下,TEE的实施是为了提供一个与系统其余部分隔离的安全执行环境。这种基于硬件的信任主要是基于硬件设计者和制造商以及他们的安全实践。这种信任在很大程度上可以通过安全启动程序、安全飞地和其他行业标准技术来验证。TEE允许开发者为数据输入产生防篡改证明,并为他们正在构建或使用的任何应用提供证明。
结论
简而言之,任何一种Web3隐私技术都会呈现出不同的优势、劣势与权衡取舍。
ZKP可以满足一些以隐私为重点的用例,但其性能、可扩展性以及对通用计算的支持均存在局限性。而TEE等其他Web3隐私技术则对构建拥有海量并发用户和数据的dApp的开发人员更具吸引力。在这些情况下,TEE提供了一种灵活、可扩展且高性能的工具,用于将高保密性集成到任何Web3应用程序中。
但是这两种工具也可以互补,例如,例如一些Web3应用程序能够在基于TEE的系统中使用ZKP,从而提高安全性与稳健性。无论开发者目前选择使用哪种隐私工具,未来的Web3隐私技术定会蓬勃发展,给开发者提供广阔的选择空间。