关键词:
可信执行环境
联盟链
智能合约
数据隐私
摘要:
为解决传统中心化系统存在的数据存储不安全以及数据共享困难等问题,基于区块链技术的去中心化系统提供了解决方案,允许互不信任的各方搭建一个可信的全局账本。为保证不同节点上交易数据的一致性和可验证性,交易数据需要以明文的形式在全网公开。因此,恶意节点可以轻易地获取交易隐私数据,并分析得到有价值的信息,由此导致的隐私信息泄露阻碍了区块链技术的进一步应用。虽然可以通过简单的加密完成数据的隐私保护,但是智能合约无法基于密文进行计算,这会导致区块链系统无法正常运行。因此,在保证智能合约正常执行的情况下实现交易数据隐私保护是当前较为热门的研究方向。
Fabric联盟链作为一种部分去中心化的区块链,能够对参与用户权限进行管理,在当前区块链应用中较为热门。针对区块链因数据公开导致的隐私数据泄露问题,Fabric提出了通道和隐私数据集的数据隔离机制,但通道机制存在着性能差、隐私保护范围小的问题,隐私数据集虽然实现了更加细粒度的隐私保护,但研究表明,该机制在遭受泄露攻击(Leakage Attack)时存在数据隐私泄露的可能性。在对已有隐私保护技术进行调研与分析后发现,可信执行环境(Trusted Execution Environment,TEE)技术在区块链隐私保护方面更加热门并且技术更加成熟,因此本文使用TEE进行Fabric数据隐私保护的研究。但经过研究发现,已有基于TEE实现的Fabric数据隐私保护方法存在着可扩展性差、兼容性不高、安全性较低的问题。
针对以上问题,本文提出了一种基于TEE的Fabric数据隐私保护方法,通过将链上涉及隐私数据的智能合约执行过程转移到链下的TEE中,并通过合约完成链上链下的数据交互,实现链下可信算力与链上安全数据存储的结合,以此赋予方法更强的兼容性。此外,针对可扩展性以及安全性问题,本文引入了TEE集群,通过分配多个节点完成隐私计算提高方法的安全性,链下的TEE节点不受链上的身份限制,能够自由地加入集群,因此TEE集群具有更强的可扩展性。最后,在链上链下数据交互的过程中,使用基于交易生成的密钥对数据加密以保证全过程的数据隐私。
为了研究TEE与区块链结合过程中存在的安全性问题,本文从TEE节点安全、TEE代码安全两个角度对方法的安全性进行进一步的分析,分别提出TEE节点激励机制以及TEE执行检查机制,解决TEE执行过程中面对的TEE节点不可信以及TEE代码存在无限循环的问题。此外,针对合约调用较为频繁的应用场景,使用了基于合约的密钥生成协议对已有密钥生成过程进行补充,结合密钥轮换协议防止恶意节点通过侧信道攻击获取TEE中的密钥信息。为了解决链上链下交互过程中存在的性能问题,提出了批量验证以及部分计算结果共识机制进行缓解。针对TEE内代码运行的性能问题,提出基于合约代码转换的方式提高代码运行的效率。
最后,基于Intel SGX和Fabric实现了上述隐私保护方法,以Vickery拍卖为例对方法的有效性以及性能进行实验与分析。实验结果表明,方法能够有效地对拍卖合约中涉及的隐私数据进行保护,并且能够保证合约执行的正确性。相较于已有基于TEE的Fabric数据隐私保护方法,本方法在高并发的应用场景中具有较好的性能;在合约执行速度方面,经过性能优化后的本方法计算延迟是未使用隐私保护方法拍卖合约的60%-70%,是优化前方法的80%-87%;在方法整体性能方面,本方法的吞吐量能够达到原有拍卖合约的70%,计算延迟仅增长50%。最后对方法的抗攻击能力进行模拟实验,实验表明本方法能够有效地抵御攻击者对执行交易的TEE计算节点的Do S攻击。此外,本文还讨论了应对不同攻击方式的缓解措施,证明方法具有较高的隐私性与安全性。