Kha Dinh Duy, Jaeyoon Kim, Hajeong Lim, and Hojoon Lee IEEE S&P 2025
개요
최근 연구들은 사이드 채널 공격이 Intel SGX와 같은 신뢰 실행 환경(TEE)의 기밀성을 무력화할 수 있음을 반복적으로 입증해왔다. 한편, 클라우드 환경에서는 기밀 가상머신(CVM) 기술로의 전환이 진행 중이지만, 기존의 사이드 채널 공격 중 일부는 여전히 유효하며, CVM을 대상으로 한 새로운 공격 기법도 등장하고 있다. 기존 연구들은 SGX 인클레이브를 보호하는 방어 기법을 탐색해왔으나, CVM 기반 난독화 실행 엔진에 대한 연구는 해결해야할 난제가 많음에도 아직 미흡한 상황이다. 이에 본 논문에서는 CVM 기반 클라우드 워크로드의 전 시스템 난독화(full-system obfuscation)를 제공하는 유니커널(Unikernel) "IncognitOS"를 제안한다.
IncognitOS는 유니커널의 장점을 극대화 하여 최소화된 신뢰 컴퓨팅 기반(TCB)과 하드웨어 직접 접근을 활용하여 난독화를 실현하며, 스케줄러 및 메모리 관리 시스템의 재구성을 통해 적응형 난독화(adaptive obfuscation) 기법을 구현한다. IncognitOS의 스케줄러는 하이퍼바이저의 타이머 인터럽트에 의존하지 않고 독립적으로 실행되어, 기존 연구에서 제시된 하이퍼바이저에 대한 안전하지 않은 의존성을 제거한다. 또한 하이퍼바이저가 실행 제어권을 확보하는 빈도(VMExit 발생률)를 정밀하게 측정하여 메모리 재난독화(memory rerandomization) 빈도를 동적으로 조정한다. 또한 페이징 서브시스템은 MMU에 직접 접근하여 난독화함으로써 보안을 강화하는 한편, 어플리케이션에 대해 영향을 주지 않는 투명한 (transparent) 난독화 기능을 구현한다.
평가 결과, IncognitOS는 CVM 대상 사이드 채널 공격에 강한 저항성을 제공하며, 적응형 난독화 기법을 통해 실사용 가능한 성능을 유지함을 입증한다. 이를 통해, CVM 환경에서의 안전한 배포 전략으로서 자체 난독화(self-obfuscating) 유니커널의 가능성을 제시한다. [1]
Background
Side channel attack을 위해서 Scheduling의 Frequency를 변환시키는 방법은, 분명히 기존의 Scheduling과는 명백히 차이나는 패턴을 보인다.
Main Idea
본 논문은 Unikernel을 다음과 같은 장점을 이용하기 위해서 채택하였다.
- Unikernel은 메모리 footprint가 작기 때문에, 효율적으로 Obfuscation할 수 있다.
- Unikernel은 Kernel과 User가 한 Context에서 이루어지기 때문에 Scheduling이 Frequent하게 이루어져도, Overhead가 적다.
- Unikraft를 이용하면 Application compatibility를 높게 유지할 수 있다.
Design

- Scheduling for Rate-Adaptive Policy
- 정적 바이너리 도구를 사용해서 각 기본 블록에 Synchronous tick을 삽입하고, 이를 통해서 Self-sovereign scheduling을 구현하였다. 이 틱은 VMExit을 감지하고 실행된 명령어 수를 카운트해서 VMExit빈도를 계산하였다. 하지만 신뢰성있는 VMExit Frequency sampling은 힘든일이고, 이를 해결하기 위해서 신중한 고수준의 정책 스케쥴링 시스템을 구현하였다.
- 본 논문은 Binary instrumentation을 통해서 Sampling tick을 얻는 INCOGNITOS scheduler를 코드에 삽입한다. 스케뷸러에서는, VMSA을 통해서 얻은 Sampling tick은 직전 VMEXIT사이의 Delay와 Instruction의 Length를 이용해서 원래 VMEXIT Frequency를 추측한다. 그러나, VMEXIT의 Frequency를 얻기 위해서는 Sampling된 Rate이기 때문에 실제 VMEXIT Frequency를 얻기 위해서는 Nyquist smapling frequency를 이용해서 원래 Sampling rate을 복구해야 한다. 복구된 Sampling rate을 바탕으로 본 논문은 특정 기준을 만족시키는 경우에만 Memory obfuscation을 수행하도록 하였다. 특정 기준은 논문 참고.
- OS-level Page Access Obfuscation
- PATH ORAM알고리즘을 사용하였다. 흥미로운 부분은, ORAM의 Metadata를 Page table entry에 통합하였다는 것이다. 즉, INCOGNITOS는 운영체제의 페이지 테이블에 ORAM을 일관되게 통합하기 위해, 페이지 테이블 엔트리(Page Table Entry, PTE) 자체를 Path ORAM 알고리즘의 위치 맵(PosMap) 역할을 하도록 변환하는 방식을 사용한다. 이를 통해 별도의 PosMap 자료구조를 유지할 필요가 없어진다. INCOGNITOS가 관리하는 페이지 테이블의 PTE는 다음 세 가지 상태 중 하나를 가질 수 있다:
- 활성(active): 이 상태에서는 PFN(Page Frame Number)이 인코딩되어 있으며, 이는 활성 메모리 영역을 가리킨다.
- 페이지 아웃(paged-out): 이 상태는 해당 페이지가 ORAM 페이지 저장소로 퇴출되었음을 의미한다.
- 미할당(unallocated): 이는 운영체제의 요청에 따라 새로운 물리 페이지 프레임을 할당해야 함을 나타낸다
- 특히, 페이지 아웃 상태인 경우, INCOGNITOS는 퇴출된 페이지의 PTE를 재활용하여 해당 페이지가 할당된 **리프 ID(leaf ID)**를 저장하는 데 사용한다. 또한 Page fault시에 PTE에 저장된 ORAM메타데이터를 참고해서 적잘한 단계를 받아서 빠르게 ORAM알고리즘을 작동시켰다. 이를 위해서 Context switching을 줄일 수 있는 Unikernel를 사용'한 것이다.
ORAM의 동작 원리나 Specific한 내용은 논문을 참고.
Conclusion
결론적으로 ORAM을 통한 Overhead는 피할 수 없었지만, 효과적으로 ORAM의 기법을 CVM에 적용시켰다. Adaptive하게 Sampling을 통해서 적용시키는 방법의 False positive나 negative를 극복할 수 있는 방법이 흥미로워 보인다.