码迷,mamicode.com
首页 > 其他好文 > 详细

拜占庭协议——236357byzantine generals

时间:2019-09-02 19:50:17      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:cti   direct   连通   连接   identity   两种   crash   roc   distrib   

本文是236357Distributed Algorithms-The byzantine generals文档的总结。

技术图片

fault VS Byzantine fault

一般来说,fault就是指一个replica在运行中因为各种原因发生了错误,无法参与接下来的消息交换。fault之后这个replica就退出消息传递过程。byzantine fault是指这个发生了错误的replica不仅不为系统安全性做贡献,反而恶意传递假消息来试图掌控系统中最后达成一致的value。
能忍受byzantine fault的系统一定可以忍受普通的crash,反之不成立。

两种协议

十字军协议(The Crusade Agreement)

达成十字军共识的条件是:

  • 如果transmitter是可靠的,那么所有可靠的processor都应该就transmitter发送的值达成一致
  • 如果transmitter是不可靠的,那么所有知道transmitter不可靠的processor都应该对同一个值达成一致(只要求是同一个值,并不指定具体的值)

拜占庭协议(The Byzantine Agreement)

达成拜占庭共识的条件是:

  • 无论transmitter是否可靠,所有可靠的processor都应该就同一个值达成一致
  • 如果transmitter可靠,可靠的processor们应该对transmitter发出的值达成一致

假设

  1. 所有processor组成一个k-顶点连通图(k-connected bidirectional network);——意味着任意去掉k-1个processor,也能保持联通;也意味着两个顶点之间至少有k个定点不相交。
  2. 每一个processor都知道整个网络的拓扑结构;
  3. processor们传递消息是通过连接(而非广播)传播;通过Link能捕捉到包吗,应该是
  4. 每一个processor都可以确定传给自己消息的邻居的身份;
  5. 每一条消息都包含着自己的确定的传递路径;
  6. 一个可靠的processor只会在看到这条消息的既定的传输路径中,自己将要发送给的邻居在自己之后,才会中继这条消息;
  7. 一个可靠的processor只会在看到这条消息的既定传输路径中,自己在自己收到包的邻居之后,才会中继这条消息;——也就是说,一个faulty processor如果想把自己的消息传给可靠的processor,一定要在后继者的身份之前加上自己的identity;尽管接下来可能有新的faulty processor抹去了前一个faulty processor的identity,这个新的faulty processor的identity将会在消息路径中;——即,一个经过了faulty的,现在在可靠的processor手中的消息,消息路径中至少包含一个faulty的identity;
  8. 可靠的processor收到消息后,不篡改、不窃听地将消息中继出去;
  9. 可靠的processor传递消息时间有上界;
  10. 系统中faulty processor数目有上界。

可疑的processor(Suspicious processors)

$V_a={a_1,a_2,...,a_r}$是某一个processor收到的所有的value。(这些value可能由于各种原因可能并不相等)。可疑的processor集合定义为$U_x$,其中不包括transmitter,如果去掉了$V_a$中经过了$U_x$中的所有的processor的value,那么$V$中所有的值都相同。

拜占庭协议——236357byzantine generals

标签:cti   direct   连通   连接   identity   两种   crash   roc   distrib   

原文地址:https://www.cnblogs.com/riko707/p/11447995.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!