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)|Sep 6, 2015
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が作成し、人間の編集者が確認しました。