论文部分内容阅读
随着区块链技术的飞速发展,从金融到供应链,从版权保护到物联网,区块链逐渐渗透到各行各业。与此同时,区块链自身的安全问题也越来越引起人们的重视,区块链相关安全事故频发,给用户带来极大的经济损失,更体现出了安全的重要性。区块链具有去中心化、不可篡改、匿名性三大特性,由于其利用了公钥签名、哈希算法、梅克尔树等密码学技术,使得区块链一直被认为是安全高效的电子货币。然而事实证明,只要是人类编写的程序,比如区块链客户端、钱包应用、交易所等,难免出现各种各样的被黑客利用的漏洞。例如2015年比特币主程序爆出整数溢出漏洞,造出天价比特币,导致比特币区块回滚;2016年以太坊“The Dao”事件中,黑客利用智能合约的重入攻击漏洞盗走价值六千万美元的以太币,并导致以太坊硬分叉;各大交易所持续不断被黑客入侵,盗走巨额电子货币的事件屡见不鲜。本论文正是基于这样一个背景,研究针对区块链的攻击方法和防御技术,揭露区块链相关系统的脆弱性事实,主要是终端安全、Web交易所安全和智能合约安全,并提出相应的防御技术。本论文研究成果与创新点主要包括:1、本论文通过三个真实案例详细分析了区块链系统的脆弱性和攻击方式。第一个案例是对一款比特币钱包应用(APP,Application)的木马分析,第二个案例是对一个在线运营中的电子货币交易所的Web安全分析,第三个案例是对一款以太坊分布式应用(DAPP,Distributed Application)的安全分析。本论文运用软件逆向、渗透测试、机器学习等方式对这些应用的脆弱性进行分析,并提出相应的利用方式或防护方法。2、本论文针对区块链智能合约的特性提出了对Solidity进行代码审计的防御方案。本论文详细分析了基于以太坊虚拟机(EVM,Etheruem Virtual Machine)的编程语言Solidity的现存漏洞,如重入攻击、整数溢出、变量覆盖、蜜罐合约、拒绝服务等。研究其形成原理、利用方式和危害,大部分漏洞都列出了示例代码和攻击步骤,所有代码均经过测试和验证。由于区块链无中心、不可篡改的特性,部署在区块链上的智能合约一旦出现安全问题,很难通过升级、打补丁等措施来补救。目前比较有效的防护方案是在合约部署前对源代码进行安全审计。本论文深入学习和研究了基于EVM的开源代码审计工具Oyente,然后对其进行了功能扩展,使其支持更多的漏洞类型检测,包括对“变量覆盖”、“隐藏源代码”、“孤立代码块”、“危险函数调用”四种类型的检测。