首页 / 以太坊知识 / 解 读 | 一文了解以太坊智能合约的安全问题研究

解 读 | 一文了解以太坊智能合约的安全问题研究

01

导读

       区块链近年来发展迅速,在广泛的产业领域具有相当的应用前景,智能合约作为区块链中一个较为成功的技术,广泛应用在相关的商业环境中。然而,由于安全事件可能会带来经济利益,智能合约的安全问题研究显得至关重要。以太坊是目前最活跃以及富有吸引力的区块链系统,因此本文系统回顾了现有的关于以太坊智能合约安全问题的研究成果,并聚焦于智能合约如何被恶意利用以及非法攻击,同时确认潜在的研究方向与未来的研究计划。

02

研究背景及相关介绍

智能合约的特征

  • 自动执行:交易事务触发,不需要手动交互;
  • 自我强化:一旦被触发,执行完毕前无法停止;
  • 透明性:区块链网络中的每个节点都了解智能合约;
  • 灵活性:智能合约可以随着场景的要求调整。

      以太坊使用图灵完备编程语言来帮助用户开发区块链系统中的智能合约,这使得不同的应用都可以架构于智能合约之上,也正因此,以太坊成为了第二代的区块链系统。

研究的原因

  • 以太坊是第一个实现了图灵完备智能合约的区块链系统;
  • 以太坊是最受欢迎并广泛使用的智能合约平台;
  • 以太坊交易事务吞吐量位列第一;
  • 以太坊智能合约使用的Solidity语言是广泛应用的编程语言。

本文的主要贡献

  • 系统描绘智能合约的安全挑战,分别是:异常的合约、项目安全隐患、不安全的外部数据;
  • 系统描绘可能的解决办法;
  • 未来的研究规划。

03

相关背景知识

区块链 

  • 区块链系统中的各个节点通过竞争或者合作的方式维持一个相同的账本;
  • 每个验证后的交易都会被打包到区块中;
  • 后一个区块通过存储前一个区块的哈希值完成链接;
  • 对于不同节点拥有的相同智能合约,为了都能够在相同输入的时候,产出相同的输出,需要保证智能合约的确定性;
  • 在区块链层面,需要确保分布式账本技术在全部节点中的正确与连续性。

智能合约

     智能合约包括三个关键的组成部分,分别是账户、交易事务、EVM(以太坊虚拟机)。

  • 账户包括外部账户与合约账户,外部账户通过公私钥对控制,并通过发送交易来管理以太币,与其他合约账户交互;合约账户由代码控制且不需要密钥,主要用来实施不同的功能需求,记录合约状态变化;两种账户都会存储随机数,这主要是用来应对重放攻击与双花攻击;
  • 交易事务:每笔交易将指定其帐户的随机数,gas的价格,该特定交易的最大gas付款,转让价值,收件人,输入数据和签名 ;
  • EVM(以太坊虚拟机):EVM是一种基于堆栈而不是注册的体系结构,它提供了一个独立的执行环境,以保护合约执行免受外部攻击,并避免恶意合约影响整个系统 。

04

综述撰写流程

      由于智能合约的发展仍然处于起步阶段,因此本文按照如下图1所示系统分类研究的方式进行综述的撰写工作。

     本文聚焦于智能合约中非正常合约、项目安全威胁、外部环境三类安全问题,并按照图2所示分类方式进行论述。

05

非正常的合约

     智能合约部署于区块链网络中的所有矿工节点上,一旦被触发,所有的节点都将执行该智能合约。以太坊的智能合约平台提出了gas机制,并以此控制交易发送者的计算、存储消费。非正常的合约分类包括犯罪勒索、恶意合约、过高的成本三个方面。

犯罪勒索

     网络犯罪勒索软件等的特点为:通过智能合约支付不可中止,参与者匿名,智能合约完成支付后可以自动销毁。智能合约在攻击中起到杠杆的作用,即在不控制大多数算力的情况下,通过智能合约的部署来雇佣其他矿工挖掘叔区块或者硬分叉。

     解决方案:不同的机构间构建区块链联盟,实时监控公有区块链系统,数据分析查明非法交易及相关的账户。

恶意合约

      恶意合约通过设置后门等行为来窃取合约的数字资产。由于合约代码并不是强制性开源的,因此很难发现这些留有后门的恶意合约。

     解决方案:将合约的字节码转换成易读懂的伪代码、作业码、源码等,方便理解,从而检测是否留有后门。

过高的成本 

     成本过高的合约通常表现为昂贵的gas消耗或者繁重的验证工作。

     解决方案:个体仅接收并验证合理gas设置的交易数据。

06

项目安全威胁

     项目安全威胁分类代指由于语言缺陷、个体能力等客观原因造成的代码错误等问题。

语言的缺陷

     编程语言的限制是智能合约安全威胁的一个重要原因,对于区块链智能合约而言,并行编程功能十分重要,下表是几种智能合约语言相关特征的比较。

代码错误 

代码错误分类包括漏洞检测、错误赏金计划以及合约升级三个方面。

  • 漏洞检测:包括静态分析、动态分析以及代码相似性分析三种,其中静态分析指遍历代码的时候符号化执行并形式化验证;动态分析指通过大量随机输入,从执行日志中发现智能合约漏洞;代码相似性分析指通过机器学习等方法检测智能合约漏洞;
  • 错误赏金计划:通过经济措施激励第三方发现错误并主动告警;
  • 合约升级:通常将合约分为逻辑合约与数据合约,其中数据合约不可升级改动,逻辑合约可以依照商业逻辑等升级改动。

07

外部环境

     诸如执行环境、区块链网络、不可信数据库等外部环境因素均可能影响合约的安全。

孤立的执行环境

     EVM是用来执行智能合约的虚拟机,与物理主机相分隔,因为智能合约的执行收到交易gas的限制,因此EVM是半图灵完备。由于EVM以不透明的方式执行智能合约,因此当调用外部合约时比较复杂。

恶意区块链网络 

     利用区块链分叉特点的双花攻击等行为,以太坊中通常采取设计不同的哈希规则来应对。

非随机的随机数

      诸如区块哈希、时间戳等随机数很容易被矿工操纵或预测。这些所谓的随机数其实并不随机,即使如VRF可验证随机数,也有可能会被提前预测。

不可信的线上数据源 

    线上数据未必是正确且连续的,无论是第三方数据库还是链下数据库都有可能出错。

08

挑战与未来工作

挑战与可能的解决方案

  • 使用机器学习方法区分智能合约真伪;
  • 提供高效的gas工具;
  • 设计一个保持乃至优化智能合约性能的更安全的编程语言;
  • 发现智能合约的弱点,并升级智能合约。

未来工作

  • 将安全研究从智能合约扩展到智能合约与前端应用及商业逻辑范畴;
  • 通过机器学习方法寻找智能合约的bug,检测复杂的逻辑错误,核实智能合约的行为;
  • 深入探究智能合约在跨链等新环境中的安全性。

09

总结

     本文调查了基于区块链的智能合约从诞生(2015年7月)到本文写作(2019年7月)的现有文献,并提出了关注各种安全挑战和潜在缓解策略的分类。此外,本文还提出了一些有前景的研究领域,以促进合约安全。

本文来自网络,不代表币懂得立场,转载请注明出处:http://www.blogboleh.com/699

币懂得作者

上一篇
下一篇

为您推荐

发表评论

您的电子邮箱地址不会被公开。

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@zhutibaba.com

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

手机访问
手机扫一扫打开网站

手机扫一扫打开网站

返回顶部