Pinocchio: Nearly Practical Verifiable Computation
Title | Pinocchio: Nearly Practical Verifiable Computation |
Publication Type | Conference Paper |
Year of Publication | 2013 |
Authors | Parno, B., Howell, J., Gentry, C., Raykova, M. |
Conference Name | Security and Privacy (SP), 2013 IEEE Symposium on |
Date Published | May |
Keywords | base protocol, C language, correctness verification, cryptographic assumptions, cryptographic protocols, end-to-end toolchain, formal verification, general-purpose system, Pinocchio, program compilers, public evaluation key, public key cryptography, public verification key, verifiable computation protocol, zero-knowledge proofs |
Abstract | 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. 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 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. |
URL | http://ieeexplore.ieee.org/document/6547113/ |
DOI | 10.1109/SP.2013.47 |
Citation Key | 6547113 |
- base protocol
- C language
- correctness verification
- cryptographic assumptions
- Cryptographic Protocols
- end-to-end toolchain
- formal verification
- general-purpose system
- Pinocchio
- program compilers
- public evaluation key
- public key cryptography
- public verification key
- verifiable computation protocol
- zero-knowledge proofs