主页 > 下载imtoken钱包20app > ShadowEth:公链上的私有智能合约

ShadowEth:公链上的私有智能合约

下载imtoken钱包20app 2023-03-04 06:28:54

ShadowEth:公共区块链上的私有智能合约

Yuan, Rui, 夏玉斌, 陈海波

研究背景

比特币提供了一种简单的基于假名的匿名性来保护秘密,但它一目了然地暴露了所有交易,并且容易受到关系分析的影响。

微软推出了一个名为 Coco 的开源区块链框架。 Coco 支持创建受可信执行环境 (TEE) 保护的物理节点可信网络。 适用于构建私有链和许可链,限制只有合法成员才能访问区块链的信息。

我们发现这些提议的系统中很少有可以直接部署在当前广泛使用的区块链系统(如以太坊)上。 它们要么要求用户使用新货币(如 Hawk),要么不支持智能合约(如 Zcash)。 一个来自大自然的问题:是否可以在以太坊上支持私人智能合约? 智能合约执行的隐私比整个区块链的隐私重要得多。

例如,在双价拍卖中,获胜者支付第二高的价格,因此在拍卖期间隐藏所有出价至关重要。 拍卖完成后,货币转移信息(在区块链的日志中)最终将对公众开放(例如,如果用户使用以太坊出价)。 同样,在投票中,最保守的秘密是谁投票给了谁,一旦投票结束,结果可能会在区块链上公开。

研究贡献

以太坊和以太经典是什么关系_以太坊公开密钥_sitebitcoin86.com 以太坊以太经典

在本文中,我们提出了一个基于公有链的私有智能合约系统ShadowEth。 其实现是将硬件和公链相结合,在提供智能合约保密性的同时保持完整性和可用性。

在以太坊上使用英特尔 SGX 来实现 ShadowEth 原型,这是一个附加到以太坊的保密、分布式、无需信任的链下智能合约。

提出 shadowETH,一个保密的、分布式的、去信任的链下智能合约系统;

描述了 shadoweth 的架构和协议;

解释shadoweth的适用性;

实施原型并展示 shadoweth 安全性和可用性。

相关技术

以太坊公开密钥_sitebitcoin86.com 以太坊以太经典_以太坊和以太经典是什么关系

硬件飞地

Intel Software Guard Extensions (SGX) 是嵌入在许多 Intel x86 中央处理器 (CPU) 中的安全指令集。 SGX 使开发人员能够将计算机的内存划分为所谓的飞地,内存中预定义的私有区域,可以更好地保护用户的敏感信息。

以太坊公开密钥_以太坊和以太经典是什么关系_sitebitcoin86.com 以太坊以太经典

在enclave启动过程中,CPU会测量enclave内部的可信代码和可信内存,并根据所有内存页生成一个hash,成为metric。 然后飞地内的软件可以获取包含测量结果和其他补充数据(例如公钥)的报告。 该报告由 CPU 中的硬件保护密钥签名,以证明被测软件在 SGX 中运行。 然后,远程验证者可以使用 Intel 身份验证服务 (IAS) 来验证报告,它可以证明签名有效并且相应的报告是由 CPU 生成的。 私钥用于生成合约正确执行的认证。 如果攻击者以某种方式窃取了私钥,则可以在不执行合约的情况下在以太坊中获得报酬,这可能会损害完整性但不会损害隐私。

体系结构

ShadowEth 的目标是提供一个保密平台,用于执行可以与现有公共链集成的私人智能合约。 智能合约的隐私性由以下三部分组成:

以太坊公开密钥_以太坊和以太经典是什么关系_sitebitcoin86.com 以太坊以太经典

sitebitcoin86.com 以太坊以太经典_以太坊公开密钥_以太坊和以太经典是什么关系

系统设计

一旦部署了私有合约,用户就可以像调用原生以太坊合约一样调用它。 过程如下图所示。

以太坊和以太经典是什么关系_以太坊公开密钥_sitebitcoin86.com 以太坊以太经典

首先,用户通过远程身份验证建立的安全通道向 TEE-DS 发送二进制代码,并受用于加密会话中数据的会话密钥的保护。 一旦收到代码,TEE-DS 将生成一个非对称加密密钥对(基于 RSA 算法):合约公钥和合约私钥,这对每个合约都是唯一的。 TEE-DS 然后将合约公钥发回给用户。

用户收到合约私钥后,将身份信息上传至赏金合约,实质上是宣告新的私密合约的存在。 这些信息包括:1)合约公钥,2)所有者列表(默认为用户的公网地址)以太坊公开密钥,3)二进制代码哈希。 这是由以太坊客户端完成的,它生成一个包含信息的部署交易并将其发送到赏金合约。 然后,赏金合约使用身份信息在其合约列表中创建一个新的合约记录,将版本号设置为 0,并将状态设置为已部署。

相关例子

简单的投票

以太坊公开密钥_以太坊和以太经典是什么关系_sitebitcoin86.com 以太坊以太经典

以太坊和以太经典是什么关系_sitebitcoin86.com 以太坊以太经典_以太坊公开密钥

我们首先实现一个简单的投票示例来说明私人合约的机密性。 场景是:一些人想通过以太坊上的智能合约在他们之间发起投票,但又不想向公众公开投票内容。 在我们的实施中,我们假设参与者相互了解并相互信任,并共同创建投票合约。 上图显示了示例的大致逻辑,但没有显示详细逻辑。

首先,所有选民就投票代码(私人合约)达成一致。 然后他们根据协议部署私人合约,可以由任何参与者执行。 确认部署后,每个参与者都可以调用cast()函数进行投票。 cast() 操作将由使用硬件飞地的工作人员执行。 任何参与者都可以随时调用check函数查询当前的投票状态。

二次价格密封拍卖

sitebitcoin86.com 以太坊以太经典_以太坊和以太经典是什么关系_以太坊公开密钥

我们使用 ShadowEth 来实现一个示例拍卖程序,如上图所示。 上面的代码是我们实际实现的近似值。 在这种情况下,有两个不同的角色:经理和投标人。 首先,管理人可以使用卖家的地址开始拍卖以太坊公开密钥,这样拍卖结束后资金可以立即转给卖家。 拍卖成功开始后,每个投标人都可以通过调用 bid() 提供他们的价格。 由于 Ethereum 上的 Ether 转账是公开的,可以从中推断出价,我们允许用户通过发送任何数量(但高于实际价格)的 Ether 来混淆真实价格,并且超出部分将在拍卖后退还给用户. 经理将决定何时结束拍卖并调用 conclude() 将资金从获胜者转移到卖方并将资金返还给其他投标人。

shadowEth 保证独立的输入隐私,即使在拍卖结束后,每个用户也无法看到其他人的出价。 这样,用户的出价独立于其他人的出价。 此外,管理器的功能仅限于开始和终止拍卖。 即使管理员有恶意,他/她也不能透露任何有关拍卖的信息。

以太坊和以太经典是什么关系_sitebitcoin86.com 以太坊以太经典_以太坊公开密钥

安全分析

总结

ShadowEth 解决了当前基于区块链的智能合约系统的一个主要问题——缺乏保密性。 与纯粹的、计算复杂的解决方案(如 Zcash)和重构的许可链(如 Coco)不同,shadowweth 可以保证现有公链(如以太坊)的机密性,无需任何修改。 Shadowweth 将智能合约的验证过程与私密执行分离,只将验证放在区块链上,不泄露任何秘密。

sitebitcoin86.com 以太坊以太经典_以太坊和以太经典是什么关系_以太坊公开密钥

微信公众号 | 苏尼斯

文案 | 王开明

排版 | 王开明

审计 | 周远航刘嘉禾