Inchworm

Secure computation, one step at a time

Secure multiparty computation (MPC) is a way to convert any distributed computation that can be performed securely with the assistance of a trusted third party into a protocol that does not require any third parties, yet gives the same output and remains just as secure.

The existence of MPC is one of the breakthrough results of modern cryptography. These results appear to be extremely relevant for problems in many areas—wherever there is tension between privacy, trust and functionality. In practice, however, there is very little real-world use of these techniques.

Existing MPC techniques involve translating a function to be computed into a logical circuit. This architecture has some drawbacks, however, that we believe contribute to the scarcity of real-world use of these techniques. In particular, programs whose running time is potentially very long are infeasible to implement as circuits (since a circuit's size depends on the maximal running time of a program). Moreover, there are far more engineers familiar with programming than with the constraints of circuit design.

The Inchworm project is an attempt to take a new approach to practical MPC: changing it from a “hardware engineering” problem (designing circuits) to one of “software engineering'“ (writing programs). The high-level idea is to develop a “secure computation virtual machine” in the von Neumann architecture: a virtual CPU and virtual RAM that can run programs in a similar way to a modern physical computer system. Such an architecture would allow secure programs to be compiled directly from standard programming languages (such as C or Java). The hope is that MPC will become accessible to the many software engineers who already know how to program but do not have time to learn new, MPC-specific languages or circuit design.

Get the code

We have released the latest inchworm code on GitHub, under an MIT license. Get it here