Practical Byzantine Fault Tolerance (PBFT) is a seminal state machine replication protocol that achieves a performance comparable to non-replicated systems in realistic environments. A reason for such high performance is the set of optimizations introduced in the protocol. One of these optimizations is read-only requests, a particular type of client request which avoids running the three-step agreement protocol and allows replicas to respond directly, thus reducing the latency of reads from five to two communication steps. Given PBFT's broad influence, its design and optimizations influenced many BFT protocols and systems that followed, e.g., BFT-SMaRt. We show, for the first time, that the read-only request optimization introduced in PBFT more than 20 years ago can violate its liveness. Notably, the problem affects not only the optimized read-only operations but also standard, totally-ordered operations. We show this weakness by presenting an attack in which a malicious leader blocks correct clients and present two solutions for patching the protocol, making read-only operations fast and correct. The two solutions were implemented on BFT-SMaRt and evaluated in different scenarios, showing their effectiveness in preventing the identified attack.
翻译:Byzantine Byzantine Dault Condition(PBFT)是一个初级国家机器复制协议,其性能与现实环境中的非复制系统相仿,其原因之一是在协议中引入了一套优化,其中一种优化是只读请求,一种特定类型的客户请求,避免运行三步协议协议协议协议,允许复制直接响应,从而将读数的延迟度从五步降低到两步。鉴于PBFT的广泛影响,其设计和优化影响了许多BFT协议和随后的系统,例如BFT-SMARt。我们第一次显示,20多年前在PBBFT中引入的只读请求优化可能破坏其真实性。值得注意的是,问题不仅影响优化的只读数操作,而且影响标准、完全有序的操作。我们展示了这种弱点,我们展示了一种攻击,恶意领导方块校正客户,并提出了修补协议的两种解决方案,使只读操作快速和正确。我们发现,在BFT-SMRt中实施了两种解决方案,在不同的情景中显示其有效性。