Sybil attack是一种计算机网络服务中的攻击方式,攻击者通过创建大量的伪造身份来破坏服务的信誉系统,从而获得不成比例的影响力。这种攻击的名称来源于一本书《Sybil》,该书讲述了一位被诊断为多重人格障碍的女性的案例。这个术语最早是在2002年或之前由微软研究院的Brian Zill提出的。在此之前,L.Detweiler在Cypherpunks邮件列表上曾经提出过一个相同类别的攻击的术语pseudospoofing,但这个术语没有像“Sybil attack”那样广泛流传。

什么是Sybil attack

Sybil attack在计算机安全领域是一种利用创建多个身份来破坏信誉系统的攻击。一个信誉系统对Sybil attack的脆弱性取决于身份生成的成本有多低,信誉系统接受来自没有与可信实体链接的信任链的实体的输入的程度,以及信誉系统是否对所有实体一视同仁。截至2012年,有证据表明,在现实中存在的诸如BitTorrent Mainline DHT之类的系统中,可以以非常便宜和高效的方式进行大规模的Sybil attack。

在点对点网络中,一个实体是一个可以访问本地资源的软件。一个实体通过呈现一个身份来在点对点网络上宣传自己。一个身份可以对应一个实体,也可以对应多个实体。换句话说,身份到实体的映射是多对一的。点对点网络中的实体使用多个身份来实现冗余、资源共享、可靠性和完整性等目的。在点对点网络中,身份被用作一个抽象,使得远程实体可以知道身份而不一定知道身份到本地实体的对应关系。默认情况下,每个不同的身份通常被假定为对应一个不同的本地实体。但事实上,许多身份可能对应同一个本地实体。一个敌手可能向点对点网络呈现多个身份,以便作为多个不同的节点出现和运行。敌手因此可能能够获得对网络的不成比例的控制,例如影响投票结果。在(人类)在线社区的背景下,这种多重身份有时被称为sockpuppets。

Sybil attack可能会导致以下一些问题:

阻止用户访问网络——如果Sybil attack创建了足够多的身份,攻击者就可以压倒诚实节点,并拒绝传输或接收区块。 实施51%攻击——如果Sybil attack使得一个攻击者控制了网络总哈希率或计算能力的一半以上(51%或更多),这种攻击就会破坏区块链系统的完整性,并可能导致网络中断。51%攻击可以修改交易顺序,撤销攻击者自己的交易以实现双重支付,并阻止交易确认。 降低网络性能和效率——如果Sybil attack产生了大量无效或恶意数据,那么网络就需要花费更多时间和资源来处理这些数据,并且可能无法及时响应有效请求。

针对区块链网络进行Sybil attack的主要目标是通过创建和控制多个别名来获得网络决策中不成比例的影响力。攻击者利用这种影响力来实现非法或不正当的行为。以下是两个针对区块链网络进行Sybil attack的场景:

Sybil attack对比特币网络的影响

在比特币网络中,许多影响运营的决定都是通过投票来进行的。通过投票,矿工和维护网络节点的人可以同意或拒绝一个提议。如果攻击者在网络中创建了多个身份,他们就可以为他们控制的每个身份投票。Sybil attack还可以控制网络中信息的流动。例如,一个针对比特币的Sybil attack可以用来获取连接到网络的用户的IP地址信息,从而损害网络用户的安全性、隐私性和匿名性。攻击者所要做的就是控制网络中的节点,从这些节点收集信息,并创建伪造身份的假节点。一旦他们在网络中占据了主导地位,攻击者就可以实施审查——阻止其他用户合法地使用网络。

Sybil attack对Tor网络的影响 Tor网络是基于点对点模型运行的,允许节点在互联网上匿名浏览。Tor网络使用一种称为洋葱路由(onion routing)的技术,将用户的流量通过多个随机选择的中继节点(relay nodes)转发,从而隐藏用户的真实IP地址和目标网站。然而,如果攻击者能够控制Tor网络中的一部分或全部出口中继(exit relay),那么他们就可以监视或篡改用户与目标网站之间的通信。例如,在2014年,有一个显著的Sybil attack结合了流量确认攻击(traffic confirmation attack),针对Tor匿名网络持续了几个月 。还有其他一些针对Tor网络用户进行Sybil attack的例子。这包括2020年比特币地址重写攻击(Bitcoin address rewrite attacks)。攻击者控制了所有Tor出口中继的四分之一,并使用SSL剥离(SSL stripping)来降级安全连接,并将资金转移到被称为BTCMITM20的威胁行为者的钱包1。

防止Sybil attack的方法

要防止Sybil attack,需要增加创建身份和加入网络的成本和难度,以及减少伪造身份对网络影响力和权威性的贡献。以下是一些常见的防止Sybil attack的方法:

资源测试(resource testing)——这种方法要求每个节点证明它拥有一定数量或类型的资源,如计算能力、存储空间、带宽等。这样可以使得创建大量身份变得昂贵或不划算。例如,在比特币网络中,每个节点需要通过解决一个数学难题来证明它拥有足够的计算能力,这被称为工作量证明(proof-of-work)。 信任度评估(trust evaluation)——这种方法要求每个节点根据其历史行为、声誉、推荐等因素来评估其信任度,并根据信任度来分配权重或优先级。这样可以使得新建或伪造身份难以获得高信任度,并降低其对网络决策或共识的影响力。例如,在Eigentrust算法中,每个节点根据其与其他节点交互时提供有效或无效数据的频率来计算其信任值,并根据信任值来选择合作伙伴。 身份验证(identity verification)——这种方法要求每个节点通过提供一些可以证明其唯一性或真实性的信息来验证其身份,如数字签名、公钥、证书等。这样可以使得创建或伪造身份变得困难或不可能。例如,在公钥基础设施(public key infrastructure,PKI)中,每个节点需要通过一个可信的第三方机构来颁发和验证其公钥证书,从而确保其身份的合法性和有效性。

以上是关于Sybil attack的一些基本概念、影响和防御方法的介绍。Sybil attack是一种常见的网络安全威胁,需要通过各种技术和机制来防范和抵御。Sybil attack的研究仍然是一个活跃的领域,有许多潜在的应用和挑战。