女巫攻击(Sybil Attack),即通过伪造多个ID对网络进行干扰的攻击方式。名称来源于美国著名小说《女巫》。该小说的主角患有多重人格障碍症,一个身体内同时兼容多个人格。女巫攻击在网络中很常见,淘宝产品中的刷量、刷赞等都是黑客通过伪造大量ID造假完成的。女巫攻击最常见的攻击场景是数据冗余机制,即为了提升网络安全,将数据进行多重备份的机制,而区块链是使用数据多重备份机制的典型。因此,在分布式数据存储的区块链中不乏女巫攻击的身影。


女巫攻击的过程:
要实现女巫攻击,需要通过一个实体节点伪造出大量的伪装节点,并将这些节点广播到整个区块链网络。当其他正常节点查询信息时经过这些伪装节点,攻击者可以操控伪装节点对查询进行干扰,继而反馈给查询者虚假信息,或者干脆不返回任何结果。当一个区块链中的伪装节点数量超过真实节点时,攻击者会凭借投票票数领先的优势击退真实的节点。攻击者还可以通过拒绝接受新区块、返回错误信息等方式拒绝新节点的加入,以达到对区块链的统治。这种情况下,攻击者就拥有了整个区块链的决定权,可以篡改交易记录、更改交易顺序,对区块链造成极大的危害。

对女巫攻击的防范:
对于公有链来说,女巫攻击几乎是无效的,因为公有链有一套共识机制,不依赖于节点数量,并且节点的数量也是未知的。例如比特币采用的工作量证明中,一个节点必须进行大量的计算,才可以证明自己的合法性,从而实现对区块数据的更改。这对于女巫攻击来说,成本过高,不如按照规则做一个诚实合法的节点来得划算。所以,女巫攻击常出现在依赖节点数量联盟链里。联盟链中的每个节点都可以清楚地知道中一共有多少个节点。目前联盟链应对女巫攻击的方式是身份认证, 伪装节点将难以通过认证加入联盟链。身份验证的方式有两种,一种是第三方机构对节点身份进行验证,另一种是由联盟链中的安全节点为其担保,做信任背书。