跳到正文

PoS 长程攻击:历史密钥、引导风险与检查点

PoS 长程攻击利用历史验证者权限签署另一套历史。了解哪些节点会暴露于风险、攻击者必须复现什么,以及弱主观性检查点和协议特定的同步规则如何限制风险。

更新于

仅供协议安全教育分析。长程攻击抵抗能力取决于具体协议和版本;在依赖新同步或长期离线的节点之前,应从经过身份验证并独立核对的来源获取引导数据。

直接回答

权益证明长程攻击是利用在很久以前有效的验证者权限,使一套相互冲突的历史看起来可信的企图。一种常见形式通常称为后验腐化:攻击者在验证者退出且其抵押品不再可被罚没后,获取或攻破这些验证者的密钥。由于生成旧签名不需要重放工作量证明所消耗的能源,攻击者相较于诚实链的历史成本,可能以较低代价构建一条内部一致的分叉。

攻击目标通常是没有近期已验证视图的节点:首次运行的节点、从旧备份恢复的节点,或离线时间超过协议安全同步范围的节点。持续观察网络的节点已经知道一个已终局化或受到其他方式保护的祖先,理应拒绝与之冲突的分叉。因此,日蚀攻击或被攻破的数据源可通过向同步节点隐藏诚实视图来放大攻击。

仅有历史密钥并不等于拥有通用伪造工具。另一套历史必须满足目标协议的签名域、状态转换、验证者集合演变、时间规则、终局性或链选择证据,以及任何密钥演进或检查点约束。有些 PoS 协议要求近期弱主观性检查点;另一些协议规定从创世状态出发的引导方式,或采用不同的信任与可用性假设。应分析确切的链、网络、分叉版本、客户端和同步模式,而不是把“PoS”视为一种单一机制。

检查点不只是一个方便使用的区块编号。它把特定网络和共识状态绑定到某个 epoch、slot 或高度上的 root 或哈希。通过身份验证后,它会限制节点考虑哪些历史。随后,节点可以从该锚点开始,依照协议规则验证剩余链。这就是弱主观性:在引导阶段提供有界的外部输入,之后在假设期限内进行客观验证,而不是永久信任某个对等节点报告的最新链头。

攻击与验证路径

  1. 选择旧分叉点。 攻击者找出一个历史状态;其验证者权限后来已经轮换,或新节点难以独立验证该权限。
  2. 获得足够的历史签名权。 验证者退出后,密钥可能被购买、窃取、保留、从备份中恢复,或经由被攻破的签名系统暴露。所需权重和消息类型取决于具体协议;拥有一把旧提议者密钥并不必然足够。
  3. 构造符合协议规则的替代历史。 攻击者生成能够通过受害者客户端历史检查的区块、投票、证书和验证者集合变更。任何无效状态转换、错误签名域、不可能的时间安排或缺失的证明,仍可使该分叉无效。
  4. 延伸并展示分叉。 低成本的签名生成可能让攻击者填充一段很长的历史,但原始区块数量并不能决定结果。该分支必须赢得或绕过相应同步模式采用的精确选择流程。
  5. 控制引导视图。 受害者与经过身份验证的近期检查点或诚实对等节点证据隔离,只能看到替代历史,并被告知它是唯一或首选候选链。
  6. 诱导下游依赖。 如果节点接受了错误状态,其 RPC、钱包、索引器、跨链桥监控器或应用程序可能报告在攻击者分叉上符合协议规则的余额、事件和验证者成员关系,尽管实时网络遵循另一条链。

防御者应反向复现这条路径:验证锚点身份,确认其链和网络标识,核实候选链是它的后代,执行全部共识与状态转换检查,并在独立基础设施之间比较已终局化或被选中的状态。下载成功并不能证明所选历史是规范历史。

完整示例

假设验证者集合 V_old 在 epoch 120,000 控制着一条假想 PoS 链。多年后,该历史权重中超过 2/3 的验证者已经退出,不再承受协议惩罚。攻击者获得这些旧密钥,并在检查点 C_old 之后立即开始构造一套相互冲突的历史。

在伪造分支上,攻击者签署该假想协议所需的投票,更改后续验证者成员,并继续推进到 epoch 420,000。诚实网络也已到达 epoch 420,000,因此相同的 epoch 编号或更长的文件无法告诉引导中的节点,哪条分支才是社会和运营层面认可的规范链。伪造分支是否具备可接受性,取决于它能否满足该协议的每一条历史规则。

节点 N_live 曾观察到真实的已终局化检查点 C_recent,它位于 epoch 419,936。由于攻击分叉并非 C_recent 的后代,N_live 会拒绝它。然而,节点 N_new 从创世状态开始,只连接到攻击者控制的对等节点,且没有经过身份验证的近期锚点。如果其协议和同步模式无法仅凭历史内部证据区分两条链,它就可能接受攻击分支。

N_new 提供经过身份验证的二元组 C_recent = (root, 419,936) 会改变决策边界。客户端必须要求同步路径包含这一确切检查点,并在无法满足时以封闭方式失败。示例中的 epoch 和 2/3 阈值用于说明一种终局性风格的设计;它们不是通用 PoS 参数,也不是任何具名网络的当前设置。

控制措施与审查清单

协议设计

  • 记录确切的长程安全模型:后验腐化、验证者轮换、自适应密钥攻破、网络隔离和数据可用性。
  • 定义哪些已终局化状态永远不得回滚,以及分叉选择如何处理与本地可信锚点的冲突。
  • 限制验证者退出、提款和集合轮换,使安全假设在仍可检测和惩罚矛盾签名时保持有效。
  • 将弱主观性期限或替代同步安全假设定义为根据当前状态和协议常量推导出的值,而不是永久不变的日历期限。
  • 在协议设计支持的情况下考虑密钥演进签名或前向安全签名;普通密钥删除是有用的安全习惯,但并非完整的共识防御措施。
  • 分别测试首次同步、检查点同步、快照恢复和长期离线恢复。安全的实时分叉选择规则不会自动保证引导过程安全。

节点引导与运维

  • 同步前记录检查点 root 或区块哈希、epoch 或高度、chain ID、网络、分叉版本、获取时间和提供方。
  • 通过经过身份验证的渠道获取锚点,并比较多个真正独立的来源。由同一节点或运营方支撑的多个网站并不相互独立。
  • 拒绝过期、格式错误、网络不符或相互冲突的检查点。验证失败后,不得静默回退到没有锚点的同步方式。
  • 要求同步后的链包含确切锚点,并用预定的共识客户端和执行客户端验证它的所有后代。
  • 采用对等节点、客户端、运营方和 RPC 多样性;监控日蚀条件、已终局化 root 分歧、异常回滚和长期终局性故障。
  • 从旧数据库或备份恢复后重新核对锚点,并在协议规定的安全期限内刷新锚点。

应用依赖

  • 不要仅因为一个新同步的 RPC 报告成功,就释放存款、跨链桥消息或不可逆交易。
  • 在执行高影响操作前,应在独立节点之间核对链标识、已终局化检查点和事件祖先关系。
  • 将共识历史与应用事实分开:规范链并不能证明预言机正确、合约安全、协议之外的数据可用,也不能证明托管人有偿付能力。
  • 为相互冲突的已终局化检查点或可信锚点制定停止策略。这种情况可能意味着共识故障、引导数据损坏或网络选择错误,不应通过自动选择较长分支来解决。

常见误区

  • 每条 PoS 链都以同样方式暴露于攻击。 长程攻击抵抗能力取决于协议的验证者演变、签名、终局性、分叉选择、检查点和同步假设。
  • 旧密钥可以不受约束地改写任何交易。 攻击者仍须生成一套能通过受害者完整验证规则的历史;历史权限只在某些攻击构造中是必要条件,而且可能并不充分。
  • 区块、epoch 或签名更多的链就是真的。 选择过程使用协议特定的有效性、权重、证书和锚点,不存在通用的长度比较方法。
  • 仅靠终局性就能让从创世状态启动的节点识别社会认可的链。 对没有经过身份验证的近期视图的节点而言,两套内部有效的已终局化历史可能无法区分;终局性保护的是已经知道相关检查点的节点。
  • 罚没总能阻止攻击。 完全退出的验证者可能已没有可罚没的抵押品,而且证据必须可归责,并在惩罚仍可执行时完成处理。
  • 检查点意味着永远信任一家公司。 信任可以限定在一个特定的近期锚点,并通过身份验证分发、独立交叉核对和后续本地验证进一步降低。
  • 删除退役密钥就解决了协议问题。 安全擦除可以降低密钥泄露风险,但健壮的共识和引导规则必须容忍部分历史密钥变得可用。

相关主题

来源

导航

搜索知识库...