Private Data Objects, 私密数据对象,基于TEE、智能合约和分布式账本的可信计算

本文首发在 https://zhuanlan.zhihu.com/p/109270123

本文的主要内容来自论文:Bowman, Mic, et al. "Private data objects: an overview."arXiv preprint arXiv:1807.05686(2018).

背景和动机
1.1 问题

区块链中的智能合约作为“链码”来执行逻辑运算,但是,智能合约的输入数据以及执行结果在区块链中是公开透明的。如果这些输入数据和执行结果是个人隐私信息,那么现有的区块链解决方案将暴露用户的隐私。所以,我们能不能寻求一种技术,在能够完成智能合约在区块链节点中计算的同时,又能保护用户隐私呢?零知识证明和多方计算是其中的两种技术选项,这里我们使用Trusted Execution Environment(TEE)来解决这个问题。可以把TEE理解为一个用硬件实现的安全沙盒,其中在TEE中执行的程序称为enclave程序。

1.2 On-chain和off-chain

在一个区块链中,一个交易如果需要所有的节点都需要重复计算该交易的所有过程才能认证其合法性,那么我们称这个交易是on-chain的。如果一个交易的一些逻辑在区块链之外执行,提交该交易到区块链之后,区块链节点不需要重复执行这些链外的逻辑,那么我们就称这样的交易是off-chain的。对于一个off-chain的交易,区块链所担当的角色往往只是用于记账,复杂的逻辑运输放到链外来完成。所以,off-chain的优点很明显,那就是不需要全网的重复计算,因此相比于on-chain有较高的性能优势。

具备off-chain的Private Data Objects
总体架构
在这里插入图片描述

总共分为四个主体,分别为用户,分布式账本,TEE service和智能合约创建者。因为是off-chain的方式,所以TEE独立于分布式账本,作为TEE服务提供商的角色,所以我们可以使用enclave-as-a-service来表示该提供商这个角色的作用,类似于云服务提供商。他们需要将他们的TEE相关信息注册到区块链中,包括TEE的硬件证明。分布式账本以区块链的形式存在,它的目的主要是记账,这里它不参与智能合约的执行,因为在该区块链中执行智能合约不具备保密性。智能合约创建者是个人或者公司,需要注册到区块链中。一个用户在使用已经注册的智能合约之前,需要同意该智能合约中的内容,因此需要私底下跟智能合约创建者沟通,以便检查智能合约的一致性、合法性和安全性。这个沟通的过程涉及到数字签名,非对称加密等技术,让用户在使用该智能合约的时候能够验证此合约的签名和完整性。具体一点的话,可以如下步骤:智能合约创建者生成合约的摘要,签名该摘要,将合约和签名发送给用户,用户验证签名,并且验证智能合约中的内容。在使用合约的时候需要验证该合约是否被篡改,是否完整。

一个完整的使用流程是:

  • TEE服务提供商向区块链注册enclave信息,表明他能够提供合格的enclave-as-a-service服务。
  • 智能合约创建者根据自己的业务需求创建智能合约,并将智能合约注册到区块链中。
  • 用户想要使用该某一个已经注册在区块链中的智能合约,他查看和同意合约的内容之后,调用智能合约,在TEE中执行。
  • TEE将执行结果返回给用户,用户结果提交到区块链中。区块链更新相应的状态信息。

用户数据的安全性: 除了用户自己,其他人都不能够知道用户的数据。将该数据输出到enclave的安全边界外面之前,需要将它加密。任何人都无法直接访问和修改用户数据,只能间接通过运行在enclave中的智能合约来操作。并且,所有的用户数据都会伴随着执行策略和数据访问策略。通过智能合约来限制具有访问权力的用户才能够访问相应的用户数据。

用户如何确定远方的TEE硬件环境正确设置了呢?TEE服务提供商在向区块链注册enclave信息的时候,需要提交和保存一个attestation证明到区块链中。验证者借助Attestation Service,比如Intel Attestation Service来验证。

用户调用智能合约在TEE服务提供商的enclave中执行,enclave执行了智能合约的结果需要返回给用户,再由用户提交到区块链中,以便更新区块链中的账本。之所以不让enclave直接将结果提交到区块链中,是因为这个过程数据从安全的TEE到TEE以外的非安全环境,因此,当数据被enclave输出到非安全的环境后,它可能被篡改。而且,如果用户希望不上传enclave的执行结果到分布式账本中,我们是不能相信服务提供商确实按照我们的意愿不上传。用户可以直接通过TLS连接TEE服务提供商的enclave环境,进行数据的交流。其他人包括服务提供商是无法篡改和窥探做交流的内容的。

该方案的安全基于TEE不被敌手花费很大的成本攻破的假设。不过,每一个注册在区块链中的智能合约都有自己的一个加密密钥,如果TEE被攻破,那么只会泄露该enclave的智能合约下的数据。对于数据完整性问题不会受到影响,因为我们可以采用同时使用多个enclave实力来执行相同的智能合约,对比执行结果来确定是否有enclave被攻破。

这篇论文的思路不是很清晰,不过大体思想是明确的。论文所提出的方案已经实现并开源了。具体可以参考下面链接,可能需要ti zi。

https://arxiv.org/pdf/1807.05686.pdf

https://docs.google.com/presentation/d/16V0kK9M_z86WwI-PfdltY5plXnkOdFuK84sWFaExH_k/edit#slide=id.p24

https://github.com/hyperledger-labs/private-data-objects

发布了191 篇原创文章 · 获赞 416 · 访问量 77万+

猜你喜欢

转载自blog.csdn.net/liangyihuai/article/details/104524685