分布式与一致性协议之拜占庭将军问题(二)

拜占庭将军问题

如何解决n>(3f+1)的限制

其实,苏秦还可以通过签名的方式在不增加将军人数的情况下解决二忠一叛的难题。这个办法的关键在于通过消息签名约束叛将的作恶行为,也就是说,任何篡改和伪造忠将的行为都会被发现。既然签名消息这么重要,那么,什么是签名消息呢?

什么是签名消息?

  • 签名消息是指带有数字签名的消息。数字签名与在纸质合同上进行签名来确认合同内容和证明身份类似。它既可以证实内容的完整性,又可以确认内容的来源,实现不可抵赖性(Non-Repudiation)。既然数字签名的优点那么多,那么如何实现签名消息呢?今天Bob要给Alice发送一条消息,告诉她,“我已经到北京了”。但是Bob希望这个消息能被Alice完整地
    接收到,即内容不能被篡改或者伪造。下面我们一起来看看如何帮Bob和Alice想想办法,看看如何发送这条消息。

  • 首先,为了避免密钥泄漏,我们推荐Bob和Alice使用非对称加密算法(比如RSA),也就是说,加密和解密使用不同的密钥,在这里,Bob持有需要安全报关的私钥,Alice持有功开的公钥。然后,Bob用哈希算法(比如MD5)对消息对消息进行摘要(Digest),然后用私钥对摘要进行加密,生成数字签名(Signature),如图所示在这里插入图片描述

  • 接着,Bob将加密摘要和消息一起发送给Alice,如图所示。
    接下来,当Alice接收到消息和加密摘要后,它会用自己的公钥对加密摘要进行解密,并对消息内容进行摘要(Digest-2),然后将新获取的摘要(Digest-2)和解密后的摘要(Digest-1)进行比对,如果两个摘要(Digest-1和Digest-2)一致,就说明消息是来自Bob,并且是完整的,如图所示。
    在这里插入图片描述

  • 可以看到,通过这种方法,Bob的消息就能被Alice完整接收到了,任何篡改和伪造Bob消息的行为都会因为摘要不一致而被发现。而这条消息就是签名消息。

  • 通过上面的Bob和Alice的故事,可以看到,在数字签名的约束下,叛将是无法篡改和伪造忠将的消息的,因为任何篡改和伪造消息的行为都会被发现,即作恶的行为被约束了。也就是说,叛将虽然能做"小"恶(比如,不想赢消息或者叛将们相互串通发送指定的消息),但它们无法篡改或伪造忠将的消息。

既然数字签名约束了叛将们的作恶行为,那么苏秦怎样才能实现作战的一致性呢?在这里插入图片描述

签名消息型拜占庭问题之解

根据前面提到的,苏秦通过签名消息的方式,不仅能在不增加将军认数的情况下解决二忠一叛的难题,还能实现无论叛将数多少,都能保证忠诚的将军们始终达成一致的作战计划。为了便于理解,以二忠二叛(更复杂的叛将作恶模型,因为叛将们可以相互勾结、串通)为例来具体演示一下,苏秦是怎样实现作战计划的一致性的。如图所示

  • 首先,苏秦要通过印章、虎符等信物,实现这样几个特性
    1.忠将的签名无法伪造,而且对他签名消息的内容进行任何更改都会被发现
    2.任何人都能验证将军签名的真伪
    其次,4位将军约定了一些流程来发送作战信息、执行作战指令
  • 第一轮:
    1.先发送作战指令的将军作为指挥官,其他将军作为副官
    2.指挥官将他签名的作战指令发送给每位副官
    3.每位副官将从指挥官处收到的新的作战指令(也就是与之前收到的作战指令不同),按照顺序(比如按照首字母字典排序)放到一个盒子里面
  • 第二轮:
    1.除了第一轮的指挥官外,剩余的3位将军将分别作为指挥官,在上一轮收到的作战指令加上自己的签名,并转发给其他将军
  • 第三轮:
    1.除了第一、二轮的指挥官外,剩余的两位将军将分别作为指挥官,在上一轮收到的作战指令上,加上自己的签名,并转发给
    其他将军。最后,各位将军按照约定,比如使用盒子里最中间的那个指令来执行作战指令。
    假设盒子中的指令为A、B、C,那中间的指令就是第n/2个命令。其中,n为盒子里的指令数,指令从0开始编号,也就是B
    在这里插入图片描述

忠将先发送消息

  • 为了更直观地理解如何基于签名消息实现忠将们的作战计划的一致性,下面来演示一下作战信息协商过程,仍会分别以忠将和叛将先发送作战信息为例来完整地演示叛将对作战计划干扰破坏的可能性。忠将先发送作战信息的情况是什么样的呢?为了演示方便,假设苏秦先发起带有签名的作战信息,作战指令是"进攻",那么在第一轮作战信息协商中,苏秦向齐、楚、燕发送作战指令"进攻",如图所示
    在这里插入图片描述
  • 在第二轮作战信息协商中,齐、楚、燕分别作为指挥官,向另外两位发送作战信息"进攻".虽然楚、燕已经叛变了,但是在签名的约束下,它们无法篡改和伪造忠将的消息。为了达到干扰作战计划的目的,它们一个选择发送消息,一个选择默不作声,不配合,如图所示在这里插入图片描述
  • 在第三轮作战信息协商中,齐、楚分别作为指挥官,将接收到的作战信息附加上自己的签名,并转发给另一位,如图所示,(这时的叛将燕还是默不作声,不配合)。
  • 最终,齐收到的作战信息都是"进攻"(它收到了苏秦和楚地作战信息),按照"执行盒子最中间的指令"的约定,齐会和苏秦一起执行作战指令"进攻",实现忠将们的作战计划的一致性。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coffee_babe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值