智能合约安全与实施规范研究
来源:用户上传
作者:
摘 要:自区块链2.0时代以来,以智能合约为代表的第二代区块链平台及应用呈爆发式增长,但随之而来的智能合约安全事件也频繁发生。区块链3.0时代,智能合约因其固有的去信任化、自动性、防篡改、可追溯等技术特性,必将被广泛应用。但是,在此前景之下,智能合约的安全性成为了区块链生态安全的基石。文章创新地提出了智能合约3.0—智慧合约的概念,并基于智能合约基础架构研究了智能合约安全威胁,提出了一套基本的智能合约安全实施规范,旨在为智能合约安全实施提供参考与借鉴。
关键词:区块链;智能合约;去中心化;基础架构;智能合约安全
中图分类号: TP309 文献标识码:A
Abstract: Since the era of blockchain 2.0, the second generation of blockchain platforms and applications represented by smart contracts have grown explosively, but the security incidents of smart contracts are also frequent. In the era of blockchain 3.0, smart contract will be widely used because of its inherent technical characteristics of de trust, automation, anti tampering and traceability. But in this perspective, the security of smart contracts has become the cornerstone of the ecological security of blockchain. This paper puts forward the concept of smart contract 3.0 - Smart contract through innovation, studies the security threat of smart contract based on smart contract architecture, and puts forward a set of basic smart contract security implementation specifications, aiming to provide reference and reference for the implementation of smart contract security.
Key words: blockchain; smart contract; decentralization; basic framework; smart contract security
1 引言
近年來,随着世界各国聚焦区块链技术创新与产业应用,区块链及智能合约技术在全球范围内得到了快速发展,并且成功地进入了以“以太坊”平台为标志的区块链2.0时代。智能合约技术作为划分区块链1.0时代的关键技术,从以太坊开始,正式登上了区块链发展的里程碑。智能合约已在许多区块链系统上成功实现,比较著名的系统有以太坊和超级账本。以太坊(Ethereum)是一个开源的支持智能合约功能的公共区块链平台,利用智能合约能够在平台上创建任何去中心化的应用(Dapp)。超级账本(Hyperledger Fabric)是一个为联盟链而设计的系统,支持种类繁多的非确定性智能合约(链码 Chaincode)和可插拔的服务,具有良好的灵活性、通用性和可扩展性。当前,智能合约还广泛应用于存证、能源、金融、公益慈善等领域,各种可执行智能合约的区块链呈井喷式增长,应用前景十分广阔。
当然,智能合约作为一段程序,无可避免地会存在漏洞,黑客攻击这些漏洞给智能合约带来了一系列的安全挑战。如2016年以太坊上发生的DAO(Decentralized Autonomous Organization)攻击,导致6000万美元的以太币被盗;2017年,以太坊库合约被开发者误删除,导致依赖于该库合约的钱包无法正常工作,损失了2.8亿美元的以太币;2018年,美链被攻击者利用智能合约BatchOverFlow数据溢出的漏洞,产生大量代币并抛售,致使美链凭空蒸发60亿元人民币的BEC[1]。智能合约安全问题正逐渐成为行业的聚焦点,文章通过对智能合约安全威胁进行研究,提出了一套完整的智能合约实施规范,将极大地降低智能合约全生命周期的安全威胁。
2 智能合约基本内涵
2.1 定义与发展历程
智能合约(Smart Contract)[1]这一概念可追溯到20世纪末。由尼克萨博(NickSzabo)首次提出智能合约的定义为:“智能合约是一个由计算机处理的、可执行合约条款的交易协议。”这一概念,可以解释为自动化的自我执行协议,标志着智能合约1.0时代的到来。智能合约在1.0时代大多应用于自动售货机的物理设定中,自动售货机会根据触发的条件释放相应的物品。但是,由于智能合约1.0时代,缺乏可信操作环境,缺乏支持可编程合约的数字系统和技术,智能合约并未被广泛应用于实际产业中。直到区块链技术的兴起,使得该问题得以解决,区块链不仅能够支持可编程合约,并具有去中心化、不可篡改、过程透明、可追踪等优势,为智能合约提供了一个完美的解决信任问题的机制。2013年以太坊项目成功地将智能合约引入了区块链,拓展了区块链在货币领域之外的应用,智能合约2.0时代正式到来,如图1所示。 如今,广泛认为智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,是在计算机代码中构建的形式定义的承诺,合约参与方可以执行存储在区块链上的承诺协议,通过计算机或计算机网络自动执行,一旦双方达成协议并执行,处罚执行条件会自动输出结果。目前,以太坊已成为最主流的智能合约开发和运行平台,随着Dapp的发展,智能合约将迎来全面爆发的3.0时代—智慧合约,智慧合约将是全面实现合约智能处理、自动社会的基础设施,如图2所示。
2.2 技术特征
智能合约的运用目的是为了提供优于传统合约的安全方法,可以将应尽义务转变为自动化流程,从而保证更高程度的安全性。智能合约允许在没有第三方的情况下进行可信交易,减少对中介方的依赖,并减少与合约相关的其他交易成本,同时保证这些交易可追踪且不可逆转。总的来说,智能合约具有去信任化、自动性、防篡改、可追溯等技术特性[3]。
去信任化:智能合约的所有条款和执行过程都是预先制定好的,一旦部署运行,合约中的任何一方都不能单方面修改合约内容以及干预合约的执行。同时,合约的监督和仲裁都由计算机根据预先制定的规则来完成,明显地降低了人为干预风险.
自动性:当智能合约成功部署到区块链上之后,智能合约就会立刻生效,自我验证、自我执行,当触发合约内容设立的执行条件时,智能合约可以自动输出相应的结果而不需要依赖当事人的配合。鉴于此,可以看出智能合约将明显地节省缔约方在合约执行期间人力、物力、财力的资源浪费。
防篡改:区块链本身的所有数据不可篡改,因此部署在区块链上的智能合约代码以及运行产生的数据输出也是不可篡改的,运行智能合约的节点不必担心其他节点恶意修改代码与数据。
可追溯:智能合约通过区块链技术的数字签名和时间戳,保证了合约的一切执行运作过程记录在链,有迹可循,确保了安全可溯源。
2.3 基础架构
智能合约不仅是一段可以自动执行的计算机程序,同时也是系统的参与者。它可以对接收到的信息进行回应,既能够实现接收和储存价值,又可以向外发送信息和价值。总体来说,区块链智能合约包含基础设施层、传输层、合约层、维护层、执行层以及应用层[4],如图3所示。
基础设施层包括基础数据账本、共识算法、基础运行环境等,它们是智能合约运行的必要基础。传输层则封装了用于支持账本数据通信、传输的协议。合约层包含了合约文件、合约代码、应对准则等内容。维护层主要包含对合约代码进行形式化验证、检测审计、升级维护、运行废止等。执行层主要封装了智能合约运行环境的相关软件。应用层则相对智能合约在各领域应用,它主要是为智能合约与其他计算机、应用程序通信服务的。
3 智能合约安全威胁
3.1 漏洞威胁
智能合约由于部署在区块链上,具有复杂的时间依赖和次序依赖关系,合约代码逻辑属性的正确性以及合约代码和合约文本的不确定性、不一致性,将导致智能合约本身存在漏洞,进而导致智能合约受到漏洞攻击,最终会导致自动性执行结果的输出错误。常见的智能合约漏洞威胁包含整数溢出漏洞、短地址漏洞、拒绝服务漏洞等。
整数溢出漏洞:在智能合约代码中整数类型均为无符号整数,最小的就是0,在算术运算中出现越界,就会出现整数溢出漏洞。超出整数类型的最大表示范围,数字便会由一个极大值变为一个极小值或直接归零,这叫“上溢”,如假设合约中最大值为X,当X+1=0时即发生整数上溢漏洞;超出整数类型的最小表示范围时,数字便会由一个极小值或者零变成一个极大值,如0-1=X,即发生整数下溢漏洞。
短地址漏洞:短地址漏洞是虚拟机未能接受正确参数的副产物。攻击者可以通过特定制作的地址,利用这个弱点,针对部分编码错误的客户端进行参数填充。
拒绝服务漏洞:拒绝服务漏洞是指让目标机器停止提供服务,通常被黑客利用拒绝服务攻击方式进行攻击。这种攻擊方式可以让合约执行正常的交易操作被扰乱、中止、冻结,更严重的是让合约本身的逻辑无法运行。
3.2 隐私安全威胁
智能合约运行在区块链上,没有任何第三方进行信用背书,因此智能合约不同于传统合约的隐私保护。智能合约中的隐私安全威胁主要是攻击者对身份隐私和交易隐私的攻击,目前主要隐私安全威胁包括匿名性威胁、权限控制威胁和链上信息威胁等[5]。
匿名性威胁:区块链上的信息是以分布式账本的形式存储在链上,任何一个节点都可以通过公开或者外部函数获取到合约的内容。机关智能合约交易具备一定的匿名性,但随着技术的发展,匿名性已经不能完全保护个人身份隐私。通过大数据的技术,攻击者可以通过分析交易规律,甚至能够推测出用户的身份信息和位置信息。
权限控制威胁:假设对于智能合约的可视性没有进行良好的安全设置,攻击者很容易查看并获取合约的隐私内容和内部逻辑,他们能够找到绕过限制的方式,例如运用合约使用tx.origin对调用者进行验证时触发权限控制威胁。
链上信息威胁:智能合约中对交易双方信息保护的措施是通过对信息加密,防止攻击者获得有用的信息。但是,在链上加密交易信息的过程中,一方面要保证不能让非交易者看到交易的信息,另一方面需要验证交易的正确性,对交易内容不能完全加密。这两者本身存在矛盾,也是隐私安全的威胁。
4 智能合约安全实施规范
4.1 安全实施框架
当前,应对智能合约安全威胁解决的主要办法是:按照智能合约全生命周期安全实施规范进行合约的实施,在合约创建前期,进行详细的需求收集计划;合约创建要符合代码书写规范、逻辑要求等规范性要求;严格按照在合约正式部署到区块链平台前,对合约进行尽可能完善的漏洞检查与安全审计。智能合约的安全实施框架根据其运行机制可概括为需求收集与规划、合约创建、安全审计、合约部署、触发执行、废止六个阶段,如图4所示。 智能合约安全实施执行标准流程分为六步。
(1)需求收集和规划:包括从多个来源收集输入事实,同时注意需求的可追溯性。
(2)合约创建:编写符合指定需求的程序代码,避免逻辑性冲突,避免已知的逻辑漏洞和低级的逻辑错误。
(3)安全审计:首先在内部审核代码,进行形式化验证,然后在所有前提条件下提交外部安全审核。
(4)合约部署:将智能合约部署上链,执行自动化运行。
(5)触发执行:通过相关调用达到触发条件,智能合约执行输出结果。
(6)合约运行:执行从合约部署、合约实例化、合约执行直到合约废止整个生命周期流程。
4.2 智能合约创建
智能合约的创建主要是体现在代码设计规则性上。在编写智能合约代码时,应符合代码书写规范、逻辑要求等规范性要求,使用已经广泛应用的安全技术和工具,合约和函数应模块化,避免出现逻辑性冲突,避免已知的逻辑漏洞和低级的逻辑错误,如转账前余额未校验,未检查返回值的调用等。同时,对智能合约语言进行约束,包括数据类型、计算类型和计算基本结构等内容[6],如表1所示。
4.3 合约安全审计
智能合约的安全审计采取自身与第三方安全机构审计,包括智能合约设计及业务逻辑安全、源代码安全审计、编译环境审计及相关的应急响应审计,具体操作主要体现在对代码进行函数可见性审核、合约限制绕过审核、调用栈耗尽审核、进行拒绝服务审核等测试分析。发现智能合约漏洞后,应及时反馈,保证检査和修复智能合约源代码。
4.4 合约运行生命周期
智能合约通过安全审计之后,将进行上链部署运行,整个运行生命周期可分为合约部署、合约实例化、合约执行、合约废止四个周期,如图5所示。
(1)合约部署是将合约代码部署到区块链网络节点的智能合约运行时环境中的过程。
(2)合约实例化是将智能合约代码转换成运行环境可执行格式的过程,该过程由智能合约运行环境自动完成。
(3)合约执行是执行智能合约业务逻辑的过程,这一过程展现出智能合约技术自动性的特性。
(4)合约废止是废弃已部署智能合约的过程,该过程以接口调用的方式,在区块链中达成共识后生效,智能合约废止后,在区块链网络中保存被终止版本的智能合约代码。
5 结束语
自以太坊項目成功提供图灵完备的智能合约后,区块链技术逐渐成为分布式应用建设的底层基础设施,为智能合约的发展提供了良好的实验蓝田。随着智能合约创新发展应用,智能合约的安全问题也正受到关注,虽然国内外在智能合约安全研究已取得不少的成果,但随着区块链3.0时代的到来,不断提高智能合约安全技术仍是区块链发展的重点研究领域。本文创新地提出了智能合约3.0—智慧合约概念,并基于智能合约架构研究了智能合约安全威胁,提出了一套基本的智能合约安全实施规范,以期能够为智能合约安全和隐私保护的未来研究做出一些有益的探索。
参考文献
[1] 许雄.区块链智能合约技术的研究[D].成都:电子科技大学, 2019.
[2] 贺海武,延安,陈泽华.基于区块链的智能合约技术与应用综述[J].计算机研究与发展,2018,55(11):2452-2466.
[3] 付梦琳,吴礼发,洪征,等.智能合约安全漏洞挖掘技术研究[J].计算机应用,2019,39(07):1959-1966.
[4] 欧阳丽炜,王帅,袁勇,等.智能合约:架构及进展[J].自动化学报, 2019,45(03):445-457.
[5] 王化群,张帆,李甜,等.智能合约中的安全与隐私保护技术[J].南京邮电大学学报(自然科学版),2019,39(04):63-71.
[6] 王继辉.区块链与智能合约图谱分析[J].网络空间安全, 2019,10(11):1-6+25.
[7] 王栋,石欣,陈智雨,吕梓童.区块链智能合约技术在供应链中的应用研究[J].网络空间安全,2018,9(08):8-17.
作者简介:
魏昂(1995-),男,汉族,安徽宿州人,青岛科技大学,硕士,赛迪(青岛)区块链研究院有限公司,工程师;主要研究方向和关注领域:区块链技术、网络安全、金融科技。
黄忠义(1989-),男,汉族,山东青岛人,中国石油大学,硕士,赛迪(青岛)区块链研究院有限公司,工程师;主要研究方向和关注领域:区块链、工业互联网、物联网、智能制造。
周鸣爱(1988-),女,汉族,河北张家口人,河北工程大学,硕士,赛迪研究院网络安全研究所,工程师;主要研究方向和关注领域:区块链、计算机软件 、网络安全。
转载注明来源:https://www.xzbu.com/1/view-15250762.htm