拜占庭将军问题(三)——书面协议

本文详细介绍了书面协议算法SM(m),用于解决拜占庭将军问题。在不可伪造签名消息的假设下,算法确保在将军中存在最多m个叛徒时仍能达成一致决定。通过司令官发送签名命令,副官之间传递并添加签名,最后根据choice函数选择行动,保证了协议的正确性。
摘要由CSDN通过智能技术生成

在上篇文章中,对口头消息算法***OM(m)***进行了阐述,***OM(m)***算法能够处理在大于***3m***个将军中至多存在***m***个叛徒的拜占庭将军问题。Leslie的论文1中,对将军之间发送不可篡改的签名消息的情况进行分析,阐述书面协议算法***SM(m)***。

拜占庭将军问题

假设

为了限制叛徒发送的消息,从而使拜占庭将军问题更加简单。一种方法是让每位将军发送不可伪造的签名消息。更准确的来说,在假设A1-A3的基础上添加如下假设:

A4 (a) 忠诚将军的签名不能被伪造,并且任何针对他签名消息的篡改都能被检测到;
(b) 任何将军都可以验证将军签名的真实性

注意,我们并没有对叛徒的签名进行限制,也就是说一个叛徒的签名可以被其他叛徒伪造,进而叛徒可以进行串谋作恶。

引入了签名消息之后,三将军问题也就不在成立了。现在给出一个算法,在任意数量将军中有***m***个叛徒的情况。

SM(m) 算法

在算法中,司令官发送一个签名的命令给他的每个副官。然后,每个副官添加他的签名到命令上,并发送给其他副官,收到命令的副官再添加他的签名发送给其他副官…

算法还假定了一个choice函数,作用在一个命令的集合上来获得一个单独的命令。choice函数需要满足:

  1. 如果命令集合 V V V只包含一个元素 v v v,那么 c h o i n c e ( V ) = v choince(V)=v choince(V)=v.
  2. 如果命令集是 ∅ \emptyset ,那么 c h o i n c e ( ∅ ) = R E T R E A T choince(\emptyset)=RETREAT choince()=RETREAT.

例如,choince函数可以是取有序集合 V V V的中位数。

在下面的算法中,令 x : i x:i x:i指由将军 i i i签名的命令值 x x x v : j : i v:j:i v:j:i指命令指 v v v由将军 j j j签名后再由将军 i i i签名。令将军 0 0 0为司令官,每个副官 i i i维护一个命令集 V i V_i Vi,包含他收到的被正确签名的命令值。(如果司令官是忠诚的,这个值集的元素不会超过一个)。

Algorithm SM(m)

初始化 V i = ∅ V_i = \emptyset Vi=

(1) 司令官签名并发送他的命令给每个副官;
(2) 对于每个 i i i:

(A) 如果副官 i i i从司令官接收到一个 v : 0 v:0 v:0形式的消息,并且他还没有接收到过任何命令,那么:

(i) 令 V i = { v } V_i=\{v\} Vi={ v}</

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值