This book presents a holistic view on compiler assisted practical secure multi-party computation (MPC) over Boolean circuits. It discusses that two or more parties jointly evaluate a function over their inputs in such a way that each party keeps its input unknown to the other parties in MPC. MPC provides a generic way to construct Privacy-Enhancing Technologies, which protect sensitive data during processing steps in untrusted environments. A major obstacle in the past was to generate MPC applications by hand. Recently, special compilers have been developed to build all kinds of applications.
This book also explains in detail how efficient MPC applications can be created automatically from ANSI-C, thus, bridging the areas of cryptography, compilation and hardware synthesis. It also gives an insight into the requirements for creating efficient applications for MPC and is hence of interest to not only researchers in the area of MPC but also developers realizing practical applications with MPC. For a better understanding of the complete compile chain from ANSI-C to circuits, which is the 'machine code' of MPC, the authors first give the necessary background information on MPC protocols, Boolean logic, and logic synthesis. Then the authors describe the various compilation steps required to translate any code into an adequate circuit description. Afterwards, the authors introduce a variety of optimization techniques for two classes of MPC protocols, namely techniques that improve the runtime of applications in constant- and multi-round MPC protocols. The authors also illustrate how efficient parallelization of MPC protocols can be achieved using the assistance of compilers. It presents the effectiveness of the proposed techniques by giving a detailed evaluation on benchmarking applications. Most of the aforementioned techniques are implemented in our open source compiler that is accompanying this book and allows to study compilation for MPC in practice.Researchers who are interested in practical secure multi-party computation (MPC), and developers who are interested in realizing MPC applications in practice will find this book useful as a reference, as well as advanced-level students in computer science.
1. Motivation2. Related Work3. Introduction into MPC protocols3.1. Yao's Garbled Circuits protocol3.2. Goldreich-Wilkerson-Micali (GMW) protocol3.3. Requirements analysis4. A general framework to compile circuits for MPC4.1. Introduction into the model checker CBMC4.2. A new toolchain to compile circuits for MPC4.3. Adapter for MPC frameworks5. Compiling size-optimized circuits for MPC protocols with constant rounds5.1. Problem statement & optimization goal5.2. Extended compilation chain5.3. Boolean optimization methods5.4. Results6. Compiling depth-optimized circuits for round-based MPC protocols6.1. Problem statement & optimization goal6.2. Extended compilation chain6.3. High level optimization methods6.4. Low level optimization methods6.5. Results7. Compiling parallel circuits for MPC protocols7.1. Problem statement & optimization goal7.2. Extended compilation chain7.3. Fine-grained parallelization7.4. Coarse-grained parallelization7.5. Intra-party parallelization7.6. Results8. Appendix8.1. Examples in CBMC-GC