Skip to main content
QUICK REVIEW

[論文レビュー] Twins: BFT Systems Made Robust

Shehar Bano, Alberto Sonnino|arXiv (Cornell University)|Apr 22, 2020
Information and Cyber Security被引用数 7
ひとこと要約

Twinsは、同一のIDと資格情報を備えた誠実なノードの同一コピー(ツインレプリカ)を導入することで、BFTシステムにおけるByzantine Fault攻撃を体系的かつスケーラブルに生成する新しいフレームワークを提案する。等価な発言(equivocation)、二重投票、投票値の忘却をシミュレートすることで、数分以内に安全制約違反を暴露できる。DiemBFTに意図的に埋め込んだバグを大規模に検出する実証実験により、1日あたり4400万件のシナリオを実行した。

ABSTRACT

This paper presents Twins, an automated unit test generator of Byzantine attacks. Twins implements three types of Byzantine behaviors: (i) leader equivocation, (ii) double voting, and (iii) losing internal state such as forgetting 'locks' guarding voted values. To emulate interesting attacks by a Byzantine node, it instantiates twin copies of the node instead of one, giving both twins the same identities and network credentials. To the rest of the system, the twins appear indistinguishable from a single node behaving in a 'questionable' manner. Twins can systematically generate Byzantine attack scenarios at scale, execute them in a controlled manner, and examine their behavior. Twins scenarios iterate over protocol rounds and vary the communication patterns among nodes. Twins runs in a production setting within DiemBFT where it can execute 44M Twins-generated scenarios daily. Whereas the system at hand did not manifest errors, subtle safety bugs that were deliberately injected for the purpose of validating the implementation of Twins itself were exposed within minutes. Twins can prevent developers from regressing correctness when updating the codebase, introducing new features, or performing routine maintenance tasks. Twins only requires a thin wrapper over DiemBFT, we thus envision other systems using it. Building on this idea, one new attack and several known attacks against other BFT protocols were materialized as Twins scenarios. In all cases, the target protocols break within fewer than a dozen protocol rounds, hence it is realistic for the Twins approach to expose the problems.

研究の動機と目的

  • 手動で構築するのが困難な、現実的で複雑な攻撃を想定した、BFTプロトコルの体系的かつ効率的なテストを実現すること。
  • ランダム障害注入(例:Chaos Monkey)や形式的検証(例:モデルチェッキング)の限界を克服すること。これらはカバレッジ不足や状態空間の爆発といった問題を抱える。
  • 開発段階の初期段階、あるいは日常的なメンテナンス時でさえも、微細な安全バグを早期に検出できる、実用的で生産環境対応の検証手法を提供すること。
  • 元のプロトコルコードを変更せずに、ツインレプリカを活用してByzantine挙動をエミュレートすることで、BFTシステムの自動的かつ繰り返し可能で包括的なテストを可能にすること。

提案手法

  • 同一の暗号的IDとネットワーク資格情報を備えた、複数の自律的かつ同一のノード(ツイン)を導入し、Byzantine挙動をシミュレートする。
  • ツインを用いて、リーダーの等価発言、二重投票、投票値の忘却といった攻撃を生成する。これらの挙動は単一の悪意あるノードが示すものと区別がつかない。
  • プロトコルラウンドを体系的に走査し、ツインと他のノード間の通信パターンを変化させることで、多様な攻撃表面を探索する。
  • DiemBFT上に薄いラッパーとしてTwinsを統合し、生産環境で1日あたり数百万件のテストシナリオを自動実行できるようにする。
  • 既存の正しく動作するプロトコル論理を活用して、故障挙動を生成することで、手動でByzantine意味論を実装する必要がなくなる。
  • 既知および新規の安全バグをDiemBFTに挿入し、Twinsが数分以内にそれらを検出できたことで、フレームワークの有効性を検証した。

実験結果

リサーチクエスチョン

  • RQ1手動テストやランダム障害注入では見つけにくい微細な安全バグを、体系的かつ自動化されたアプローチが検出可能かどうか。
  • RQ2プロトコルコードを変更せずに、誠実なノードのツインレプリカが、等価発言や状態の忘却といった複雑なByzantine挙動をどれほど正確にエミュレートできるか。
  • RQ3Twinsフレームワークが、実世界のBFTシステム(例:DiemBFT)において、1日あたり数百万件のテストシナリオを実行可能であり、かつ偽陽性率を低く保てるか。
  • RQ4Twinsアプローチが、プロトコル状態や因果的依存関係を活用する攻撃を含め、広範なByzantine攻撃クラスをカバーできるか。
  • RQ5Twinsは、コアの共有可能プロトコルにとどまらず、再構成やスマートコントラクト実行といったBFTシステムの補助的モジュールの検証にも拡張可能か。

主な発見

  • Twinsは、DiemBFTに意図的に挿入された安全バグを数分以内に検出でき、論理的欠陥に対する高い感受性を示した。
  • フレームワークは生産環境で1日あたり4400万件のTwins生成シナリオを実行し、スケーラビリティと実用性を実証した。
  • 既知および新規のBFTプロトコル攻撃のすべてが、Twinsシナリオとして現れ、10ラウンド以内にプロトコルの失敗を引き起こした。
  • 従来のテストやランダム障害注入では露呈しなかった微細な安全違反をTwinsが発見した。これは、本アプローチの優れたカバレッジを示している。
  • 状態空間の爆発を回避するため、正しく動作する実行のみをモデル化し、ツインレプリカを用いて故障挙動を生成することで、形式的検証よりも効率的である。
  • フレームワークは拡張可能であり、コアの共有可能プロトコルに加え、DiemBFTにおける再構成やスマートコントラクト実行といった補助的モジュールの検証にも使用された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。