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 生成,并经人工编辑审核。