[논문 리뷰] Adversarial Symbolic Execution for Detecting Concurrency-Related Cache Timing Leaks
이 논문은 SMT 해결을 사용하여 캐시 동작을 모델링하고 스레드 인터리빙을 상징적으로 탐색함으로써 암호 프로그램에서 동시성에 기인한 캐시 타이밍 side-channel 유출을 탐지하는 방법인 적대적 상징적 실행(SymSC)을 제안한다. 기존 도구가 탐지하지 못한 실제 암호 알고리즘에서 현실적인 유출을 발견함으로써, 동시성 하에서 타이밍 유출 방지 성질이 구성성(compositional)이 아님을 입증한다.
The timing characteristics of cache, a high-speed storage between the fast CPU and the slowmemory, may reveal sensitive information of a program, thus allowing an adversary to conduct side-channel attacks. Existing methods for detecting timing leaks either ignore cache all together or focus only on passive leaks generated by the program itself, without considering leaks that are made possible by concurrently running some other threads. In this work, we show that timing-leak-freedom is not a compositional property: a program that is not leaky when running alone may become leaky when interleaved with other threads. Thus, we develop a new method, named adversarial symbolic execution, to detect such leaks. It systematically explores both the feasible program paths and their interleavings while modeling the cache, and leverages an SMT solver to decide if there are timing leaks. We have implemented our method in LLVM and evaluated it on a set of real-world ciphers with 14,455 lines of C code in total. Our experiments demonstrate both the efficiency of our method and its effectiveness in detecting side-channel leaks.
연구 동기 및 목표
- 기존 도구가 동시 프로그램에서 캐시 타이밍 유출을 무시하는 격차를 보완하기 위해.
- 타이밍 유출 방지 성질이 구성성이 아님을 보여주기 위해: 프로그램이 독립적으로 실행될 땐 안전할 수 있으나, 적대적 스레드와 인터리빙될 경우 유출이 발생할 수 있음.
- 동시 실행 스레드 간 간섭으로 인한 캐시 타이밍 유출을 체계적으로 탐지하는 방법을 개발하기 위해.
- 계산 오버헤드를 최소화하면서도 상징적 실행 중에 캐시 동작을 정확히 모델링하기 위해.
- 실제 암호 구현체에 대해 이 방법을 평가하고, 이전에 탐지되지 않은 유출을 드러내는 효과성을 입증하기 위해.
제안 방법
- 공격 대상이 되는 스레드(예: 암호 함수)와 잠재적으로 적대적인 스레드를 모두 상징적으로 실행하여 모든 가능한 경로와 인터리빙을 탐색한다.
- 상징적 실행 중에 동적 캐시 동작 제약 조건을 구성하여 메모리 접근이 캐시 히트 또는 미스가 되는 조건을 모델링한다.
- SMT 솔버를 활용하여 동일한 인터리빙 하에서 입력에 따라 캐시 동작이 다름을 확인한다: 동일한 인터리빙에서 서로 다른 입력이 서로 다른 히트/미스 패턴을 유도함.
- 캐시 동작 제약 조건 기반으로 중복된 인터리빙을 실시간으로 잘라내어 경로 및 인터리빙 폭발 문제를 완화한다.
- 캐시 구성(예: 연관성, 라인 크기)에 기반하여 캐시 동작을 모델링하고 스레드 간 캐시 라인 접근 패턴을 추적한다.
- 사용자가 제공하지 않은 경우 자동으로 적대적 스레드와 인터리빙 스케줄을 생성하여 유출 탐지의 완전 자동화를 달성한다.
실험 결과
연구 질문
- RQ1자기 자신에서 타이밍 유출 방지 성질을 가진 프로그램이 다른 스레드와 동시 실행될 경우 캐시 타이밍 사이드 채널 공격에 취약해질 수 있는가?
- RQ2캐시 기반 타이밍 유출을 폭 드러내는 적대적 인터리빙을 탐지할 수 있는 체계적인 탐색 전략은 무엇인가?
- RQ3상징적 실행 중에 캐시 동작을 정확히 모델링하여 데이터에 따라 달라지는 히트/미스 패턴을 탐지할 수 있는가?
- RQ4실제 암호 구현체에서 동시성에 기인한 캐시 타이밍 유출이 어느 정도 존재하는가?
- RQ5SMT 해결을 사용한 상징적 실행은 이러한 유출을 유도하는 구체적인 입력과 인터리빙을 탐지할 수 있는가?
주요 결과
- 연구는 타이밍 유출 방지 성질이 구성성이 아님을 입증한다: 동일한 명령어 수를 가진 프로그램이라도 동시 실행 시 캐시 타이밍 유출이 드러날 수 있음을 보여준다.
- SymSC는 총 14,455줄의 C 코드로 구성된 20개의 실제 암호 프로그램에서 구체적인 캐시 타이밍 유출을 성공적으로 탐지하였다.
- 기존 도구가 순차적 실행만 고려하여 탐지하지 못한, 적대적 스레드 간섭을 수반하는 현실적인 공격 시나리오를 탐지하였다.
- 캐시 동작 제약 조건 덕분에 중복된 인터리빙을 효과적으로 잘라내어 상태공간 폭발 문제에도 불구하고 확장성을 향상시켰다.
- 도구는 유출이 발생하는 구체적인 입력과 인터리빙 스케줄을 생성하여 탐지된 유출의 실용성을 입증하였다.
- 기존 도구는 이러한 동시성에 기인한 캐시 타이밍 유출을 탐지할 수 없었으며, 이로써 SymSC는 이 문제를 해결한 최초의 방법임을 입증한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.