본문으로 건너뛰기

© 2026 Molayo

arXiv논문2026. 06. 16. 11:51

obliv-clang: C++에서의 실세계 Oblivious Programming

요약

부채널 공격을 방어하기 위해 C++ 프로그램의 Oblivious 성질을 검사하는 컴파일 타임 도구인 obliv-clang을 제안합니다. 복잡한 C++ 언어 기능을 지원하며, 기존 솔루션 대비 높은 성능과 형식적 건전성을 입증했습니다.

핵심 포인트

  • 부채널 취약점(타이밍, 액세스 패턴) 완화를 위한 Oblivious 프로그래밍 지원
  • C++의 복잡한 포인터 및 언어 기능을 지원하는 컴파일 타임 검사 도구
  • 형식적 증명을 통한 도구의 건전성(soundness) 확보
  • 기존 솔루션 대비 우수한 성능과 낮은 컴파일 오버헤드 제공

부채널 취약점(Side-channel vulnerabilities), 특히 타이밍(timing) 및 액세스 패턴(access-pattern) 기반 공격은 신뢰할 수 있는 환경(trusted environments)에서의 기밀 데이터 처리(confidential data processing)에 있어 중대한 문제가 되었습니다. Oblivious programming(Oblivious 프로그래밍)은 프로그램 실행이 실행 시간(execution time)이나 데이터 액세스 흔적(data access traces)을 통해 어떠한 비밀 정보도 유출하지 않도록 함으로써 이러한 공격을 완화하는 효과적인 접근 방식입니다. 실무에서 Oblivious programming을 용이하게 하기 위해, 우리는 C++로 작성된 프로그램의 obliviousness(oblivious 성질)를 포괄적으로 검사할 수 있는 컴파일 타임 검사 도구인 obliv-clang을 제안합니다. 이는 임의로 중첩된 포인터(arbitrarily nested pointers)와 같은 복잡한 개념을 포함하여 C++의 풍부한 언어 기능을 지원하도록 설계되었으며, 이를 통해 기존의 산업 수준 코드베이스(industry-level codebases)와 원활하게 작동하고 최소한의 컴파일 오버헤드(compilation overheads)로 고성능 컴파일된 바이너리(compiled binaries)를 생성할 수 있습니다. 우리는 obliv-clang 내에 일련의 규칙들을 설계하였으며, 복잡한 C++ 언어 기능이 존재하는 상황에서도 그 건전성(soundness)을 형식적으로 증명하였습니다. 또한, obliv-clang의 표현력(expressiveness)을 입증하기 위해 몇 가지 까다로운 oblivious 알고리즘들을 사례 연구(case studies)로 구현하였으며, obliv-clang을 사용하여 컴파일된 프로그램이 이전의 솔루션들보다 더 뛰어난 성능을 낼 수 있음을 보여줍니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0