Secure multiparty computation (MPC) enables privacy-preserving computations using secret data, with applications ranging from healthcare and finance to machine learning and blockchains. MPC compilers translate high-level function descriptions to the low-level representations required for the actual execution. These tools are therefore critical for making MPC usable and scalable. However, MPC compilers may contain logic errors that cause them to quietly produce wrong outputs, the consequences of which could be catastrophic given the sensitive applications of this technology. Testing MPC compilers in order to find these severe bugs is therefore paramount. With only a single testing tool currently available (which is based on an approach that may not be ideal for the task at hand), this issue is far from resolved. We therefore present differential testing with ground truth, a novel technique for automatically detecting logic errors in MPC compilers. It leverages our core insight that MPC languages, although different in syntax, are conceptually very similar to one another, as well as to traditional programming languages like Python. This allows us to create ground-truth Python implementations for the automatically generated MPC test programs, enabling the use of differential testing. Due to the fact that Python interpreters are much more thoroughly tested compared to the novel MPC compilers, our approach provides a powerful oracle for detecting logic errors. The implementation of our approach, BabelFuzz, not only found 22 new logic errors across four MPC compilers (MP-SPDZ, EMP Toolkit, EzPC and Silph), but is also able to rediscover every single fixed bug the previous state of the art in testing MPC compilers originally found.
en
Secure Multiparty Computation (MPC) ermöglicht es, geheime Daten auf eine sichere Weise zu verarbeiten. Diese Technologie kann beispielsweise in Bereichen wie dem Gesundheitswesen, Finanzen, Machine Learning oder Blockchains eingesetzt werden. MPC-Compiler übersetzen abstrakten Code in die Low-Level-Darstellungen, die für die Ausführung der Programme nötig sind. Diese Tools sind daher essenziell für die Benutzerfreundlichkeit und Skalierbarkeit von MPC. Diese Compiler können jedoch Logikfehler beinhalten, die zu falschen Ergebnissen führen können. Aufgrund der sensiblen Einsatzbereiche von MPC könnten diese Bugs katastrophale Konsequenzen verursachen, weshalb das ausführliche Testen von MPC-Compilern eine kritische Herausforderung ist. Da derzeit nur ein einziges Testing-Tool für MPC-Compiler (welches auf einer möglicherweise suboptimalen Herangehensweise basiert) existiert, handelt es sich hierbei um ein immer noch unzureichend erforschtes Problem. Daher präsentieren wir differential testing with ground truth, eine neue Technik zum automatisierten Auffinden von Logikfehlern in MPC-Compilern. Unser Ansatz basiert auf einer simplen Erkenntnis: Die von den MPC-Compilern verwendeten Input-Sprachen sind sich konzeptionell ähnlich, obwohl sich ihre jeweilige Syntax unterscheidet. Außerdem ähneln sie anderen Programmiersprachen, wie beispielsweise Python. Es ist deshalb möglich, äquivalente Python-Implementierungen der MPC-Test-Programme zu erstellen, was den Einsatz von Differential Testing ermöglicht. Da Python Interpreter im Gegensatz zu MPC-Compilern bereits vergleichsweise umfangreich getestet wurden, resultiert dieser Ansatz in einer effektiven Technik zum Auffinden von Logikfehlern in MPC-Compilern. Die Implementierung unserer Technik, BabelFuzz, hat bislang 22 neue Bugs in vier MPC-Compilern (MP-SPDZ, EMP Toolkit, EzPC und Silph) gefunden. Weiters ist BabelFuzz in der Lage, alle Logikfehler, die ursprünglich vom bisherigen State-of-the-Art entdeckt wurden, wiederzufinden.