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.
Author: Stefan Katzenbeisser