Verifiable computation schemes enable a client to outsource the computation of a function F on various inputs to an untrusted worker, and then verify the correctness of the returned results. Critically, the outsourcing and verification procedures must be more efficient than performing the computation itself.
In more detail, we introduce and formalize the notion of Verifiable Computation, which enables a computationally weak client to "outsource" the computation of an arbitrary function F on various dynamically-chosen inputs x_1,...,x_k to one or more workers. The workers return the result of the function evaluation, e.g., y_i=F(x_i), as well as a proof that the computation of F was carried out correctly on the given value x_i. The primary constraint is that the verification of the proof should require substantially less computational effort than computing F(x_i) from scratch.
- Rosario Gennaro, Craig Gentry, Bryan Parno, and Mariana Raykova, Quadratic Span Programs and Succinct NIZKs without PCPs, in Proceedings of the IACR Eurocrypt Conference, International Association for Cryptologic Research, 30 May 2013
- Bryan Parno, Craig Gentry, Jon Howell, and Mariana Raykova, Pinocchio: Nearly Practical Verifiable Computation, in Proceedings of the IEEE Symposium on Security and Privacy, Awarded "Best Paper", IEEE, 21 May 2013
- Srinath Setty, Benjamin Braun, Victor Vu, Andrew J. Blumberg, Bryan Parno, and Michael Walfish, Resolving the Conflict Between Generality and Plausibility in Verified Computation, in Proceedings of the ACM European Conference on Computer Systems (EuroSys), ACM, 15 April 2013
- Rosario Gennaro, Craig Gentry, and Bryan Parno, Non-Interactive Verifiable Computing: Outsourcing Computation to Untrusted Workers, in Proceedings of the International Cryptology Conference (CRYPTO), Springer Verlag, August 2010
Pinocchio's source code.