MIT6.824 Lecture18 Fork Consistency

news2025/2/22 0:56:42

Background

拜占庭问题(Byzantine Generals Problem)得名于一个古老的传说,讲述了拜占庭帝国在战争中的一个失败策略。在这个故事中,多名拜占庭将军要协调进攻或撤退的行动,但是其中一些将军可能会向其他帝国泄露假消息或者出现背叛等行为。这使得其他将军面临了一个难题:应该相信哪些将军的指令才是可靠的?

类比到计算机领域,拜占庭问题就是指在分布式系统中,由于存在节点失效、网络延迟等因素,导致不同节点接收到的信息可能存在不一致或者错误的情况,从而影响系统的正确运行。解决拜占庭问题是分布式系统安全性和可靠性的基础之一。

SUNDER论文就是在这样一个背景下提出的,同时也没有一个可信任的服务商来提供可靠服务,每个人都可能是一个攻击者。

问题解决思考路径

第一个,我们可以通过signature来判断哪个文件被谁修改,这个可以解决第一个问题,防止被别的操作修改。但是在这个拜占庭问题下,我们不能保证,如果发送别的问题,或者发送了一个old version。

 通过signed log of operation

 一般来说如果我们只记录写操作,读操作不记录,但是在这个情况下,我们不记录读log的话,可能会导致下面的情况,这样我们就读到了不一致的autho,和bank,一个old的,一个new,因为发送的是前缀。 

Fork consistency

有点像raft里面的脑裂,两个世界,就像操作系统fork一样,像叉子一样。

Fork一致性是最强的完整性概念,可以在没有在线可信方的情况下实现。假设用户A在线上修改了一个文件,然后下线了。稍后,B上线并读取该文件。如果B不知道A是否访问过文件系统,则无法检测到攻击,其中服务器仅丢弃A所做的更改。Fork一致性意味着这是服务器对文件完整性或一致性的唯一类型的无法检测的攻击。此外,如果A和B有任何通信或看到彼此未来的文件系统操作,则可以检测到攻击。

有了Fork一致性,可以利用任何在线的可信方来获得更强的一致性,甚至是获取-修改一致性。例如,如第5节中后面描述的那样,SUNDR服务器由两个程序组成,一个块存储器用于处理数据,一个具有非常少量状态的一致性服务器。将一致性服务器移动到受信任的机器上可以轻松地保证获取-修改一致性。问题在于,可信赖的机器可能比不可信赖的机器连接性或可用性更差。

为了限制不一致性的时间窗口而不将可信机器放在关键路径上,可以使用“时间戳盒子”来写入单个文件的权限。这个盒子可以通过SUNDR每5秒更新该文件。看到盒子更新的所有用户都知道它们只能在过去的5秒钟内被隔离。这些盒子可以复制以实现拜占庭容错,每个副本更新一个单独的文件。

另外,可以利用直接的客户端-客户端通信来增加一致性。用户可以将当前网络地址的登录和注销记录写入文件,以便找到彼此并持续交换有关其最新操作的信息。如果恶意服务器无法破坏客户端之间的网络通信,则一旦在线客户端了解彼此,它将无法分叉文件系统状态。对于认为恶意网络分区足够严重以至于需要在面对客户端故障时暂停文件访问的人,可以在通信中断期间保守地暂停文件访问。

怎么保障fork一致性

现在,非正式地考虑一下恶意服务器可以做什么。为了说服客户端进行文件修改,服务器必须向其发送已签名的历史记录。假设服务器不知道用户的密钥并且无法伪造签名,则客户端接受的任何修改必须实际上是由授权用户签署的。但是,服务器仍然可以通过隐藏其他用户的以前操作来欺骗用户签署不适当的历史记录。例如,考虑上面历史记录的最后一个操作如果服务器未能向用户B显示对文件f2的最新修改会发生什么。用户A和B将签署以下历史记录:

任何一种历史记录都不是另一种历史记录的前缀。从此时开始,因为客户端始终检查自己用户的历史记录中的前一个操作,在攻击之前,用户享有获取-修改一致性,但在攻击之后,用户被分叉。进一步假设服务器与恶意用户勾结或以其他方式获得了已破解用户的签名密钥。如果我们限制分析仅考虑由诚实(即未被破坏)用户签名的历史记录,我们将看到类似的分叉性质。一旦两个诚实用户签署了不兼容的历史记录,他们将无法在未检测到问题的情况下看到彼此的后续操作。当然,由于服务器可以扩展并签署被破坏用户的历史记录,因此它可以更改任何被破坏用户可以编写的文件。然而,其余的文件只能在诚实用户的历史记录中进行修改,因此仍然保持分叉一致。

分叉一致性是在没有在线可信方的情况下实现最强完整性概念。假设用户A在线上修改了一个文件,然后下线了。稍后,B上线并读取该文件。如果B不知道A是否访问过文件系统,则无法检测到攻击,其中服务器仅丢弃A所做的更改。分叉一致性意味着这是服务器对文件完整性或一致性的唯一类型的无法检测的攻击。此外,如果A和B有任何通信或看到彼此未来的文件系统操作,则可以检测到攻击。

有了分叉一致性,可以利用任何在线的可信方来获得更强的一致性,甚至是获取-修改一致性。例如,如第5节中后面描述的那样,SUNDR服务器由两个程序组成,一个块存储器用于处理数据,一个具有非常少量状态的一致性服务器。将一致性服务器移动到受信任的机器上可以轻松地保证获取-修改一致性。问题在于,可信赖的机器可能比不可信赖的机器连接性或可用性更差。

为了限制不一致性的时间窗口而不将可信机器放在关键路径上,可以使用“时间戳盒子”来写入单个文件的权限。这个盒子可以通过SUNDR每5秒更新该文件。看到盒子更新的所有用户都知道它们只能在过去的5秒钟内被隔离。这些盒子可以复制以实现拜占庭容错,每个副本更新一个单独的文件。

另外,可以利用直接的客户端-客户端通信来增加一致性。用户可以将当前网络地址的登录和注销记录写入文件,以便找到彼此并持续交换有关其最新操作的信息。如果恶意服务器无法破坏客户端之间的网络通信,则一旦在线客户端了解彼此,它将无法分叉文件系统状态。对于认为恶意网络分区足够严重以至于需要在面对客户端故障时暂停文件访问的人,可以在通信中断期间保守地暂停文件访问。

对每个用户维护了快照 

 

版本向量

summary。

SUNDER论文是在拜占庭问题下,用signed log来解决的一种思路。我还没怎么理解 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/442155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 Rocky linux 8.5 使用 Kubespray v2.21.0 离线部署 kubernetes v1.25.6 集群(草稿)

文章目录 前言创建7台虚拟机要求配置代理下载介质部署前准备安装部署工具配置 python venv配置部署容器 配置互信编写 inventory.ini创建 offline.yml部署 offline repokubespray v2.21.1 部署 kubernetes 失败报错1:Install packages requirements报错2&#xff1a…

各主流图床经历-尝试gitee,七牛云,smms,阿里云

目录 结论:都试过之后我还推荐用aliyun,反正不太贵 目的: 经历: typora用阿里云作图床的流程 结论:都试过之后我还推荐用aliyun,反正不太贵 目的: 想要让md文件中的本地相对链接转为网络图…

使用chatgpt一分钟帮你实现思维导图

前言 本篇基础篇课程,实操起来很简单,但却非常的实用。利用好这个功能,工作效率或能提升10倍! 本篇内容的主题:利用ChatGPT,一分钟帮你实现详尽的思维导图。 创作内容大纲 格式转化 结合Xmind 创作内容…

2021地理设计组二等奖:城市三维空间格局对城市内涝的影响研究——以深圳市为例

作品简介 一、设计思想 内涝是指由于连续性降雨或强降雨导致城市地表径流超过地下管网排水能力从而引发的积水现象。内涝的发生会严重破坏城市基础服务设施(如交通运输、通讯以及水、电、气的供应),甚至严重影响人民的财产和生命安全。为了降…

【Git基础】常用git命令(二)

文章目录 1. 合并commit为一个1.1 git commit --amend1.2 git rebase -i1.3 git reset1.4 示例 2. 修改commit的内容2.1 git commit --amend2.2 git rebase -i2.3 git cherry-pick2.4 git reflog和git reset 3. 查看commit内容3.1 git log3.2 git log --oneline3.3 git log -[l…

全网多种方法解决[rejected] master -> master (fetch first)的错误

文章目录 1. 复现错误2. 分析错误3. 解决错误4. 解决该错误的其他方法 1. 复现错误 今天使用git status查看文件状态,发现有一个文件未提交,如下代码所示: D:\project\test>git status On branch master Your branch is up to date with …

基于高德导航的大作业

绪 论 课题的建设背景 移动互联网 如今手机的发展非常迅速,手机越来越成为人们不可缺少的东西。手机从最初功能简单的功能机,发展到如今几乎无所不能的智能机,满足了人们的日常需求,手机不再是简单的通讯工具,还可以通…

Spring请求与响应——请求

Spring请求与响应——请求 请求映射路径RequestMapping() 请求参数GetGet发请求参数接收Get请求参数 POSTPOST发送参数 参数种类POJO类型参数数组类型类型参数集合类型参数时间参数演示 JSON数据传输参数发送请求接收请求集合参数与pojo参数演示 RequestBody与RequestParam区别…

手机信号不好?真不是套餐原因!4招教你搞定!

不少小伙伴跟搜卡之家小编抱怨手机信号突然不好,比如: 打着电话突然听不见对方的声音! 手机玩着玩着刷不出来页面和图片! 手机信号满格但上不了网! 这手机是不是坏了! 其实这样的情况大部分都是因为手机信号的问题…

【Arduino】舵机的连线和基本操作

🎊专栏【Arduino】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【勋章】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🚥舵机图片 🚥舵机连接方式 &#x1…

字典树(Trie/前缀树)详解

目录 字典树的概念 字典树的逻辑 字典树的实现 字典树小结 例题强化 字典树的概念 字典树(Trie)是一种空间换时间的数据结构,是一棵关于“字典”的树,主要用于统计、排序和保存大量的字符串。字典树是通过利用字符串的公共前…

【unity实战】随机地下城生成2——绘制地图Tilemap的使用及一些技巧的使用(含源码)

绘制房间 修改素材配置 切割图片 绘制瓦片地图 先新建我们的调色盘,保存好位置 拖入我们刚才切片好的素材 在房间预设体创建我们的瓦片地图 绘制地图的小技巧 点选移动适合的瓦片移动到位置上绘画 框选复制已经绘制好的地图,快捷键i

【C# .NET】chapter 13 使用多任务改进性能和可扩展性

目录 一、物理内存和虚拟内存使用(Recorder 类) 二、 对比 string的“”操作与stringbuilder 操作 的处理效率,内存消耗情况, 三、异步运行任务、三种启动任务方法、将上一任务方法处理结果作为参数传给下一任务方法 四、嵌套…

妙记多 Mojidoc |构建企业和个人专属知识库

虽然市面上有很多项目管理工具,但对于小公司或初创企业来说,它们要么年费太贵,要么流程和操作太复杂,无法满足小团队的需求。 如果您有基本需求并希望使用低成本的文档工具,作为团队共享知识库和工作流程管理的工具&a…

【GIS学习笔记】快速上手GeoServer,并发布 Shapefile /PostGis / PostgreSQL

文章目录 安装配置1、下载2、配置环境 快速上手 (Shapfile文件发布)1、登录2、图层预览 Layer Preview3、发布Shapefile4、创建工作空间Workspace5、创建一个 Store(数据存储)6、创建图层报错解决 7、发布图层 快速上手&#xff0…

一款表现不佳的游戏,如何能爆火出圈?

根据《2022年中国游戏产业报告》,2022年中国游戏市场实际销售收入2658.84亿元,同比下降10.33%。游戏用户规模6.64亿,同比下降0.33%。继2021年规模增长明显放缓之后,又出现过去八年来的首次下降,表明产业发展已进入存量…

使用Dom元素的animate实现无限滚动列表

一、需求 实现一个内容重复滚动的列表,鼠标hover时滚动停止,鼠标移走,继续滚动 二、实现逻辑与代码 这个需求用到了一个dom API(animate),这个方法可以用来做过渡动画、关键帧动画,接收两个参…

全景丨0基础学习VR全景制作,平台篇第八章:全局功能-说一说管理

一、功能说明 蛙色VR的全景能够允许用户发布说一说,这些说一说的信息会同步呈现在全景中。 鼓励用户参与到内容中来,增强了全景的互动性,体验感更好,也更容易引导用户分享。 此外,后台系统可以对说一说进行必要的审核…

C++数据结构:二叉搜索树的结构、模拟实现及应用

目录 一. 二叉搜索树的结构 二. 二叉搜索树的模拟实现 2.1 二叉搜索树的节点及类的成员变量 2.2 数据插入操作Insert的实现 2.3 数据删除操作Erase的实现 2.4 数据查找操作Find的实现 2.5 中序遍历InOrder的实现 2.6 构造函数的实现 2.7 析构函数的实现 三. 二叉搜…

第三方软件测试公司与开发人员在进行测试时有什么不一样?

随着科技信息的发展,软件企业要想在市场上站住脚,就必须在产品质量上下功夫。高质量的软件也是开发、测试、质量保证等相关人员共同追求的目标,用户往往会选择体验性、服务性以及安全性较强的软件产品。软件测试可以很好的检测出软件质量&…