随着隐私保护需求的日益增长,TEE 再次成为讨论的焦点。虽然 TEE 在数年前就已经被讨论过,但由于硬件安全性问题未能得到广泛采用。然而,随着 MPC 和 ZK 技术在性能和技术要求方面遇到挑战,许多研究者和开发者重新关注起了 TEE。
这种趋势也引发了 Twitter 上关于 TEE 是否会取代 ZK 技术的讨论。一些用户认为,TEE 和 ZK 是互补关系,而非竞争关系,因为它们解决的是不同的问题,且二者都不完美。还有用户指出,AWS 和 Intel 提供的安全性比 Rollup 的多重签名保护更高。考虑到 TEE 在设计空间上的扩展性,这是 ZK 无法实现的,因此这种权衡是值得的。
什么是 TEE?
TEE 其实并不是一个陌生的概念。我们常用的苹果手机中就应用了 TEE 技术,即「Secure Enclave」,其主要功能是保护用户的敏感信息和执行加密操作。Secure Enclave 集成在系统级芯片中,与主处理器隔离以确保高安全性。举个例子,每当你使用 Touch ID 或 Face ID 时,Secure Enclave 都会验证你的生物识别信息,并保护这些信息不被泄露。
TEE 全称为 Trusted Execution Environment(可信执行环境),是计算机或移动设备内的一个安全区域,独立于主操作系统运行。其主要特点包括:与主操作系统隔离,即使主操作系统受到攻击,内部数据和执行仍然安全;通过硬件支持和加密技术,防止内部的代码和数据在运行过程中被篡改;使用加密技术保护敏感数据,防止泄露。
目前,常见的 TEE 实现方式有以下几种:
· Intel SGX:提供硬件支持的隔离执行环境,创建一个安全的内存区域(enclave)来保护敏感数据和代码。
· ARM TrustZone:在处理器内创建了一个安全世界和一个正常世界,安全世界运行敏感操作,正常世界处理普通任务。
· AWS Nitro Enclaves:基于 AWS Nitro TPM 安全芯片,提供在云端的可信执行环境,专为处理机密数据的云计算场景设计。
在加密市场,TEE 技术最常用于在可信和安全的环境中进行链下计算。同时,TEE 的远程证明(Remote Attestation)功能允许远程用户验证在 TEE 中运行的代码的完整性,确保数据处理的安全性。然而,TEE 也存在去中心化不足的问题,因为它们依赖于如 Intel 和 AWS 等中心化供应商。如果这些硬件存在后门或漏洞,系统安全性可能会受到威胁。但作为辅助手段,TEE 技术易于构建且成本较低,适合需要高安全性和隐私保护的应用场景。这些优势也使得 TEE 技术能够应用于各种加密应用,如隐私保护及增强 Layer2 安全性等。
TEE 项目盘点
Flashbots:通过 SGX 实现隐私交易和去中心化区块构建
Flashbots 于 2022 年开始探索 SGX 等可信执行环境相关的隐私技术,并将其作为交易供应链上无需信任协作的重要构建模块。2023 年 3 月,Flashbots 成功在 Intel 开发的可信执行环境 SGX enclace 中运行了一个区块构建器,向实现隐私交易和区块构建者去中心化的方向迈进了一步。借助 SGX enclace,区块构建者和其他基础设施供应商无法看到用户交易的内容,且构建者在 enclave 内构建可验证的有效区块,并如实报告其出价,可能可以消除对 mev-boost 中继的需求。此外,这一技术有助于减少独家订单流的风险,使交易在保持私密的同时,仍然可供所有在 enclave 内运行的区块构建者访问。
虽然 TEE 确实能够提供外部资源访问及隐私保护,但其性能相较于非 TEE 技术而言并不高。而且存在一些中心化风险。Flashbots 发现,仅依赖 TEE 并不能解决所有问题,还需要结合其他安全措施,并引入其他实体来验证 TEE 的计算和代码,以确保系统的透明性和可信性。因此,Flashbots 构想了一个由 TEE 组成的网络(Kettles),同时还有一个可信的无权限公共链(SUAVE Chain)负责管理这个网络,并托管 TEE 中要运行的程序等。这就是 SUAVE 的基本构想。
SUAVE(Single Unified Auction for Value Expression)是旨在解决 MEV 相关挑战的基础设施,专注于将内存池和区块生成的角色从现有的区块链中分离出来,形成一个独立的网络(排序层),可作为任何区块链即插即用的内存池和去中心化区块构建者。
(更多 SUAVE 介绍可以参考 ChainFeeds 此前文章)
SUAVE 将分两个阶段推出。首个版本为 SUAVE Centauri,包括隐私订单流拍卖(OFA)和 SUAVE Devnet(测试网)。这个版本的实现并不涉及密码学和 TEE 技术。第二个版本是 Andromeda,将在受信任的执行环境(如 SGX)中运行执行节点。为了确保离线运行的 TEE 节点上的计算和代码如预期运行,Flashbots 通过 TEE 的远程证明功能,使智能合约能够验证来自 TEE 的消息。具体步骤包括:为 Solidity 代码添加新的预编译功能以生成远程证明;利用 SGX 处理器生成证明;在链上完全验证证明;并使用 Automata-V3-DCAP 库来验证这些证明。
总结起来,SUAVE 将通过整合 TEE 来替代当前的第三方,SUAVE 系统中运行的应用程序(如订单流拍卖或区块构建器)都将在 TEE 内运行,并且通过链上远程证明确保 TEE 计算和代码完整性。
Taiko:通过 SGX 构建多重证明系统 Raiko
TEE 的概念还可以扩展到 Rollup,以构建多重证明系统。多重证明指的是为一个区块生成多种类型的证明,类似于以太坊的多客户端机制。这种机制能够确保即使一个证明存在漏洞,其他证明仍然有效。
在多重证明机制下,任何有兴趣生成证明的用户都可以运行一个节点,提取交易和所有状态访问的 Merkle 证明等数据。使用这些数据生成不同类型的证明,然后将所有证明一起提交到智能合约中,由智能合约验证证明的正确性。对于 TEE 生成的证明,需要检查 ECDSA 签名是否由预期地址签名。当所有证明通过验证并确认区块哈希一致后,该区块将被标记为已证明,并记录在链上。
Taiko 正在利用 Intel SGX 技术构建多重证明系统 Raiko,用于验证 Taiko 和以太坊区块。通过使用 SGX,Taiko 能够确保执行关键任务时的数据隐私和安全性,即使存在潜在漏洞,TEE 也能提供额外的保护,防止攻击者破坏证明系统。SGX 证明可以在单台计算机上运行,仅需几秒钟即可完成,不会影响生成证明的效率。此外,Taiko 推出了一个新架构,支持将客户程序编译为能够在 ZK 和 TEE 中运行的格式,确保区块状态转换的正确性,并通过基准测试和监控评估性能和效率。
尽管 TEE 提供了许多优势,但在实现过程中仍面临一些挑战。例如,SGX 设置需要支持不同云提供商的 CPU,并优化验证过程中的 Gas 成本。此外,还需要建立一个安全通道来验证计算和代码的正确性。为了解决这些挑战,Taiko 使用 Gramine OS 将运行的应用程序封装在可信 enclave 中,并提供易于使用的 Docker 和 Kubernetes 配置,使得任何拥有 SGX 功能的 CPU 的用户都可以方便地部署和管理这些应用程序。
根据 Taiko 的公告,Raiko 目前支持 SP1、Risc0 和 SGX,并不断努力集成 Jolt 和 Powdr。未来,Taiko 计划集成更多 Riscv32 ZK-VM,扩展 Wasm ZK-VM,与 Reth 直接集成以实现区块的实时证明,及采用模块化架构以支持多链区块证明。
Scroll:与 Automata 合作开发 TEE Prover
Scroll 的多重证明机制旨在实现三个目标:增强 L2 安全性、不增加终局时间及仅为 L2 交易引入边际成本。因此,除了 ZK 证明,在选择辅助证明机制时,Scroll 需要权衡终局性和成本效益。欺诈证明尽管安全性高,但终局时间太长。而 zkEVM 验证器虽然强大,但开发成本高且复杂。最后,Scroll 选择了使用 Justin Drake 提出的 TEE Prover 作为辅助证明机制。
TEE Prover 在受保护的 TEE 环境中运行,能够快速执行交易并生成证明,因此并不会增加终局性。此外,TEE Prover 的另一个重要优势在于其效率。证明过程相关的开销可以忽略不计。
目前,Scroll 正在与模块化证明层 Automata 合作开发用于 Scroll 的 TEE Prover。Automata 是一个模块化的验证层,旨在通过 TEE 协处理器将机器级信任扩展至以太坊。Scroll 的 TEE Prover 由链上和链下两个主要组件组成:
· SGX Prover:链下组件,运行在 enclave 中,用于检查在 enclave 内执行区块后的状态根是否与现有状态根匹配,随后向 SGX Verifier 提交执行证明(PoE)。
· SGX Verifier:这是一个部署在 L1 链上的智能合约,需要验证 SGX Prover 提出的状态转换及 Intel SGX enclave 提交的证明报告是否正确。
SGX Prover 会监控排序器在 L1 上提交的交易批次,确保其在执行状态转换时所用的数据完整且未被篡改。然后,SGX Prover 会生成一个包含所有必要信息的区块证明(PoB),确保所有参与验证和执行的节点都使用相同的数据集。执行完毕后,SGX Prover 会提交执行证明(PoE)到 L1。随后,SGX Verifier 将检查 PoE 是否由有效的 SGX Prover 签署。
SGX Prover 使用 Rust 编程语言编写,并使用 SputnikVM 作为其执行智能合约的 EVM 引擎。该实现可以在支持 SGX 硬件模式的机器上编译和运行,同时也可以在非 SGX 环境中进行调试。而 SGX Verifier 则使用了 Automata 开源的 DCAP v3 验证库,可以对 Scroll 测试网的整个区块历史进行验证。
此外,为了减少对 TEE 实现和硬件制造商的信任问题,Scroll 还在研究一种协议,聚合来自不同硬件和客户端的 TEE Prover。该协议将结合阈值签名方案。阈值签名方案是一种密码学技术,允许多个参与者共同生成一个签名,只有至少达到特定数量的参与者同意时,签名才有效。具体来说,TEE Prover 需要多个(例如 N 个)TEE 证明者中至少 T 个证明者生成一致的证明。
Automata:利用 TEE 协处理器增强区块链的安全性和隐私性
Automata Network 是一个模块化验证层,将硬件作为共同的 Root of Trust,启用了很多用例,包括基于 TEE 验证器的多验证器系统,为 RPC 中继提供公平性和隐私及在加密 enclave 中构建区块等。
上文也提到,Scroll 的多证明系统就是与 Automata 合作开发的。除此之外,Automata 还将 TEE 协处理器作为多证明 AVS 引入了 EigenLayer 主网。TEE 协处理器是一种执行特定计算任务的硬件,用于补充或扩展主链的能力。Automata Network 的 TEE 协处理器通过在被 TEE 隔离区内执行安全计算,扩展了区块链的功能。
具体而言,Multi-Prover AVS 是一个任务控制中心,负责根据不同协议的要求协调和管理多个独立的验证器。各个协议可以公开发布需要验证的任务,然后可以组织一个由长期奖励激励的承诺 TEE 委员会。实际进行验证的节点(操作者)可以注册参与这些任务,并且可以互相合作以确保安全。而持有代币并愿意支持协议安全性的用户为质押者,他们将质押权委托给信任的操作者。这种质押增强了协议在初期阶段所需的经济安全性,因为质押的资金作为一种保障,激励操作员诚实和高效地工作。EigenLayer 创建了一个无需许可的市场,允许质押者、运营商和协议自由参与。
Secret Network:基于 SGX 技术实现隐私保护
隐私公链 Secret Network 主要通过 Secret Contract 和 TEE 实现数据隐私保护。为了实现这一目标,Secret Network 采用了 Intel SGX 可信执行环境技术,且为了保障网络一致性,Secret Network 只允许使用 Intel SGX 芯片,而不支持其他 TEE 技术。
Secret Network 采用远程认证过程来验证 SGX 安全区的完整性和安全性。每个全节点在注册前都会创建认证报告,证明其 CPU 使用了最新的硬件升级,并在链上进行验证。新节点获得共识的共享密钥后,便能够并行处理网络中的计算和交易,从而保障网络的整体安全性。为了减少可能的攻击向量,Secret Network 选择使用 SGX-SPS(服务器平台服务)而不是 SGX-ME(管理引擎)。
具体实现上,Secret Network 使用 SGX 进行带有加密输入、输出和状态的计算。这意味着数据在其生命周期内始终保持加密状态,防止未经授权的访问。而且 Secret Network 的每个验证节点使用支持 Intel SGX 的 CPU 来处理交易,确保敏感数据仅在每个验证节点的安全区内解密,而外部无法访问这些数据。
Oasis:采用 SGX 构建隐私智能合约
隐私计算网络 Oasis 采用模块化架构,将共识和智能合约执行分别分为共识层和 ParaTimes 层。作为智能合约执行层,ParaTimes 由多个并行 ParaTime 组成,每个 ParaTime 代表一个具有共享状态的计算环境。这允许 Oasis 在一个环境中处理复杂计算任务,在另一个环境中处理简单交易。
ParaTimes 可以分为隐私和非隐私两种类型,不同的 ParaTimes 可以运行不同的虚拟机,还可以设计为许可或无许可系统。作为 Oasis 的核心价值主张之一,Oasis 结合 TEE 技术推出了两种隐私智能合约:Cipher 及 Sapphire。二者都采用了 Inte SGX 的 TEE 技术。加密数据和智能合约会一起进入 TEE 中,数据会被解密并由智能合约处理,随后在输出时还会再次加密。这个过程确保了数据在整个处理过程中保持机密,不会泄露给节点操作员或应用开发者。区别在于,Sapphire 是隐私 EVM 兼容的 ParaTime,而 Cipher 是用于执行 Wasm 智能合约的隐私 ParaTime。
Bool Network:结合 MPC、ZKP 和 TEE 技术,增强比特币验证的安全性和去中心化
Bool Network 融合了 MPC、ZKP 及 TEE 三种技术,将外部验证者集群改造为动态隐藏委员会(DHC),以增强网络安全性。
在动态隐藏委员会中,为了解决验证过程中外部验证节点需要共识签名导致的私钥暴露问题,Bool Network 引入了 TEE 技术。例如,通过 Intel SGX 技术,将私钥封装在 TEE 中,使节点设备可以在本地的安全区域内运行,而系统中的其他组件无法访问数据。通过远程证明,见证者节点可以出示证明以验证其确实在 TEE 中运行并存放密钥,其他节点或智能合约则可以在链上验证这些报告。
此外,BOOL Network 是完全开放准入的,任何拥有 TEE 设备的主体都可以通过质押 BOOL 成为验证节点。
Marlin:结合 TEE 和 ZK 协处理器实现去中心化云计算
Marlin 是一个可验证计算协议,结合了可信执行环境和 ZK 协处理器,将复杂工作负载委托给去中心化云。
Marlin 包括多种类型的硬件和子网络。其 TEE 技术主要应用于子网络 Marlin Oyster 上。Oyster 是一个开放平台,允许开发者在不可信的第三方主机上部署定制计算任务或服务。Oyster 目前主要依赖于 AWS Nitro Enclaves,这是一种基于 AWS Nitro TPM 安全芯片的可信执行环境。为了实现去中心化的愿景,Oyster 未来可能会兼容更多的硬件供应商。此外,Oyster 允许 DAO 通过智能合约调用直接配置 enclave,无需特定成员管理 SSH 或其他认证密钥。这种方法减少了对人工操作的依赖。
Phala Network:基于 TEE 的多重证明系统 SGX-Prover
Phala Network 是一个去中心化的链下计算基础设施,致力于通过 TEE 实现数据隐私和安全计算。目前,Phala Network 仅支持 Intel SGX 作为其 TEE 硬件。基于去中心化 TEE 网络,Phala Network 构建了基于 TEE 的多重证明系统 Phala SGX-Prover。具体来说,链下模块 sgx-prover 运行状态转换程序后会生成包含计算结果的 TEE Proof,并将其提交给链上的 sgx-verifier 进行验证。
而为了解决用户对 SGX 中心化的担忧,Phala Network 引入了 Gatekeeper 和 Worker 两种角色。Gatekeeper 由 PHA 代币持有者通过 NPoS 选举产生,负责管理网络密钥并监督经济模型。而 Workers 则运行在 SGX 硬件上。通过引入密钥轮换机制,Gatekeepers 可以确保 TEE 网络的安全。
目前,Phala Network 拥有超过 3 万个由全球用户注册和运行的 TEE 设备。此外,Phala Network 还在探索基于 TEE 的快速终局性解决方案。理论上,可以基于 TEE 证明实现快速终局性,仅在必要时提供 ZK 证明。
总结
面对 Twitter 上的争论,Uniswap CEO Hayden Adams 也发表了自己的观点,他表示,「TEE 收到的负面评价都带有追求完美反而阻碍了好结果的意味。任何事物都存在取舍。在保护区块链领域,可用的工具应该是越多越好。」
而通过对上面这些用例的探索,可以看出 TEE 技术在解决隐私及安全方面的应用潜力。例如,Flashbots 通过 TEE 实现隐私交易和去中心化构建,Taiko 和 Scroll 则利用 TEE 实现多重证明制度,确保 L2 交易的安全性。不过,目前大部分项目都依赖单一的中心化供应商,这可能会带来一定的风险。未来,或许可以兼容更多的硬件供应商,并通过设置节点比例,以确保节点在不同硬件上运行,以进一步减少因过度依赖某一供应商而带来的中心化风险。