Skip to content

拜占庭故障

Byzantine failure

故障进程可任意偏离协议并向不同接收者发送矛盾信息。

条目类型
模型

形式陈述

在拜占庭故障模型中,消息传递系统里的故障进程可以任意偏离协议:发送内容矛盾的消息、伪造本地状态、选择性沉默、与其他故障进程串谋,或按某个对手策略统一行动;正确进程则始终按协议执行。一个完整的模型陈述必须给出以下参数:故障进程数上界 f、信道是否认证(接收者能否确认消息发送者)、是否使用不可伪造的数字签名、网络的同步程度,以及对手是静态还是自适应(能否在执行中挑选腐化对象)。拜占庭容错任务的目标照例分为安全性与活性两类。可容忍的故障比例不是故障定义的一部分,而由具体模型与任务决定:例如经典同步“口头消息”模型使用带发送者身份的点对点信道但不使用数字签名,其拜占庭一致性门槛为 n>3f;若连发送者身份都不能认证,模型与结论还会进一步改变。

直觉

崩溃故障是沉默地退出,拜占庭故障则是主动制造彼此不一致的现实。引入这个模型的动机是"最坏情况抽象":内存位翻转、软件 bug、被攻陷的节点、恶意运营者——与其逐一枚举故障形态并分别设防,不如假设故障节点由一个全知的对手操纵,凡在此假设下仍正确的协议,对一切较弱的故障自动免疫。有效的心智图像是一场有内奸的会议:内奸可以对每个人说不同的话,正确成员的任务不是识别谎言的内容,而是依靠"足够多的相互转述"让谎言自相矛盾、无法同时欺骗过半数视角。与第一印象不同,难点不在"有人说谎",而在正确进程之间的信息本身因此变得不可传递——A 转述"B 说了 x"时,听者无法分辨是 B 说谎还是 A 说谎。

例子与边界

最典型的行为是 equivocation(两面话):一个故障副本向节点 A 声称"提交 0",同时向节点 B 声称"提交 1"。若协议让节点直接采信收到的第一条消息,A 与 B 将做出矛盾决定;因此许多拜占庭协议要求节点在行动前收集达到特定法定人数的相互印证,具体门槛由任务、认证方式与同步模型决定。经典无数字签名的口头消息模型中,n>3f 的必要性可在 n=3f=1 的三方场景中看到雏形:正确的两方各自面对"另外两方说法冲突"的局面,且与对手构造的其他故障场景不可区分,因而无法安全决定。

两条边界需要分辨。其一,数字签名能防止转述过程中的伪造——A 无法凭空捏造"B 签名说了 x"——从而改变可解性门槛与协议结构;但签名阻止不了持有私钥的故障节点亲自签署两份矛盾声明,equivocation 依然存在,阈值与协议必须重新分析。其二,把丢包、软件 bug 或被攻陷节点笼统称作 Byzantine 之前,必须先写清对手能力与信道假设:标准模型通常仍假设对手不能破解密码学原语、不能在认证信道上冒充正确进程,"任意行为"是在这些约束之内的任意。

推论与应用

拜占庭模型是对抗环境下协议设计的基准:复制状态机、区块链、航空航天冗余控制都以它为威胁模型。理论侧,它催生了拜占庭可靠广播、拜占庭共识与可验证秘密共享等原语,各自带有依模型而异的容错阈值;工程侧,实用拜占庭容错(PBFT)证明了 n=3f+1 副本的状态机复制可以达到实用性能,成为其后大量 BFT 系统与许可链共识的原型。与崩溃故障模型对照阅读,可以清楚看到"故障假设每加强一档,协议需要的冗余与通信就上一个台阶"这条主线。

参考资料
  • Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Chs. 6 and 14, Byzantine processes and agreement。
  • Miguel Castro and Barbara Liskov, “Practical Byzantine Fault Tolerance,” OSDI 1999,Full paper, Byzantine replica and adversary model。
关系图谱7 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

并列辨析