1. SoK: General Purpose Compilers for Secure Multi-Party Computation 2019 MPC Oakland SOK
    Marcella Hastings, Brett Hemenway, Daniel Noble, and Steve Zdancewic
    [View PDF on marsella.github.io]
    [Show BibTex Citation]

    author={M. {Hastings} and B. {Hemenway} and D. {Noble} and S. {Zdancewic}},
    booktitle={2019 IEEE Symposium on Security and Privacy (SP)},
    title={SoK: General Purpose Compilers for Secure Multi-Party Computation},
    keywords={cryptographic protocols;data privacy;program compilers;general purpose compilers;secure multiparty computation;MPC;mutually distrustful parties;arbitrary functions;secure computation protocols;SoK;joint function;high-level abstractions;EMP-toolkit;Obliv-C;ObliVM;TinyGarble;SCALE-MAMBA;Wysteria;Sharemind;PICCO;ABY;Frigate;CBMC-GC;cryptographic back-end;MPC frameworks;standardization;virtual environment;Docker container;Protocols;Cryptography;Wires;Logic gates;Computational modeling;Tools;multi-party-computation;applications;survey;sok},

Secure multi-party computation (MPC) allows a group of mutually distrustful parties to compute a joint function on their inputs without revealing any information beyond the result of the computation. This type of computation is extremely powerful and has wide-ranging applications in academia, industry, and government. Protocols for secure computation have existed for decades, but only recently have general-purpose compilers for executing MPC on arbitrary functions been developed. These projects rapidly improved the state of the art, and began to make MPC accessible to non-expert users. However, the field is changing so rapidly that it is difficult even for experts to keep track of the varied capabilities of modern frameworks. In this work, we survey general-purpose compilers for secure multi-party computation. These tools provide high-level abstractions to describe arbitrary functions and execute secure computation protocols. We consider eleven systems: EMP-toolkit, Obliv-C, ObliVM, TinyGarble, SCALE-MAMBA (formerly SPDZ), Wysteria, Sharemind, PICCO, ABY, Frigate and CBMC-GC. We evaluate these systems on a range of criteria, including language expressibility, capabilities of the cryptographic back-end, and accessibility to developers. We advocate for improved documentation of MPC frameworks, standardization within the community, and make recommendations for future directions in compiler development. Installing and running these systems can be challenging, and for each system, we also provide a complete virtual environment (Docker container) with all the necessary dependencies to run the compiler and our example programs.