可信执行环境(TEE)与L2排序器:挑战、权衡与安全影响

  • thogiti
  • 发布于 2025-02-14 17:46
  • 阅读 9

本文深入探讨了Layer-2区块链系统中排序器的不同设计方案,重点分析了基于可信执行环境(TEE)的排序器,并将其与去中心化排序和L1强制包含等方法进行了对比。文章还讨论了TEE排序器的安全挑战,并分析了其在审查抵抗方面的优势与局限性,最后通过案例研究展示了这些理念在实际中的应用。

引言与背景

如今,许多 Layer-2 (L2) 区块链系统依赖于一个中心化的一 sequencer 来收集、排序和批量处理用户交易,然后再将它们提交到 Layer 1 (L1)。这种设计之所以流行,是因为它易于实现、提供高吞吐量并且提供快速的用户体验。然而,它也创建了一个单点故障,存在几个显著的缺点。首先,sequencer 可以通过任意排除或延迟某些用户的交易来审查这些交易。其次,一 sequencer 可以重新排序交易以获取 MEV (Miner/Maximal Extractable Value),例如抢先交易大型交易或夹击用户交易。最后,如果中心化的 sequencer 行为恶意或变得无响应(活性),用户必须依赖于强制将其交易发布到 L1(那里的费用和延迟更高)以保证包含。

为了应对这些漏洞,社区正在探索 L2 sequencing 的替代方法。一些项目(例如原始 Astria、Metis、Espresso 共享 sequencing 市场)使用去中心化 sequencing,将任务分配给多个 sequencer 节点或委员会,然后通过拜占庭容错 (BFT) 共识进行协调。另一些项目则提议严重依赖于基于 L1 的 sequencing,使用强制包含队列,将 L1 视为所有 L2 交易的最终仲裁者。第三种方法(也是本文的主要重点)涉及可信执行环境 (TEE)。TEE 可以在受硬件保护 enclave 中运行核心交易排序逻辑,从而为公平排序和抗审查提供潜在的好处,同时保持一 sequencer 的延迟优势。

以下各节比较了这三种广泛的设计,并检查了基于 TEE 的 sequencer 的具体安全挑战。我们还将考虑 TEE 如何影响抗审查性,超出 L1 强制包含已经提供的范围。像 Uniswap 的 Unichain 和 RARI Chain 的 Espresso Sequencer 这样的真实案例研究说明了这些想法是如何付诸实践的。


L2 Sequencing 的三种方法

TEE 保护的一 Sequencer

graph TD
    subgraph TEE [可信执行环境]
        style TEE fill:#a4a2c6,stroke:#333,stroke-width:2px,stroke-dasharray: 5 5
        Sequencer(Sequencer 逻辑)
        style Sequencer fill:#c6a4a2,stroke:#cc0000,stroke-width:2px
    end

    Users[用户 / 交易来源] -- 交易 --> Sequencer
    Sequencer -- 批处理 / 状态数据 --> Ethereum_L1[Ethereum L1]
    Sequencer -- 已签名区块 --> L2_Interaction[L2 状态 / 收据 / 其他?]

    style Ethereum_L1 fill:#a2c6a4,stroke:#009900,stroke-width:2px
    style L2_Interaction stroke-dasharray: 3 3

来源:Decentralising Rollups

TEE 保护一 sequencer 利用硬件 enclave(例如,Intel SGX、AMD SEV)来运行区块构建逻辑。L2 协议信任 enclave 执行规定的排序策略,并在区块最终确定之前保持交易数据的私密性。由于 TEE 通过远程证明以加密方式证明它正在运行经过批准的代码,因此链上合约可以拒绝在该 enclave 之外生成的区块。这种方法保留了中心化 sequencer 的低延迟,同时降低了运营者操纵排序的能力。

尽管如此,基于 TEE 的设计并不能保证活性。sequencer 的运营者总是可以在交易到达 enclave 的 mempool 之前将其从 TEE 中扣留。如果运营者离线或拒绝合作,用户将被迫诉诸 L1 的强制包含机制。此外,TEE 引入了关于硬件安全和供应商信任的新假设。如果在 CPU 微代码、固件或远程证明过程中发现漏洞,攻击者可能会生成违反协议逻辑的“有效”区块。

TEE 保护的一 Sequencer(带轮换)

graph TD
    subgraph TEE1 [TEE]
        style TEE1 fill:#a4a2c6,stroke:#333,stroke-width:2px,stroke-dasharray: 5 5
        Seq1(Sequencer 1)
        style Seq1 fill:#c6a4a2,stroke:#cc0000,stroke-width:2px
    end

    subgraph TEE2 [TEE]
        style TEE2 fill:#a4a2c6,stroke:#333,stroke-width:2px,stroke-dasharray: 5 5
        Seq2(Sequencer 2)
        style Seq2 fill:#c6a4a2,stroke:#cc0000,stroke-width:2px
    end

    Users[用户 / 交易来源] -- 交易 --> Seq1
    Seq1 -- 批处理 / 状态数据 --> Ethereum_L1[Ethereum L1]
    Seq1 -- 已签名区块 --> L2_Interaction[L2 状态 / 收据 / 其他?]

    Seq1 -.->|轮换| Seq2
    Seq2 -.->|轮换| Seq1

    style Ethereum_L1 fill:#a2c6a4,stroke:#009900,stroke-width:2px
    style L2_Interaction stroke-dasharray: 3 3

图:轮换的 sequencer 设计使用多个受 TEE 保护的 sequencer。只有一个是活动的,接收交易并生成区块。轮换时(计划好的或触发的),另一个 sequencer 接管。虚线箭头表示切换。 来源:Decentralising Rollups

为了在静态一 sequencer 之外改善活性,一种变体引入了 sequencer 轮换。代替一固定的运营者,活动 sequencer 角色会定期或有条件地转移到从预定集合中选择的新运营者。此集合中的每个运营者都在其自己的 TEE 实例中运行其 sequencing 逻辑,从而确保遵守协议规则。这种多样化意味着 rollup 不会无限期地与一实体的正常运行时间或诚实度联系在一起。如果当前的 sequencer 离线或发生故障,则另一方可以立即介入并继续生成区块,前提是轮换机制(通常由验证凭据的 L1 智能合约管理)运行正常。通过轮换这项职责,系统避免了点故障,并显着提高了活性(比较静态与动态重新配置的来源)。 轮换还提高了随时间的推移的抗审查性。没有一方可以无限期地控制交易排序。恶意 sequencer 只能在其活动窗口期间抑制交易;一旦轮换出去,下一个 sequencer 就可以包含先前审查的交易。定期更改 sequencer 可确保每个有效交易最终都将被包含,因为不同的运营者轮流提议区块(有关最终包含的来源)。Aztec 对其 Fernet 协议的研究(该协议每个区块使用随机领导者选举)突出了这一优势,并指出它通过防止对区块生产的任何永久垄断,“很好地促进了网络的抗审查性”(Aztec Blog on Fernet)。

但是,引入 sequencer 轮换需要仔细协调,以保持一致性并避免轮换边界发生重组(reorgs)。如果传出的 sequencer 已经构建了链下区块(例如,高达高度 n+k),但仅在 L1 上最终确定了高达 n 的区块,则会出现一个关键挑战。如果新的 sequencer 立即接管并从上次 L1 确认的状态 (n) 开始构建,则如果传出的 sequencer 稍后显示其未发布的区块(n+1n+k),则会发生分叉。

graph TD
    subgraph L1_Chain [L1 链 - 已确认]
         style L1_Chain fill:#a4a2c6,stroke:#009900,stroke-width:2px
         direction LR
         N_minus_1[n-1] --> N[n] 
         style N_minus_1 fill:#cceeff,stroke:#0066cc,stroke-width:2px
         style N fill:#cceeff,stroke:#0066cc,stroke-width:2px
     end

    subgraph Withheld_Blocks [扣留的链下区块]
         style Withheld_Blocks fill:#a4a2c6,stroke:none 
         direction LR
         N_plus_1[n+1]
         Dots(...)
         N_plus_K[n+k]
         style N_plus_1 fill:#fff5cc,stroke:#cca300,stroke-width:2px
         style Dots fill:#fff5cc,stroke:#cca300,stroke-width:2px 
         style N_plus_K fill:#fff5cc,stroke:#cca300,stroke-width:2px
     end

     Conflicting[n+k+1]
     style Conflicting fill:#ffcccc,stroke:#cc0000,stroke-width:2px

    N --> N_plus_1           
    N_plus_1 --> Dots        
    Dots --> N_plus_K        

    N_plus_K -.-> Conflicting 
    Conflicting -.-> N      

图:轮换期间的 Reorg 风险。蓝色区块 (n-1, n) 是 L1 最终确定的。传出的 sequencer 在链下构建了黄色区块 (n+1...n+k),但未发布它们。如果新的 sequencer 从 n 开始并构建红色区块 n+k+1,则如果稍后出现被扣留的黄色区块,它将与这些区块冲突。延迟/缓冲区可以防止这种情况。 来源:Decentralising Rollups

为了防止这种情况,设计通常包括延迟缓冲区或切换协议。这通常要求传出的 sequencer 在新的 sequencer 开始之前在特定的时间窗口内最终确定其工作(将高达 n+k 的区块的所有必要数据发布到 L1)。此缓冲区确保新的 sequencer 从干净的 L1 确认状态开始(如果已发布,则为 n+k;如果旧的 sequencer 未能发布并可能面临处罚,则为 n),从而避免了导致 reorgs 的意外“影子区块”。

恶意的传出 sequencer 仍可能会尝试审查或扣留攻击,方法是在其任期结束时故意未能发布有效区块。缓解措施包括:

  • 双重签名区块:要求传出 sequencer 的最后区块或传入 sequencer 的第一个区块由双方签名。这会强制就确切的切换状态达成协议,从而以密码学方式阻止传出的 sequencer 稍后声称不同的、更长的链从切换之前延伸而来,而未获得传入 sequencer 的明确同意。
  • 削减/处罚:对未能在轮换截止日期之前完成其工作的 sequencer 处以罚款。

这些措施有助于确保平稳过渡并保持链的完整性(讨论重新配置策略的来源)。

总的来说,轮换的 TEE 保护的 sequencer 模型旨在将一活动 sequencer 的效率(低延迟、每个区块的高吞吐量)与多运营者集合的弹性相结合。它介于静态中心化运营者和完全去中心化共识的极端之间。由于角色发生变化,网络可以增强对停机时间和可能影响静态一 sequencer 设计的长期审查的抵御能力(有关中心化 sequencer 风险的来源)。这个概念正在积极探索中,Aztec 的 Fernet 使用基于 VRF 的彩票进行快速轮换(Aztec Blog on Fernet)。下表将此变体添加到我们的比较中:

去中心化 Sequencing(多个 Sequencer/委员会)

去中心化 sequencing 通过将功能分配给一组独立的节点或委员会来消除一 sequencer 风险。这些节点通过共识协议(例如,BFT、HotStuff 或专门的权益证明机制)进行协调,以就交易排序达成一致。只要达到节点的阈值是诚实的,一方就不能单方面地审查交易或为了个人利益而重新排序它们。这种方法大大提高了抗审查性,因为攻击者必须破坏或胁迫委员会中的大多数,而不仅仅是一运营者。

但是,协调多个节点自然会增加延迟和协议复杂性。消息传递和签名聚合的开销会降低吞吐量或减慢最终确认。通常需要经济激励来确保节点保持诚实和可靠,并且系统必须处理节点流失或拜占庭参与者。尽管存在这些缺点,但许多人认为,从长远来看,去中心化 sequencing 是实现抗审查 L2 的最终途径。

L1 强制包含/基于 L1 的 Sequencing

许多 L2 系统已经包含 L1 强制包含,允许用户在 L2 sequencer 拒绝他们的情况下将交易直接发布到 L1 上的合约。在指定的延迟(范围可能从几个小时到一整天)之后,L2 协议必须接受来自 L1 的这些交易。一些 rollups 更进一步,依靠 Ethereum L1 来进行所有交易排序(通常被称为“Based Rollups”),从而继承与底层链相同的抗审查性和共识属性。

以这种方式使用 L1 可以为防止恶意或审查 L2 运营者提供强大的后盾,从而保证最终包含。但是,严重依赖 L1 会牺牲 L2 的吞吐量和成本优势。对于用户而言,直接在 L1 上发布交易的成本可能很高,并且他们必须等待 L1 最终确定加上延迟期。因此,大多数 rollups 将强制包含视为紧急后备,而不是标准路径。


一览比较表

下表显示了这些方法的简化比较:

Sequencing 模型 活性 抗审查性 复杂性 注释
TEE 保护的一 Sequencer(静态) 低(依赖于一运营者的正常运行时间) 低(一实体可以审查;依赖于 L1 逃生舱口) 低(简单架构) 需要信任 TEE 和运营者密钥。手动/治理故障转移可能很慢(例如,Arbitrum 历史上约为 1 周)。
轮换的一 Sequencer(TEE 变体) 中等(通过轮换/故障转移改进) 中等(没有无限期的审查;很可能最终包含) 中等(协调逻辑) 比静态故障转移更快。需要防止 reorgs(缓冲区,双重签名)。示例:Aztec Fernet(快速轮换)
去中心化 Sequencing(共识) 高(对一节点故障具有弹性) 高(需要大多数勾结才能审查) 高(共识协议) BFT/PoS 开销,更高的延迟潜力。示例:Espresso、Astria。
L1 强制包含/L1 Sequencing 高(回退到 L1 保证进度) 高(用户可以通过 L1 绕过 L2 sequencer) 中等(依赖于 L1 基础设施) 强制交易的费用/延迟更高。示例:Arbitrum 逃生舱口,Based Rollups

基于 TEE 的 Sequencer 的安全挑战

尽管 TEE 可以保证代码完整性和机密性,但它们也引入了一系列新的风险:

旁道攻击

Intel SGX、AMD SEV 和其他 TEE 具有旁道漏洞的记录,例如缓存计时或推测执行漏洞(例如,Meltdown、Spectre、SGAxe)。这些漏洞可能会泄露 enclave 内部的机密信息,包括 TEE 应该保护的私钥或交易数据。在最坏的情况下,旁道攻击可能允许攻击者篡改 enclave 的逻辑或收集足够的信息来重新排序交易或抢先交易有价值的交易。

固件和软件漏洞

除了旁道之外,TEE 实现(微代码、固件或 SDK 库)中的错误可能允许恶意代码在 enclave 内部运行。由于像 Intel 这样的 TEE 供应商通常提供闭源固件,因此更广泛的社区无法轻松对其进行审核。一严重的漏洞可能会破坏整个 L2,尤其是在攻击者可以伪造 TEE 证明或在链上看起来合法的同时更改交易排序逻辑的情况下。

远程证明风险

TEE 安全性还取决于远程证明,该证明向外部验证者证明 enclave 内部的代码是真实的。如果证明密钥泄露,或者证明服务存在缺陷,攻击者可以欺骗 TEE 测量并欺骗链上合约接受恶意区块。如果不能迅速撤销,这种密钥泄露可能会危及 TEE 生态系统的大部分,因为它使攻击者能够伪造其(已泄露的)enclave 是真实的证明。

物理和供应链攻击

尽管在公共数据中心中不太常见,但可以对 TEE 进行物理篡改。民族国家或内部人员可能会植入后门、在制造过程中拦截芯片或通过物理访问硬件来提取密钥。虽然 TEE 可以缓解不受信任的软件或操作系统带来的威胁,但它们仍然容易受到复杂的物理攻击者的攻击。

Enclave 可用性和运营者控制

TEE 无法强制运营者交出所有交易。如果运营者故意扣留某些交易或只是关闭 enclave,则仍然可能发生审查,直到用户诉诸 L1。一 TEE 也代表了可用性的点故障;如果它崩溃或运营者拒绝为其供电,则 L2 将停止,除非有后备机制。

治理和升级风险

链上合约通常会检查 enclave 的加密测量值(例如,MRenclave)。对 enclave 代码或 TEE 配置的任何更改都需要在合约中更新此测量值。受信任的团队或多重签名通常控制此类更新,从而引入治理维度:如果批准了错误的测量值,则系统的安全性将被有效地绕过。

总的来说,基于 TEE 的解决方案将一些信任从 sequencer 运营者转移到硬件的完整性。当 TEE 按预期工作时,它们可以有力地执行排序策略并保护用户数据免受运营者的侵害。但是,漏洞面会转移到硬件漏洞、泄露的证明密钥和治理不当,这些不当可能比基于软件的攻击更不透明。


与 L1 相比,TEE 是否有意义地提高了抗审查性?

从短期来看,只要 sequencer 转发所有交易,TEE 确实可以提供增强的抗审查性和公平排序。由于 TEE 执行排序算法(例如,先进先出或基于费用的)并且可以在最终确定之前保持交易内容加密,因此运营者更难以重新排序或选择性地删除特定交易以获取个人利益。这种“盲排序”方法通过隐藏交易规模或其他敏感细节来防止抢先交易,并且当 TEE 定期报告它处理了哪些交易时,可以更容易地检测到秘密审查。

尽管如此,TEE 并不能消除对 L1 的最终依赖。如果 sequencer 只是拒绝将用户的交易传递到 TEE,或者离线,则用户唯一的追索权仍然是将该交易发布到 L1。这种回退可能会涉及巨大的成本和延迟,特别是如果强制包含延迟设置为几个小时或更长时间。因此,TEE 可以解决细微的操纵,并且可以显着降低运营者重新排序交易的自由度,但它们无法阻止完全拒绝运营。


真实案例研究

Uniswap 的 Unichain (Flashbots 的 Rollup-Boost)

Uniswap 正在启动一个名为 Unichain 的 L2,该 L2 使用 Flashbots 的 Rollup-Boost,其中包含 Intel TDX enclave 用于可验证的区块构建。关键的设计特征是将区块构建功能与 sequencer 分开,将实际的交易排序卸载到基于 TEE 的构建器。这些构建器接收加密的交易,根据预定义的代码库确定它们的顺序,并发布密封的区块。然后,sequencer 在 L1 上最终确定这些区块。由于在排序完成之前交易内容是不可见的,因此运营者无法抢先交易或任意挑选赢家。Unichain 仍然依赖于 Ethereum L1 来保证最终安全和强制包含,但基于 TEE 的方法可以提供低延迟、抗 MEV 的排序。

带有 Espresso Sequencer 的 RARI Chain

RARI Chain 基于 Arbitrum Orbit (L3 框架) 构建,集成了 Espresso Systems 的 Espresso Sequencer,该 Sequencer 将 BFT 共识与基于 SGX 的证明相结合。验证者委员会(Espresso 的网络)快速最终确定交易区块,并且每个区块都使用 TEE 签名发布到 L1,证明它是在批准的 enclave 内部构建的。如果签名与预期的 SGX 测量不匹配,则链上合约将拒绝该区块。这种设计确保没有一节点可以重写排序以使其受益。治理仍然控制哪些 enclave 测量有效,这表明除了硬件信任之外,还存在一个社会信任层。

TeeRollup(研究原型)

TeeRollup 项目设想整个 rollup 在一组 TEE 中运行所有交易执行,而不是依赖于密码学欺诈或有效性证明。通过要求多个 enclave 批准每个状态转换,TeeRollup 旨在针对任何一硬件漏洞提供强大的保护。如果 TEE 停顿或审查,用户将恢复为链上挑战系统以强制包含。尽管 TeeRollup 尚未投入生产,但它展示了一种更极端的方法来依赖 TEE,在这种方法中,硬件安全性被认为是更消耗资源的证明系统的可接受替代品。


结论

基于 TEE 的 sequencer 充当幼稚的中心化运营者和更复杂的多方共识之间的中间地带。如果实施得当,它们可以通过执行诚实的排序策略并在重新排序为时已晚之前保持交易数据隐藏来提高审查和抢先交易的门槛。因此,用户可以获得针对细微操纵的短期保护,并且 sequencer 必须遵守或使审查变得公开(这更容易被发现)。

但是,TEE 带有重要的硬件信任假设。如果 TEE 受到威胁,系统的安全性将有效地回落到运营者。尽管存在这些风险,但许多项目(例如 Uniswap 的 Unichain 和 RARI Chain 的 Espresso Sequencer)正在积极试验 TEE 加固的 rollups 和 L3,以实现低延迟、隐私和中立性。他们将这些优势与 L1 强制包含的回退相结合,以获得最终保证。

展望未来,我们可能会看到混合解决方案,这些解决方案将 TEE 与去中心化委员会或密码学技术(如阈值加密或 ZK 证明)结合使用,以进一步减少对任何一方或硬件的信任。TEE 是否会成为以太坊扩展堆栈中广泛信任的元素,或者仍然是临时的利基解决方案,取决于正在进行的研究、硬件安全性的发展以及 L2 基础设施的实际经济状况。


参考

  • 原文链接: github.com/thogiti/thogi...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
thogiti
thogiti
https://thogiti.github.io/