在区块链技术安全范畴中,既有“传统”互联网世界中面临的网络拒绝服务攻击、代码漏洞等攻击威胁,也包含区块链独有的风险点(如智能合约漏洞)。2010年8月15 日,比特币发生的代码漏洞攻击事件中,有人在比特币区块链的第74638块上发现了一条让人惊愕的交易,这笔交易里竟然出现了184,467.440737.09551616 个比特币,其中各有922亿个比特币被发送到两个比特币地址。这次攻击的根本原因则是比特币的验证机制中存在大整数溢出漏洞,由于大整数溢出为负数,网络各个节点对黑客的交易均验证通过,导致了比特币区块链中凭空出现了大量比特币。
本文将从区块链的技术架构出发,分析基础组件和设施安全风险、系统核心设计风险和应用生态面临的安全威胁。
基础组件和设施面临的安全威胁
基础组件层利用基础设施可以实现区块链系统网络中信息的记录、验证和传播。在基础组件层之中,区块链是建立在传播机制、验证机制和存储机制基础上的一个分布式系统,整个网络没有中心化的硬件或管理机构,任何节点都有机会参与总账的记录和验证,将计算结果广播发送给其他节点,且任一节点的损坏或者退出都不会影响整个系统的运作。其对应的安全风险包括网络安全问题、密码学安全问题和数据存储安全问题。其中的数据存储安全问题涉及内容安全层面,面临有害信息上链以及资源滥用等风险,限于篇幅,具体内容不展开介绍。
密码学安全威胁分析
区块链技术本身采用了密码学的很多机制,例如非对称加密、哈希算法等,这些密码学算法目前来讲是相对安全的。随着数学、密码学和计算技术的发展,尤其是人工智能和量子计算的兴起,这些算法面临着被破解的可能性。同时,这些密码算法需要编程实现,在代码实现方面也可能存在缺陷和漏洞。
ECC、RSA、 哈希等复杂加密算法本身以及在算法的工程实现过程中都可能存在后门和安全漏洞,进而危及整个区块链验证机制的安全性。具有超级计算能力量子计算机的出现也在对密码学构成潜在威胁,随着量子计算技术的飞速发展,大量子比特数的量子计算机、量子芯片、量子计算服务系统等相继问世,可在秒级时间内破解非对称密码算法中的大数因子分解问题(其破解拥有1024位密钥的RSA算法只需数秒),这正在成为威胁区块链数据验证机制的典型攻击手段之一。2017年5月,新型数字加密货币IOTA团队请求MIT研究组审计其软件及代码。7月,MIT研究者告知IOTA团队,他们发现了IOTA的加密哈希功能函数Curl中存在严重的漏洞(哈希碰撞),因此IOTA的数字签名及PoW安全性均无法保障。8月,IOTA 团队采用SHA-3替代掉了备受质疑的Curl哈希算法。
移动数字钱包等区块链客户端软件的安全实现涉及公私钥的使用,而通常情况下用户都是使用软件来生成公私钥,其中私钥的安全性会直接涉及到用户钱包或资产的安全问题,如果在不安全的环境中运行私钥,会增加私钥的泄露风险给用户带来不可预知的损失。目前,针对区块链客户端软件进行攻击的方法基本相同:一种方法是通过窃取凭据来寻求获得系统未经授权的访问权限;另外一种方法则是通过捕获信息、植入恶意软件和/或使用社会工程实现对用户机器中私钥的窃 取。2017年,以太坊浏览器Mist爆出“高危”漏洞,漏洞来源于底层软件框架Electron, 这个漏洞让加密数字货币私钥处于未知风险。一再发生的区块链密钥被盗攻击事件已经表明,一些程序正在生成弱密钥,产生有限范围的可能值,而通过这些有限的随机数生成器生成的密钥可以更容易地被蛮力攻击。
P2P网络安全威胁
区块链系统以P2P网络为基础,针对P2P网络,攻击者可以发动Eclipse日食攻击、分割攻击、延迟攻击、窃听攻击、DDoS拒绝服务攻击,进而造成整个区块链系统的安全问题。
在区块链P2P网络中通常采用广播机制来传播节点信息,而广播机制中常见的攻击方式则主要有双花攻击和交易延展性攻击两种。
1)日食攻击
日食攻击是通过其他节点实施的网络层面攻击,其攻击手段是囤积和霸占受害者的点对点连接间隙,将该节点保留在一个隔离的网络中。这种类型的攻击旨在阻止最新的区块链信息进入到被攻击的节点,从而隔离节点。
比特币和以太坊网络已被证实均能被实施日食攻击。针对比特币网络,攻击者会先控制足够数量的IP地址来垄断所有受害节点之间的有效连接,之后攻击者则会征用受害者的挖掘能力,并用它来攻击区块链的一致性算法或用于“重复支付和私自挖矿”。而针对以太坊网络,攻击者会垄断受害节点所有的输入和输出连接,将受害节点与网络中其他正常节点隔离开来,进而攻击者会诱骗受害者查看不正确的以太网交易细节,诱骗卖家在交易其实还没有完成的情况下将物品交给攻击者。对比特币网络上的节点实施日食攻击需要成千上万个恶意节点才能搞垮一个受害者的节点,而在以太坊网络上,攻击者只需通过建立一个僵尸网络(如购买云服务)就可以发起攻击。论文《Low-Resource Eclipse Attacks on Ethereum' s Peer- to-Peer Network》指出:攻击者只需要两个恶意的以太坊节点就能隔离和影响另一个节点进行日食攻击,因此对以太坊网络实施日食攻击的成本较低。
2)分割攻击
边界网关协议(BGP)是因特网的关键组成部分,其主要用于确定路由路径,而通过劫持BGP可以实现对基于物联网信息传递的区块链节点流量的误导和拦截。利用BGP操纵因特网路由路径,在最近几年中已经变得越来越频繁。网络犯罪分子可以利用劫持BGP误导和拦截流量,一旦区块链网络中节点的流量被接管,会对整个网络造成巨大影响,如破坏共识机制、交易等各种信息。
攻击者可以利用BGP劫持将区块链网络划分成两个或多个无法通信的独立不相交网络,此时的区块链分叉为两条或多条并行链。攻击停止后,区块链会重新统一为一条链,以最长的链为主链,其他的链将被废弃,被废弃的链上的交易、奖励将全部无效,从而导致双重花费甚至是多次花费问题的出现。
3)延迟攻击
攻击者可以利用BGP劫持来延迟目标的区块更新,而且不被发现。在目标请求获取最新区块的时候,攻击者可以基于中间人攻击修改目标请求为获取旧区块的请求,使得目标获得较旧的区块。例如在挖矿过程中如果遭遇了延迟攻击,矿工获取最新块的请求被恶意修改使其无法获取到新区块,这将导致矿工的算力无辜受损。
4) DDoS攻击
区块链网络中具有数以百万计的在线用户数,区块链节点会提供大量的分布式存储和网络带宽可用资源服务于百万在线用户。攻击者只需在层叠网络(应用层)中控制这些节点资源,而无需入侵区块链网络节点所运行的主机,即可利用这些资源作为一个发起大型DDoS攻击的放大平台。理论而言,将区块链网络作为DDoS攻击引擎时,假如该网络中有一百万个在线用户,则可使得攻击放大一百万倍甚至更多。
2017年2月份,以太坊Ropsten测试链遭到恶意攻击,攻击者发动了千万级别的垃圾交易信息,直接阻塞了网络的正常运行。
2018年3月22日,闪电网络节点遭受DDoS攻击,导致大约200个节点被迫离线,其在线节点从大约1,050 个降到了870个。
根据攻击方式的不同,基于区块链的DDoS攻击可分为主动攻击和被动攻击两种。基于区块链的主动DDoS攻击是通过主动向网络节点发送大量虚假信息,使得针对这些信息的后续访问都指向受害者来达到攻击效果,其具有可控性较强、放大倍数高等特点。这种攻击利用了区块链网络协议中的“推(push)” 机制,反射节点在短时间内接收到大量通知信息后不易于分析和记录,攻击者还可以通过假冒源地址来躲避IP检查,使得追踪定位攻击源更加困难。此外,主动攻击在区块链网络中引入额外流量,会降低区块链网络的查找和路由性能,而虛假的索引信息则会影响文件下载速度。基于区块链的被动DDoS攻击是通过修改区块链客户端或者服务器软件,被动等待来自其它节点的查询请求,再通过返回虚假响应实现攻击效果。通常情况下,其会采取一些放大措施来增强攻击效果,如:部署多个攻击节点、在一个响应消息中多次包含目标主机、结合其它协议或者实现漏洞等。这种攻击利用了区块链网络协议中的“取(pul)”机制。被动攻击属于非侵扰式,对区块链网络流量影响不大,通常只是针对局部的区块链节点。
5) 交易延展性攻击
区块链节点与节点互相连接,当某节点接入到区块链网络后,单个节点会与其他节点建立连接并拥有广播信息的资格,这些具备广播信息资格的节点在将信息传播给其他节点后,其他节点会验证此信息是否为有效信息,确认无误后再继续向其他节点广^播,这种广播机制会面临如交易延展性攻击等风险攻击者通过侦听P2P网络中的交易,利用交易签名算法特征修改原交易中的input签名,生成拥有一样input和output的新交易,广播到网络中形成双花,这样原来的交易就可能有一定概率不被确认,在虚拟货币交易的情况下,它可以被用来进行二次存款或双重提现。
2013年11月,GHashio 矿池对赌博网站BetCoin Dice进行多次付款欺诈,进行双花攻击。
2014年8月,在线黑市Silk Road2遭遇交易延展性攻击,部分比特币被盗,损失约260万美元。
区块链面临的安全威胁和挑战
网友评论