Stacked Garbling for Disjunctive Zero-Knowledge Proofs
Stacked Garbling for Disjunctive Zero-Knowledge Proofs
复制标题
DOI:
10.1007/978-3-030-45727-3_19
复制
发表时间:
2020-05
期刊:
影响因子:
--
通讯作者:
David Heath;V. Kolesnikov
中科院分区:
文献类型:
--
作者:
David Heath;V. Kolesnikov
Zero-knowledge (ZK) proofs (ZKP) have received wide attention, focusing on non-interactivity, short proof size, and fast verification time. We focus on the fastest total proof time, in particular for large Boolean circuits. Under this metric, Garbled Circuit (GC)-based ZKP (Jawurek et al., [JKO], CCS 2013) remained the state-of-the-art technique due to the low-constant linear scaling of computing the garbling.We improve GC-ZKP for proof statements with conditional clauses. Our communication is proportional to the longest branch rather than to the entire proof statement. This is most useful when the numberof branches is large, resulting in up to factorimprovement over JKO.In our proof-of-conceptillustrative application, proverdemonstrates knowledge of a bug in a codebase consisting ofany numberof snippets ofactual C code. Our computation cost is linear in the size of the codebase and communication isconstant in the number of snippets. That is, we require only enough communication for a single largest snippet!Ourconceptual contributionisstacked garbling for ZK, a privacy-free circuit garbling scheme that can be used with the JKO GC-ZKP protocol to construct more efficient ZKP. Given a Boolean circuitand computational security parameter, our garbling isbits long, whereLis the length of the longest execution path in. All prior concretely efficient garbling schemes produce garblings of size. The computational cost of our scheme is not increased over prior state-of-the-art.We implement our GC-ZKP and demonstrate significantly improved (over JKO) ZK performance for functions with branching factor. Compared with recent ZKP (STARK, Libra, KKW, Ligero, Aurora, Bulletproofs), our scheme offers much better proof times for larger circuits (35-or more, depending on circuit size and compared scheme).For our illustrative application, we consider four C code snippets, each of about 30–50 LOC; one snippet allows an invalid memory dereference. The entire proof takes 0.15 s and communication is 1.5 MB.