Paper 2020/1155
Zilch: A Framework for Deploying Transparent Zero-Knowledge Proofs
Dimitris Mouris and Nektarios Georgios Tsoutsos
Abstract
As cloud computing becomes more popular, research has focused on usable solutions to the problem of verifiable computation (VC), where a computationally weak device (Verifier) outsources a program execution to a powerful server (Prover) and receives guarantees that the execution was performed faithfully. A Prover can further demonstrate knowledge of a secret input that causes the Verifier’s program to satisfy certain assertions, without ever revealing which input was used. State-of-the-art Zero-Knowledge Proofs of Knowledge (ZKPK) methods encode a computation using arithmetic circuits and preserve the privacy of Prover’s inputs while attesting the integrity of program execution. Nevertheless, developing, debugging and optimizing programs as circuits remains a daunting task, as most users are unfamiliar with this programming paradigm. In this work we present Zilch, a framework that accelerates and simplifies the deployment of VC and ZKPK for any application transparently, i.e., without the need of trusted setup. Zilch uses traditional instruction sequences rather than static arithmetic circuits that would need to be regenerated for each different computation. Towards that end we have implemented ZMIPS: a MIPS-like processor model that allows verifying each instruction independently and compose a proof for the execution of the target application. To foster usability, Zilch incorporates a novel cross-compiler from an object-oriented Java-like language tailored to ZKPK and optimized our ZMIPS model, as well as a powerful API that enables integration of ZKPK within existing C/C++ programs. In our experiments, we demonstrate the flexibility of Zilch using two real-life applications, and evaluate Prover and Verifier performance on a variety of benchmarks.
Note: This article is published in IEEE Transactions on Information Forensics and Security (TIFS); the IEEE version is available at https://doi.org/10.1109/TIFS.2021.3074869. The GitHub repositories associated with this article are available at https://github.com/TrustworthyComputing/Zilch (Zilch Framework) and https://github.com/TrustworthyComputing/ZeroJava-compiler (ZeroJava to zMIPS compiler).
Metadata
- Available format(s)
- Category
- Applications
- Publication info
- Published elsewhere. IEEE Transactions on Information Forensics and Security
- DOI
- 10.1109/TIFS.2021.3074869
- Keywords
- Verifiable ComputationZero KnowledgeProof of KnowledgeTransparent SetupUniversal Circuits
- Contact author(s)
- tsoutsos @ udel edu
- History
- 2021-04-23: last of 3 revisions
- 2020-09-25: received
- See all versions
- Short URL
- https://ia.cr/2020/1155
- License
-
CC BY
BibTeX
@misc{cryptoeprint:2020/1155, author = {Dimitris Mouris and Nektarios Georgios Tsoutsos}, title = {Zilch: A Framework for Deploying Transparent Zero-Knowledge Proofs}, howpublished = {Cryptology {ePrint} Archive, Paper 2020/1155}, year = {2020}, doi = {10.1109/TIFS.2021.3074869}, url = {https://eprint.iacr.org/2020/1155} }