github编辑

常见攻击向量

除了智能合约代码层面的漏洞,区块链网络本身也面临多种攻击威胁。本节介绍几种最典型的攻击向量。

1. 51% 攻击 (51% Attack)

定义: 攻击者控制了网络中超过 50% 的算力(PoW)或权益(PoS),从而获得对账本的某些控制权。

后果

  • 双花 (Double Spending):攻击者可以构造一条包含“未花费交易”的私有链,在主链确认交易并获得商品/服务后,广播更长的私有链覆盖主链,导致之前的交易无效,实现同一笔资产花费两次。

  • 拒绝服务:攻击者可以拒绝打包特定地址的交易,或者阻止网络确认新块。

  • 重写历史:攻击者可以回滚最近的区块,但通常无法修改很久之前的区块(因为算力成本随深度指数级增加)。

局限性

  • 攻击者无法凭空创造资产。

  • 攻击者无法盗取他人的私钥或转移他人资产。

  • 对于大型公链(如比特币),发动 51% 攻击的成本极其高昂,但在小型山寨币网络中较常见。

2. 双花攻击 (Double Spending)

定义: 即“双重支付”,指同一笔数字货币被花掉了两次。

实现方式

  • 51% 攻击:最彻底的双花方式。

  • Race Attack(竞态攻击):攻击者几乎同时向网络广播两笔冲突的交易(一笔发给商家,一笔发给自己)。如果商家在未等待足够确认数的情况下发货,可能最后网络确认的是发给攻击者自己的那笔。

  • Finney Attack(芬尼攻击):攻击者自己是矿工,预先挖掘了一个包含私自转账给自己的区块但不广播,然后向商家发起交易。一旦商家发货,攻击者广播预挖的区块,使商家的交易失效。

防范

  • 等待多重确认:商家应等待足够多的区块确认(如比特币建议等待 6 个确认)再进行交付。

3. 重放攻击 (Replay Attack)

定义: 攻击者截获一条在一条链上有效的经过签名的交易,并在另一条链上(通常是硬分叉后的链)“通过重放”该交易,使其在另一条链上也被执行。

场景: 常见于硬分叉时期。例如,ETH 分叉出 ETC 时,如果没有重放保护,用户在 ETH 链上转账,可能导致 ETC 链上的同等资产也被转走。

防范

  • 链 ID (Chain ID):在交易签名数据中包含唯一的链标识符(如 EIP-155),使得交易只能在特定的链上有效。

4. 日蚀攻击 (Eclipse Attack)

定义: 攻击者控制了受害者节点的所有对外连接(对等节点),将受害者隔离在真实网络之外。

后果

  • 受害者只看到攻击者制造的虚假区块链视图。

  • 攻击者可以诱骗受害者确认无效交易或双花交易。

防范

  • 节点维护多元化的对等节点列表。

  • 在建立连接时引入随机性。

5. 女巫攻击 (Sybil Attack)

定义: 攻击者创建大量的伪造身份(节点),以控制网络影响或破坏信誉系统。

防范

  • 共识机制:PoW(算力门槛)和 PoS(资金门槛)大大增加了创建有效节点的成本。

最后更新于