[論文レビュー] Model Counting Modulo Theories
本稿では、ソフトウェアシステムにおけるチャネル容量を正確かつ効率的に計算するための新規フレームワークである#SMT(Model Counting Modulo Theories)を紹介する。これは、定量的情報フロー(QIF)解析を一階論理式上のモデル数え上げに還元することで実現される。本手法は、記号実行とSMTソルバを活用し、従来手法と比較して桁違いの高速化を達成し、Linuxカーネルコードや匿名性プロトコルを含む実世界のCおよびJavaプログラムのスケーラブルな解析を可能にする。
This thesis is concerned with the quantitative assessment of security in software. More specifically, it tackles the problem of efficient computation of channel capacity, the maximum amount of confidential information leaked by software, measured in Shannon entropy or Rényi's min-entropy. Most approaches to computing channel capacity are either efficient and return only (possibly very loose) upper bounds, or alternatively are inefficient but precise; few target realistic programs. In this thesis, we present a novel approach to the problem by reducing it to a model counting problem on first-order logic, which we name Model Counting Modulo Theories or #SMT for brevity. For quantitative security, our contribution is twofold. First, on the theoretical side we establish the connections between measuring confidentiality leaks and fundamental verification algorithms like Symbolic Execution, SMT solvers and DPLL. Second, exploiting these connections, we develop novel #SMT-based techniques to compute channel capacity, which achieve both accuracy and efficiency. These techniques are scalable to real-world programs, and illustrative case studies include C programs from Linux kernel, a Java program from a European project and anonymity protocols. For formal verification, our contribution is also twofold. First, we introduce and study a new research problem, namely #SMT, which has other potential applications beyond computing channel capacity, such as returning multiple-counterexamples for Bounded Model Checking or automated test generation. Second, we propose an alternative approach for Bounded Model Checking using classical Symbolic Execution, which can be parallelised to leverage modern multi-core and distributed architecture.
研究の動機と目的
- 現存するQIF手法が現実的なプログラムに対して正確でないか、あるいは実行不能であるというギャップを埋めるために、スケーラブルで正確なチャネル容量計算手法を提案すること。
- 記号実行、DPLL modulo theories、およびモデル数え上げの間の理論的関係を確立し、基礎的な検証アルゴリズムと定量的セキュリティ解析を統合すること。
- CおよびJavaプログラムにおける情報漏洩の自動的・スケーラブルな解析を可能にする実用的ツール(sqifc, jpf-qif, QILURA, JCBMC, aZ3)を開発すること。
- SMTソルバの適用範囲を充足可能性の超えてモデル数え上げへ拡張し、バウンデッドモデルチェックイング、テスト生成、信頼性解析などの新しい応用を可能にすること。
提案手法
- チャネル容量の計算問題を#SMTに還元する:機密性制約下でのプログラムトレースを表す論理式のモデル数を数えること。
- 記号実行とSMTソルバを統合し、パス条件を生成し、すべての充足モデルを列挙するためのAll-SMTソルバ(aZ3)を用いて正確な数え上げを実現する。
- 記号実行とDPLL(𝕋)アルゴリズムとの対応関係を活用し、モデル列挙の最適化とスケーラビリティの向上を図る。
- #SMTフレームワークを静的および動的プログラム解析に適用し、記号実行を用いてすべての実行パスを探索し、漏洩するトレースを数える。
- 記号実行とAll-SMTソルバを用いて複数の反例を生成する、Java用の並行バウンデッドモデルチェッカーJCBMCを開発する。
- 同じ#SMTインfraを信頼性解析に応用し、障害パスをモデル化し、形式的保証のもとでその発生回数を数える。
実験結果
リサーチクエスチョン
- RQ1モデル数え上げモジュロ理論(#SMT)を用いて、実世界のソフトウェアシステムにおけるチャネル容量を正確かつ効率的に計算できるか?
- RQ2定量的情報フローの文脈において、記号実行、DPLL(𝕋)、およびモデル数え上げの間にはどのような理論的関係があるか?
- RQ3All-SMTソルバを活用することで、バウンデッドモデルチェックイングのための複数の反例生成とテスト生成の改善が可能か?
- RQ4ポ인터や動的データ構造を含む複雑なプログラムに対し、#SMTベースの手法はどの程度スケーラブルに適用可能か?
- RQ5同じ#SMTフレームワークを信頼性解析および故障局所化に再利用可能か?
主な発見
- #SMTベースのアプローチにより、Linuxカーネルプログラムの解析時間が数時間から数秒にまで短縮され、従来の自己合成手法と比較して顕著な性能向上が実証された。
- 本フレームワークは、実世界のCプログラム(例:Linuxカーネルから抽出)、ヨーロッパ研究プロジェクトのJavaプログラム、および匿名性プロトコルの解析に成功し、おもちゃ例をはるかに超えたスケーラビリティを実証した。
- All-SMTソルバaZ3の開発により、すべてのモデルの効率的列挙が可能となり、QIFおよびバウンデッドモデルチェックイングにおける正確なモデル数え上げに不可欠な要因となった。
- 記号実行とSMTソルバの統合により、ポインタを含む複雑なデータ構造を持つプログラムに対しても、正確かつスケーラブルな解析が可能になった。
- 本手法により、定量的情報フロー解析における記号実行の初の適用が実現され、精度とパフォーマンスの新しい基準を確立した。
- QIFと信頼性解析の間の関係が形式的に確立され、モデル数え上げを用いて障害確率を統計的保証とともに定量化できることを示した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。