Eclipse Attack 会有针对性地把节点与诚实的对等方隔离,同时保留它与攻击者的连接。Full Node 是独立验证 Bitcoin 规则的程序。它仍会进行验证,但可能只收到不完整或过时的信息。攻击并不把无效数据变成有效数据,而是利用节点看不到的部分。
安娜正在收一笔比特币付款,并观察自己的节点,也就是运行 Bitcoin 网络参与软件的计算机。界面显示连接活跃,但所有重要的对外路径都受对手控制。消息仍在到达,只是她只能看到攻击者允许的内容。这就是 Eclipse Attack 的核心。通常,单个恶意连接还不够:通往诚实节点的可用路径可能带来被扣留的区块,打破攻击者的控制。区块把交易组成一批,加入共同历史记录。 [1] [6]
Ethan Heilman、Alison Kendler、Aviv Zohar 和 Sharon Goldberg 在 2015 年描述了针对当时 Bitcoin 网络的攻击。他们研究了如何用攻击者控制的地址填满节点的地址表,使节点重新连接时只连到攻击者的计算机。被利用的是连接选择机制,无须破解保护数字签名等功能的数学方法。研究也提出了防御措施;历史实验结果不能当作对今天 Bitcoin Core 版本的成功率测试。 [1] [7]
一旦实现隔离,攻击者就能选择把哪些区块和交易交给安娜,哪些扣留。它还可能阻止安娜自己的交易向外传播,或观察交易的来源。仅仅控制连接,不需要拥有多数挖矿算力。但这不意味着后续所有攻击都不再需要投入:例如,创建新区块仍要付出真实的工作量。 [1] [6]
安娜的 Full Node 仍会检查签名、花费条件和矿工奖励是否符合规则。这里的签名,是用私钥这个秘密数值,生成可以验证的付款授权证明。其他人无须知道这个秘密,就能检查签名。安娜的节点不会因为一笔有问题的交易来自唯一可用的来源,就接受它。然而,验证无法揭示一个从未到达的有效区块。就像你能确认收到的信是真信,却不知道有人扣留了之后的所有信件。现有信息是否有效,与它是否完整,是两个问题。 [5] [9]
其他节点还在前进,被隔离的节点却可能停在最后一个已知区块。被隔离的矿工甚至可能继续在已被放弃的分支上挖矿,失去预期奖励。不过,等一个区块等得很久,本身并不能证明遭受攻击:挖矿具有随机性,普通故障也会造成问题。应综合多个迹象判断,而不是只看屏幕更新得慢不慢。 [1] [5] [8]
攻击者可以向安娜展示一条包含她的付款、且符合规则的私有分支,同时在其余网络里以另一种方式花掉同一笔资金。恢复连接后,节点可能转向累计工作量更多的有效分支。这叫 Reorg,也就是替换已接受历史的一部分。被放弃分支上的付款可能不再得到确认。但攻击者必须为自己的区块提供 Proof of Work。这是计算成本高昂的搜索所产生的可验证结果,这些区块也必须满足这一要求。所需工作量也可能来自被攻击者隔离的矿工。编造确认次数骗不了 Full Node;能否成功还取决于隔离持续时间和攻击者的资源。 [1] [5] [6]
防御措施试图避免所有连接都落入同一个对手手中。Bitcoin Core 会给已知地址分组,并在选择出站连接时促进网络多样性。IP 地址标识网络中程序要连接的位置。但不同 IP 地址仍可能属于同一运营者,或经过同一套基础设施。这些措施能减少集中程度、增加攻击难度,却不能证明每个对等方都独立。 [3] [4]
Bitcoin Core 使用称为 feeler 的短暂连接,检查另一个地址是否可达。额外的区块转发连接承担不同任务:它们可能带来新的区块头(区块的简要技术记录),以及链如何继续发展的另一份信息。因此,不能说每个 feeler 都会立即下载最新历史。所引 Bitcoin Core 29.0 代码展示了这些不同的防御;没有哪一项能单独保证结束隔离。 [4] [8]
手动添加已知的对等方,可能建立另一条路径,前提是它可达,并且确实连接着其余网络。不过,经由同一个服务商的多条连接未必相互独立。使用仍在维护的软件、理解连接设置,比盲目导入别人的地址列表更有意义。自己的验证仍然有效:信任一个信息源的可用性,并不等于允许它发送无效区块。 [2] [4] [6]
Sybil Attack 是一个对手使用多个身份,可能为 Eclipse Attack 创造条件。Eclipse 指成功把某个节点或选定群体与诚实信息源隔离。更广泛的网络分区则会分隔整个网络的不同部分,不一定通过这种方式产生。普通用户需要理解的是:Full Node 提供自主验证,但它也需要获得不受攻击者控制的信息。 [1] [6]
要获得更完整的理解,请将本词条与以下词条结合阅读: Sybil Attack, Block Propagation, Compact Blocks, Nakamoto Consensus, Bitcoin, Full Node. 反向关联还来自: 双重支付, Byzantine Generals Problem, Nakamoto Consensus, Sybil Attack.