即使区块链的共识层和密码层完美无瑕,P2P 网络层仍然是攻击者的沃土。本节分析三类最致命的 P2P 攻击:日蚀攻击(隔离单节点)、女巫攻击(伪造身份泛滥)、以及 BGP 劫持(割裂全网),并揭示 Bitcoin Core 和以太坊客户端的工程防御手段。
6.5.1 日蚀攻击(Eclipse Attack)
日蚀攻击的目标不是全网,而是单个目标节点。攻击者通过耗尽目标节点的所有连接槽位(通常 8 个出站 + 117 个入站),使得目标只能与攻击者控制的节点通信。
一旦目标被"日蚀",攻击者可:
- 隔离其视角:使其看到的区块链滞后于主链;
- 双花欺骗:让目标接受尚未被主网确认的交易;
- 挖矿劫持:若目标是矿工,使其在攻击者指定的分叉上浪费算力。
graph TD
subgraph 正常网络
A[目标节点] --- B[诚实节点1]
A --- C[诚实节点2]
A --- D[诚实节点3]
B --- E[全网其他节点]
end
subgraph 被日蚀后
A1[目标节点] --- M1[恶意节点A]
A1 --- M2[恶意节点B]
A1 --- M3[恶意节点C]
M1 --- M2
M1 --- M3
M1 -.->|隐藏主链| A1
end
style A fill:#ccffcc
style A1 fill:#ffcccc
6.5.2 日蚀攻击的四种防御机制
防御一:锚定节点(Anchor Peers / Outbound Connections)
比特币默认维持 8 个出站连接(Outbound) 和最多 117 个入站连接(Inbound)。出站连接由节点主动发起,优先连接已知的、长期在线的"种子"和"锚定"节点:
攻击者必须同时控制目标的所有出站目标,成本随出站连接数线性增长。
防御二:地址随机化与计时衰减
节点的地址数据库(peers.dat)采用随机采样 + LRU 驱逐。新地址有老化期(试连失败则扣分),成功连接则保留。这使得攻击者难以长期盘踞。
防御三:非对称连接策略
| 连接类型 | 数量 | 特性 |
|---|---|---|
| 出站(Outbound) | 8 | 主动选择,可信度高 |
| 入站(Inbound) | 最多125 | 被动接受,风险高 |
| 区块中继专用 | 2(Bitcoin Core v25+) | 专门维持区块传播,不参与交易 |
通过限制入站、强化出站,节点将其"信任边界"向主动选择偏移。
防御四:多样连接(Feelers + Outbound Rotation)
节点定期尝试新连接("try" 和 "feeler" 地址),一旦新连接稳定,就随机关闭一个旧连接。这确保了节点的邻居集合持续演化:
随时间 增长,成功概率指数衰减。
6.5.3 女巫攻击(Sybil Attack)
定义:攻击者创建大量廉价节点身份,试图控制网络中的投票/共识/路由比例。
在无许可网络中,Sybil 身份是"免费的"——任何人都能运行一个节点并生成新的 Node ID。这使得 Sybil 防御极为困难。
防御:经济/资源门槛
| 机制 | 原理 | 代表 |
|---|---|---|
| 算力门槛(PoW) | 节点需投入不可逆算力 | Bitcoin |
| 质押门槛(PoS) | 节点需锁定资本 | Ethereum 2.0 |
| 工作量绑定 | Node ID 的哈希需满足 PoW 条件 | S/Kademlia |
| 社交信任 | 身份由现实世界的信任网络背书 | 联盟链/PoA |
核心不等式:
只要让每个节点的创建成本足够高,Sybil 即无利可图。
6.5.4 BGP 劫持与互联网基础设施攻击
P2P 网络运行在 TCP/IP 之上,而互联网的路由基础设施(BGP)并非去中心化。攻击者可以:
- 前缀劫持:发布错误的 BGP 路由宣告,将目标 IP 段的流量引流到攻击者 AS(自治系统);
- 分区攻击:将特定区域(如某国)的节点与主网隔离,形成事实上的链分叉。
防御:
- 多宿主连接:节点使用多个 ISP、多个 IP 段;
- Tor/匿名网络:隐藏真实 IP;
- 区块延时广播:部分矿池通过卫星/短波广播区块,绕过地面互联网。
6.5.5 DDoS 与传播阻塞
攻击者向全网发送大量无效交易或超大区块,消耗节点带宽与 CPU。Bitcoin 的常见缓解:
- 速率限制:每个连接限制 inv/getdata 频率;
- 最小中继费率:低于 minRelayFee 的交易直接丢弃,不进入 Mempool;
- 逻辑惩罚:发送大量无效消息的节点被暂时禁连。
graph TD
A[攻击者发布低费率洪水] --> B[节点A]
B -->|minRelayFee 过滤| C[直接丢弃]
B -->|速率限制| D[不超配额]
B -->|逻辑惩罚| E[断开连接]
C --> F[不进入 Mempool]
D --> F
E --> G[攻击者 IP 被列入临时黑名单]
关键认知:P2P 攻击的本质是利用网络层的信任假设缺失。无论是隔离单节点还是割裂网络,攻击者都是在利用"谁是我邻居?"这个问题在无许可环境中的脆弱性。防御的核心思路始终是:提高邻居选择的不确定性,提高身份伪造的成本。
← 6.4 中继策略 | 前往 → 6.6 轻客户端与全节点行为差异
评论
0评论加载中…