Sybil Attack,中文翻译为“女巫攻击”,名字源自于1973年的小说《女巫》(Sybil),这本书讲的是一个化名Sybil Dorsett的女人心理治疗的故事,她被诊断为分离性身份认同障碍,兼具16种人格。
女巫攻击2002年由微软研究院的John R. Douceur在《the Sybil Attack》提出,它是p2p网络中的一种攻击形式,主要是针对服务器节点的攻击。
女巫攻击之所以存在,是因为网络中很难保证每一个未知的节点是一个确定的“身份”。各种技术被用来保证网络上计算机的身份,例如,认证软件、利用ip地址识别节点、设置用户名和密码等。但是,模仿无处不在,伪装技术也同样存在。再加上节点随时加入退出等原因,为了维持网络稳定,同一份数据通常需要备份到多个分布式节点上,这就是数据冗余机制。
而女巫攻击是攻击数据冗余机制的一种有效手段。它利用网络中的少数节点控制多个虚假身份,就像电影的女主角可以分裂出16个身份一样,原来需要备份到多个节点的数据被欺骗地备份到了同一个恶意节点(虽说备份的是多个节点,但其实都是恶意节点控制的虚假节点,本质上还是一个)。
通俗讲就是,矿工利用n个身份,承诺会存储n份数据。但是,实际上只存储小于n份的数据,但谎报自己存储了n份数据。
女巫攻击会导致什么后果?
由于没有中心化实体对网络上的新用户进行审核,恶意参与者可以创建多个用户。一旦创建了足够多的虚假身份,他们就可以以多数票击败网络上真实的节点,可以拒绝接收或者传输区块,从而有效的防止其它用户进入网络。在大规模中女巫攻击中,可以轻易更改交易的顺序,防止交易被确认,甚至可以逆转交易,导致产生双重支付等问题。
目前女巫攻击已经出现在非常多的场景中,对安全,信任产生了巨大的影响。例如,羊毛党在一台计算机上通过软件切换ip手段大量薅羊毛;在网络投票的时候,可以通过利用多个ip地址来作假等等;很多公司也利用女巫攻击来获得google等搜索引擎的排名,骗取大量用户去点击。
在传统P2P系统,尤其是部分去中心化的联盟链当中,女巫攻击问题更为棘手。因为公有链的共识机制是不依赖节点数量的,所以不存在女巫攻击的风险。而联盟链为了提高共识效率,将节点数减少在一定范围内。就相当于把共识机制变简单了,所以攻击也变得简单了。这样,女巫攻击就有了“用武之地”。
众所周知,联盟链常用的拜占庭容错算法PBFT能够抵抗的拜占庭节点数是N≥3f+1。因此,在具有身份认证的区块链中,节点的数量的比例是非常重要的。而女巫攻击就是直接针对这种特性——直接在节点的数量上做文章。
那么,怎么解决女巫攻击?(说实话,目前还没有一个能够完全避免女巫攻击方法)
1、需要一个完善的身份认证机制去配合
通过采用单一的可信机构,通过证书的方式管理所有节点的身份,但也面临着资源管理和通信的瓶颈问题。
2、采用POW工作量证明机制
在比特币网络中是通过工作量证明机制(PoW)防范女巫攻击的,你想证明你是比特币网络中的一个节点,不能只靠说,而是要用计算能力证明,这样极大地增加了攻击的成本。记住这个只是增加了攻击成本而已。