区块链安全—详谈共识攻击(三)
字数 2592 2025-08-22 18:37:15
区块链共识攻击深度解析
一、前言
本文是区块链共识攻击系列教学的第三部分,将详细解析Ripple共识算法、POET共识机制以及针对权益证明(PoS)的长程攻击等安全威胁。前两部分已介绍了多种共识机制的具体流程及优缺点,本文将继续补充其他共识理念并分析其安全漏洞。
二、Ripple共识算法(RCP)详解
1. 协议背景
瑞波(Ripple)是一个基于互联网的全球开放支付网络,特点包括:
- 支持任意货币转账
- 交易确认时间仅需几秒
- 交易费用接近于零
2. 节点类型
Ripple网络包含三种节点类型:
- 活跃信任节点:参与共识过程的信任节点
- 不活跃信任节点:暂时不参与共识的信任节点
- 验证节点:负责最终验证交易的节点
3. 协议流程
RCP协议的具体运行过程分为六个阶段:
-
交易接收阶段
- 验证节点接收并保存未经验证的交易
- 新到达的交易需等待下一轮共识
-
提议生成阶段
- 活跃信任节点接收系统交易
- 验证交易合法性(包括交易双方额度、历史等)
- 将合法交易打包成提议发送给验证节点
-
提议验证阶段
- 验证节点检查提议来源
- 仅接受来自信任节点列表中合法节点的提议
- 非法来源的提议将被丢弃
-
交易清单确定阶段
- 设定信任节点总数(M)和认可比例(N)
- 当某交易获得超过M×N个信任节点认可时,被验证节点认可
- 示例:M=10,N=60% → 需要6个节点认可
-
账本共识达成阶段
- 验证节点持续更新认可交易列表
- 只有当每笔交易都获得至少N%信任节点认可时,共识才达成
- 否则继续共识过程
-
账本发布阶段
- 共识完成后形成最新账本
- 将剩余待确认交易及新交易纳入下一轮共识
- 发布账本供全网节点下载使用
4. 协议特点与安全分析
优点:
- 交易确认速度快(几秒内完成)
- 效率高于PoW等匿名共识算法
- 拜占庭容错能力为(n-1)/5(可容忍20%拜占庭节点)
缺点:
- 高度中心化("俱乐部"模式)
- 仅适用于权限链(Permissioned chain)场景
- 易受节点伪造攻击(黑客可伪造并潜伏大量节点)
安全威胁:
- 信任节点列表的"中心化"特性可能导致腐败
- 新成员加入需51%现有会员同意,外部无影响力
- 大量伪造节点可能导致网络突然瘫痪
三、POET(消逝时间量证明)共识
1. 基本概念
POET(Proof of Elapsed Time)是英特尔开发的低能耗共识算法,特点包括:
- 用于许可区块链网络决定采矿权或区块赢家
- 基于英特尔SGX技术的可信执行环境(TEE)
- 实现"一个CPU一票"的中本聪最初设想
2. 工作原理
-
随机等待时间生成
- 每个节点从enclave(可信操作环境)获取随机等待时间
- 使用SGX安全CPU指令实现
-
领导者选举
- 等待时间最短的节点成为领导者(leader)
- 该节点率先发布新区块
-
关键技术函数
CreateTimer: 从enclave生成计时器CheckTimer: 验证计时器是否由enclave产生且已过期
-
凭证生成
- 满足条件后生成attestation凭证
- 用于验证certificate的真实性
3. 协议特点
- 公平性:成为leader的概率与贡献资源成正比
- 低门槛:使用通用处理器,无需专用矿机
- 节能:相比PoW能耗极低
- 健壮性:节点数量多,共识机制更健壮
四、长程攻击(Long-Range Attacks)
1. 基本概念
长程攻击是针对PoS共识的主要威胁,特点包括:
- 攻击者创建从创世区块开始的长分支链
- 试图替换当前合法主链(又称"替换历史攻击")
- 利用PoS的弱主观性和无代价模拟特性
2. 弱主观性问题
新/离线节点的困境:
- 新加入节点或长期离线节点回归时
- 需要确定哪个是合法主链
- 无法仅凭长度判断(PoS中多条链长度可能相同)
与PoW对比:
- PoW中主链=最长链(反映最多工作量)
- 除非51%攻击,否则无法创建竞争性长分支
- PoS中无算力消耗,可无代价创建长分支
3. 简单攻击模型
攻击场景:
- 验证池中有三个验证者A、B、C,各占33.3%权益
- 区块链不验证区块时间戳
攻击步骤:
- 攻击者A回溯到创世区块开始创建分支链
- 分支链出块速度与主链保持同步
- 当分支链长度与主链相同时,替换概率相同
- A伪造时间戳增强分支链可信度
4. 变节攻击(Stake Grinding Attack)
攻击前提:
- 系统已修复时间戳篡改漏洞
- 需要引入验证者轮换机制
攻击步骤:
- 验证者B在出块999个后退出系统
- B的私钥仍可为999区块前的区块签名
- A获取B的私钥(通过盗窃或贿赂)
- 利用B的签名加速分支链出块
- 分支链超过主链长度实现替换
5. 权益流损攻击(Stake Bleeding Attack)
攻击特点:
- 攻击者同时参与主链和分支链
- 主动拖延主链出块速度
- 在分支链上快速出块
具体步骤:
- A作为主链验证者开始构建分支链
- 当被选为主链验证者时故意跳过出块
- 导致主链出块速度下降(活性冻结攻击)
- 同时在分支链上快速出块并复制主链交易
- 分支链权益占比逐渐增加
- 当分支链超过主链时广播替换
五、其他智能合约漏洞
1. 浪子漏洞(Prodigal Contracts)
漏洞特征:
- 资金因漏洞返还给所有者而非预期接收方
- 相当于"空手套白狼":买家得商品,卖家无加密货币
漏洞原理:
- 合约向攻击者指定地址发送以太币
- 工资分发函数缺乏调用者检验
- 导致资金返还但交易成立的矛盾状态
防御措施:
- 确保消息发送者地址在合约存储中有记录
- 严格过滤CALL、DELEGATECALL和SUICIDE函数调用
2. 自杀漏洞(Suicide Vulnerability)
漏洞特征:
- 攻击者可调用合约的suicide函数
- 导致合约异常终止,交易失败
漏洞原理:
- suicide函数未检查调用者身份
- 授权用户列表可被恶意修改
- 攻击基础函数库可影响大量依赖合约
防御措施:
- 执行suicide前严格验证调用者身份
- 监控包含suicide的代码且发送者不在合约存储中的情况
六、总结
本文详细解析了Ripple共识算法、POET共识机制的工作原理及安全特性,重点分析了针对PoS共识的长程攻击的三种形式:简单攻击、变节攻击和权益流损攻击。同时介绍了智能合约中的浪子漏洞和自杀漏洞。理解这些共识机制及其潜在攻击方式,对于设计和评估区块链系统的安全性至关重要。