没有合适的资源?快使用搜索试试~ 我知道了~
2841+→++本作品采用知识共享署名国际4.0许可协议进行许可。Eng RA f T:拜占庭Faithy节点上的飞地守卫筏12032870@mail.sustech.edu.cn中国科学技术大学南方科技大学(201612032873@mail.sustech.edu.cn牛建宇niujy@sustech.edu.cn南方科技大学技术摘要Michael K. Reitermichael. duke.edu杜克大学张银谦yinqianz@acm.org南方科技大学技术ACM参考格式:本文提出了第一个关键的分析,建立高度安全,高性能和机密的拜占庭容错(BFT )的共识,通过集成现成的崩溃容错(CFT)协议与可信执行环境(TEE)。TEE(如英特尔SGX)是CPU扩展,通过利用硬件辅助隔离、内存加密和远程证明等技术,为应用程序提供具有强大完整性和机密性保证的安全执行环境。据推测,在英特尔SGX内部实施CFT协议时,将实现类似于BFT的安全属性然而,我们在这项工作中表明,简单地将CFT与SGX相结合并不能直接产生一个安全的BFT协议,因为SGX上的攻击向量范围很广。 我们系统地研究了在这样一个稻草人设计的谬误,通过执行模型检查,并提出解决方案,以加强安全性和活性。我们还提出了工程RAFt,一个安全的飞地保护筏实现,首先,实现共识的集群2个101台机器容忍多达100个节点表现出拜占庭故障的行为(但行为良好的飞地);其次,提供了一个新的抽象的机密共识的隐私保护状态机复制;最后,允许重用的生产质量筏实现,BRAFT,在一个高性能的BFT系统的发展。CCS概念• 安全与保密分布式系统安全;形式安全模型。关键词容错;模型检验;可信执行环境平等贡献。†附属于可信自治系统研究所和计算机科学与工程系。*Correspondent author.CCS©2022版权归所有者/作者所有。ACM ISBN978-1-4503-9450-5/22/11。https://doi.org/10.1145/3548606.3560639王伟利,邓森,牛建宇,Michael K.Reiter,and Yinqian Zhang.2022.EngRAF t : 拜 占 庭式 的 Favorite 节 点 上的 飞 地 守卫 筏 在2022年 ACMSIGSAC计算机和通信安全会议(CCS '22)的进行中,2022年11月7日至11日,美国加利福尼亚州洛杉矶。 ACM, 纽约州 纽 约 市, 美 国 ,15 页 。https://doi.org/10.1145/3548606.35606391介绍一致性算法已经在现代生产系统中采用,以通过在一组计算机上复制数据和计算来必须实现复杂的协议,以确保组集体表现得像一台机器一样,在内部就计算状态达成一致。 共识算法也出现在去中心化的计算系统中,例如许可区块链,其采用一组机器来在多个相互不信任的实体之间分配信任。这种分布式系统的一个经典抽象是状态机复制[55],其中数据和计算在多台机器之间复制,状态之间的转换是协调的,这样没有故障的机器就可以保持状态机的崩溃容错(CFT)协调协议确保了这种一致性,尽管故障包括机器崩溃、网络故障和网络分区,而拜占庭容错(BFT)协议另外克服了有限数量的恶意副本妥协、操作员错误和软件错误。因此,BFT协议通常具有更复杂的通信模式和更差的性能。BFT原型(例如,,PBFT [20])可以容忍多达31台机器中的���故障机器���,而大多数CFT协议(例如,,Paxos [38]和Raft[48])在2/21台机器中容忍多达1/20台故障机器���对可信执行环境(TEE)或“飞地”(例如,,SGX),它隔离软件和数据从主机平台上的妥协和错误,提出了一个替代的设计点以外的这些CFT和BFT选项。简而言之,通过在飞地内执行CFT协议,可以实现以下属性的组合:尽管托管飞地的平台中存在拜占庭式故障(但不在飞地内),但仍保证安全性(一致性),以及保证活性(进度)和性能,前提是至少大多数飞地保持功能并且被允许彼此无约束地通信。事实上,这种替代方案已经在许多努力中得到利用(例如,[11,15,29,54]),隐含地假设这种组合提供了安全性,活性和性能2842++++CCSReiter,Yinqian Zhang上面提到的属性例如,Signal将Raft集成到SGX中以实现安全的价值恢复[11],TEEKAP [29]利用飞地内Raft和阈值秘密共享来构建自到期数据对象,CCF [54]将Raft移植到SGX中以实现许可的机密区块链。在本文中,我们质疑这一基本前提,并对CFT和TEE共同提供上述承诺的条件进行了第一次关键评估。通过利用自动化模型检查工具TLC [70],我们确定了流行且广泛使用的CFT设计Raft [48]中的假设,以实现崩溃故障机器的安全性和活性,并揭示了这些假设与SGX在拜占庭故障节点上提供的保证之间的不一致性。首先,SGX缺乏状态连续性为回滚攻击打开了大门,这对于依赖于持久存储的CFT协议来说是致命的。,Raft),因为它们假设持久数据总是新鲜的,这在CFT中是正确的第二,Raft中超时驱动的领导者选举机制可以被具有系统特权的对手操纵,这导致了生存权的妥协。因此,我们提出了缓解措施来缩小这些差距,从而将这种关于“CFT+TEE”的传统智慧置于更坚实的基础上。例如,为了保持Raft节点的状态连续性并防止回滚攻击,我们提出了一种用于存储Raft Meta数据的SGX飞地内的分布式存储器内键值存储。与其他解决方案(如硬件单调计数器[13,59]和ROTE [45])相比,TIKS是云环境中提供状态连续性和可恢复性的唯一实用解决方案。根据这一经验,我们报告了我们的设计和实施EngRAFt,这是一种安全的ENclave-Guarded Raft实现,在开发高性能BFT系统时重复使用生产质量的Raft实现BRAft [1]工程师RAFt在一个由2���台机器组成的集群上达成共识直到表现出拜占庭断层行为的节点。���我们提供了一个原型实现工程RAFt与3kLoC ++代码顶部的BRAFT代码库。我们使用托管在公共云中的三个地理分布的数据中心中的虚拟机,在LAN和WAN设置中评估了英特尔SGX的工程效率。 我们将Eng raf t的性能与BRAFT和Chained-Damysus [25]进行了比较,Chained- Damysus是一种最新的BFT系统,利用SGX来提高弹性(但不是保密性)。 结果表明,Eng RAF t实现了相当的性能。Eng raf t的源代码在[4]中发布。概括而言,我们的贡献如下:我们提出了一个系统的分析CFT协议和TEE相结合,以实现高性能和保密的BFT共识的想法背后我们利用模型检查来帮助自动识别由SGX特定威胁引起的安全性和活跃性违规。我们的工作提供了第一个例子的建模和检查这些属性下这样的威胁模型。我们提出了一个分布式内存中的键值存储回滚预防。与其他解决方案相比,它提供了状态连续性和可恢复性。我们实现和评估工程RAFt,一个系统,重复使用的生产质量的筏实现,以实现共识的2个节点+1个节点的集群容忍高达100拜占庭故障节点。���2背景2.1共识算法2.1.1崩溃容错(CFT)。如果一台机器过早地停止执行,它就会出现崩溃故障。Lamport[38,39]的开创性工作,被称为Paxos,已经成为崩溃容错的一般解决方案。然而,Paxos在实践中很难理解和正确实现。 为了克服这一点,Ongaro和Ousterhout提出了Raft [48],这是一种易于理解的CFT算法,已在许多实际系统中实现,如分布式数据库[14]。作为一种典型的CFT协议,Raft共识协议可以支持一个由2台机器组成的集群,其中最多有1台机器出现故障。在Raft中,一个节点可以处于三种状态之一:follower、candidate和leader 。 筏 节 点 使 用 两 个基 本 的 RPC , 即 、 日 志 记 录 和RequestVote来维护持久化日志存储的一致性并且每个日志条目记录其项、其索引和要在状态机上应用的命令术语和日志索引用作Raft协议中的逻辑时钟。筏式日志复制。 在正常情况下,集群中有一个leader与客户端交互,多个follower复制日志。在收到客户端请求时,leader生成一个未提交的日志,通过向followers发送一个未提交的RPC来复制它,在收到大多数followers的响应后将其标记为已提交,将其应用于状态机,最后回复客户端。筏领导人选举。 为了从领导者崩溃中恢复过来,追随者设置了选举计时器,一旦计时器到期,他们就成为候选人。因此,领导者需要周期性地向追随者发送心跳信号(通过发出具有空日志条目的Append-dollarRPC)以使其领导合法化(通过重置追随者在领导选举中,候选人首先增加任期,为自己投票,然后请求其他追随者投票。 当且仅当以下条件成立时,关注者才会投票给候选人:(1)关注者没有投票给同一任期的任何其他候选人。(2)考生最后一个上述限制确保在任何任期内,只有一个候选人可以获得多数票并成为领导人。如果一个候选人未能收集选票,它将无限期地重复上述过程(增加任期并请求选票),直到它成功,发现当前任期的领导者,或观察到更高的任期。为了从崩溃中恢复,Raft保持内部状态,然后从它们中恢复。具体来说,存储状态机的当前术语、投票信息(投票给谁)和复制的日志在磁盘上。2.1.2拜占庭容错(ByzantineFault Tolerance, Lamport等人[41]首先提出了拜占庭将军问题,其中一组机器必须在存在恶意攻击、操作员错误和软件错误的情况下达成相同输出的协议。与CFT协议相比,BFT协议通常具有更复杂的通信机制和更差的性能,因为它需要处理任意故障。BFT协议可以在3台机器中容忍最多10台故障机器(而不是CFT协议中的2������····2843·EngRA fT:拜占庭FaithnodesCCS'22上的飞地守卫筏,2022年11月7日至11日,美国加利福尼亚州洛杉矶2.2软件防护扩展IntelSoftware Guard eXtensions(SGX)[30]是最流行的TEE实现,旨在提供屏蔽的执行环境,即:,飞地,用于程序。综上所述,SGX提供以下安全保证。隔离 SGX程序可以分为可信和不可信组件。从主机调用ECALL接口以进入安全区,而在安全区内部调用OCALL接口以请求不受信任的服务(如系统调用)。密封接头SGX支持密封,这是一个使用密封密钥加密飞地内数据并将其存储在外部存储器中的过程。使用可选的严格密钥派生策略,密封密钥仅可由创建它的安全区访问。作证。SGX提供本地和远程认证,以促进安全区的识别。本地证明用于验证对方是否在同一平台上的飞地内运行,而远程证明用于告知远程方是否被具有预期属性(例如,更新的微码和指定的飞地标识)。2.3模型检测模型检查[46]是一种可以对系统建模并确定系统是否满足给定安全属性的技术。模型检查器的输入通常是系统的规格说明和一些预期的属性。 模型检查器可以验证是否满足属性。如果没有,它将报告一个特定的反例:违反属性的执行跟踪TLA+。TLA+是Lamport [ 40 ]开发的一种高级形式规范语言,用于建模和验证程序和系统,特别是基于TLA(动作时序逻辑)的并发和分布式程序和系统[37]。TLA+提供了一种统一的数学语言来建模系统或属性。变量和常量:用户可以在建模系统状态时指定多个变量,这些变量将随着状态的变化而变化。相反,常数在所有状态下保持不变状态、步骤、行为:指定变量的集合构成状态。一对连续的状态形成一个步骤,一个连续的状态序列形成一个行为。规范:系统的规范描述了随时间的状态转换TLA+规范的规范形式是:������������≜������������∧□[������������]������������,其中,初始状态是初始状态,变量元组是变量元组,操作是操作。 ������������表示要检查的系统的整个状态空间。从初始状态开始,每次选择一个动作将系统状态转移到另一个状态,直到遍历整个状态空间薄层色谱TLC是Yu等人实现的一个显式状态模型检查器。[70]检查TLA+规范的安全性和活性属性。 TLC可以执行两种基本模式:仿真和模型检查。模拟模式从随机初始状态开始,然后重复选择下一个状态到由用户,而模型检查模式尝试检查所有可能的行为,并使用广度优先搜索来构建所有可达状态的图3概述3.1问题陈述在本文中,我们研究了CFT协议的安全性(即,、Raft)在可信执行环境(即,,Intel SGX)。直观地说,通过结合SGX提供的完整性保证和CFT提供的崩溃容忍,即使是拜占庭式的行为也可以轻松达成共识。例如,Avocado [15]明确声称“我们设计了一个安全的复制协议,它建立在任何高性能的非拜占庭协议之上-我们的关键见解是利用TEE来保持协议执行的完整性,这允许将拜占庭行为建模为正常的崩溃故障。“类似的假设在其他一些研究中也有[11,29,54]。然而,这种看似正确的说法可能经不起推敲,因为已经表明SGX容易受到各种攻击(包括状态重放攻击[45])。因此,预计新交所飞地内的CFT实施也容易受到这些威胁的影响;但目前还不清楚这种稻草人设计的脆弱程度,以及如何解决这些问题。因此,本文的研究目标是双重的。安全性分析:鉴于英特尔SGX的威胁模型,我们将调查SGXenclaves中的vanilla Raft实现是否可以实现安全性和活跃性。这个问题的答案将为TEE辅助的分布式系统的开发带来以下新的见解。我们探讨了SGX相关威胁对分布式协议的安全影响据我们所知,在先前的研究中从未进行过这种我们利用正式方法(例如,模型检查),以协助自动识别这些SGX相关威胁所导致的安全和活跃性问题。目前还不清楚如何使用模型检查工具对此类威胁我们设计新的解决方案,以减轻分布式环境中与SGX相关的威胁。 虽然在文献中已经提出了一些对策,但我们的目标是用针对拜占庭设置定制的对策最小限度地修补Raft的设计。系统设计:本文还旨在通过将生产质量的CFT实现移植到SGXenclave中,构建高度安全、性能良好且可信的BFT方案(我们称之为工程师)。我们设想三个重要的优点,由此产生的协议:高度安全。虽然大多数BFT协议假设故障节点少于1/3,但CFT协议将要求放宽到1/2,从而为实际用例提供了更实用和可扩展的解决方案。结合CFT和SGX的BFT解决方案将达到与拜占庭故障假设相同的效果。表演 CFT协议,如Raft,已经被彻底研究和理解; CFT协议的生产质量实现,如BRAFT [1],已经作为开源项目得到了很好的维护,并在现实世界中广泛使用。 此外,SGX是大多数商业上可用的硬件功能,·······2844+一一CCSReiter,Yinqian Zhang服务器端英特尔处理器1.高性能BRAFT与英特尔SGX的直接集成将满足大多数行业级用例。保密的SGX自然为安全区内的代码和数据因此,通过将CFT协议移植到飞地中,可以作为副产品实现状态副本的机密性。3.2威胁模型我们考虑一个分布式系统,其中有一组支持SGX的机器,它们共同向客户端提供服务,������表1:通过文件系统操作的拜占庭行为项目说明fs_currentTerm-减少变量currentTermfs_currentTerm+增加变量currentTermfs_votedFor-删除投票信息fs_votedFor+为其他服务器投票fs_log-删除日志条目fs_log+追加日志项表2:通过网络操纵的拜占庭行为部分同步网络。我们假设,���可以随时被恶意操作者控制。恶意操作员可以随意启动、暂停、恢复和终止新交所飞地。她还控制CPU调度、内存管理和I/O操作。例如,她可以进行攻击,以破坏飞地的国家连续性[31],通过亲,项目说明nw_RequestVote_term-递减项nw_RequestVote_term+increasetermnw_RequestVote_lastLog-减少lastLognw_RequestVote_lastLog+增加lastLog将具有陈旧持久状态(例如,,旧版本加密文件)而不是最新的。然而,我们假设新交所是安全的,并且在新交所飞地内受保护的软件通过利用诸如内存隔离、加密和远程证明等技术在其计算期间保持其完整性和机密性。具体来说,泄漏安全区内存和认证密钥的瞬态执行攻击[22,57,61]不在本文的范围之内,因为英特尔已经nw_decrease_term-减少项nw_administrator_term+increasetermnw_decoding_preLog-减少preLognw_admind_preLog+增加preLognw_leaderCommit-减少leaderCommitnw_leaderCommit+增加leaderCommitnw_modify_entries+修改日志条目提供了微代码补丁来缓解这些漏洞[8]。通过观察飞地存储器访问模式来泄漏秘密值的微架构侧信道攻击仍然是可能的。但我们假设已经在软件级别实施了对策,特别是对于加密库(如OpenSSL和Intel SGX SSL)。因此,损坏的机器只能影响飞地内软件的可用性,而不会影响其正确性。4安全分析在本节中,我们将在SGX相关安全威胁的背景下,对Engraft的核心组件--SgxBRAFt(BRAFT在安全区内的一种普通端口)进行系统分析。我们的分析是由一个模型检查工具,模型的攻击向量的综合列表和自动化的分析,以确定漏洞。4.1威胁建模Raft节点的核心逻辑在安全区内实现,这保护了其机密性和完整性。但它仍然需要与外界进行交互,以(1)将其状态保存到本地磁盘进行崩溃恢复,以及(2)与其他节点进行通信以维护不信任系统的共识。 这些相互作用向SgxB raf t引入额外的攻击向量。我们将这些攻击向量分为两类:文件系统操纵和网络操纵。文件操作。在Raft协议中,有三个变量在文件系统中是持久的:currentTerm、votedFor和log。后1虽然英特尔已停止在第12代酷睿处理器中支持SGX,但SGX将继续在服务器端处理器中提供支持[6]。崩溃时,Raft需要从磁盘恢复其状态。控制OS的对手可以修改持久存储或向SgxBRAF t提供陈旧状态我们通过表1中的文件系统管理总结了拜占庭故障行为。网络操纵。Raft中有两种类型的RPC消息:RequestVote RPC和RequestVote RPC。在没有适当保护的情况下,攻击者能够插入或修改在安全区之间发送的消息的内容。 我们在表2中总结了通过网络操纵的拜占庭行为。4.2模型检查安全属性为了自动分析SgxBRAF t的安全特性,我们利用TLC模型检查器[70]。与其他形式化方法类似,模型检查需要明确指定攻击原语,对手依赖这些攻击原语来构建诡辩的攻击步骤,从而最终损害所需的属性。为了系统地枚举我们的威胁模型中考虑的所有攻击原语,我们将所有可能的拜占庭行为分为两类(参见第二节)。4.1),并仔细研究Raft协议中的每个关键元素如何被任意类别的拜占庭行为操纵因此,我们从原始的Raft论文[48]扩展了Raft的TLA+形式规范,表1和表2中列出了17个拜占庭行为。这些拜占庭式行为中的每一个都被建模为TLA+中的一个动作对于每个拜占庭行为,我们使用TLC模型检查器来检查Raft的四个安全属性:选举安全,日志匹配,领导者完整性和状态机安全。···28451111EngRA fT:拜占庭FaithnodesCCS'22上的飞地守卫筏,2022年11月7日至11日,美国加利福尼亚州洛杉矶由于篇幅限制,我们推导出四个安全属性的TLA+规范,并在论文的完整版本中列出[63]。 值得注意的是,虽然Ongaro的原始工作提供了Raft协议的TLA+规范,但它没有使用TLC模型检查器进行检查(参见[47,sec. 8.2])。因此,我们的工作提供了第一次成功的尝试,正式检查四个安全属性的筏使用TLC。我们注意到,我们主要使用模型检查作为自动提取攻击痕迹的工具。TLC不能用于证明SgxBRAF t的正确性。这是因为未绑定的变量(例如,术语、日志条目)导致了TLC无法耗尽的无限搜索空间。事实上,虽然模型检查已被用于验证简单网络协议的特定属性[27],但它很少用于证明复杂分布式系统的正确性。模型检查器最常见的用途是检测此类设计中的错误[18,36]。TLC设置。在其配置中,TLC需要指定集群中的总节点和恶意节点的数量。在不失一般性的情况下,在每个测试用例中,我们建模并检查两个配置:具有一个恶意节点的三节点集群(即,���1)和具有两个恶意节点的五节点集群(即,���(2).所有测试均在TLC模拟模式下运行当每个配置的搜索空间超过200亿个状态时,搜索过程终止。模型检查的结果是一个攻击痕迹的列表,这些痕迹会导致违反其中一个安全属性。如果没有攻击痕迹报告,这表明TLC未能识别200亿个州内的攻击平均而言,每个测试在配备32 GB内存和英特尔酷睿i7-10700CPU的平台上完成约8小时所有节点都处于项2,项2被记录在持久存储器中。N1是将日志条目复制到N2和N3的领导者此时,术语2的日志条目已经被复制到大多数节点,因此它被认为是已提交的。接下来,如图所示在图1(b)中,N1被对手崩溃,并使用陈旧的日志条目重新启动(根据拜占庭行为#5)。攻击的后果是双重的:(1)索引2的日志条目在N1上丢失;(2)N1成为跟随者。因此,领导人选举被触发。由于我们假设在这种情况下,对手只回滚日志条目,而不是术语,因此所有节点都前进到术语3. 虽然N2和N3有更新的日志,因此不会投票给N5,但N1、N4和N5仍然可以投票给N5。假设N5当选为第三任期的新领导人。图1(c),N5接收客户端请求并将项3附加到然后,它将日志复制到所有其他节点,从而导致术语2中的日志条目被覆盖。违反了四个安全属性中的两个:领导者完整性,因为新领导者N5对策为了应对表3中列出的由于文件系统和网络操纵而导致的安全违规,我们提出了三类对策。文件加密。拜占庭行为#4和#6的根本原因是攻击者可以任意修改持久性文件的内容,这可以通过使用文件加密来防止(参见第(见第6.2.1段)。回滚预防。 拜占庭行为#1、#3和#5可以通过回滚攻击来发起,这可以通过使用状态连续性机制来防止(参见第二节)。5.1)。网络加密和身份验证。Byzantine行为#10、#13、#15可以使用身份验证和加密来防止指数N1N2N3N4N512(一)12(b)第(1)款12(c)第(1)款节点之间的通道(参见第(见第6.2.2段)。4.3模型检查活性属性我们使用TLC进行模型检测,系统地分析了SgxBRAF t的活性特性。据我们所知,这是第一次尝试模型检查活性的共识协议的属性我们特别考虑了leader选举阶段的liveness属性。我们为两种不同的情况建立模型,一种是有preVote机制[47],另一种没有。 由于Raft的领导者选举过程广泛依赖于超时机制,我们使用TLA+变量为每个节点建模一个计时器。我们将时间的流逝建模为TLA+动作,这会减少计时器图1:拜占庭攻击跟踪图#5:fs_log-。模型检查结果。 TLC报告了我们指定的17种拜占庭行为中的8种的攻击跟踪。结果示于表3中。由文件系统操作引起的5种拜占庭行为可能违反安全属性之一,而TLC报告的11种与网络操作相关的拜占庭行为中有3种是有效的。案例研究。 我们在图5中说明了由于拜占庭行为#5而引起的攻击。1.一、 在拜占庭行为#5中,对手在从崩溃中恢复时提供陈旧的日志条目。如图所示,N1和N2是恶意节点; N3、N4和N5是良性节点。图1(a),对于所有非引线节点,值为1。一旦定时器到期,即,,减少到零,则它向所有其他节点发送RequestVoteRPC(建模为TLA+动作)。与安全检查的情况一样,每个模型都包含一个带有两个恶意节点的五节点集群。 我们的分析只考虑了一个攻击者的行为--在恶意节点上的安全区之间丢弃消息。因此,我们将这种行为建模为TLA+中的动作所考虑的活性属性是良性节点最终可以被选为领导者。这被建模为时间属性,如下所示:<>∈������������������_������������������:[]���=������������������1 21 21 211 21 31 31 31 31 31 2···2846××××× ××× ××× ××× × ××[客户端]CCSReiter,Yinqian Zhang表3:不同拜占庭行为的分析结果号拜占庭行为安全属性- -3fs_votedFor-4fs_votedFor+5fs_log-6fs_log+-7nw_RequestVote_term-8nw_RequestVote_term+-9nw_RequestVote_lastLog-10nw_RequestVote_lastLog+- -11nw_deduff_term-12nw__term+-13nw_prelog_preLog--14nw_meguide_preLog+-15nw_登录_条目-16nw_leaderCommit-17nw_leaderCommit+-图例:×:违反安全特性TLC不能报告200亿个州内的然后,它向所有其他节点发送requestVote消息,节点1节点2节点3节点4节点5国家a b c d英法阿投票,并当选为国家的新领导人���。 之后,节点2重复上述步骤,节点1再次成为领导者,使整个系统返回到初始状态���。由于恶意节点1和节点2可能轮流成为领导者,因此违反了活性属性。对策为了确保良性节点可以被选为领导者,我们引入了一个客户端警报机制,这样领导者选举可以由除了没有心跳之外的机制触发,并且良性节点有机会赢得选举(参见第二节)。5.2)。图2:破坏leader election中的活性的攻击痕迹的图示。节点1和节点2是恶意节点,而其他节点是良性节点。、������������������������,���������������������������������������������������������������分别。其中,良性节点_良性节点表示所有良性节点的集合,������������������=������������������denotes that node��� is the������������������;<>representstemporal logic������������������������������模型检查结果。TLC报告了leader选举过程的liveness属性vio-lation,包括有和没有preVote。这两种情况下的根本原因都是Raft leader自动化过程依赖于基于心跳的超时和请求投票机制,这些机制容易受到操作系统的操纵5系统设计在本节中,我们将介绍我们的工程师设计,它提供了一个高度安全、高性能和保密的BFT实现。由于篇幅限制,我们将安全性和活性证明推迟到论文的完整版本[63]。Eng RAF t包含三个组成部分:SgxB RAF t,一个在飞地内实现BRAFT的普通实现; tI ks,一个可信的分布式内存键值存储(KV存储);以及ml D,一种检测和抢占错误领导者的机制。后两个组件被提出来对抗我们在SEC中发现的安全性和活性违规。4所示。5.1主题:Rollback Prevention图中列出了使用preVote进行leader选举时生成的攻击轨迹二、节点1和节点2是恶意的,而其他节点是良性的。在状态1,节点1是领导者。 它丢弃发送到节点2、3和4的所有Heartbeat消息;因此,除了节点5之外的所有follower都成为preCandidate at状态���。 由节点2、3和4组成的preCandidateclus- ter相互投票以成为候选人。然而,节点2丢弃来自节点3和节点4的投票请求,使得节点2不为节点3和节点4投票因此,只有节点2可以获得多数票(即,,三票)成为候选人与当前任期加一个在国家���。为了提供回滚预防,需要一个可信的单调计数器服务。然而,暴露于SGX安全区的单调计数器API(在v2.9之前的Linux SGX SDK中可用)需要英特尔融合安全和管理引擎(CSME)[21],这是一种具有争议性安全问题的英特尔芯片组[5,7,28]。最近的英特尔处理器,特别是服务器端产品,没有配备CSME。此外,自v2.9以来,单调计数器API已从SDK中删除因此,当前的英特尔SGX平台不提供任何可靠的回滚预防方法。此外,杠杆老化的硬件TPM大大扩展了TCB,并引入了LLLFPCLFPCLLLFFPPFPPFFPPFPPFFFPFF FF× × ××选举安全日志匹配Leader完整性状态机安全1fs_currentTerm-2fs_currentTerm+××××-2847店店更新KV商店答复答复收集响应。确认存储检查KV存储答复答复收集响应。节点3节点2节点1⟨ ⟨ ⟩⟩ ⟨⟩+++EngRA fT:拜占庭FaithnodesCCS'22上的飞地守卫筏,2022年11月7日至11日,美国加利福尼亚州洛杉矶[49]第49话被打因此,建立一个分布式的子系统来防止状态回滚似乎是唯一可行的在本文中,我们提出了一个值得信赖的内存KV存储紧密集成在工程师RAFt,以防止回滚攻击。5.1.1永久文件。 根据表3,Raft中的所有持久变量都容易受到回滚攻击,包括currentTerm,votedFor和log。因此,在BRaft中,以下两个持久文件需要保持新鲜。筏Meta文件。 Raft Meta文件包含两个与投票相关的变量,即,votedFor和currentTerm。• 日志数据文件。 日志数据文件存储所有日志条目。5.1.2回滚保护要求。希望通过使用可信单调计数器来确保RaftMeta文件和日志数据文件的新鲜度。不幸的是,可信的单调计数器并不是灵丹妙药[59]。如果节点首先增加计数器,然后将数据与增加的计数器值一起持久化,则存在KV存储具有键、索引、文件的结构,其中索引、文件是2元组,并且文件存储筏Meta文件或日志元文件。我们设计了两个方案,存储更新和恢复,在这个KV存储抽象的顶部,以确保崩溃的节点可以恢复其状态。我们接下来详细介绍这两个方案,但将其安全性分析推迟到论文的完整版本[63]。5.1.5存储更新。 为了强制不变性,这要求任何KV存储更新将反映在后续读取中,TIKS采用两轮通信协议。具体地,存储更新节点在更新自身的KV存储之后,执行两个RPC来更新其他KV存储:Store和ConfirmStore。工作流程如图所示3,其中三节点集群中的节点1正在更新其状态。更新在计数器增量和数据持久化之间的短时间窗口,其中节点不能从崩溃中恢复[45]。这是因为没有与更新的计数器对应的持久化数据。 如果在增加计数器之前选择持久化数据,则攻击者有可能将相同的计数器值与多个持久化文件绑定,从而破坏安全性[59]。当使用可信计数器来保持状态连续性时,这种“可恢复性或安全性“的两难境地是不可避免的。根本原因是计数器递增和数据持久化是两个独立的操作。 为了安全地将单调计数器用于所需的目的,在组合这两个操作时必须确保原子性。第1第2KV商店检查KV存储在EngRAF t中,我们提出了替代可信计数器的方法,并提供了一个安全和可恢复的回滚保护。5.1.3TIKS概述. 技术的设计目标不是为回滚预防构建一个通用的解决方案。相反,该设计是为工程师定制的。特别地,由于在工程集群中的总共2101个节点中存在至少1101个良性和可操作的节点,因此可以通过利用1101个正确节点而不是本地磁盘来将数据存储在分布式���tiks采用了echo broadcast协议[53]的定制版本[45],我们将在第2节中描述。5.1.5.Raft Meta文件可以直接存储在tI ks中,因为votedFor和currentTerm是占用不到100个字节的小变量。然而,日志数据文件的大小在追加日志时迅速增加,其太大而不能存储在TIK中。因此,我们创建一个新文件,即日志Meta文件,来存储日志数据文件的哈希值,并将日志元文件存储在磁盘中,同时将日志数据文件保存在本地磁盘上。由于日志数据文件的更新是频繁的,因此频繁地计算其哈希值将变得低效。因此,我们对日志Meta文件采用链式哈希设计我们将在第二节中详细描述这一点。5.1.7.5.1.4分布式键值存储。 t I ks是分布式存储器中KV存储,其保护其在飞地内的数据。Eng-gRAF t的节点也用作tIks的节点。tIks只存储两个文件,Raft Meta文件和日志元文件。因此,在三节点集群中,总共六个文件被存储在与六个不同密钥相关联的多个密钥中此外,我们为每个文件附加了一个单调索引,以指示其最新版本,从而在图3:在tiks中存储更新的工作流第一轮首先,更新节点在StoreRPC请求中指定要更新的文件( Raft 或 日 志 Meta 文 件 ) 的键及 其 内 容 。 一 个 接 收 到StoreRPC请求的正确节点将忠实地更新自己的KV存储并返回响应。 如果更新节点可以收集至少���响应,则它通过第一轮。否则,它将重新发送存储RPC。第二轮。为了防止对tik的回滚攻击,第二轮通信是必要的。具体来 说 , 更 新 节 点 向 ��� 在 第 一 轮 中 响 应 的 节 点 发 送ConfirmStore RPC请求,其内容与Store RPC相同。一个正确的节点收到一个ConfirmStore请求,如果它已经响应了StoreRPC,并且它的KV存储包含与请求中的项相同的项,它将用一个布尔值来表示成功;否则,它将忽略该请求。如果更新节点最终至少收集到对其ConfirmStore的响应,则确保已更新的文件已安全地存储在TIK中;否则,写入失败,必须重试。要更新存储在磁盘上的日志数据文件,更新节点应在定期更新日志Meta文件之前执行fsync系统调用,以保持可恢复性。5.1.6存储恢复。在正常阶段,工程站节点自己维护KV存储,但在崩溃后,它们需要从其他节点检索分布式存储,因为存储仅驻留在内存中。存储检索算法如下。当一个节点没有崩溃时,它可以直接从自己的KV存储中读取数据,因为对自己文件的所有更新都必须被···2848+−−≥+·+[客户端](+())[客户端](+) ())−+CCSReiter,Yinqian Zhang在它自己的KV存储中(对于其他文件不一定如此)。但崩溃的节点必须遵循以下步骤进行存储恢复:第一步:询问。崩溃的节点向群集中的所有节点发出RetrieveStorageRPC,直到它成功收集至少101答案。在接收到RetrieveStorage请求时,正确的节点应该回复其整个KV存储。日志恢复。为了从崩溃中恢复,节点首先从KV存储中检索日志Meta文件,并获得日志散列摘要文件。然后,它从日志数据文件中计算最后一个链接的哈希值,并将其与哈希值进行比较。不一致表示回滚攻击。5.2mL d:恶意领导检测器步骤2:重建:使用KV存储的至少1001个副本,请求节点每次重建一个对于每个项目,它比较来自每个接收到的副本的项目的索引,并选择具有最大索引的一个。在重构KV存储之后,请求节点应该使用Store和ConfirmStoreRPC写回其自己的状态当有一个或多个中止的存储尝试时,可能会发生索引冲突例如,已经成功地将其Raft元文件存储在索引101处的节点可能在将较新的Raft元文件(表示为Raft Meta1)存储在索引102处的过程期间崩溃。恢复后,节点可以在索引处���当在索引处存储不同的Raft元文件(表示为Raft Meta2)时,RSD1和更高版本再次崩溃。在这种情况下,在恢复期间,节点可以在相同索引处观察RaftMeta1和RaftMeta2。我们把这种情况称为索引冲突。按照设计,索引管理员通过咨询工程师领导来处理索引冲突尽管索引冲突的存在阻碍了具有最大索引的一个文件的选择,但是恢复节点能够恢复其项(即,,cu
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功