特点分析
PICK OF THE WEEK
1、保证数据的完整性。在共识机制下,只有全网大部分节点都认为这个记录正确时,记录的真实性才能得到全网的认可,才允许被写入区块中,保证了数据的完整性。
2、不可篡改性。每个区块都与前序区块通过密码学证明的方式链接起来。如果要修改历史中某个区块中的交易内容,就必须将该区块之前的所有区块交易及密码学证明进行重构,这防止了数据篡改。
3、抵抗DDOS攻击。区块链由于其点对点、多冗余的特性,不存在单点失效的问题,即使某个节点失效,也不影响其他节点。(但2019.12月康奈尔大学论文中已提出一种新型的区块链拒绝服务攻击BDOS,攻击BTC只需要20%算力成本。论文名字:《BDoS: Blockchain Denial of Service》)。
安全风险分析
PICK OF THE WEEK
1、共识机制挑战:区块链中的共识算法能否实现真正的安全,需要更严格的证明和时间的验证。非对称加密算法可能随着数据、密码学和计算技术的发展而越来越脆弱,具有一定的破解性。而且区块链上包含账户安全的私钥是否容易窃取仍待更进一步探索。
2、51%攻击: 控制节点中绝大多数计算资源,就能重改公有账本,这被称为51%攻击。理论上,区块链无法阻止拥有足够多计算资源的节点做任何操作。在现实情况下,发起51%攻击是具有一定可行性的。
3、N@S攻击:针对PoW共识算法容易遭受51%攻击的问题,一些研究人员对PoW共识算法进行了改进,但在解决旧问题的同时,也引入了区块分叉时的N@S (Nothing at stake)攻击问题。
在某些情况下一个区块可以暂时拥有两个子区块,这种分叉状态出现时,一般是两个矿工都在短时间内发现了工作量的解答,然后将所添加的传播到临近网络中去,其他节点便慢慢形成两种版本(子区块)的区块链。区块链中规定,这种情况下的判定条件是选择工作总量最大的那条子区块。出于自身利益最大的考虑,节点上可以同时在两个分支上继续工作,以保证利益的获取。假设99%的节点用户都如此理性地考虑收益的话,即便攻击者只掌握1%的权益依旧可以决定区块链的分支走向。他可以发出交易请求,获得资产 ,然后再从另一条分支上获取添加货币到自己的钱包中。
4、业务层面
(1)区块链上的第三方开发平台出现问题。如Parity多重签名漏洞,开发人员在写代码的时候没有实现好设计的协议,导致黑客可以调用不该调用的函数,访问不该访问的数据。
(2)web网站漏洞。如Coindash的一个Wordpress博客被上传Webshell导致损失700万美元的被盗,这个漏洞是非常低级的,原因仅仅是在于Wordpress版本太老。
(3)假冒网站钓鱼。黑客通过伪造网站,冒充正规的交易所,有人在上面交易,导致被盗。
(4)业务安全。如网站被黑,打款地址被替换成黑客钱包地址。
(5)病毒木马。如日本Coincheck事件、韩国Bithumb事件等。
区块链网络攻击方式
PICK OF THE WEEK
目前对区块链网络安全威胁最大的3种攻击方式:Sybil攻击、Eclipse攻击和DDoS攻击。
1. Sybil攻击,又称为女巫攻击,指一个恶意节点非法的对外呈现多个身份,通常把该结点的这些身份称为Sybil结点。Sybil攻击方式有以下几种类型:直接通信、间接通信、伪造身份、盗用身份、同时攻击、非同时攻击。
在区块链网络中,用户创建新身份或新节点是不需要代价的,攻击者利用这一漏洞发动Sybil攻击,伪造自己的身份加入网络,在掌握了若干节点或节点身份之后,随意做出一些恶意的行为。例如降低区块链网络节点的查找效率;或者网络中传输非授权文件、破坏文件共享安全、消耗节点间的连接资源等。如图为攻击者进行Sybil攻击原理:
Sybil对区块链网络的攻击方式:
(1)虚假节点接入。在区块链协议中,任何网络节点都可以向区块链网络发送节点加入请求消息,收到请求消息的区块链节点会做出响应,回复其邻居节点信息。利用这个过程,Sybil攻击者可以获得大量区块链节点信息并分析网络拓扑,以高效的对区块链网络进行攻击或破坏。
(2)误导区块链节点的路由选择。节点间路由消息的实时交互是保证区块链网络正常运行的关键因素之一。恶意的Sybil节点可以入侵正常区块链的路由表,误导其路由选择,大大降低节点的路由更新和查找效率,极端情况下,会导致Eclipse攻击。
(3)虚假资源发布。Sybil攻击者一旦入侵区块链网络节点的路由表,就可以随意发布自己的虚假资源。区块链网络的目的是实现用户间资源的分布式共享,如果网络中充斥着大量的虚假资源,那么在用户看来,这将是无法接受的。
二、基于区块链网络的Eclipse攻击
Eclipse攻击是指攻击者通过侵占节点的路由表,将足够多的虚假节点添加到某些节点的邻居节点集合中,从而将这些节点“隔离”于正常区块链网络之外。
当节点受到Eclipse攻击时,节点的大部分对外联系都会被恶意节点所控制,由此恶意节点得以进一步实施路由欺骗、存储污染、拒绝服务以及ID劫持等攻击行为。Eclipse攻击原理如图所示:
Eclipse攻击者不断的向区块链节点发送路由表更新信息来影响区块链节点的路由表,使普通节点的路由表充满虚假节点。当区块链节点的路由表虚假节点占较高比例时,它对区块链网络的正常行为(如路由查找、资源搜索)都会被恶意节点所隔绝。
Eclipse攻击和Sybil攻击密切相关,它需要较多的Sybil攻击节点相配合。为了实现对特定区块链节点群的Eclipse攻击,攻击者需要先设置足够多的Sybil攻击节点,并向区块链网络宣称他们是“正常节点”,然后利用这些Sybil节点和正常的节点通信,入侵其路由表,最终把他们从区块链网络中隔离出去。
Eclipse攻击破坏了区块链网络的拓扑结构,减少了节点数目,使区块链网络资源共享的效率大大降低,极端情况下,它可以控制整个网络,将其分割成若干个区块链网络区域。对受害节点来说,它在未知情况下脱离区块链网络,所有区块链网络请求消息都会被攻击者劫持。
三、基于区块链网络的DDoS攻击
DDoS攻击是一种对区块链网络安全威胁最大的攻击技术之一,它指借助于C/S技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动攻击,从而成倍地提高拒绝服务攻击的威力。
传统的DDoS攻击分为两步:第一步利用病毒、木马、缓冲区溢出等手段入侵大量主机,形成僵尸网络;第二步利用僵尸网络发起Dos攻击。常用的攻击工具包括:Trinoo、TFN、TFN2K、Stacheldraht等。由于各种条件限制,攻击的第一步成为制约DDoS攻击规模和效果的关键。
新型的DDoS攻击不需要建立僵尸网络即可发动大规模攻击,不仅成本低、威力巨大,而且还能确保攻击者的隐秘性。如图所示为区块链网络中攻击者进行DDoS攻击的原理。
区块链网络中具有数以百万计的同时在线用户数,这些节点提供了大量的可用资源,例如分布式存储和网络带宽。如果利用这些资源作为一个大型DDoS攻击的放大平台,就不必入侵区块链网络节点所运行的主机,只需要在层叠网络(应用层)中将其控制即可。
根据攻击方式的不同,基于区块链的DDoS攻击可分为主动攻击和被动攻击两种。
(1)基于区块链的主动DDoS攻击是通过主动地向网络节点发送大量的虚假信息,使得针对这些信息的后续访问都指向受害者,从而达到攻击效果。具有可控性较强、放大倍数高等特点。
它利用区块链网络协议中基于“推(Push)”机制,反射节点在短时间内接收到大量通知信息,不易于分析和记录,并且通过假冒源地址避过IP检查,使得追踪攻击定位更加困难。此外,主动攻击在区块链网络中引入额外流量,会降低区块链网络的查找和路由性能;虚假的索引信息,会影响文件下载速度。
(2)基于区块链的被动DDoS攻击通过修改区块链客户端或者服务器软件,被动地等待来自其它节点的查询请求,再通过返回虚假响应来达到攻击效果。一般会采取一些放大措施来增强攻击效果,如部署多个攻击节点,在一个响应消息中多次包含目标主机、结合其它协议或者实现漏洞等。
该攻击利用了区块链网络协议中基于“取(pull)”的机制。被动攻击属于非侵扰式,对区块链网络流量影响不大,通常只能利用到局部的区块链节点。
四、三种攻击对区块链网络的危害程度
Sybil攻击只是冒充单个区块链网络节点,对区块链网络的影响是比较小的;Eclipse攻击使得部分区块链节点脱离区块链网络,这对受攻击的节点来说是无法接受的;DDoS攻击的目的是大量占用受害节点的资源,使其无法正常提供服务,因此DDoS攻击对区块链网络的影响是致命的。
Sybil攻击是Eclipse攻击成功实施的基础。Sybil攻击的目标是单个物理节点在区块链网络上产生大量不同的身份,成功的Sybil攻击可以使发动Eclipse攻击变得更为容易。对单个节点进行DDoS攻击的前提是向区块链网络发布大量的虚假消息或被动地做出虚假响应,Eclipse攻击可以帮助攻击者劫持网络节点间传递的信息,增大成功实施DDoS攻击的可能性。
五、基于智能合约的DAO攻击
2015年,The DAO以太坊合约智能合约正式问世,但在6月17日,一群黑客攻击了The DAO网络,并一举盗取了约364万ETH。为了挽救The DAO投资者的损失,以太坊团队在7月20日进行了硬分叉,被废弃的原链就是现在的以太经典(ETC)。这次攻击事件,就是区块链领域中著名的DAO攻击。
DAO攻击利用的是The DAO合约中的一个致命漏洞。攻击者创建了一个合约去调用The DAO的splitDAO,并利用漏洞让The DAO智能合约调用攻击者新建合约中的“()”函数,在函数中再去递归调用splitDAO。如此反复操作,要么gas被耗尽,要么达到stacklimit内存堆栈上限,或递归次数上限的时候才会停止。在这之前,可以不停转出账户余额,并且不会减少自己的余额。
全节点与轻节点
PICK OF THE WEEK
全节点:可以发起交易或者接收交易,参与共识。保留全部的区块链内容。
在比特币中,存在一种叫做全节点的节点,即保存有全网交易数据,又能完成相关验证交易,独立完成与对等节点的连接。也就是说,这类节点在本地保存了一个完整的区块链网络,在其上可进行任何查询、交易的验证与广播,正因为有这样的节点存在,更加使得去中心化成为了可能,同时使得区块链网络更加安全。一直在线,最重要的是参与挖矿,寻找最长合法链并辨别分叉。
轻节点:连接到全节点,通过全节点进行访问。
轻节点的特点其实就是,只需要存储Block Header,而不存储全量的交易列表等信息。通过Merkle证明来判断一笔交易是否在现在的区块链交易列表中。这样,其实造就了以太坊的轻节点能够运行在小容量的个人PC等终端设备上。
在区块链网络中,merkle-tree保存了当前区块中所有交易组成的根哈希,保存在区块头中,任何一个交易内容的改变,都会使得根哈希变化,从而改变区块链结构,不被节点认可。轻量级节点不需要保存所有交易内容,利用merkle tree的特性,它只需包含block header以及与自己相关的交易细节,并通过Merkle证明来判断交易是否在当前的区块链交易列表中。
轻量级节点并不一直在线,与全节点不同,它只能检测哪一条是最长链,但无法知道是否是最长合法链,因为轻量级节点无法验证大多数交易的合法性,也无法验证区块链网络发布的区块的正确性。
以太坊轻节点(轻客户端):每当有区块出现在网络便下载区块头,而不是全量的情况状态,并发送客户端需要的特定状态的默克尔证明(Merkle proofs)的请求。同时在以太坊轻节点中使用分布式哈希表来追踪前缀节点,而不是直接采用LevelDB进行直接的存储。
———————————————
参考:https://blog.csdn.net/sinat_36711025/article/details/104839204 https://www.jianshu.com/p/a8ec80cfea7a
https://blog.csdn.net/qq_40509206/article/details/109560859