论文分享|Ekiden

区块链安全 1年前 (2022) admin
296 0 0


论文分享|Ekiden

本文发表在EuroS&P‘19上,提出了Ekiden,一个基于TEE的智能合约平台,主要旨在将共识和执行解耦,并提升吞吐量和机密性,降低延迟。本文选用了Intel SGX作为TEE平台,并系统分析了在TEE与区块链结合过程中的安全隐患,提出了相应的解决方案。该原型基于Tendermint共识实现了比以太坊主网多600倍的吞吐量和低400倍的延迟,成本比以太坊主网低1000倍。

PROBLEM

现有的智能合约系统由于极度依赖区块链主链,因而继承了区块链缺乏机密性低性能的特点,限制了自身应用的发展。为了解决这两大问题,研究人员已经探索了应对这些挑战的加密解决方案,如各种零知识证明系统和安全多方计算。然而,这些方法有很大的性能开销,只适用于计算相对简单的有限用例。作者考虑到区块链的可用性和持久性,与TEE相对较小的计算开销相结合,并通过远程证明提供可验证的计算和保密状态,结合各自的优势来建立混合协议。

作者还考虑到了两者在结合过程中的出现的困难,主要包括TEE无法保证自己的生命周期,从而造成的数据丢失或状态冲突,以及伪造的区块造成的完整性破坏。以及一些其他的挑战包括对受损TEE的容错,在TEE崩溃时支持鲁棒性和一致性的故障转移,以及enclave的密钥管理。最终提出了Ekiden这样一个高性能和保密性强的智能合约系统。

DESIGN

Technical Challenges

本文总结了在创建TEE-Blockchain混合系统中会产生的问题:

  • a) TEE无法保证可用性,因为一个恶意的host可以随时终止enclave,即便是良性的host也可能会在电源循环中丢失enclave。【为此,需要依赖blockchain来处理冲突,所有持久性的state都存储在blockchain中,soft state存储在TEE中,soft state即使丢失也不会对安全性造成影响】
  • b) Side-channel攻击带来的数据泄露严重影响了TEE的保密性。【设计了一个关键组件key management,允许对手攻破部分TEE,但是限制了对key manager的访问,还使用了密钥轮转来限制泄露范围。】
  • c) TEE缺乏可信的时钟源,虽然SGX中有一个相对可信的时钟,但是TEE和时钟之间的通信可能会被OS延迟,可能会导致TEE无法确认状态的即时性,还有可能无法确认状态是否已经被发布到区块链上。【设计了一种不需要TEE对blockchain拥有最新视图的协议,让blockchain拒绝陈旧的状态】
  • d) 需要对TEE产出的两种信息进行原子性保护,一类信息是返回给调用者的输出,一类信息是返回给区块链的更新状态。

Overview

Ekiden中有三类实体:

Client 智能合约的终端用户。在Ekiden中,client可以创建合约,也可以通过输入执行现有的合约。在这两种情况下,client都会将计算委托给compute node

Compute node 负责计算。compute node在TEE中运行合约并生成可以确保状态更新正确性的证明。任何拥有支持TEE的平台的人都可以作为compute node参与,compute node的法定人数组成一个密钥管理委员会,并运行一个分布式协议来管理TEE使用的密钥。合约TEE (compute node使用的TEE) 需要从密钥管理委员会处创建或检索密钥。

Consensus node 负责运行共识协议,维护区块链,状态和证明在这个区块链上持续存在。consensus node使用TEE证明来检查状态更新的有效性。

工作流分为合约创建和请求执行两种:

合约创建 clientcompute node发送合约代码compute node将代码加载到TEE中,创建一个合约id,从密钥管理委员会处获取公私钥对和密钥状态,然后生成一个合约的初始状态和一个证明 (证明初始化的正确性以及公钥的正确性) 。然后compute node通过远程证明验证的正确性,得到一个打包的认证。最后,compute node全部发送给consensus nodeconsensus node验证后,将其发布到区块链。

请求执行 (1) 为了执行具有输入的合约, client首先从区块链获取与对应的,计算出输入对应的状态,并将发送给compute node。(2) compute node从区块链中检索对应的和初始状态,将加载到合约TEE中。(3-4) 合约TEE从密钥管理委员会处获得私钥和密钥状态,解密并执行合约,产生一个输出和一个新的加密状态,以及一个证明计算正确性的签名。(5a-5b) 最后compute node执行一个原子性的数据传输,只有当consensus node接受了之后,才会将传给client。如下图所示。

论文分享|Ekiden
图1 Ekiden工作流程图

Building Blocks

Proof of Publication 针对Technical Challenges中的c),Ekiden提出了一个协议,通过限制prover将信息发布到区块的时间,来防止对手伪造区块。根据确认数、区块间隔和一个乘法松弛因子计算出可接受的时间,只有当$t

Key Management 针对Technical Challenges中的b), 在Ekiden中,每一个合约都与一组密钥相关,包括用于状态加密的对称密钥和用于加密客户端输入的密钥对。Ekiden假设对手可以破坏TEE的一部分,并且系统中任何时候都有足够多的参与者在线。首先从参与者 (具有Sybil-resistant属性) 中选取个组成密钥管理委员会 (KMC) ,在初始化一个合约时,KMC使用DKG (Distributed Key Generation) 协议生成一个长期密钥在KMC成员之间使用secret-sharing方案进行secret-sharing。compute node需要的密钥,是从长期密钥中通过一些哈希运算得到的短期密钥。为了防止被攻破的TEE获取密钥,每个KMC成员会对compute node维护一个计数器,用于计算获取密钥的次数,只有当小于某个系统设定值时,KMC才会返回密钥。

Atomic Delivery 针对Technical Challenges中的d),返回给调用者的输出信息和返回给区块链的更新状态信息需要被执行原子性的传递。为了启动原子传递,TEE从Key Manager获得一个新的密钥,并通过安全通道向client发送一个经过认证的。一旦client确认收到,TEE就将发送到区块链上。最后,在看到的发布证明后,TEE将k发送给client

CONCLUSION

Ekiden将所有节点组织成两组:compute nodeconcensus node。任何支持TEE的节点都可以作为compute node加入到系统中,这保证了系统的可扩展性。compute node的法定人数组成了密钥管理委员会 (KMC) ,它通过分布式协议为compute node生成和管理密钥。KMC需要为每个合约生成一对新的密钥,client需要在将输入交付给compute node之前使用相应的公钥进行加密。同样地,输出将通过compute nodeclient之间的安全通道传输,这就保证了隐私。为了容忍计算节点的故障,Ekiden只在区块链上存储合约的状态信息,并在每次执行后更新信息。


原文始发于微信公众号(COMPASS Lab):论文分享|Ekiden

版权声明:admin 发表于 2022年11月2日 下午3:27。
转载请注明:论文分享|Ekiden | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...