“拜占庭故障下的状态机复制由认证消息与 quorum 证书实现,底层是消息传递。PBFT 的正常路径、checkpoint 与 view change 成为后续 BFT 协议的基线;经典正常路…”
形式陈述
在拜占庭故障模型中,消息传递系统里的故障进程可以任意偏离协议:发送内容矛盾的消息、伪造本地状态、选择性沉默、与其他故障进程串谋,或按某个对手策略统一行动;正确进程则始终按协议执行。一个完整的模型陈述必须给出以下参数:故障进程数上界
直觉
崩溃进程在停止前遵守协议,拜占庭进程则可能继续发送格式正确但内容矛盾的消息。故“收到回复”只能证明某个通信事件发生,不能证明其中的日志、余额或投票可信。协议需要约束正确进程何时出具证据,以及一个决定必须包含多少相互兼容的证据。
认证信道和数字签名解决不同问题。认证信道帮助 B 判断这条消息确由 A 发来;可转移的签名让 B 把 A 的声明交给 C 验证。它们都不能阻止恶意 A 分别签署 0 和 1,只能使这种双签在证据汇集后被识别。安全协议应在矛盾决定发生前排除风险,事后能查出责任人不是一致性的替代品。
对手能力也有边界:采用不可伪造签名时,不能再让对手凭空生成正确节点的签名;采用私有随机数时,“全知”不能无条件包含尚未揭示的随机结果。不同威胁模型之间的容错结论,只有在这些能力对应时才能比较。
例子与边界
最典型的行为是 equivocation(两面话):一个故障副本向节点 A 声称"提交 0",同时向节点 B 声称"提交 1"。若协议让节点直接采信收到的第一条消息,A 与 B 将做出矛盾决定;因此许多拜占庭协议要求节点在行动前收集达到特定法定人数的相互印证,具体门槛由任务、认证方式与同步模型决定。经典无数字签名的口头消息模型中,
例如四副本 A、B、C、D 中最多一个 Byzantine,提交证据需要三票。两个三票集合至少相交两人,故至少一人正确;若正确副本不能为同一阶段、同一实例的冲突值投票,两份冲突证书便不能并存。若只需两票,集合 {A,B} 与 {A,C} 的唯一交点 A 可以正是 Byzantine,于是它分别支持两个值,B、C 各自诚实仍挡不住冲突。这一轨迹解释的是该证书规则的阈值,不是所有 Byzantine 任务的统一下界。
两条边界需要分辨。其一,数字签名能防止转述过程中的伪造——A 无法凭空捏造"B 签名说了
推论与应用
拜占庭模型是对抗环境下协议设计的基准:复制状态机、区块链、航空航天冗余控制都以它为威胁模型。理论侧,它催生了拜占庭可靠广播、拜占庭共识与可验证秘密共享等原语,各自带有依模型而异的容错阈值;工程侧,实用拜占庭容错(PBFT)证明了
参考资料
-
Leslie Lamport, Robert Shostak, and Marshall Pease, “The Byzantine Generals Problem”, ACM TOPLAS 4(3), 1982, pp. 382–401;口头消息与签名消息两种模型。
-
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。