- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我最近对 Paxos 进行了大量研究,但我一直想知道一件事,我没有看到任何答案,这意味着我不得不问。
Paxos 包括一个递增的提案编号(可能还有一个单独的轮次编号,具体取决于您正在阅读的论文的作者)。当然,两个想成为领导者的人可能会进行决斗,在这种情况下,每个人都试图在恶性循环中超过另一个人。但是当我在拜占庭式 P2P 环境中工作时,它让我如何应对试图将提案编号设置得非常高的提议者 - 例如,最大 32 位或 64 位字。
一个与语言无关、与平台无关的基于 Paxos 的协议(protocol)应该如何处理提案编号和/或轮数的整数最大值?尤其是故意/恶意情况,这使得溢出回 0 的模算术方法有点没有吸引力?
最佳答案
据我所读,我认为这仍然是一个未在文献中解决的悬而未决的问题。
Byzantine Proposer Fast Paxos解决拒绝服务问题,但仅限于通过与递增(提议)计数器泛洪无关的攻击来延迟消息发送的那种。
话虽如此,整数溢出可能是您遇到的最少的问题。您可能不想考虑整数溢出,而是首先考虑成员攻击(通过 DoS)。在多个节点达成共识后了解成员资格可能是一种可行的策略,但可能仍然容易受到 Sybil attacks 的攻击。在某种程度上。
另一种策略可能是合并一些 proof-of-work system限制请求泛滥的建议。然而,很难知道用什么作为衡量标准来平衡(例如,当你在比特币中挖掘区 block 链时,免费货币)。这实际上取决于您要构建的系统类型。您应该考虑系统中信息的值(value),然后创建一个需要稍微多一点成本才能规避的工作量证明系统。
但是,一旦您有能力减慢提议计数器的速度,您仍然需要担心任何具有大量(有效)操作的系统中的整数最大值。您应该有一个数字环绕策略或多精度方案,您可以在其中清楚地确定您的网络可以运行多少年/几十年而不会遇到问题而不会破坏固定精度计数器。如果您可以确定您的系统将运行 100 年(或其他时间)而不会耗尽您的固定精度计数器,即使存在恶意实体,那么您可以选择简化事情。
另一个(重要的)注意点是,大多数论文中使用的系统模型并没有反射(reflect)使现实生活中的实现变得实用的所有内容(Raft 是一个很好的异常(exception))。如果有的话,有些作者犯了创建系统模型的罪,该模型旨在避免他们尚未找到答案的难题。所以,如果有人说 X 将解决所有问题,请注意他们只是意味着它解决了他们定义的非常具体的系统模型中的所有问题。另一方面,您应该考虑系统模型与“Y is impossible”的陈述密切相关。解释这个概念的一个很好的例子是 Ben-Or consensus algorithm 的完全异步消息传递。它在系统模型的状态机中使用不确定性来避免 FLP impossibility result 指定的限制(它指定当系统模型的状态机是确定性的时,共识需要部分异步消息传递)。
因此,在阅读了表明无法完成的证明后,您应该继续考虑“不可能”。南希林奇做了一个nice writeup关于这个概念。
我想我真正想说的是,目前还没有真正解决您的问题的好方法。如果你弄明白了,请发表它(或者如果你找到现有的论文,请告诉我)。
关于algorithm - 您如何缓解拜占庭 Paxos 中的提案编号溢出攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19240919/
在我早期的 R 生活中,当涉及到目录和子目录之间的分隔符时,我发现了 R 和 Windows 在不同页面上的痛苦。尽管我知道这个问题,但我仍然因为必须手动在所有反斜杠前面放置一个反斜杠或用正斜杠替换所
我正在尝试使用名为 easeInBounce 的缓动 jQuery 函数,但它不起作用。我搜索了所有相关内容,所有页面都说我必须像这里一样放置 {easing:'easeInBounce'} 但它不起
我不明白为什么使用 fgets 获取输入总是给我的程序“密码错误”。 但是,当我使用 gets() 时,比如 gets(array); 它起作用了。 预期输出:当密码错误时,打印“Wrong Pass
我刚刚给了this Hadoop tuorial在 JobTracker 中读取 Hadoop 有跟腱(单点故障)的状态: The JobTracker is a single point of fa
我有一个关于 csrf 缓解的问题。文献建议在每个页面上使用 token ,该 token 必须与任何表单一起提交 - 此 token 必须有效才能进行交易。 页面上的 token 如何防止 csrf
.NET 中是否有任何预先存在的方法来检测/防止 xpath 注入(inject)攻击? 我可以预见 2 个例子,但可能还有更多。 例如 "/Some/XPath/" + UntrustedNodeN
我已经在 http://jsfiddle.net/GxpSQ/ 上发布了一个代码有一个工作代码。单击该框,它将随机播放。 基于 hungred.com 我的代码基于此示例 http://hungred
我最近不得不迁移一个由负载均衡器和三个后端组成的基础架构。每个后端都设置了 apache2 来处理 HTTP/HTTPs 请求,并通过 AJP 协议(protocol)将它们转发到 tomcat 服务
系统的一个模块处理基于 JSON 的协议(protocol),该协议(protocol)用于传输各种数据。这导致了将近一百个小代码段,如下所示: /* * Data package Foo re
我希望有人能够帮助我理解这个问题,以及我是否需要采取任何额外步骤来保护我的应用程序。 阅读此特定漏洞,它似乎会影响符合以下条件的服务器: 从使用 HTTP 级压缩的服务器提供服务 在 HTTP 响应主
我希望能够在具有 REPR CStruct/CPointer 的类中使用双指针: typedef struct CipherContext { void *cipher;
我有一个X509Certificate2实例,并获取其PrivateKey属性,这是一个 RsaCryptoServiceProvider 。 MSDN 文档表明此 RsaCryptoServiceP
我们用于安全测试的第三方工具在 Tomcat 8 上存在慢速 HTTP POST 漏洞。我们在应用程序中有一个简单的 Spring Controller 和 JSP。 现有的 Tomcat 连接器配置
我已经设置了useHttpOnly=true在 tomcat context.xml 中,并且正在使用使用 java keytool 在 server.xml 连接器元素支持中生成的自签名证书来支持
根据 Azure 文档 github 问题 ( https://github.com/MicrosoftDocs/azure-docs/issues/75652 ) 中的 Azure 支持响应,Lin
我正在对我的 Java 代码执行 veracode 扫描,它在我的 DAO 类之一中引发以下错误 SQL 命令中使用的特殊元素的不正确中和(“SQL 注入(inject)”)CWE ID 89 但是,
我正在使用 Mongoose ODM wrapper对于 NodeJS,我担心注入(inject)攻击。假设我有以下架构: const UserSchema = new mongoose.Schema
我们有一个 jaxrs 服务,不幸的是执行了原始查询,没有准备好的语句。我们使用 ESAPI 来缓解 XSS、SQLI。如下所示: private String mitigateSQLI(String
我正在尝试减轻我们对 Poodle SSL 3.0 Fallback 的脆弱性攻击。我们的管理员已经开始禁用 SSL 以支持 TLS 用于与我们服务器的入站连接。我们还建议我们的团队在他们的网络浏览器
我在 Heroku 上有一个应用程序(免费计划),并且在从 Django 管理上传媒体文件时经常收到应用程序错误。我使用 S3 来提供静态和媒体服务。通过 django admin 直接将文件上传到
我是一名优秀的程序员,十分优秀!