Skip to main content
QUICK REVIEW

[논문 리뷰] Implementing Support for Pointers to Private Data in a General-Purpose Secure Multi-Party Compiler

Yihua Zhang, Marina Blanton|arXiv (Cornell University)|2015. 09. 06.
Cryptography and Data Security참고 문헌 20인용 수 3
한 줄 요약

이 논문은 일반 목적의 보안 다자간 계산(SMC) 컴파일러에서 개인 데이터에 대한 포인터 지원을 위한 최초의 접근법을 제안하며, PICCO 컴파일러를 확장하여 동적 메모리 할당과 복잡한 데이터 구조를 가능하게 한다. 공개 포인터와 개인 포인터를 구분하고 비밀 분할 기법을 사용함으로써, 효율성을 유지하면서도 보안성과 확장성이 뛰어난 프로그램을 최소한의 성능 오버헤드로 구현할 수 있다.

ABSTRACT

Recent compilers allow a general-purpose program (written in a conventional programming language) that handles private data to be translated into secure distributed implementation of the corresponding functionality. The resulting program is then guaranteed to provably protect private data using secure multi-party computation techniques. The goals of such compilers are generality, usability, and efficiency, but the complete set of features of a modern programming language has not been supported to date by the existing compilers. In particular, recent compilers PICCO and the two-party ANSI C compiler strive to translate any C program into its secure multi-party implementation, but currently lack support for pointers and dynamic memory allocation, which are important components of many C programs. In this work, we mitigate the limitation and add support for pointers to private data and consequently dynamic memory allocation to the PICCO compiler, enabling it to handle a more diverse set of programs over private data. Because doing so opens up a new design space, we investigate the use of pointers to private data (with known as well as private locations stored in them) in programs and report our findings. Besides dynamic memory allocation, we examine other important topics associated with common pointer use such as reference by pointer/address, casting, and building various data structures in the context of secure multi-party computation. This results in enabling the compiler to automatically translate a user program that uses pointers to private data into its distributed implementation that provably protects private data throughout the computation. We empirically evaluate the constructions and report on performance of representative programs.

연구 동기 및 목표

  • PICCO 컴파일러를 확장하여 개인 데이터에 대한 포인터 지원을 제공함으로써 동적 데이터 구조에서의 안전한 계산을 가능하게 한다.
  • 기존 SMC 컴파일러에서 동적 메모리 할당과 포인터 의미 체계가 부족하여 실세계 C 프로그램의 사용성이 제한되는 문제를 해결한다.
  • 공개 포인터와 개인 포인터를 구분하고 필요한 경우에만 개인 주소 할당을 적용함으로써 효율성과 보안성을 유지한다.
  • 포인터 기반 데이터 구조의 보안 계산에서 성능 영향을 평가하고, 배열 기반 대안과 비교한다.
  • SMC 컴파일러 개발자들이 포인터 기반 설계의 이점과 한계에 대해 실용적인 통찰을 제공한다.

제안 방법

  • 공개 주소와 개인 주소를 구분하는 새로운 포인터 표현 방식을 도입하여 PICCO 소스-투-소스 컴파일러를 확장하여 개인 포인터를 처리한다.
  • 선형 비밀 분할을 사용하여 개인 데이터를 안전하게 분배하고 계산하며, 개인 포인터는 비밀 분할된 주소를 저장한다.
  • 개인 데이터 구조의 동적 할당 및 해제를 지원하는 보안 메모리 관리 시스템을 설계한다.
  • 일반적인 포인터 패턴을 위한 보안 연산을 구현한다: 포인터에 의한 참조, 캐스팅, 연결 리스트 및 균형 잡힌 탐색 트리 구축.
  • 새로운 포인터 지원을 컴파일러의 중간 표현 및 타입 체계에 통합하여 개인 데이터 흐름을 강제한다.
  • 대표적인 프로그램을 사용하여 성능을 평가하며, 정렬된 연결 리스트와 시프트-리덕션 파서를 포함하여 포인터 기반 및 배열 기반 구현을 비교한다.

실험 결과

연구 질문

  • RQ1일반 목적의 SMC 컴파일러에서 개인 데이터에 대한 포인터를 어떻게 안전하고 효율적으로 지원할 수 있는가?
  • RQ2공개 포인터 또는 배열 기반 대안 대비 개인 포인터를 사용할 경우의 성능 오버헤드는 얼마인가?
  • RQ3보안 계산 환경에서 어떤 포인터 기반 데이터 구조가 이론적 시간 복잡도를 유지하는가?
  • RQ4비밀 분할 기반 SMC 환경에서 일반적인 포인터 연산—해제 참조, 캐스팅, 동적 할당—은 어떻게 동작하는가?
  • RQ5보안 계산에서 포인터 기반과 배열 기반 데이터 구조 사이의 실용적 트레이드오프는 무엇인가?

주요 결과

  • 배열 기반 정렬된 연결 리스트는 리스트 생성 시 약 20% 빠르고, 순회 시 약 9% 느리며, 포인터 기반 구현과 비교해도 유사한 효율성을 보인다.
  • 작은 데이터 세트에서는 포인터 기반 구현이 배열 기반 대비 상당히 느리며, 이는 각 연산 비용이 높기 때문이다. 그러나 입력 크기가 커질수록 격차는 점점 줄어든다.
  • 균형 잡힌 탐색 트리는 개인 데이터 흐름으로 인해 복잡성이 증가하므로, 최적의 성능을 얻기 위해 맞춤형 무관 데이터 구조가 필요하다.
  • 데이터 크기가 클 경우, 특히 순차적 연산에서 포인터 기반 데이터 구조가 배열 기반 대비 성능상 우위를 점할 수 있다.
  • 다양한 상황에서 개인 포인터 사용 비용은 매우 낮으며, 몇몇 데이터 구조는 보안화된 후에도 기존 최고의 점근적 복잡도를 유지한다.
  • 개인 데이터를 위한 보안 계산에서는 맞춤형으로 내부적으로 구현된 무관 데이터 구조를 권장한다.

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

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

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

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