计算机学报
原文作者:胡甜媛 李泽成 李必信 包骐豪*
原文标题:智能合约的合约安全和隐私安全研究综述*
原文链接:智能合约的合约安全和隐私安全研究综述 - 中国知网
原文来源: 计算机学报
笔记作者:quangaoyuan
笔记小编:quangaoyuan
区块链;智能合约;合约安全;隐私安全;映射研究
智能合约本身仍然存在安全问题,影响了区块链技术的进一步推广使用。本文采用Mapping Study方法(属于系统文献综述中的一种方法,意思是映射研究),通过收集2015年以来的关于智能合约安全问题的各类文献,总结智能合约安全相关研究的现状和未来发展趋势如下:
(1)目前智能合约自身面临的安全问题和挑战主要体现在合约安全和隐私安全两方面(问题和挑战),在调查的45篇文献中,有29篇文献针对合约安全,16篇文献针对隐私安全;
(2)智能合约安全保障目前采用的方法主要包括形式化验证、模糊测试、零知识证明、可信执行环境等(保障方法);
(3)针对合约安全的研究目前主要集中在合约实现、测试阶段,而针对智能合约设计、部署及运维阶段的研究比较少;针对隐私安全的研究主要集中在合约数据隐私保护,而针对合约代码隐私安全的比较少(覆盖范围);
(4)智能合约安全保障研究目前主要从合约实现人员、合约测试人员的角度进行,而从合约维护人员和合约用户角度展开的研究较少(研究角度);
(5)未来研究应该围绕智能合约的全生命周期的每个阶段安全问题进一步推进,先验方法和后验方法、定性方法和定量方法、静态方法和动态方法的结合是大势所趋(发展趋势),综上,本文通过调研发现了现有研究的不足,并建议了进一步的研究方向,
以太坊应用2016年1月至2020年6月16起重大攻击事件,13起由于智能合约被攻击导致的。
目前对于区块链技术的安全和隐私保护,业界处于初级探索阶段。
本文主要贡献如下:
(1)分析了智能合约安全问题和挑战,从智能合约的生命周期出发,分析智能合约在设计、实现、测试、部署、运维不同阶段面临的安全问题和挑战,以及隐私安全涉及的合约代码安全和合约数据安全面临的安全问题和挑战,明确了研究目标.
(2)总结了智能合约安全保障方法.针对智能合约安全面临的问题和挑战,从智能合约生命周期的角度归纳整理不同阶段的安全保障方法,主要包括合约设计、合约实现、合约测试和合约部署及运维安全保障方法;从合约代码隐私和合约数据隐私角度归纳整理智能合约隐私安全保障方法.
(3)发现了现有方法存在的不足,针对不同的智能合约安全问题和保障方法,分析现有研究的优势和不足,大量研究集中在合约实现、测试阶段,其他阶段的相关研究较少;已有的智能合约测试方法未形成全面、体系的智能合约检测框架;对运行中的智能合约,未实现灵活、有效的合约维护、升级机制;已有的智能合约隐私保护方法存在性能不高、可扩展性较低、未实现完全去中心化等不足
(4)建议了进一步研究方向和目标,建议未来研究要做到先验方法和后验方法融合、定性方法和定量方法融合、静态方法和动态方法融合。
本文认为智能合约安全主要体现为合约安全和隐私安全。
Mapping Study(映射研究)是系统性文献综述(Systematic Literature Review, SLR)的一种,其目的是对某一研究领域进行广泛的概述,
本文之所以选择Mapping Study作为调查方法,是因为本文的目标是分析智能合约安全的研究现状,总结现有研究取得的成果,探索智能合约安全的未来研究方向,
本文遵循系统性文件综述的方法,按照以下顺序进行调研分析:
(1)设置研究问题,针对智能合约安全定义相关研究问题,包括智能合约利益相关者、安全问题及挑战、安全保障方法、保障方法验证等;
(2)确定文献筛选策略并选择主要文献,针对智能合约安全主题,定制检索关键词,在选定数据库中检索相关研究,并筛选出主要文献;
(3)评估主要文献质量,定制质量评估标准,评估主要文献是否满足质量标准;
(4)定义信息抽取模板,抽取主要文献的关键信息:定制信息抽取模版,根据信息抽取模版中的规则抽取与研究问题相关的主要内容.
(5)抽取结果及分析,报告信息抽取的结果,并进行关联性、趋势性分析等
(6)讨论现有方法的不足,归纳总结未来可能的研究方向
45篇文献。
针对智能合约的合约安全和隐私安全,从问题及挑战、原因分析、保障方法和方法验证这4个角度进行总结,涵盖智能合约的设计、实现、测试、部署及运维多个阶段,涉及智能合约的代码隐私和数据隐私。
本文对智能合约安全进行了全面的调研,主要有以下研究发现.
GQ1:在智能合约安全保障过程中,共涉及合约设计人员、合约实现人员、合约测试人员、合约监管人员和合约用户这5类利益相关者.
GQ2:智能合约的安全和挑战主要包括合约安全和隐私安全,针对合约安全,主要体现在合约设计、实现及测试、部署及运维,隐私安全则主要关注合约代码隐私和合约数据隐私,针对5种不同类型的合约安全和隐私安全问题,智能合约面临着不同安全挑战.
GQ4:针对智能合约安全保障方法验证,合约安全保障方法主要通过分析、实践、举例的方式进行验证,GQ3:针对智能合约安全保障方法,合约设计相关研究主要通过定义抽取设计模式展开;合约实现及测试相关研究主要应用定理证明、模型检测、模糊测试、抽象语法树等技术检测智能合约缺陷;合约部署及运维主要分析日志或信息流图,监测合约异常行为,发现合约缺陷、EVM漏洞并制定相关防御策略;代码隐私保护方法主要集中在合约拆分、合约语,言设计和TEE技术应用;数据隐私主要结合零知识证明、安全多方计算等密码学技术对数据进行加密,或将数据加载至可信执行环境保护隐私,
FQ1:对于合约安全,设计文本、合约编码规范、实现语言、EVM机制、外部合约调用、运行环境等因素都可能与合约安全威胁产生相关;对于隐私安全,公有链公开透明的性质和合约隐私保护机制不健全对合约代码隐私产生威胁,此外,公开数据的恶意分析和合约用户泄漏都可能导致数据隐私威胁,
FQ2:已有的合约安全保障研究初步提出了合约设计理念、实现了大部分智能合约缺陷检测、完成了基本的合约运行状态监测,但是,安全可信的智能合约设计仍没有形成健全的体系;合约测试方法多样,每种方法可检测的缺陷类型有限,未形成全面、体系的智能合约缺陷检测框架,通用性不高;对于合约部署及运维安全,尚未实现灵活、有效的合约维护机制,
FQ3:已有的合约代码隐私保护方案能够实现智能合约代码核心内容保护,但存在应用场景不丰富、适用平台不广泛等问题;合约数据隐私保护方案结合密码学技术实现不同程度的合约数据隐私保护,主要存在性能和没有实现完全去中心化的问题FQ4:智能合约安全的未来研究方向针对合约安全和隐私安全展开,支持智能合约全方位、全生命周期的安全保障,基本思路是先验方法和后验方法结合、定性方法和定量方法结合、静态方法和动态方,法结合.
SQ1:该领域的研究始于2015年,2016年仅有少量相关研究成果发表,2018年开始研究成果数量增长迅速,并有继续上升的趋势,
SQ2:18篇文献发表在软件工程或安全领域的顶级期刊和会议,说明智能合约安全是一个备受关注的新兴课题
合约安全研究
1.设计安全保障技术
智能合约设计模式的研究仍然处于起步阶段,相关研究数量有限,需要对已经整理好的模式,进行扩展,为Solidity语言创建一个结构化的、信息量大的设计模式库,涵盖典型的和常见的编码场景,作为合约实现人员的指导;
也可以在自动代码生成框架中应用设计模式,用来提取代码构件,这些构件可以被集成到自动代码生成框架中,Solidity设计模式可以与其他智能合约平台中发展的编码实践进行比较,进一步揭示出更抽象的设计模式,这些模式独立于底层实现框架,对一般的智能合约有效
2.实现及测试安全保障技术
针对主流的智能合约缺陷检测原理,可以将智能合约缺陷检测技术划分为:基于定理证明的缺陷检测、基于模型检测的缺陷检测、基于模糊测试的缺陷检测、基于语法树的缺陷检测和其他缺陷检测。
3.部署及运维安全保障技术
目前,针对智能合约运行环境安全检测的研究数量较少,本文仅涉及1项相关研究,即EVM漏洞检测工具EVMFuzzer,该工具目前主要检测EVM执行结果不一致的漏洞,
针对合约运行状态的监测,ContractGuard[36]由于嵌入了额外的代码,一定程度上会增加智能合约的部署开销与运行开销, Vultron[20]检测方法不适用于不使用内部记账逻辑,的智能合约,无法检测时间截依赖性或交易顺序依赖性等缺陷.AEGIS[21]系统保护已部署的智能合约,实现攻击模式的动态更新,但是该工具对于新攻击模式的引入依赖于预定投票群体达成共识,攻击模式以纯文本的形式公开,可能被潜在攻击者利用.对于智能合约缺陷修复,EVMPatch8]对存在缺陷的合约进行打补丁,但是可能导致修复后的合约代码产生更高gas消耗
隐私安全研究
1.合约代码隐私保护
保护用户隐私的智能合约编程框架Hawk可以为部分智能合约代码提供隐私性,但Hawk不是完全去中心化的,存在一个管理者作为可信第三方进行监督,此外,对于简单合约,由于Hawk利用zk-SNAKRs保证资金转移和合约执行的正确性,导致较高计算开销。
目前,Hawk由于效率较低,不能直接部署在大多数区块链系统上对于通过定义智能合约语言Zkay保护智能合约中的关键信息,该方法需要结合语言发展不断引人新的语言特性,以支持更丰富的智能合约代码隐私保护。
此外,智能合约代码形式多样,通过对部分私有代码元素进行加密是否能全面保护私有信息不被泄露需要进一步验证,并且为了执行Zkay合约,需要将其转换为具有相同功能且具有隐私保护能力的Solidity合约在以太坊上执行,推广使用难度较高
与Hawk,Zkay不同,结合TEE的Coco框架具有更好的通用性,理论上可以实现任意区块链系统的隐私保护,然而,Coco框架是针对联盟链的优化技术,对现有比特币、以太坊等架构影响有限 。
2.合约数据隐私保护
根据隐私保护技术对智能合约隐私保护方法进行分类,可以分为基于软件的合约数据隐私保护方法和基于硬件的合约数据隐私保护方法,基于软件的隐私保护方法就是使用密码学技术,主要包括零知识证明、同态加密和安全多方计算;基于硬件的隐私保护方法就是使用可信执行环境.
目前智能合约隐私保护的方法核心仍然集中在密码学技术,复杂的密码学技术原理和隐私保护过程对交易数量、交易处理效率产生限制,也是制约智能合约隐私保护技术的主要因素,不同的隐私保护技术都有其各自的优势和不足,如何针对区块链技术的不同应用场景,因地制宜定制不同隐私保护策略是未来研究方向之一.