[论文解读] Model Counting Modulo Theories
本文提出了 #SMT(模型计数模理论)作为一种新颖框架,通过将定量信息流(QIF)分析归约为一阶逻辑公式的模型计数,以精确且高效地计算软件系统中的信道容量。该方法利用符号执行与SMT求解器,相较于先前的方法实现了数量级的速度提升,从而实现了对真实世界C语言和Java程序(包括Linux内核代码和匿名性协议)的可扩展分析。
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模理论(DPLL(𝕋))与模型计数之间的理论联系,统一基础验证算法与定量安全分析。
- 开发实用工具——sqifc、jpf-qif、QILURA、JCBMC与aZ3,以实现对C和Java程序中信息泄露的自动化、可扩展分析。
- 将SMT求解的应用范围从可满足性扩展至模型计数,从而在有界模型检查、测试生成与可靠性分析等新领域中实现应用。
提出的方法
- 将信道容量计算问题归约为 #SMT:即计数表示在保密性约束下程序执行路径的逻辑公式的模型数量。
- 将符号执行与SMT求解相结合,生成路径条件,并利用All-SMT求解器(aZ3)枚举所有满足的模型以实现精确计数。
- 利用符号执行与DPLL(𝕋)算法之间的对应关系,优化模型枚举过程,提升可扩展性。
- 将 #SMT 框架应用于静态与动态程序分析,使用符号执行探索所有可行执行路径,并计数泄露路径。
- 开发JCBMC——一种用于Java的并发有界模型检查器,利用符号执行与All-SMT求解生成多个反例。
- 通过建模系统故障路径并使用形式化保证计数其出现次数,将相同的 #SMT 基础设施用于可靠性分析。
实验结果
研究问题
- RQ1能否利用模理论的模型计数(#SMT)在真实世界软件系统中精确且高效地计算信道容量?
- RQ2在定量信息流背景下,符号执行、DPLL(𝕋)与模型计数之间存在何种理论关系?
- RQ3如何利用All-SMT求解生成多个反例以改进有界模型检查与测试生成?
- RQ4#SMT技术在具有指针与动态数据结构的复杂程序中可扩展到何种程度?
- RQ5相同的 #SMT 框架能否被复用于软件系统的可靠性分析与故障定位?
主要发现
- #SMT方法将Linux内核程序的分析时间从数小时缩短至仅几秒钟,相较于先前的自复合技术展现出显著的性能提升。
- 该框架成功分析了真实世界的C程序(如Linux内核中的代码)、来自欧洲项目的Java程序以及匿名性协议,证明其在玩具示例之外的可扩展性。
- aZ3(一个All-SMT求解器)的开发使得所有模型的高效枚举成为可能,这对QIF与有界模型检查中的精确模型计数至关重要。
- 符号执行与SMT求解的集成使得对包含指针等复杂数据结构的程序实现了精确且可扩展的分析。
- 该方法首次实现了将符号执行用于定量信息流分析,确立了精度与性能的新基准。
- 正式建立了QIF与可靠性分析之间的联系,表明模型计数可用于在统计保证下量化故障概率。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。