Skip to main content
QUICK REVIEW

[논문 리뷰] Twins: White-Glove Approach for BFT Testing.

Shehar Bano, Alberto Sonnino|arXiv (Cornell University)|2020. 04. 22.
Distributed systems and fault tolerance참고 문헌 25인용 수 12
한 줄 요약

Twins는 동일한 정체성을 가진 동일한 노드의 여러 인스턴스를 실행하여 비잔티노스 결함 내성(BFT) 시스템을 테스트하는 새로운 원칙적인 접근법을 제안한다. 이를 통해 등기성과 이중 투표와 같은 현실적인 비잔티노스 행동을 제어적으로 생성할 수 있으며, 이로 인해 몇 분 내로 핵심 프로토콜 결함을 드러낼 수 있다. 이는 기존 방법보다 수십 년 전의 결함을 훨씬 빠르게 탐지할 수 있음을 보여준다.

ABSTRACT

Byzantine Fault Tolerant (BFT) systems have seen extensive study for more than two decades, yet we lack a principled strategy for testing BFT implementations. This paper presents Twins, a new approach for testing BFT systems. The main idea of Twins is that we can emulate Byzantine behavior by running two (or generally up to $k$) instances of a node with the same identity. Each of the two instances (or Twins) runs unmodified, correct code. The Twins approach requires only a thin network wrapper that delivers messages to/from both Twins. To the rest of the system, the Twins appear indistinguishable from a single node behaving in a `questionable' manner. Twins generates `interesting' Byzantine behaviors, including equivocation, double voting, and losing internal state, while forgoing `uninteresting' behaviors that are trivially rejected by honest nodes, such as producing semantically invalid messages. Building on this idea, Twins can systematically generate Byzantine attack scenarios at scale, execute them in a controlled manner, and check for desired protocol properties. The paper demonstrates that Twins successfully reinstates several famous attacks on BFT protocols. In all cases, protocols break within fewer than a dozen protocol steps, hence it is realistic for the Twins approach to expose the problems. In two of these attacks, it took the community more than a decade to discover protocol flaws that Twins would have surfaced within minutes. Additionally, Twins testing was successfully incorporated into a production setting in which Twins executed 3M Twins-generated scenarios, and exposed (self-injected) subtle safety bugs within minutes of testing.

연구 동기 및 목표

  • 수십 년에 걸친 연구에도 불구하고 비잔티노스 결함 내성(BFT) 시스템을 테스트하기 위한 원칙적인 전략이 부족한 문제를 해결한다.
  • 순수한 노드가 즉각 기각할 수 있는 간단한 필터링을 통과하지 못하는 의미적으로 유효하지 않은 행동 외에 의미 있는 비잔티노스 행동을 생성하는 데 도전한다.
  • BFT 프로토콜에 대해 비잔티노스 공격 시나리오를 체계적이고 확장성 있고 제어 가능한 방식으로 생성하고 실행할 수 있는 방법을 제공한다.
  • 실제 비잔티노스 장애를 주입하여 생산 환경의 미묘한 안전성 버그를 조기에 탐지할 수 있도록 한다.
  • 기존의 역사적 공격을 재현하고 이전에 발견되지 않은 결함을 드러내어 이 방법의 효과성을 입증한다.

제안 방법

  • 동일한 노드의 두 개 이상의 인스턴스를 동일한 정체성으로 실행하며, 각각 수정되지 않은 정상 코드를 실행한다.
  • 메시지를 모든 인스턴스로 라우팅할 수 있도록 얇은 네트워크 워핑을 사용하여 나머지 시스템에 대해 단일 논리적 노드로 보이게 한다.
  • 다중 인스턴스의 본질적인 행동을 활용해 등기성과 이중 투표와 같은 복잡한 비잔티노스 행동을 생성한다.
  • 순수한 노드가 즉각 기각할 수 있는 의미적으로 잘못된 메시지(예: 문법적으로 잘못된 메시지)와 같은 간단한 비유효 행동을 필터링한다.
  • 생성된 공격 시나리오를 체계적으로 실행하고 제어된 조건에서 프로토콜 성질을 검증한다.
  • Twins 프레임워크를 생산 환경에 통합하여 실제 BFT 구현을 대규모로 테스트한다.

실험 결과

연구 질문

  • RQ1BFT 시스템에서 프로토콜 코드를 수정하지 않고도 의미 있는 비잔티노스 행동을 생성할 수 있는 경량이고 확장 가능한 방법을 설계할 수 있는가?
  • RQ2Twins는 얼마나 잘 제어되고 반복 가능한 방식으로 역사적으로 중요한 BFT 프로토콜 공격을 재현할 수 있는가?
  • RQ3기존의 테스트나 수작업 분석에 비해 Twins는 BFT 프로토콜의 미묘한 안전성 버그를 얼마나 빨리 탐지할 수 있는가?
  • RQ4Twins는 생산 시스템에 효과적으로 도입되어 이전에 알려지지 않은 결함을 드러낼 수 있는가?
  • RQ5Twins 접근법은 소수의 프로토콜 단계 내에서 프로토콜 취약점을 드러내어 실제 테스트에 실용적인가?

주요 결과

  • Twins는 BFT 프로토콜에 대한 유명한 공격들을 성공적으로 재현하였으며, 모든 프로토콜 실패가 십여 단계 이내에 발생하였다.
  • 두 경우에서 10년 이상 탐지되지 않았던 프로토콜 결함이 Twins에 의해 테스트 시작 후 몇 분 내로 드러났다.
  • Twins 프레임워크는 생산 환경에 성공적으로 통합되었으며, 300만 건의 시나리오 실행을 수행하고 몇 분 내로 자기가 주입한 안전성 버그를 탐지하였다.
  • 이 방법은 순수한 노드가 기각할 수 있는 의미적으로 잘못된 메시지를 제외한, 등기성과 이중 투표와 같은 '흥미로운' 비잔티노스 행동만 생성한다.
  • 이 방법은 최소한의 인프라 오버헤드로 동일한 정체성을 가진 노드 쌍을 통해 비잔티노스 행동을 에뮬레이션함으로써 BFT 프로토콜의 체계적이고 확장성 있고 반복 가능한 테스트를 가능하게 한다.
  • Twins 접근법은 프로토콜이나 노드 코드를 수정할 필요가 없으며, 메시지 라우팅을 위한 얇은 네트워크 워핑만으로도 구현 가능하므로 높은 실용성을 보여준다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.