116 / 736SYBIL

Sybil Attack

一个攻击者伪装成许多独立参与者

一百个账号不一定代表一百个人。Sybil Attack 正是利用这个差别:一个攻击者装成许多参与者。因此,Bitcoin 不会靠数联网电脑来选择交易历史。

Sybil Attack 指同一个对手控制多个身份,并把它们伪装成相互独立的参与者。在 Bitcoin 中,多建立网络连接本身既不会增加挖矿算力,也不会赋予修改规则的权利。但它可能帮助攻击者影响某个节点从哪里获得信息。

安娜根据论坛推荐挑选一项服务。几十个账号都说它好,其实全部由服务经营者控制。这些名字之间的一致意见并不是独立形成的。John R. Douceur 在 2002 年的 The Sybil Attack 中描述了计算机网络里的同类问题:一个对手可以冒充多个参与者。编造名字很容易,但获得所需的地址、服务器(为其他设备提供服务的计算机)和连接,仍可能需要金钱和时间。 [1]

在 Bitcoin 网络中,peer 就是与程序交换数据的对等方。彼得可以运行多个节点,一家公司可以运行更多。Bitcoin 并不要求建立一个人员名册,为每个人只分配一个节点。IP 地址标识网络中程序要连接的位置。因此,不同的 IP 地址不能证明背后有不同的所有者。运行多个节点本身也不是攻击;问题在于利用它们看似独立的身份。 [1] [3]

彼得的 Full Node 是自行检查 Bitcoin 规则的程序。这里的签名,是用私钥这个秘密数值,生成可以验证的付款授权证明。其他人无须知道这个秘密,就能检查签名。即使所有连接的对等方都向彼得的节点发来一笔签名无效的交易,它仍会拒绝,不会把一致的回答当成选票。区块把交易组成一批,加入共同历史记录。节点也会检查整个区块,例如是否花费了已经花掉的资金,或是否产生了规则不允许的奖励。网络提供数据,节点按照自己的规则判断有效性,而不是看发送者有多受欢迎。 [2] [6] [9]

有时会同时出现两条相互竞争的有效历史分支。Proof of Work 让节点比较它们的累计工作量,也就是根据已找到区块的难度推导出的权重。挖矿需要真实的计算尝试;给电脑改名不会增加工作量。攻击者即使把同一批矿机分到多个身份名下,总算力也不会因此提高。所以这里并不实行一个账号一票。 [2] [6]

一千条连接也代替不了花费他人比特币所需的私钥。仅仅复制身份,也不能突破发行规则,或让正确验证的节点接受无效区块。这并不意味着任何攻击都无效:攻击者还可能获得挖矿算力,或利用软件漏洞。这些能力需要单独评估,不能归因于账号数量本身。 [2] [9]

再看彼得的节点。攻击者可能试图塞满它的已知地址列表,并占据它的连接。如果控制了通往其余网络的所有相关路径,就可能扣留区块,让彼得看到不完整或滞后的情况。这种隔离叫作 Eclipse Attack。Sybil Attack 可以为它创造条件,但有很多攻击者身份,不等于隔离已经成功。能验证收到的数据,并不等于知道别人隐瞒了哪些数据。 [3] [5] [8]

Bitcoin Core 会组合使用多种防线。自动选择出站连接时,它寻求网络多样性,并把已知地址分组,避免单个来源轻易支配整个选择过程。称为 feeler 的短暂测试连接会检查其他对等方是否可达。这些机制增加了攻击难度,却不能查明每台服务器的真实所有者,也不能保证绝不被隔离。具体实现会演进;这里的资料展示的是 Bitcoin Core 29.0。 [4] [7] [8]

IP 地址或 Tor 服务地址告诉程序应该连接到哪里,并不证明另一端是一个新的独立个人。一个运营者可以拥有很多地址,多名用户也可能共用一个公网 IP 地址或部分网络路径。Tor 有助于保护连接隐私,但它的地址本身不能证明对等方相互独立。消息怎样传送,与 Bitcoin 如何给历史分支赋予权重,是两回事。 [3] [4]

Proof of Work 解决了虚假多数问题的重要部分,但没有解决所有通信风险。P2P 网络,也就是参与者之间直接交换数据的网络,仍可能遭遇流量洪泛、监视和消息扣留。因此,防御还包括连接管理以及资源消耗限制。安全性取决于攻击者实际控制了什么:只是名字、网络路径、计算能力,还是这些能力的组合。 [1] [5] [6]

公开可达节点的计数,既不是人数,也不是对规则的投票结果。节点怎样获取信息、自己验证什么,同样重要。自己的 Full Node 能让你检查收到的区块,但它需要连接其余网络。钱包是接收和发送比特币的应用程序或设备。如果它依赖别人的服务器,其他地方运行着许多节点,并不会自动消除这种依赖。更多联系不一定意味着更多独立性。 [1] [3] [9]

要获得更完整的理解,请将本词条与以下词条结合阅读: Nakamoto Consensus, Eclipse Attack, Selfish Mining, Block Propagation, Bitcoin, Proof of Work. 反向关联还来自: Byzantine Generals Problem, Nakamoto Consensus, Eclipse Attack, Selfish Mining.

DOC · 001John R. Douceur — The Sybil Attack一手来源 DOC · 002Satoshi Nakamoto — Bitcoin whitepaper一手来源 DOC · 003Bitcoin Developer Guide — P2P Network文档 DOC · 004Bitcoin Core v29.0 — Peer connections文档 DOC · 005Heilman et al. — Eclipse Attacks on Bitcoin一手来源 DOC · 006The Bitcoin Backbone Protocol一手来源 DOC · 007Bitcoin Core v29.0 — Address manager文档 DOC · 008Bitcoin Optech — Eclipse attacks文档 DOC · 009Bitcoin Core v29.0 — Block validation文档
修订日期: 来源优先 · 非投资建议