Skip to main content
QUICK REVIEW

[논문 리뷰] Model Counting Modulo Theories

Quoc-Sang Phan|arXiv (Cornell University)|2015. 04. 10.
Software Testing and Debugging Techniques참고 문헌 110인용 수 7
한 줄 요약

이 논문은 소프트웨어 시스템에서 채널 용량을 정확하고 효율적으로 계산하기 위해 첫째, 일阶 논리 공식에 기반한 모델 카운팅을 통해 정량적 정보 흐름(QIF) 분석을 축소하는 새로운 프레임워크인 #SMT(Model Counting Modulo Theories)를 소개한다. 이는 기호적 실행과 SMT 솔버를 활용하여 이전 방법들에 비해 수개의 순서대의 속도 향상을 달성하며, 리눅스 커널 코드와 익명성 프로토콜을 포함한 실제 C 및 자바 프로그램의 확장 가능한 분석을 가능하게 한다.

ABSTRACT

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 및 자바 프로그램에서의 정보 泄露 분석을 가능하게 하는 실용적 도구—sqifc, jpf-qif, QILURA, JCBMC, 및 aZ3—을 개발한다.
  • SMT 해결의 적용 범위를 만족 가능성 초과로 확장하여, 경계 모델 체킹, 테스트 생성, 신뢰성 분석 등 새로운 응용 분야를 가능하게 한다.

제안 방법

  • 채널 용량 계산 문제를 #SMT로 축소: 기밀성 제약 조건 하에 프로그램 트레이스를 나타내는 논리 공식의 모델 수를 세는 것.
  • 기호적 실행과 SMT 해결을 통합하여 경로 조건을 생성하고, 모든 만족 가능한 모델을 나열하기 위해 All-SMT 솔버(aZ3)를 사용하여 정확한 수를 세는 데 활용한다.
  • 기호적 실행과 DPLL(𝕋) 알고리즘 간의 대응 관계를 활용하여 모델 수 나열를 최적화하고 확장성을 향상시킨다.
  • 정적 및 동적 프로그램 분석 모두에 #SMT 프레임워크를 적용하여, 기호적 실행을 통해 모든 가능한 실행 경로를 탐색하고 泄露 경로를 세는 데 사용한다.
  • 기호적 실행과 All-SMT 해결을 사용하여 다중 반례를 생성하는 동시 경계 모델 체커인 JCBMC를 개발한다.
  • 동일한 #SMT 인프라를 신뢰성 분석에 활용하여 시스템 장애 경로를 모델링하고, 형식적 보장을 갖춘 발생 빈도를 세는 데 사용한다.

실험 결과

연구 질문

  • RQ1모델 카운팅 모듈로 이론(#SMT)을 사용하여 실제 소프트웨어 시스템에서 채널 용량을 정확하고 효율적으로 계산할 수 있는가?
  • RQ2정량적 정보 흐름의 맥락에서 기호적 실행, DPLL(𝕋), 그리고 모델 카운팅 간의 이론적 관계는 무엇인가?
  • RQ3All-SMT 해결을 활용하여 경계 모델 체킹을 위한 다중 반례를 생성하고 테스트 생성을 향상시킬 수 있는가?
  • RQ4포인터와 동적 데이터 구조를 포함한 복잡한 프로그램에 대해 #SMT 기반 기법의 확장성은 어느 정도인가?
  • RQ5동일한 #SMT 프레임워크를 소프트웨어 시스템의 신뢰성 분석 및 결함 위치 특정에 재사용할 수 있는가?

주요 결과

  • #SMT 기반 접근법은 리눅스 커널 프로그램의 분석 시간을 수 시간에서 몇 초로 단축시켜 이전의 자기 복제 기법에 비해 뚜렷한 성능 향상을 보였다.
  • 이 프레임워크는 리눅스 커널에서 유래한 실제 C 프로그램, 유럽 프로젝트에서 나온 자바 프로그램, 익명성 프로토콜까지 성공적으로 분석하여, 장난감 예제를 넘어서는 확장성을 입증했다.
  • All-SMT 솔버인 aZ3의 개발 덕분에 모든 모델의 효율적 나열이 가능해졌으며, 이는 QIF 및 경계 모델 체킹에서 정확한 모델 카운팅에 필수적이었다.
  • 기호적 실행과 SMT 해결의 통합은 포인터를 포함한 복잡한 데이터 구조를 가진 프로그램에 대해 정밀하고 확장 가능한 분석을 가능하게 했다.
  • 이 방법은 기호적 실행을 정량적 정보 흐름 분석에 처음으로 적용하여 정밀도와 성능의 새로운 기준을 설정했다.
  • QIF와 신뢰성 분석 간의 연결을 형식화하여, 모델 카운팅을 사용해 통계적 보장을 갖춘 장애 확률을 정량화할 수 있음을 보였다.

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

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

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

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