Advertisement

论文阅读《Ekiden: A Platform for Confidentiality-Preserving, Trustworthy, and Performant Smart Contracts》

阅读量:

目录

  • 摘要
    • 研究背景介绍
    • 旨在探讨...的技术基础
    • 研究目标明确为...
  • 基本信息
    • 研究领域聚焦于...
    • 数据来源包括来自...
    • 研究方法采用了...
  • 背景
    • 针对...问题展开深入探讨
    • 引发关注的领域包括...
    • 提供了创新性的解决方案
  • Ekiden协议详述
    • 协议概述介绍中明确了核心要素
    • Ekiden协议流程详细描述了操作步骤
    • 安全性分析则重点评估了防护机制
  • 动机
    • 协议概述介绍中明确了核心要素

    • Ekiden协议流程详细描述了操作步骤

    • 安全性分析则重点评估了防护机制

    • 问题分析及解决措施

      • 区块链存储证明
      • 密钥管理
      • 执行结果的原子传递
    • 实现

      • 实现的应用场景
      • 实验结果分析

相关研究与项目

  • 总结

摘要

智能合约是在区块链技术上运行的应用程序。如今,在全球范围内管理着几十亿美元的资金,并制定了针对广泛区块链部署的远见卓识计划方案。尽管智能合约继承了区块链技术所具有的可用性及其他安全保障功能特性,但受限于其缺乏机密性和低性能的问题限制了其发展进程。为此我们推出了Ekiden系统,在该系统中将区块链技术和可信执行环境(TEE)进行了深度融合与创新设计以弥补这些关键缺陷与不足之处。Ekiden通过采用独特的体系架构将共识机制与执行功能分离化处理从而实现了高效支持TEE环境下运行的安全性保证以及高度可扩展性的目标达成效果显著超出预期效果对比显示基于Tendermint共识层构建的原型系统相比Ethereum主网提升了6倍多的速度同时却降低了千倍的成本表现令人鼓舞本文另一项重要贡献在于我们系统性地识别并优化了混合TEE与区块链协同工作过程中可能产生的各类风险隐患例如在传统设计模式下基于TEE支持的功能性合同若出现伪造区块攻击(看似无关的设计缺陷)就可能危及隐私安全这一发现为混合TEE与区块链系统的设计提供了重要的理论依据和实践指导我们相信通过Ekiden所揭示的关键见解将对后续开发基于混合TEE与区块链协同工作的实际应用产生深远的影响

基本信息

该论文发表于2019年IEEE欧洲安全与隐私研讨会(EuroS&P)上,由Raymond Chen及其来自康奈尔大学的博士Fan Zhang、Jernej Kos等九位合作者共同完成。主要针对区块链在隐私保护与性能优化方面的潜在缺陷。通过结合可信执行环境与区块链技术,在高效地处理隐私数据方面取得了显著成果。并探讨了两者的结合所带来的问题,并提出相应的解决方案以应对这些问题。

背景

智能合约是一种可以在多节点网络中强制执行的数字协议一旦制定即无法轻易更改(即使是协议的设计者)它凭借强大的信任传递机制确保各方能够互相信任。该协议主要运行于以太坊区块链上提供透明的数据存储环境并允许第三方验证数据完整性尽管这一特点使得监管机构能够有效监督但同时也侵犯了用户的隐私信息尤其是那些敏感性较高的数据可能会暴露在协议框架之中导致用户的隐私面临威胁由于计算能力存储资源和交易容量等方面的限制目前最流行的区块链平台之一——以太坊也只能处理简单的应用场景复杂的智能协议应用仍然停留在理论研究阶段

较为流行的解决方案之一是ZKCP(零和知识证明),其特点是在无需解密的情况下(即可直接验证其正确性)。当用户将隐私数据上传至智能合约进行处理时,在完成运算后所得的结果经解密后即可获得相应的结论。然而,在实际应用中发现ZKCP所导致的系统性能开销及计算负载较高。更为广泛的应用场景则是在采用可信执行环境(TEE)的技术架构下实现的数据安全计算方案。其中一种典型的技术架构是通过创建一个完全独立的运行环境来隔离计算过程中的敏感操作与数据流动,在SGX、TrustZone等可信执行环境中均可实现这一功能。

区块链与可信执行环境之间的融合展现出显著的优势:一方面,在线下的可信执行环境中(TEE)完成私密数据运算的同时能够保障数据的一致性与长期保存;相比之下,在线上的TEE运行中出现问题时会立即终止并退出系统;另一方面,在线下的TEE虽然具备强大的算力支持但其隐私保护能力相对不足。基于上述互补特性Ekiden协议采取了将计算共识分离的独特机制:计算节点负责在TEEs中进行私密运算并将正确运算结果提交给主链;而共识节点则专注于维护主链账本并验证计算节点的工作结果;值得注意的是共识节点并不依赖于可靠的TEEs来进行验证过程。通过将智能合约运算部署至链下TEEs不仅有效降低了主链的工作负担还能显著减少运算延迟同时TEEs内部的操作也能充分保障系统的私密性。

但两者结合后会面临新的问题,主要是以下几个:

侧链攻击

密钥管理

侧链攻击

  1. TEE在运行时可能会被终止。主要原因在于TEE内部缺乏可靠的时钟信息。
  2. 【侧链攻击

这些将在后文中详述。

Ekiden协议详述

动机

我们提出了一种信誉评估系统

协议概述

从概念上讲, Ekiden通过提供安全的执行环境,实现了对丰富且可定制智能合约的支持. Ekiden协议基于状态的确定性程序.在不失一般性的情况下,论文假设合同程序采用(outp,st_{new}):=Contract(st_{old},inp)的形式,其中将先前的状态st_{old}与客户的输入inp作为输入,并生成输出outp以及更新后的新状态st_{new}.

一旦部署到Ekiden平台,“智能合约具备卓越的保密性、完整性和可用性”。 Ekiden通过采用可信硬件平台与区块链技术相结合的混合架构来实现这些特性。 上图展示了Ekiden系统的架构设计及其智能合约的工作流程如图所示地展示。 如图所示,“客户端、计算节点以及共识节点是系统中的三种主要实体”。

  • 应用程序:智能合约的终极目标群体是终端用户,在Ekiden系统中这些终端设备能够通过采用隐私输入的方式自动生成合同样本或执行既有的合同样本。
    • 参与者:所有具备TEzos生态系统支持服务端环境的人都可加入到系统中的角色扮演者行列,在该系统架构下任何具备TEzos生态系统支持服务端环境的人都可参与其中。
    • 共识网络参与者:该网络架构的主要贡献者包括协议执行层、交易处理层以及底层协议层面三个主要组件。

Ekiden协议流程

为了简化说明, 我们假设客户端拥有所需计算节点的优先级列表, 并且可以通过协调器促进这些计算节点进行发现与负载平衡. 我们将客户端表示为\mathcal{P}, 将计算节点表示为\mathrm{Comp}.

  1. 合约创建 :创建合约时,\mathcal{P}给计算节点\mathrm{Comp}发送合约代码\mathrm{Contract}\mathrm{Comp}\mathrm{Contract}加载到TEE内部,开始合约的初始化。TEE创建一个新的合约id,即\mathrm{\color{blue}cid},密钥管理委员会产生新的公私钥对(\mathrm{pk^{in}_{\color{blue}cid},sk^{in}_{\color{blue}cid} })和合约状态的密钥\mathrm{k^{state}_{\color{blue}cid}},并且产生加密后的初始状态\mathrm{Enc(k^{state}_{\color{blue}cid},\vec{0})}和用来证明初始状态正确性的证明\sigma_{TEE}\mathrm{Comp}从证明服务获得\sigma_{TEE}证明的证据,将其与\sigma_{TEE}一起绑定在\pi中,该变量已被证明。\mathrm{Comp}向共识节点发送\mathrm{(Contract, pk^{in}_{\color{blue}cid},Enc(k^{state}_{\color{blue}cid},\vec{0}),\pi)}消息,共识节点收到消息后先验证\pi的正确性,而后选择是否接受合约代码\mathrm{Contract},加密后的初始状态和合约的密钥\mathrm{k^{state}_{\color{blue}cid}}被存储到区块链中。
  2. 请求执行
    2.1 请求执行智能合约时,用户选择要执行合约的\mathrm{\color{blue}cid}并提供输入\mathrm{inp}\mathcal{P}首先获得与合约\mathrm{\color{blue}cid}相对应的合约公钥pk^{in}_{\color{blue}cid},用获得的公钥对数据用户输入进行加密,即\mathrm{inp_{ct}=Enc(pk^{in}_{\color{blue}cid},inp)};而后将加密后的数据以及合约id发送给计算节点,即向计算节点\mathrm{Comp}发送消息({\color{blue}cid}, inp_{ct})
    2.2 计算节点收到\mathcal{P}发送的消息后,检索合约代码并且使用合约密钥k^{state}_{\color{blue}cid}对合约的当前状态进行加密,即\mathrm{st_{ct}=Enc(k^{state}_{\color{blue}cid},st_{old})}。加密完成后将合约状态\mathrm{st_{ct}}和来自\mathcal{P}的输入均加载到TEE中进行运算。
    2.3 TEE从密钥管理委员会中获得合约的解密密钥k^{state}_{\color{blue}cid}sk^{in}_{\color{blue}cid},解密st_{ct}inp_{ct}得到合约的状态和客户端的输入。执行合约代码,获得输出\mathrm{out_p}和合约状态更新为\mathrm{st_{new}},对新的合约状态进行加密,\mathrm{st'_{ct}= Enc(k^{state}_{\color{blue}cid},st_{new})}。最后,提供数字签名\pi来验证计算结果的正确性。
    2.4 计算完成后TEE执行一个原子操作,将运算结果输出给\mathcal{P}并将新的合约状态和证明\mathrm{(st'_{ct},\pi)}发送给共识节点。原子操作的概念是两者必须都成功送达,不能出现一方成功另一方失败的情况,否则会产生不一致问题,系统被攻击。

Ekiden与现有主流智能合约平台(如以太坊)的主要差异在于其将请求执行与其共识机制分离开。在现有主流平台如以太坊中,默认情况下所有网络节点都需要重复请求执行来达成共识;从而使得整个系统的处理速度受限于单个节点的速度。而在Ekiden的设计中,则只需指定K个特定的计算节点来处理请求;其中参数K可被设定为较小值(例如1),而 consensus nodes 则只需确认这些证明的有效性即可;其中参数 K 也被用来控制 consensus 的效率和资源消耗;而无需重复运行这些逻辑流程就可以完成验证过程

安全性分析

正确执行 :合状态转换反映了合同代码在给定状态和输入上的正确执行。

一致性:无论何时,在区块链系统中都会维护与各个参与方视角一致的单一的状态转换过程。

保密性:在不违背任何TEE的前提下, Ekiden承诺确保诚实客户的输入对所有其他方保密. 此外, Ekiden具备抵御某些关键管理器TEE破坏的能力.

保密性降级 :当机密性事件发生在计算节点而非密钥管理器节点时,Ekiden方案不仅保证了前向数据泄露的安全性还实现了与相关TEEs的有效隔离。具体而言,在事件发生后系统会立即启动保护机制并限制相关TEEs的操作范围。进一步说明,在时间点t即事件发生的瞬间系统会立即触发保护流程;而攻击者受限于系统参数∆,在t−∆之前无法访问任何记录从而确保了受损TEEs的影响范围被严格限定在相应的合约子集内。

问题分析及解决措施

区块链存储证明

为了实现长期存储功能,TEE必须具备验证其数据存于 blockchain中的能力

密钥管理

基于区块链技术实现TEE状态的主要缺点是缺少机隐特性。还有一个关键问题是:如何实现秘钥的安全存储?同时需要制定有效的秘钥分配和管理机制?

一般而言,在这种架构中复制密钥涉及多个TEE。然而,在面临保密漏洞时(如通过旁信道攻击),其不稳定性主要体现在最大限度地降低密钥泄露风险上。在多数情况下,在提高系统抗风险能力的同时(即通过提高复制因子),会增加潜在的安全威胁。因此,在设计安全策略时需要综合考虑各种因素

鉴于目前尚缺乏有效的全系统边信道对抗方案,在此背景下我们特意为密钥管理器构建了一个更具防御性的对抗架构。该架构赋予攻击者破坏少量TEE机密性的能力同时限制外部组件访问权限。在第V-B部分中阐述了密钥管理协议的基本框架。核心理念在于从所有参与者中选择N个关键节点组成一个密钥管理委员会(KMC)。初始化DKG协议时通过无偏随机算法生成长期公共密钥k_c作为长期固定值;随后利用该长期公共密钥快速生成动态变化的短期私有密钥用于协议执行运算,并在指定时间段后自动失效并重新生成新的短期私有密钥以实现动态淘汰机制

执行结果的原子传递

在区块链系统中,保证操作的原子性是构成其关键挑战的重要基础。其中对于两个操作e_1,e_2而言其完成与否的状态必须达成一致否则将导致系统运行出现不可恢复的异常。而TEE-区块链整合则面临着类似的复杂挑战

对于一般的有状态TEE区块链协议而言,在TEE执行过程中会产生两条特定的消息:两个名为m_1m_2的消息均通过对抗性通道将输出传递给调用方,并将其状态更新传递给区块链。我们特别强调必须实现原子化消息传递机制,即要么同时传输m_1m_2两者并保证系统的永久不可用性。当接收方接收并处理完m_1后立即发送其副本给调用方。一旦接收方的状态信息被区块链接受,则立即切换并交付新状态信息m_2。若是在拒绝进行状态更新操作的情况下仍视作未完成的状态交付行为。

要掌握原子传递的重要性,请分析违反该机制可能导致的安全漏洞。
首先,在这种情况下(即仅传输两个消息之一时),若发送方仅输出m_1值,则接收方将面临逆向数据恢复攻击的可能性。
由于TEE无法有效验证输入数据的新旧性。
攻击者可将输入数据提供为过时版本。
通过这种方式,在某些情况下接收方将能够恢复TEE的状态执行。
另一个例子是,在AEDP(属性保真度敏感隐私保护)场景下。
如果仅传输状态更新m_2值,则可能导致用户输出永久丢失的风险。
论文在第V-C节中详细阐述了这一协议的基本思想:
其核心在于确保每次通信操作都伴随着不可逆的状态更新,
从而防止任何潜在的安全威胁。

假设TEE与客户端P之间的通信通道是安全的,在密钥管理器获取新密钥k后,TEE同时通过安全通道发送加密消息m_1^c = \text{Enc}(k, m_1)\mathcal{P};当\mathcal{P}确认接收m_1^c时,则会将m_2发送到区块链;当TE验证了m_2并看到了其证明\pi_{m_2}后,则会将密钥k发送给\mathcal{P}

该协议实现了原子级的可追溯性。一方面,在验证机制\pi_{m_2}的基础上确认了m_2的有效传递后才会暴露密钥k。另一方面,在所有参与方成功提交m_2后系统将自动解密并释放密钥k,并基于密钥管理协议的设计原则确保其安全性与可用性。

实现

该论文实现了对Ekiden系统的构建,并包含约7.5千行Rust代码量;不确定是否即为此开源项目链接:https://github.com/ekiden/ekiden?此外,则说明该系统能够与现有的区块链生态系统兼容,并具备良好的可扩展性

实现的应用场景

  1. 机器学习智能合同系统在准确性和私密性方面表现出色。
  2. 智能建筑热建模技术能够有效应对复杂的在线互动任务。
  3. ERC20数字资产合约中Ekiden展示了强大的匿名性和私密性保障。
  4. 扑克游戏。
  5. CryptoKitties.
  6. Origin.

实验结果分析

在ERC20代币合约中相较于以太坊而言吞吐率提升了600倍并且延迟减少了400倍同时交易成本也降低了1.8倍。Ekiden能够支持计算密集型工作负载并特别适用于机器学习应用程序等场景然而在以太坊生态系统中实施这些功能会面临较高的成本。通过批处理技术以及有效的缓存策略和预写日志机制可以在区块链同步过程中显著提升系统性能的同时降低同步过程中的网络开销。

相关论文和项目

隐私智能合约

  • Hawk
  • Hyperledger Private Data Objects(PDO)
  • Microsoft Coco Framework

区块链交易隐私

  • ZeroCash
  • Cryptonote
  • Solidus
  • ZeroCoin

基于可信硬件的隐私保护系统

  • M^2R
  • VC3
  • Opaque
  • Ohrimenko
  • Ryoan

总结

论文内容较为全面,在分析智能合约技术时重点探讨了其在隐私保护方面的不足以及性能上的局限性。通过将智能合约系统与可信执行环境进行整合在一起,在充分挖掘两者互补特性的同时,则实现了计算能力与共识形成过程的有效分离。一方面提升了系统的性能水平;另一方面则实现了用户隐私的有效保障。

  1. 请解释一下如何验证计算节点向共识节点传递运算结果的有效性?
  2. 如果计算得到的结果无需加密,则该数据可能涉及个人隐私信息吗?这是否会影响数据的私密性?

本人水平有限,以上内容不保证正确,欢迎大家批评指正,一起讨论学习。

全部评论 (0)

还没有任何评论哟~