基础组件层利用基础设施可以实现区块链系统网络中信息的记录、验证和传播。在基础组件层之中,区块链是建立在传播机制、验证机制和存储机制基础上的一个分布式系统,整个网络没有中心化的硬件或管理机构,任何节点都有机会参与总账的记录和验证,将计算结果广播发送给其他节点,且任一节点的损坏或者退出都不会影响整个系统的运作。其对应的安全风险包括网络安全问题、密码学安全问题和数据存储安全问题。其中的数据存储安全问题涉及内容安全层面,面临有害信息上链以及资源滥用等风险,限于篇幅,具体内容不展开介绍。
区块链技术本身采用了密码学的很多机制,例如非对称加密、哈希算法等,这些密码学算法目前来讲是相对安全的。随着数学、密码学和计算技术的发展,尤其是人工智能和量子计算的兴起,这些算法面临着被破解的可能性。同时,这些密码算法需要编程实现,在代码实现方面也可能存在缺陷和漏洞。
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网络,攻击者可以发动Eclipse日食攻击、分割攻击、延迟攻击、窃听攻击、DDoS拒绝服务攻击,进而造成整个区块链系统的安全问题。
在区块链P2P网络中通常采用广播机制来传播节点信息,而广播机制中常见的攻击方式则主要有双花攻击和交易延展性攻击两种。
日食攻击是通过其他节点实施的网络层面攻击,其攻击手段是囤积和霸占受害者的点对点连接间隙,将该节点保留在一个隔离的网络中。这种类型的攻击旨在阻止最新的区块链信息进入到被攻击的节点,从而隔离节点。
比特币和以太坊网络已被证实均能被实施日食攻击。针对比特币网络,攻击者会先控制足够数量的IP地址来垄断所有受害节点之间的有效连接,之后攻击者则会征用受害者的挖掘能力,并用它来攻击区块链的一致性算法或用于“重复支付和私自挖矿”。而针对以太坊网络,攻击者会垄断受害节点所有的输入和输出连接,将受害节点与网络中其他正常节点隔离开来,进而攻击者会诱骗受害者查看不正确的以太网交易细节,诱骗卖家在交易其实还没有完成的情况下将物品交给攻击者。对比特币网络上的节点实施日食攻击需要成千上万个恶意节点才能搞垮一个受害者的节点,而在以太坊网络上,攻击者只需通过建立一个僵尸网络(如购买云服务)就可以发起攻击。论文《Low-Resource Eclipse Attacks on Ethereum' s Peer- to-Peer Network》指出:攻击者只需要两个恶意的以太坊节点就能隔离和影响另一个节点进行日食攻击,因此对以太坊网络实施日食攻击的成本较低。
边界网关协议(BGP)是因特网的关键组成部分,其主要用于确定路由路径,而通过劫持BGP可以实现对基于物联网信息传递的区块链节点流量的误导和拦截。利用BGP操纵因特网路由路径,在最近几年中已经变得越来越频繁。网络犯罪分子可以利用劫持BGP误导和拦截流量,一旦区块链网络中节点的流量被接管,会对整个网络造成巨大影响,如破坏共识机制、交易等各种信息。
攻击者可以利用BGP劫持将区块链网络划分成两个或多个无法通信的独立不相交网络,此时的区块链分叉为两条或多条并行链。攻击停止后,区块链会重新统一为一条链,以最长的链为主链,其他的链将被废弃,被废弃的链上的交易、奖励将全部无效,从而导致双重花费甚至是多次花费问题的出现。
攻击者可以利用BGP劫持来延迟目标的区块更新,而且不被发现。在目标请求获取最新区块的时候,攻击者可以基于中间人攻击修改目标请求为获取旧区块的请求,使得目标获得较旧的区块。例如在挖矿过程中如果遭遇了延迟攻击,矿工获取最新块的请求被恶意修改使其无法获取到新区块,这将导致矿工的算力无辜受损。
区块链网络中具有数以百万计的在线用户数,区块链节点会提供大量的分布式存储和网络带宽可用资源服务于百万在线用户。攻击者只需在层叠网络(应用层)中控制这些节点资源,而无需入侵区块链网络节点所运行的主机,即可利用这些资源作为一个发起大型DDoS攻击的放大平台。理论而言,将区块链网络作为DDoS攻击引擎时,假如该网络中有一百万个在线用户,则可使得攻击放大一百万倍甚至更多。
2017年2月份,以太坊Ropsten测试链遭到恶意攻击,攻击者发动了千万级别的垃圾交易信息,直接阻塞了网络的正常运行。
2018年3月22日,闪电网络节点遭受DDoS攻击,导致大约200个节点被迫离线,其在线节点从大约1,050 个降到了870个。
根据攻击方式的不同,基于区块链的DDoS攻击可分为主动攻击和被动攻击两种。基于区块链的主动DDoS攻击是通过主动向网络节点发送大量虚假信息,使得针对这些信息的后续访问都指向受害者来达到攻击效果,其具有可控性较强、放大倍数高等特点。这种攻击利用了区块链网络协议中的“推(push)” 机制,反射节点在短时间内接收到大量通知信息后不易于分析和记录,攻击者还可以通过假冒源地址来躲避IP检查,使得追踪定位攻击源更加困难。此外,主动攻击在区块链网络中引入额外流量,会降低区块链网络的查找和路由性能,而