书 书 书
第44卷 第12期
2021年12月 计 算 机 学 报
CHINESEJOURNALOFCOMPUTERS Vol.44NDec.o2.01221
收稿日期:20200803;在线发布日期:20210526.本课题得到国家重点研发计划项目(2019YFE0105500)、国家自然科学基金(61872078)、 江苏省重点研发项目(BE20210023)资助.胡甜媛,博士研究生,中国计算机学会(CCF)会员,主要研究方向为软件工程、区块链安全.
Email:1052445594@qq.com.李泽成,博士研究生,中国计算机学会(CCF)会员,主要研究方向为区块链安全.李必信(通信作者),博 士,教授,博士生导师,中国计算机学会(CCF)会员,主要研究领域为软件工程、区块链安全.Email:bx.li@seu.edu.cn.包骐豪,博士研 究生,中国计算机学会(CCF)会员,主要研究方向为软件工程、区块链安全.
智能合约的合约安全和隐私安全研究综述
胡甜媛
1) 李泽成2) 李必信
1) 包骐豪
1)
1)(东南大学计算机科学与工程学院 南京 211189)
2)(香港理工大学计算系 香港 999077)
摘 要 区块链作为对等网络中的一种分布式账本技术,集成了密码学、共识机制、智能合约等多种技术,提供一 种新型信任体系构建方法.智能合约具有公开透明、实时更新、准确执行等显著特点,在区块链中为信息存储、交易 执行和资产管理等功能的实现提供了更安全、高效、可信的方式.但是,智能合约本身仍然存在安全问题,影响了区 块链技术的进一步推广使用.所以,近年来围绕智能合约安全问题的相关研究比较多,为了帮助相关人员更好地理 解和掌握其中的研究思路,本文采用MappingStudy方法,通过收集2015年以来公开发表的关于智能合约安全问 题的各类文献,并进一步通过文献筛查、问题设置、信息提取、结果获取和分析等步骤,总结智能合约安全相关研究 的现状和未来发展趋势如下:(1)目前智能合约自身面临的安全问题和挑战主要体现在合约安全和隐私安全两方 面(问题和挑战).在调查的45篇文献中,有29篇文献针对合约安全,16篇文献针对隐私安全;(2)智能合约安全保 障目前采用的方法主要包括形式化验证、模糊测试、零知识证明、可信执行环境等(保障方法);(3)针对合约安全的 研究目前主要集中在合约实现、测试阶段,而针对智能合约设计、部署及运维阶段的研究比较少;针对隐私安全的 研究主要集中在合约数据隐私保护,而针对合约代码隐私安全的比较少(覆盖范围);(4)智能合约安全保障研究目 前主要从合约实现人员、合约测试人员的角度进行,而从合约维护人员和合约用户角度展开的研究较少(研究角 度);(5)未来研究应该围绕智能合约的全生命周期的每个阶段安全问题进一步推进,先验方法和后验方法、定性方 法和定量方法、静态方法和动态方法的结合是大势所趋(发展趋势).综上,本文通过调研发现了现有研究的不足, 并建议了进一步的研究方向.
关键词 区块链;智能合约;合约安全;隐私安全;映射研究
中图法分类号TP309 犇犗犐号10.11897/SP.J.1016.2021.02485
犆 狅 狀 狋 狉 犪 犮 狋 狌 犪 犾 犛 犲 犮 狌 狉 犻 狋 狔 犪 狀 犱 犘 狉 犻 狏 犪 犮 狔 犛 犲 犮 狌 狉 犻 狋 狔 狅 犳 犛 犿 犪 狉 狋 犆 狅 狀 狋 狉 犪 犮 狋 : 犃 犛 狔 狊 狋 犲 犿犕 犪 狆 狆 犻 狀 犵 犛 狋 狌 犱 狔
HUTianYuan1) LIZeCheng2) LIBiXin1) BAOQiHao1)
1)(犛犮犺狅狅犾狅犳犆狅犿狆狌狋犲狉犛犮犻犲狀犮犲犪狀犱犈狀犵犻狀犲犲狉犻狀犵,犛狅狌狋犺犲犪狊狋犝狀犻狏犲狉狊犻狋狔,犖犪狀犼犻狀犵 211189)
2)(犇犲狆犪狉狋犿犲狀狋狅犳犆狅犿狆狌狋犻狀犵,犎狅狀犵犓狅狀犵犘狅犾狔狋犲犮犺犝狀犻狏犲狉狊犻狋狔,犎狅狀犵犓狅狀犵 999077)
犃犫狊狋狉犪犮狋 Asadistributedledgertechnologyinapeertopeernetwork,blockchainintegrates cryptography,consensusmechanisms,smartcontractsandothertechnologiestoprovideanewtrust systemconstructionmethod.Thesmartcontract,whichistransparent,realtime,deterministic, providesasafer,moreefficient,andcrediblewayfortherealizationoffunctionssuchasstorage, transactionexecution,andassetmanagement.However,thesmartcontractitselfstillsuffers fromsomevulnerabilities,whichhindersitsfurtherpromotionandadoption.Therefore,there hasbeenplentyofrelatedresearchonsmartcontractsecurityissuesrecently.Inthispaper,we adoptthemappingstudymethodandcollectpublishedpapersonsmartcontractsecuritysince
《 计
算 机
学 报
》
2015.Throughliteraturescreening,problemsets,informationextraction,resultacquisition,and analysis,wesummarizethesmartcontractsecurityresearchstatusandfuturetrendsasfollows:
(1)Currentsecurityproblemsandchallengesaremainlyreflectedincontractsecurityandprivacy security.Amongthe45documentssurveyed,29focusedoncontractsecurity,and16focusedon privacysecurity.(2)Themaincontractsecurityenhancementtechniquesincludeformalverification, fuzzing,zeroknowledgeproof,andtrustedexecutionenvironment.(3)Existingcontractsecurity researchesmainlyfocusedonimplementingandtestingsmartcontracts.Bycontrast,littleresearch exploredcontractsecurityproblemsindesign,implementation,andruntimestages;Current privacysecurityresearchesmainlyfocusedoncontractdataprivacyratherthancontractcode privacy.(4)Theresearchonsmartcontractsecurityismainlycarriedoutfromtheperspectiveof contractimplementationandtestingstaff,whilethereisrelativelylittleresearchfromthe perspectiveofmaintainersandusers.(5)Futureresearchesshouldfocusonthesecurityissuesat eachstageofthesmartcontractlifecycle.Thecombinationofprioriandposteriormethods, qualitativeandquantitativemethods,staticanddynamicmethodsisanirresistibletrend.Tosumup, thispaperhasfoundthedeficienciesofexistingresearchesthroughinvestigationandsuggested furtherresearchdirections.
犓犲狔狑狅狉犱狊 blockchain;smartcontract;contractsecurity;privacysecurity;mappingstudy
1 引 言
2009年,比特币开启区块链时代,区块链技术 是比特币的基础,它支持去中心化计算模式的转变. 区块链系统应用传统的密码学原理,结合特有的数 据结构,实现了安全的数据存储和共享.在P2P网 络中,共识机制为区块链系统提供了一种剔除可信 第三方的可信数据共享机制,为上层应用提供安全 的账本支持,区块链在不可信环境下建立起信任关 系,实现价值传递和信任传递.并且由于智能合约的 引入,区块链应用已经远远超出加密货币的范畴,以 智能合约为代表的第二代区块链平台及应用呈现爆 发性增长[1].智能合约作为一种可自动执行的数字 化协议,为区块链增添可编程属性,为实现可编程社 会提供可能[2].智能合约与区块链的结合被认为是 区块链世界中一次里程碑式升级,随着第一个结合 区块链与智能合约的平台以太坊的诞生,迎来“区块 链2.0”时代.
目前,区块链技术在各个领域的应用范围越来 越广,区块链的安全性和隐私保护特性是推动区块 链长远发展的重要因素.然而,由于这一新兴技术发 展时间较短、尚不成熟,各类安全事故频频发生,引 起社会各界对区块链安全问题的广泛关注.
针对以太坊去中心化应用(EthereumDecen tralizedApplication,ETHDApp),本文统计了2016年
1月至2020年6月发生的16起重大攻击事件如表1 所示
①
.通过表1看出,16起事件中有13起事件是 由于智能合约被攻击导致的,智能合约自身存在的 缺陷、合约之间的调用等都是影响合约安全的重要 因素.表1 犈犜犎犇犃狆狆攻击事件
序号攻击时间 攻击目标 损失金额 攻击原因 120160617TheDAO$60,000,000 重入攻击 220170719Parity $31,000,000 犇犲犾犲犵犪狋犲犱犆犪犾犾调用 320171106Parity $1,500,000,000无保护自杀 420180422BEC $6,000,000,000整数溢出 520180710Bancor $12,000,000 疑似私钥被盗 620180731Fomo3D - 合约伪随机数生成 720180801Fomo3D $3,000,000 贪婪挖矿激励机制 820181009SpankChain$40,000 重入攻击 920200215bZx $350,000 多个智能合约调用 1020200218bZx $645,000 多个智能合约调用 1120200418Uniswap $220,000 合约重入攻击 1220200419Lendf.Me$25,000,000 合约重入攻击 1320200425Hegic $28,537 合约漏洞 1420205018tBTC - 合约漏洞 1520200618Bancor $135,229 合约函数漏洞 1620200623DDM $40,000 恶意劫持
目前对于区块链技术的安全和隐私保护,业界 处于初级探索阶段.频发的智能合约攻击事件严重 威胁区块链生态安全,亟需智能合约安全保障技术 支持.于是,很多人开始重视并研究智能合约安全,
6 8 4
2 计 算 机 学 报 2021年
①
ETHDAppattacks.https://hacked.slowmist.io/?c=ETH% 20DApp《 计
算
机
学
报
》
相关研究成果也越来越多.然而,由于研究者来自不 同学科领域,大家关注角度不同,采用的技术方法不 同,解决的安全问题和预期目标也不同,所以现有研 究成果缺乏一定系统性,研究思路也不够清晰,无法 为解决智能合约安全问题形成有力指导.
基于当前智能合约安全的研究工作,本文旨在 通过深度调研并分析已有智能合约涉及的合约安全 和隐私安全方面的相关研究,发现当前研究中存在 的不足,提出需要解决的问题并建议有潜力的研究 方向.为此,首先根据MappingStudy(映射研究)方 法确定3类感兴趣的问题,然后在选定的电子数据 库中广泛检索2015年至2020年发表的智能合约安 全方面的论文,选择有代表性的45篇论文,并根据 需求信息模板从每篇论文中提取关注的信息,最后 通过对信息深度分析、归纳和总结,回答上述3类研 究问题,发现现有研究不足并进一步建议研究方向. 具体来说,本文主要贡献如下:
(1)分析了智能合约安全问题和挑战.从智能 合约的生命周期出发,分析智能合约在设计、实现、 测试、部署、运维不同阶段面临的安全问题和挑战, 以及隐私安全涉及的合约代码安全和合约数据安全 面临的安全问题和挑战,明确了研究目标.
(2)总结了智能合约安全保障方法.针对智能 合约安全面临的问题和挑战,从智能合约生命周期 的角度归纳整理不同阶段的安全保障方法,主要包 括合约设计、合约实现、合约测试和合约部署及运维 安全保障方法;从合约代码隐私和合约数据隐私角 度归纳整理智能合约隐私安全保障方法.
(3)发现了现有方法存在的不足.针对不同的 智能合约安全问题和保障方法,分析现有研究的优 势和不足.大量研究集中在合约实现、测试阶段,其 他阶段的相关研究较少;已有的智能合约测试方法 未形成全面、体系的智能合约检测框架;对运行中的 智能合约,未实现灵活、有效的合约维护、升级机制; 已有的智能合约隐私保护方法存在性能不高、可扩 展性较低、未实现完全去中心化等不足.
(4)建议了进一步研究方向和目标.建议未来 研究要做到先验方法和后验方法融合、定性方法和 定量方法融合、静态方法和动态方法融合.
2 基本术语
21 智能合约
智能合约是被部署在区块链上可自动执行的数
字化协议,也是可按照预设合约条款自动执行的计 算机程序,主要包含相关代码和数据集.智能合约作 为区块链的激活器,其自动化和可编程特性使其可 以封装分布式区块链系统中各节点的复杂行为,成 为区块链构成的虚拟世界中的智能软件代理机器 人.本质上,智能合约既不是合约也不智能,具有较 低的法律效应,目前智能合约规则也无法自动化实 现.但区块链上智能合约具有众多特性,如可编程、 不可篡改、去信任等,通过智能合约可以灵活嵌入各 种数据和数字资产,安全高效地交换信息、管理资 产.区块链中数字资产可以分为数字货币与非数字 货币,由关于该资产的数字文件实现,区块链上交易 的数字资产类型日渐丰富,有能源、实体资产和知识 产权等,由现实中的资产数字化而来.智能合约为传 统商业模式变革带来可能,为构建可编程资产、系统 和社会奠定基础.
22 智能合约应用平台
目前,具有代表性的智能合约应用平台主要是以 太坊(Ethereum)和超级账本(HyperledgerFabric). 其中,以太坊作为公有链的代表,其智能合约主要采 用Solidity语言编写;超级账本作为联盟链(私有 链)的代表,其智能合约又称为链码(Chaincode),由 Java或Golang等语言编写.以太坊作为最早的智 能合约平台,使用较为广泛,因此本文智能合约安全 研究主要围绕以太坊平台展开.
以太坊作为去中心化应用平台,其智能合约负 责存储业务逻辑(程序代码)和应用程序的相关状 态.与比特币、莱特币等搭建自己的区块链运行平台 的加密数字货币不同,通过以太坊发布的加密数字 货币一般称为代币(Token),代币没有自己的区块 链,而是以智能合约形式运行在以太坊平台上.以太 坊不仅仅支持数字货币,还通过智能合约支持更多 应用场景,例如金融、游戏、公证等.
在以太坊中,一个智能合约实际上是一串代码 的合集,包括代码中各种函数以及代码运行过程产 生的各种状态.以太坊支持多种高级编程语言,专门 的编译器将合约编译成字节码后部署到区块链.发 布者在以太坊平台发布合约后,智能合约作为一段 程序被运行在网络中所有节点上,合约发布者无法 修改已发布的合约.由于智能合约一般运行在隔离 的沙箱执行环境中,智能合约会被所有节点执行,并 且任何人都可以发布执行合约,为了防止以太坊网 络发生蓄意攻击或滥用的现象,以太坊协议规定交 易或合约调用的每个运算步骤都需要收取费用,gas
7 8 4 12期 胡甜媛等:智能合约的合约安全和隐私安全研究综述 2
《 计
算
机
学
报
》
就是该费用的计数单位.
由于智能合约代码涉及数字资产,一旦合约代 码缺陷被利用可能造成巨大损失,所以如何保证智 能合约安全至关重要.
23 智能合约安全
目前,智能合约发展仍然处于初级阶段,传统编 程模式和软件生命周期需要进行有效的改造来适应 智能合约的安全需求.区块链系统应用智能合约来 实现复杂的交易,区块链系统要求合约的数据及其 在数据上运行的代码都要公开,每个矿工都要模拟 执行合约,该过程不仅涉及智能合约本身的安全问 题,还存在隐私泄露的风险.本文认为智能合约安全 主要体现为合约安全和隐私安全.
合约安全主要针对合约设计文档、合约代码、合 约运行状态等,要求智能合约不存在设计缺陷、代码 漏洞等不足,涉及智能合约的设计、实现、测试、运维 及部署等多个阶段.
隐私安全主要针对智能合约代码隐私及合约执 行过程中涉及的相关数据隐私,要求保护程序代码 以及程序执行过程中的交易数据不会被非授权节点 获取,主要体现在区块链系统的合约代码和合约数 据两方面.
3 综述方法
MappingStudy(映射研究)是系统性文献综述
(SystematicLiteratureReview,SLR)的一种,其目 的是对某一研究领域进行广泛的概述[3].本文之所 以选择MappingStudy作为调查方法,是因为本文的 目标是分析智能合约安全的研究现状,总结现有研究 取得的成果,探索智能合约安全的未来研究方向.本 文遵循系统性文件综述的方法,参考Kitchenham和 Charters[3]提出的指南,根据MappingStudy方法
的思想,按照以下顺序进行调研分析:
(1)设置研究问题.针对智能合约安全定义相 关研究问题,包括智能合约利益相关者、安全问题及 挑战、安全保障方法、保障方法验证等;
(2)确定文献筛选策略并选择主要文献.针对 智能合约安全主题,定制检索关键词,在选定数据库 中检索相关研究,并筛选出主要文献;
(3)评估主要文献质量.定制质量评估标准,评 估主要文献是否满足质量标准;
(4)定义信息抽取模板.抽取主要文献的关键 信息:定制信息抽取模版,根据信息抽取模版中的规
则抽取与研究问题相关的主要内容.
(5)抽取结果及分析.报告信息抽取的结果,并 进行关联性、趋势性分析等(参见第4节).
(6)讨论现有方法的不足,归纳总结未来可能 的研究方向(参见第5节).
下面,介绍综述研究的各个步骤. 31 研究问题
在任何系统性综述中,明确研究问题最重要[3]. 本文从智能合约研究人员的角度,总结提炼出如下 三类研究问题(如表2所示):通识问题(General Question,GQ)、聚焦问题(FocusedQuestion,FQ)
和统计问题(StatisticalQuestion,SQ).
表2 研究问题列表
问题类别 具体问题 通识问题GQ1 智能合约安全涉及哪些利益相关者?
GQ2 智能合约面临哪些安全问题和挑战?
GQ3 智能合约安全主要有哪些保障方法?
GQ4 智能合约安全保障方法如何验证?
聚焦问题FQ1 引起智能合约安全威胁的原因有哪些?
FQ2 现有智能合约的合约安全保障方法有效性如何?
FQ3 现有智能合约的隐私安全保障方法有效性如何?
FQ4 现有研究方法有哪些不足?
统计问题SQ1 智能合约安全的研究热度如何?
SQ2 智能合约安全的研究报告或研究论文发表在哪些载体上?
通识问题(GQs)涉及到区块链系统中智能合约 安全相关的通识问题.GQ1关注谁参与智能合约安 全保障过程?智能合约从设计到使用涉及多个阶 段,智能合约安全保障包含多个方面,完整安全保障 过程有哪些人参与,都是直接影响智能合约安全的 主导因素.GQ2关注智能合约目前存在哪些安全问 题和挑战?真实存在的安全问题是引起研究者对智 能合约安全产生关注的主要原因;鉴于已有的智能 合约安全问题,智能合约安全保障技术发展面临哪 些挑战?GQ3关注如何通过具体的方法保障智能合 约的合约安全和隐私安全?针对已有的不同类型的 问题和挑战,现有研究通过哪些安全保障技术实现 了合约安全保障和隐私安全保障?GQ4关注智能合 约安全保障方法如何进行验证?不同的安全保障方 法实现不同目的,其安全保障对象和安全保障形式 各有不同.
聚焦问题(FQs)在回答了GQs问题的基础上, 对智能合约安全做出进一步的分析,主要分析现有 的智能合约安全保障技术相关的具体问题以及现有 研究不足.其中,FQ1聚焦于智能合约安全威胁产
8 8 4
2 计 算 机 学 报 2021年
《 计
算
机
学
报
》
生的原因;FQ2关注智能合约的合约安全保障方法 的有效性;FQ3关注智能合约的隐私安全保障方法 的有效性;最后,FQ4关注现有智能合约的合约安 全和隐私安全保障方法的优势和不足.
从文献发表的角度来看,统计问题(SQs)提供 了另一种观察当前研究现状的方式.SQ1关注文献 的发表时间和数量;SQ2关注文献发表的载体,可 以看出相关研究的趋势和成熟度.
32 研究策略与选择
在确定了研究问题的基础上,本小节主要介绍 如何选择研究问题相关的文献,主要包括全面文献 检索和主要文献筛选.
3.2.1 全面研究检索
首先采用全面的检索策略,找到与研究问题相 关的文献,包括检索关键词构建和检索范围界定.为 了获得更好的搜索结果,对关键词组进行细化和优 化.Kitchenham等人[3]建议将搜索问题分解为各个 搜索单元,包括其同义词、缩略语和替代拼写等, 然后通过布尔运算进行组合[3].PIO(Population, Intervention,andOutcome)标准是定义这种搜索
单元的合适方式[4],Population涉及到与技术和标 准相关的术语,Intervention解决的是软件方法论
(或技术、工具、程序)中的一个具体问题.本文的检 索关键词公式如式(1)所示:
检索关键词=populationANDintervention(1) 在本文的智能合约安全场景下,population和 intervention的定义如表3所示.
表3 主要研究检索词
类型 检索词
Population 中文
形式化验证、模型检测、符号执行、抽象解释、 模糊测试、抽象语法树、安全多方计算、 可信执行环境、零知识证明{非交互零知识证 明,简洁非交互零知识证明}
英文
FormalVerification,ModelChecking, SymbolicExecution,Fuzzing,AbstractSemantic Tree(AST),ZeroKnowledgeProof(ZKP), NonInteractiveZeroKnowledgeProof(NIZK), ZeroKnowledgeSuccinctNonInteractive ArgumentsofKnowledgeProof(zkSNARKs), SecureMultiPartyComputation(SMPC), TrustedExecutionEnvironment(TEE) Intervation
中文智能合约安全,合约缺陷{合约漏洞}, 代码安全,代码缺陷{代码漏洞},合约隐私 英文
SmartContractSecurity{Safety}, ContractDefect{Vulnerability}, CodeSecurity{Safety},ContractPrivacy CodeDefect{Vulnerability}
通过表3构建的检索关键词进行检索,本文选 取了表4中10个电子数据库作为本文的检索范围.
这些数据库涵盖了计算机科学与工程领域内最相关 的期刊和会议(包括研讨会).在研究选择时,通过人 工过滤,排除不同数据库产生的重复结果.本文将开 始年份设置为2015年、结束年份设置为2020年.此 外,由于智能合约隐私保护方面的研究相对较少,因 此文献搜索过程中可以关注部分具有权威性的技术 文档.
表4 选择的电子数据库
序号 电子数据库 网址 1 知网 https://www.cnki.net/
2 万方 http://www.wanfangdata.com.cn/ 3 ACMDigitalLibraryhttp://portal.acm.org/
4 EICompendex http://www.engineeringvillage.org/ 5 GoogleScholar http://scholar.google.com/ 6IEEEXplore http://ieeexplore.ieee.org/ 7 DBLPBibliography http://dblp.unitrier.de/ 8SpringerLink http://www.springerlink.com/ 9ScienceDirect http://www.sciencedirect.com/ 10 WebofScience http://www.isiknowledge.com/
3.2.2 主要文献筛选
由于初步检索后得到的文献数量较多,需要对 其进行筛选,从最初的检索结果中排除不相关的文 献,选择最具代表性的文献作为主要文献.首先,由 于不同电子数据库的特点,搜索结果中包含杂质,如 遇搜索关键词直接相关的会议名称,将其人工删除 以保证结果的准确性;其次,检查文献的标题和摘 要,排除不涉及智能合约安全和安全保障技术的研 究;还有部分研究在技术上相似,因此选择最具代表 性的作为主要文献;最后,本文共选择45篇文献作 为研究的主要参考资料,其中包含3篇技术文档. 33 质量评估
针对45篇文献,论文的质量评估至关重要,本 文给出如下8个论文质量评估标准:
QA1:是否有关于研究目的的明确说明? QA2:是否有关于研究背景的充分描述? QA3:是否有关于研究问题相关工作的回顾? QA4:是否有关于智能合约安全保障方法描述? QA5:方法是否经过验证?
QA6:结论是否与研究目的和宗旨相关? QA7:是否有明确的研究结果陈述? QA8:是否建议进一步研究方向?
表5显示了每篇主要文献的质量评估结果.其 中,表示“是”,×表示“否”.除了Bartoletti等人[5] 等9篇文献不包含未来工作展望(Q8),大部分研究 满足本文设计的标准.由于缺失Q8不影响研究结 果,本文不将其删除.
9 8 4 12期 胡甜媛等:智能合约的合约安全和隐私安全研究综述 2