公开、透明、不可篡改,区块链技术自诞生以来仿佛就带着碾压一切互联网技术的光环,被看做未来极具潜力的一项技术,但是区块链技术同样也存在着不可忽视的安全隐患。比如,上次文章中提及的DDOS攻击就是对区块链网络的一大威胁。除此之外,今天要说的“女巫攻击”则是对区块链网络的另一大威胁。
什么是“女巫攻击”?
所谓“女巫攻击”,简而言之就是一个恶意节点伪装成多个节点进入P2P网络中,从而达到控制网络的目的。如果还不能理解“女巫攻击”的原理,那么请想像这样一个场景:某个网络论坛发起了一个选举投票,你利用自己的账号给你看好的人投了一票,但是因为你无法控制其他投票的人会选谁,所以最终结果是无法确定的。
于是,为了确保自己选的人能够成功当选,一般人会选择怎么做?没错,刷票!最简单的刷票方式就是自己去注册大量论坛账号,为自己看好的人去投票。这其实就是“女巫攻击”的原理,尽管每个账号显示的信息都不同,但背后对应的控制者都是同一个人,而这个实际控制者就是所谓的“女巫”。
“女巫攻击”这个名字来源于小说《女巫(Sybil)》改编的同名电影。电影讲述的是一个化名Sybil Dorsett的女人心理治疗的故事。她被诊断为分离性身份认同障碍,兼具16种人格,高度精分一枚。
如果区块链网络中也存在一个如此“高度精分”的恶意节点,那么同一个恶意节点可以通过伪造ID具有多重身份,就如电影里的女主角可以分裂出16个身份,其实真实的恶意节点远比电影女主角还能分。于是,原来需要备份到多个节点的数据被欺骗地备份到了同一个恶意节点(该恶意节点伪装成多重身份),这时候该恶意节点就会影响到整个网络,数量达到一定程度后甚至可以轻易控制网络,这就是区块链网络中的“女巫攻击”。
在区块链、加密货币领域中,女巫攻击为什么如此重要?因为有别于一般论坛上的带带风向,在区块链中,如果攻击者创建了足够数量的假身分,他可以用多数票压倒其他真实节点,进而控制区块,阻止其他用户进入网络。这时,如果他想要获取加密货币,便可以轻易地更改交易,或防止交易被确认,轻松实现“双花”。
特别是在中心化的联盟链当中,“女巫攻击”问题更为棘手。因为联盟链为了提高共识效率,将节点数减少在一定范围内。就相当于把共识机制变简单了,于是攻击也变得简单了。所以,“女巫攻击”便成了所有区块链项目研究中,最先要解决的问题。
如何防范“女巫攻击”?
既然“女巫攻击”的特点是利用一个节点伪造多重身份信息进入网络,那么只要提高节点入网的门槛,就能有效避免“女巫攻击”。
首先,提高节点入网门槛的有效方法之一就是身份验证。就好像乘坐火车、飞机需要检票一样,任何节点都需要进行身份验证后才能进入网络。身份验证又可以分为去中心化的验证和中心化的验证,其中去中心化验证是指当一个节点要进入网络时,需要网络当中已经存在较长时间或者信誉较高的多数节点进行共同验证,并达成共识。中心化的身份验证就是通过可靠的第三方节点对每一个新加入的节点进行身份验证,从而保证网络免受“女巫攻击”。
另一种防范“女巫攻击”的方法是提高恶意节点进行“女巫攻击”的成本。在区块链的世界里,这种解决方法通常通过各种“共识机制”来实现。常见的工作量证明(PoW)、股权证明(PoS)等共识机制,都是为了解决这样的问题而产生的。原理上,它是为了增加攻击的成本,让攻击行为变得无利可图。
举例来说,比特币使用的是工作量证明机制(PoW),也就是你必须去计算区块的加密哈希(HASH),解开谜题才能拥有产生区块的权力。如果想进行“女巫攻击”,去计算HASH(也就是挖矿)所花费的电力、设备等成本将会相当高昂。这就在一定程度上防止了“女巫攻击”。
此外,还可以通过一种叫做“特征向量”的方法来防范“女巫攻击”。所谓“特征向量”的方法就是限制具有某一特征的IP节点进入网络的数量。但是,这种方法很有可能造成误杀,因为并非来自同一个IP段的节点也可能是恶意节点。在P2P网络中,尽管可以通过这种特征向量来区分这个节点是不是伪造的节点,但是这种方式只能有效减少攻击,并不能完全避免攻击。所以可能还需要一种更加准确的方式去分析一个节点的行为,区分一个节点。
写在最后
一般“女巫攻击”都是以低成本获取高收益,而且通常会结合其他攻击手段同时进行。尽管以上的各种防御方法有一定效果,但近年来还是发生了很多次黑客成功发起攻击的例子,各类专家目前仍非常努力研究着各种机制,但目前还没有人设计出绝对完善的解决方案。