Paper 2013/279

Pinocchio: Nearly Practical Verifiable Computation

Bryan Parno, Craig Gentry, Jon Howell, and Mariana Raykova


To instill greater confidence in computations outsourced to the cloud, clients should be able to verify the correctness of the results returned. To this end, we introduce Pinocchio, a built system for efficiently verifying general computations while relying only on cryptographic assumptions. With Pinocchio, the client creates a public evaluation key to describe her computation; this setup is proportional to evaluating the computation once. The worker then evaluates the computation on a particular input and uses the evaluation key to produce a proof of correctness. The proof is only 288 bytes, regardless of the computation performed or the size of the inputs and outputs. Anyone can use a public verification key to check the proof. Pinocchio achieves strong asymptotic efficiency by refining the Quadratic Arithmetic Programs of Gennaro, Gentry, Parno, and Raykova (EuroCrypt 2013). Crucially, our evaluation on seven applications demonstrates that Pinocchio is efficient in practice too. Pinocchio's verification time is typically 10ms: 5-7 orders of magnitude less than previous work; indeed Pinocchio is the first general-purpose system to demonstrate per-instance verification cheaper than native execution (for some apps). Pinocchio also reduces the worker's proof effort by an additional 19-60x. As an additional feature, Pinocchio generalizes to zero-knowledge proofs at a negligible cost over the base protocol. Finally, to aid development, Pinocchio provides an end-to-end toolchain that compiles a subset of C into programs that implement the verifiable computation protocol.

Available format(s)
Cryptographic protocols
Publication info
Published elsewhere. This is the full version of the IEEE Symposium on Security & Privacy 2013 paper.
verifiable computationNIZKszero knowledgeimplementation
Contact author(s)
parno @ microsoft com
2013-05-16: received
Short URL
Creative Commons Attribution


      author = {Bryan Parno and Craig Gentry and Jon Howell and Mariana Raykova},
      title = {Pinocchio: Nearly Practical Verifiable Computation},
      howpublished = {Cryptology ePrint Archive, Paper 2013/279},
      year = {2013},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.