Skip to content Skip to footer

比较可信执行环境和零知识证明的 4 种方法

区块链通过数十个为全球数百万用户提供服务的开放和无需许可的网络,为互联网提供了一种完全透明的方法。然而,虽然透明度提供了许多好处,但它必须与强大的隐私工具相平衡,这些工具可以加强每个链上用户的机密性和数据安全性。随着 Web3 拥抱隐私,洞察推动链上隐私向前发展的趋势和技术至关重要。这篇博文提供了两种不同的 Web3 隐私方法的简化比较:零知识证明和可信执行环境。从开发人员到用户,了解这些技术之间的差异对于理解 Web3 的未来至关重要。

在比较这些技术之前,定义一些术语很有用。

零知识证明:零知识证明 (ZKP) 是一种密码机制,它允许任何人证明陈述的真实性,而无需在陈述中共享信息,也无需透露信息是如何接收的。区块链验证器运行计算来验证证明是否正确,如果正确,则在不学习已验证数据的情况下应用状态更改。从 ZK MOOC 了解更多关于 ZKP 的信息。

可信执行环境:可信执行环境 (TEE) 通过将处理器的一个区域与 CPU 的其余部分分开来使用基于硬件的安全计算模型。当用于启用机密区块链时,这些环境会接收加密数据并运行无法被任何人(甚至是硬件主机)直接观察或篡改的计算。在这篇博文中阅读有关 TEE 的更多信息。

让我们深入研究这两种隐私保护技术!

应用程序可扩展性

ZKP 的一个关键特征是经常需要在某些应用程序中开发独特的电路以满足特定用例,以便证明者在不泄露任何信息的情况下展示知识。这个动作通常是通过构建一个电路来执行的,该电路根据特定的秘密执行特定的计算。然后验证者收到电路已正确执行的证据。

在某些应用中,同一电路不能被多个证明者使用,而在其他应用中,使用通用的 ZKP 方案,单个电路可以被多个证明者使用。但是需要仔细设计多用途电路,以确保它们不能用于泄露有关被证明的秘密的任何信息。

对于 TEE,跨用途和应用程序的可扩展性取决于其实施,而实施是由一系列因素决定的,包括硬件和软件架构以及 TEE 用例的具体要求。在某些情况下,例如在移动设备上实现的 TEE,使用可能仅限于简单的应用程序。然而,对于 Web3 dApp,区块链验证器通常使用的 TEE 能够处理大型计算工作负载。这些环境支持执行任意机器代码,因此可供多个开发人员跨众多应用程序使用。

Oasis 抽象出处理设置 TEE、执行远程(重新)证明、组织计算委员会、提供可信的防篡改存储、数据可用性等处理的低级但安全关键的细节。对于用户和开发人员,Oasis 将 TEE 打包到在 Oasis 网络上执行的运行时,并带有精心设计的外部接口,使基于 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,开发人员可以构建复杂而精密的应用程序,以自定义链上数据的可见性。无论是只有发送方和接收方才能看到数据,还是发行方也有可见权限,甚至只有发送方才能查看数据 — — 所有这些选项都可供构建稳健灵活的 TEE 的 dApp 开发人员使用。

智能合约的灵活性

TEE 是为在大量计算工作负载下实现高性能而构建的,例如高级智能合约和数据密集型 Web3 应用程序产生的那些。 TEE 中的易用性和开发人员灵活性是这些环境非常适合通过 Web3 构建的许多复杂应用程序的主要原因。

总的来说,TEE 非常适合通用的智能合约执行,尤其是需要聚合大量私有数据的智能合约。开发人员的体验也简单得多。例如,可以在几天内开发出基于 Oasis Sapphire(由 TEE 提供支持的机密 EVM)的机密应用程序,而使用其他隐私技术则需要几个月或几年的时间。

ZKP 传统上并未针对智能合约执行进行优化。最近在支持 EVM 兼容性方面取得了显着进展,但是这些兼容性改进主要集中在可扩展性(而不是隐私)用例上,例如 ZK-EVM。 ZKP 在通用智能合约执行中启用隐私方面仍然存在局限性。这是因为 ZKP 要求证明者接收对所有全局状态和交易数据的访问权限,如果全局状态的某些方面是私有的,则它无法做到这一点。这对使用 ZKP 作为任何应用程序的隐私解决方案产生了严重的限制,这些应用程序需要在多方上下文中实现隐私,需要多个参与者的知识。

在某些用例较为简单的应用中,ZKP 可以轻松解决用户隐私问题。但随着计算负载变得更加复杂和数据输入的增长,这种隐私变得更具挑战性、成本更高且灵活性更低。为了缓解这些问题,有时需要定制电路来保护具有大量复杂数据负载的 dApp。一些使用 ZKP 构建的团队正在构建框架以简化将 ZKP 集成到智能合约中的过程,但它们没有提供与 TEE 提供的相同级别的隐私灵活性。

信任权衡

了解任何 Web3 隐私技术的信任模型对开发人员和用户都很重要。例如,一些基于 ZKP 的解决方案可以依赖半可信的排序器来验证信息。尽管 ZKP 可以成为一种有效的扩展工具,但应该清楚为什么 ZKP 作为 Web3 的隐私解决方案是有限的。例如,一些基于 ZKP 的解决方案可以依赖半可信的排序器来验证信息。如果一个应用程序允许多个排序器,那么隐私就会变得更糟。但在选定的用例中,ZKP 可以提供有用的隐私 — — 一个主要的例子是 Zcash 货币。在不透露用户拥有或正在花费多少硬币的情况下,每个用户都需要证明他们不是双花硬币。使用 ZKP 来证明用户没有作弊是必不可少的。但需要明确的是:这种技术仅限于非常具体的用例(例如,货币),并且没有针对可推广的安全计算进行优化。

对于 TEE,信任的概念就在名称中。但 TEE 的可信度在很大程度上仅限于基于硬件的信任,其中 TEE 的实现是为了提供一个与系统其余部分隔离的安全执行环境。这种基于硬件的信任主要基于硬件设计者和制造商及其安全实践。可以使用安全启动过程、安全飞地和其他行业标准技术在很大程度上验证这种信任。 TEE 允许开发人员为他们正在构建或使用的任何应用程序的数据输入和证明生成防篡改证明。

结论

简而言之,Web3 的隐私技术存在于一个具有许多优点、缺点和权衡的范围内。

ZKP 可以满足一些以隐私为中心的用例,但它们在性能、可扩展性和对一般计算的支持方面存在局限性。其他 Web3 隐私技术(如 TEE)对构建具有大量并发用户和大量数据的 dApp 的开发人员更具吸引力。在这些情况下,TEE 提供了一种灵活、可扩展且高性能的工具,用于将强大的机密性集成到任何 Web3 应用程序中。但是这两种工具也可以是互补的,例如,一些Web3 应用程序可以使用 ZKP 来提高基于 TEE 的系统的安全性和健壮性。无论开发人员使用哪种隐私工具,Web3 的未来都是光明的,有多种隐私技术可供选择。