Skip to main content
Log in

Scalable Zero Knowledge Via Cycles of Elliptic Curves

  • Published:
Algorithmica Aims and scope Submit manuscript

Abstract

Non-interactive zero-knowledge proofs of knowledge for general NP statements are a powerful cryptographic primitive, both in theory and in practical applications. Recently, much research has focused on achieving an additional property, succinctness, requiring the proof to be very short and easy to verify. Such proof systems are known as zero-knowledge succinct non-interactive arguments of knowledge (zk-SNARKs), and are desired when communication is expensive, or the verifier is computationally weak. Existing zk-SNARK implementations have severe scalability limitations, in terms of space complexity as a function of the size of the computation being proved (e.g., running time of the NP statement’s decision program). First, the size of the proving key is quasilinear in the upper bound on the computation size. Second, producing a proof requires “writing down” all intermediate values of the entire computation, and then conducting global operations such as FFTs. The bootstrapping technique of Bitansky et al. (STOC ’13), following Valiant (TCC ’08), offers an approach to scalability, by recursively composing proofs: proving statements about acceptance of the proof system’s own verifier (and correctness of the program’s latest step). Alas, recursive composition of known zk-SNARKs has never been realized in practice, due to enormous computational cost. Using new elliptic-curve cryptographic techniques, and methods for exploiting the proof systems’ field structure and nondeterminism, we achieve the first zk-SNARK implementation that practically achieves recursive proof composition. Our zk-SNARK implementation runs random-access machine programs and produces proofs of their correct execution, on today’s hardware, for any program running time. It takes constant time to generate the keys that support all computation sizes. Subsequently, the proving process only incurs a constant multiplicative overhead compared to the original computation’s time, and an essentially-constant additive overhead in memory. Thus, our zk-SNARK implementation is the first to have a well-defined, albeit low, clock rate of “verified instructions per second”.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4

Similar content being viewed by others

Notes

  1. Even worse, the reported numbers are for “data at rest”: the proving key consists of a list of elliptic-curve points, which are compressed when not in use. However, when the prover uses the proving key to produce a proof, the points are uncompressed (and represented via projective or Jacobian coordinates), and take about three times as much space in memory.

  2. We note that subset-sum functions were also used in [22], but, crucially, they were not tailored to the field. This is a key difference in usage and efficiency. (E.g., our hash function can be verified in \(\le 300\) gates, while [22] report 13000).

  3. Similarly to [8] and our realization thereof, Braun et al. [22] leverage memory-checking techniques based on Merkle trees [19] for the purpose of enabling a circuit to “securely” load from and store to an untrusted storage. However, the systems’ goals (delegation of MapReduce computations via a 2-move protocol) and techniques are different (cf. Footnote 2).

  4. Besides, the condition \(q = \#E(\mathbb {F}_{q})\) is undesirable even when not ruled out (e.g., when \(k = \infty \)): on such curves, known as anomalous, discrete logarithms can be computed in polynomial time via the SSSA attack [89, 96, 99].

  5. Showing that it is provably expensive requires stronger circuit lower bounds than currently known [54, 87, 101].

  6. Definition 3.1 is reminiscent, but different from, the notion of an aliquot cycle of elliptic curves by Silverman and Stange [103]. An aliquot cycle considers a single curve (over \(\mathbb {Q}\)) reduced at \(\ell \) primes, rather than \(\ell \) curves, and does not require pairing-friendliness.

  7. For each \(i \in \{0,\dots ,\ell -1\}\), the condition that \(q_{i-1}\) divides \(\#E(\mathbb {F}_{i})\) implies, via the Hasse bound, that \(h_{i}q_{i-1} \le q_{i} \cdot ( 1 + 2/\sqrt{q_{i}})\) for some cofactor \(h_{i} \in \mathbb {N}\); hence \(\log q_{i-1} \le \log q_{i} + \log ( 1 + 2/\sqrt{q_{i}}) - \log h_{i}\), and thus \(\frac{\log q_{i-1}}{\log q_{i}} \le 1 + \frac{\log ( 1 + 2/\sqrt{q_{i}})}{\log q_{i}} \le 1 + \frac{2}{\sqrt{q_{i}} \log q_{i}} = 1 + a_{i}\) for \(a_{i} := \frac{2}{\sqrt{q_{i}} \log q_{i}}\). Note that each \(a_{i}\) is exponentially small. Therefore, for each \(i \in \{0,\dots ,\ell -1\}\), we can upper bound the \(\rho \)-value of \(E_{i}\), equal to \(\frac{\log q_{i}}{\log q_{i-1}}\), as follows: \(\frac{\log q_{i}}{\log q_{i-1}} = \prod _{j \ne i} \frac{\log q_{j-1}}{\log q_{j}} \le \prod _{j \ne i} \left( 1 + a_{j}\right) = 1 + \sum _{j \ne i} a_{j} + \prod _{j \ne i} a_{j}\). In sum, the \(\rho \)-value of \(E_{i}\) is upper bounded by \(1 + \epsilon _{i}\), where the quantity \(\epsilon _{i} := \sum _{j \ne i} a_{j} + \prod _{j \ne i} a_{j}\) is exponentially small.

  8. At best, such methods can be used to construct PCD-friendly “chains”, which can be used to reduce the space complexity of preprocessing \(\text{ zk-SNARK }\)s via a limited application of recursive proof composition. But the large \(\rho \)-values would imply that each recursive composition roughly doubles the cost of the \(\text{ zk-SNARK }\) so that long chains do not seem to be advantageous.

  9. Alas, since \(E_{4}\) has a low embedding degree, the ECDLP in \(E(\mathbb {F}_{q_{4}})\) and DLP in \(\mathbb {F}_{q_{4}}^4\) are “unbalanced”: the former provides 120 bits of security, while the latter only 80. Moreover, the same is true for \(E_{6}\): the ECDLP in \(E(\mathbb {F}_{q_{6}})\) provides 120 bits of security, while the DLP in \(\mathbb {F}_{q_{4}}^6\) only 80. Finding PCD-friendly cycles without these inefficiencies is an open problem (see Sect. 8).

  10. The authors are grateful to Andrew V. Sutherland for generous help in running the CM method on such a large discriminant.

  11. Alternatively, we could restrict \(\Pi \) to be a boolean circuit, so that it can be easily evaluated by \(C_{\mathsf {pcd},\alpha }\) and \(C_{\mathsf {pcd},\beta }\). But this foregoes \(\Pi \)’s ability to conduct field operations in large prime fields. Thus, it is more efficient to “give up” on \(C_{\mathsf {pcd},\beta }\), and only let \(C_{\mathsf {pcd},\alpha }\) evaluate \(\Pi \), and retain the expressive power of arithmetic circuits. (Other alternatives are possible, but we do not explore them).

  12. As explained in Sect. 5.2, we are not aware of a collision-resistant hash function \(H_{\alpha }\), which can be easily verified over \(\mathbb {F}_{r_{\alpha }}\), that accepts inputs represented as strings of elements in \(\mathbb {F}_{r_{\alpha }}\). So, we are “stuck” with binary inputs.

  13. More precisely, for each \(\mathbb {F}_{r_{\alpha }}\)-element \(y_i\) in the vector y, \(\mathsf {bits}_{\alpha }\) outputs bits \(b_{1},\dots ,b_{\lceil \log r_{\alpha } \rceil }\) such that \(\sum _{j=0}^{\lceil \log r_{\alpha } \rceil -1} b_j 2^j = y_i\), where arithmetic is conducted over \(\mathbb {F}_{r_{\alpha }}\). Due to wrap around, some elements in \(\mathbb {F}_{r_{\alpha }}\) have two such representations; if so, \(\mathsf {bits}_{\alpha }\) outputs the lexicographically-first one. None the less, we construct \(C_{\mathsf {bits},\alpha }\) to only check for either of these two representations, because: (i) discriminating between representations costs an additional \(\ell \cdot \lceil \log r_{\alpha } \rceil \) gates; and (ii) doing so does not affect completeness or soundness of our construction.

  14. The choice \((E_{\alpha },E_{\beta }) = (E_{4},E_{6})\), rather than \((E_{\alpha },E_{\beta }) = (E_{6},E_{4})\), is intentional. We expect \(C_{\mathsf {pcd},\alpha }\) to be larger than \(C_{\mathsf {pcd},\beta }\) (due to a larger number of checks), so that \(E_{\alpha }\) should be the curve with the higher 2-adicity. In this case, \(E_{4}\) is twice as 2-adic as \(E_{6}\).

  15. More precisely, if we take \(|\Pi | + s\cdot 89412\) to be the leading terms in \(|C_{\mathsf {pcd},4}|\) (which we expect to be the case), we obtain that \(\log (|\Pi | + s\cdot 89412) \le 1 + \max \{\log |\Pi |, 17+ \log s\}\), which is likely to be well below \(34\).

  16. We do not require the hash function to be universal, so we do not need to add a random vector to the subset sum.

  17. Recent works [1, 26, 70, 72, 86] use a small modulus and larger dimension, but our “native” modulus is already a large one.

  18. Specifically, in the i-th level, \(\ell \) gates ensure booleanity of the i-th chunk of the authentication path \(\mathbf {p}\), while another \(\ell \) gates prepare the correct input to the next invocation of \(H\), depending on the i-th address bit.

  19. Of course, to perform this step in time \(O(|\mathcal {P}|)\), one should not explicitly build a Merkle tree over all of memory, but instead build the Merkle tree by considering only the non-zero memory entries specified by \(\mathcal {P}\).

  20. The prover also needs to store the Merkle tree’s intermediate hashes, which incurs a linear overhead in the program’s space complexity. Since this overhead is small, and can even be reduced by saving only the high levels of the Merkle tree (and recomputing, “on demand”, the local neighborhood of accessed leaves), we focus on the fixed additive overhead needed to generate the proof.

  21. Extending known preprocessing \(\text{ zk-SNARK }\) implementations with block-computing techniques, and precisely quantifying their cost, remains a challenging open question that we leave to future work.

  22. A gate with inputs \(x_1,\dots ,x_m\in \mathbb {F}\) is bilinear if the output is \((\alpha _{0} + \sum _{i=1}^{m} \alpha _{i} x_i ) \cdot (\beta _{0} + \sum _{i=1}^{m} \beta _{i} x_i )\) for some \(\alpha ,\beta \in \mathbb {F}^{m+1}\). In particular, these include addition, multiplication, and constant gates.

  23. Alternatively, some authors define the discriminant to be \(-D\), or the discriminant of the imaginary quadratic field \(\mathbb {Q}(\sqrt{-D})\).

  24. More precisely, a field family indexed by the security parameter \(\lambda \) where the field size grows at most exponentially in \(\lambda \).

  25. In this paper we use the technique of recursive proof composition, which relies on \(V\) being deterministic (i.e., no coin flips are needed during proof verification). All known \(\text{ zk-SNARK }\) constructions satisfy this property, so this is effectively not a restriction.

  26. Intuitively, this is because: (a) the groups \(\mathbb {G}_{1}\) and \(\mathbb {G}_{2}\) for a pairing \(e:\mathbb {G}_{1}\times \mathbb {G}_{2}\rightarrow \mathbb {G}_{T}\) on \(E\) have prime order r, so that discrete logarithms for elements in \(\mathbb {G}_{1}\) and \(\mathbb {G}_{2}\), which encode information about the arithmetic circuit, “live” in \(\mathbb {F}_{r}\); while (b) \(\mathbb {G}_{1}\)-arithmetic, \(\mathbb {G}_{2}\)-arithmetic, and pairing computations are conducted over \(\mathbb {F}_{q}\) (or extensions of \(\mathbb {F}_{q}\) up to degree k).

  27. In this paper, we construct PCD systems from preprocessing \(\text{ zk-SNARK }\)s. Hence, analogously to preprocessing \(\text{ zk-SNARK }\)s (cf. Remark 8.3) perfect zero knowledge can be achieved at the only expense of a negligible error in completeness.

  28. Both \(\mathsf {pk}\) and \(\mathsf {vk}\) are public and only consist of \(O_{\lambda ,\mathbf {M}}(1)\) bits; so, one could think of them as a single common reference string \(\mathsf {crs} := (\mathsf {pk},\mathsf {vk})\). We choose not to do so, because it will be more natural to think of them as separate data structures.

  29. In this paper, we construct fully-succinct \(\text{ zk-SNARK }\)s from preprocessing ones. Hence, analogously to preprocessing \(\text{ zk-SNARK }\)s (cf. Remark 8.3) perfect zero knowledge can be achieved at the only expense of a negligible error in completeness.

  30. In our implementation, \(\mathsf {aux}_{i}\) has size \(\approx S_{i}\). Thus, the effective space overhead, compared to the original computation, is the additive, constant cost to run \(\mathsf {SV}\) and \(\mathsf {SP}\).

References

  1. Lyubashevsky, V., Micciancio, D., Peikert, C., Rosen, A.: SWIFFT: a modest proposal for FFT hashing. In: Proceedings of the 15th International Workshop on Fast Software Encryption, FSE ’08, pp. 54–72 (2008)

  2. Ajtai, M.: Generating hard instances of lattice problems. In: Proceedings of the 28th Annual ACM Symposium on the Theory of Computing, STOC ’96, pp. 99–108 (1996)

  3. Atkin, A.O.L., Morain, F.: Elliptic curves and primality proving. Math. Comput. 61, 29–68 (1993)

    Article  MathSciNet  MATH  Google Scholar 

  4. Angluin, D., Valiant, L.G.: Fast probabilistic algorithms for hamiltonian circuits and matchings. In: Proceedings on 9th Annual ACM Symposium on Theory of Computing, STOC ’77, pp. 30–41 (1977)

  5. Boneh, D., Boyen, X.: Secure identity based encryption without random oracles. In: Proceedings of the 24th Annual International Cryptology Conference, CRYPTO ’04, pp. 443–459 (2004)

  6. Backes, M., Barbosa, M., Fiore, D., Reischuk, R.M.: ADSNARK: nearly practical and privacy-preserving proofs on authenticated data. In Proceedings of the 36th IEEE Symposium on Security and Privacy, S&P ’15, pp. 271–286 (2015)

  7. Bitansky, N., Canetti, R., Chiesa, A., Tromer, E.: From extractable collision resistance to succinct non-interactive arguments of knowledge, and back again. In: Proceedings of the 3rd Innovations in Theoretical Computer Science Conference, ITCS ’12, pp. 326–349 (2012)

  8. Bitansky, N., Canetti, R., Chiesa, A., Tromer, E.: Recursive composition and bootstrapping for SNARKs and proof-carrying data. In: Proceedings of the 45th ACM Symposium on the Theory of Computing, STOC ’13, pp. 111–120 (2013)

  9. Ben-Sasson, E., Chiesa, A., Genkin, D., Tromer, E., Virza, M.: SNARKs for C: verifying program executions succinctly and in zero knowledge. In Proceedings of the 33rd Annual International Cryptology Conference, CRYPTO ’13, pp. 90–108 (2013)

  10. Ben-Sasson, E., Chiesa, A., Genkin, D., Tromer, E., Virza, M.: TinyRAM architecture specification v2.00, 2013. http://scipr-lab.org/tinyram

  11. Ben-Sasson, E., Chiesa, A., Garman, C., Green, M., Miers, I., Tromer, E., Virza, M.: Zerocash: decentralized anonymous payments from Bitcoin. In: Proceedings of the 2014 IEEE Symposium on Security and Privacy, SP ’14, pp. 459–474 (2014)

  12. Ben-Sasson, E., Chiesa, A., Genkin, D., Tromer, E.: Fast reductions from RAMs to delegatable succinct constraint satisfaction problems. In: Proceedings of the 4th Innovations in Theoretical Computer Science Conference, ITCS ’13, pp. 401–414 (2013)

  13. Ben-Sasson, E., Chiesa, A., Genkin, D., Tromer, E.: On the concrete efficiency of probabilistically-checkable proofs. In: Proceedings of the 45th ACM Symposium on the Theory of Computing, STOC ’13, pp. 585–594 (2013)

  14. Bitansky, N., Chiesa, A., Ishai, Y., Ostrovsky, R., Paneth, O.: Succinct non-interactive arguments via linear interactive proofs. In: Proceedings of the 10th Theory of Cryptography Conference, TCC ’13, pp. 315–333 (2013)

  15. Bitansky, N., Canetti, R., Paneth, O.: How to construct extractable one-way functions against uniform adversaries. Cryptology ePrint Archive, report 2013/468 (2013)

  16. Bitansky, N., Canetti, R., Paneth, O., Rosen, A.: Indistinguishability obfuscation vs. auxiliary-input extractable functions: One must fall. Cryptology ePrint Archive, report 2013/641 (2013)

  17. Ben-Sasson, E., Chiesa, A., Tromer, E., Virza, M.: Succinct non-interactive zero knowledge for a von Neumann architecture. In: Proceedings of the 23rd USENIX Security Symposium, Security ’14, pp. 781–796 (2014). http://eprint.iacr.org/2013/879

  18. Blum, M., De Santis, A., Micali, S., Persiano, G.: Non-interactive zero-knowledge. SIAM J. Comput. 20(6), 1084–1118 (1991)

    Article  MathSciNet  MATH  Google Scholar 

  19. Blum, M., Evans, W., Gemmell, P., Kannan, S., Naor, M.: Checking the correctness of memories. In: Proceedings of the 32nd Annual Symposium on Foundations of Computer Science, FOCS ’91, pp. 90–99 (1991)

  20. Babai, L., Fortnow, L., Levin, L.A., Szegedy, M.: Checking computations in polylogarithmic time. In: Proceedings of the 23rd Annual ACM Symposium on Theory of Computing, STOC ’91, pp. 21–32 (1991)

  21. Blum, M., Feldman, P., Micali, S.: Non-interactive zero-knowledge and its applications. In: Proceedings of the 20th Annual ACM Symposium on Theory of Computing, STOC ’88, pp. 103–112 (1988)

  22. Braun, B., Feldman, A.J., Ren, Z., Setty, S., Blumberg, A.J., Walfish, M.: Verifying computations with state. In: Proceedings of the 25th ACM Symposium on Operating Systems Principles, SOSP ’13, pp. 341–357 (2013)

  23. Ben-Sasson, E., Goldreich, O., Harsha, P., Sudan, M., Vadhan, S.: Short PCPs verifiable in polylogarithmic time. In: Proceedings of the 20th Annual IEEE Conference on Computational Complexity, CCC ’05, pp. 120–134 (2005)

  24. Barreto, P.S., Galbraith, S.D., Ó hÉigeartaigh, C., Scott, M.: Efficient pairing computation on supersingular abelian varieties. Des. Codes Cryptogr. 42(3), 239–271 (2007)

    Article  MathSciNet  MATH  Google Scholar 

  25. Barreto, P.S.L.M., Kim, H.Y., Lynn, B., Scott, M.: Efficient algorithms for pairing-based cryptosystems. In: Proceedings of the 22Nd Annual International Cryptology Conference, CRYPTO ’02, pp. 354–368 (2002)

  26. Brakerski, Z., Langlois, A., Peikert, C., Regev, O., Stehlé, D.: Classical hardness of learning with errors. In: Proceedings of the 45th Annual ACM Symposium on Symposium on Theory of Computing, STOC ’13, pp. 575–584 (2013)

  27. Barreto, P.S.L.M., Lynn, B., Scott, M.: Constructing elliptic curves with prescribed embedding degrees. In:Proceedings of the 3rd International Conference on Security in Communication Networks, SCN ’02, pp. 257–267 (2003)

  28. Barreto, P.S.L.M., Lynn, B., Scott, M.: Efficient implementation of pairing-based cryptosystems. J. Cryptol. 17(4), 321–334 (2004)

    Article  MathSciNet  MATH  Google Scholar 

  29. Benger, N., Scott, M.: Constructing tower extensions of finite fields for implementation of pairing-based cryptography. In: Proceedings of the 3rd International Conference on Arithmetic of Finite Fields, WAIFI ’10, pp. 180–195 (2010)

  30. Boneh, D., Segev, G., Waters, B.: Targeted malleability: Homomorphic encryption for restricted computations. In: Proceedings of the 3rd Innovations in Theoretical Computer Science Conference, ITCS ’12, pp. 350–366 (2012)

  31. Brezing, F., Weng, A.: Elliptic curves suitable for pairing based cryptography. Des. Codes Cryptpogr. 37(1), 133–141 (2005)

    Article  MathSciNet  MATH  Google Scholar 

  32. Cohen, H., Frey, G., Avanzi, R., Doche, C., Lange, T., Nguyen, K., Vercauteren, F.: Handbook of Elliptic and Hyperelliptic Curve Cryptography, 2nd edn. Chapman & Hall/CRC, Boca Raton (2012)

    MATH  Google Scholar 

  33. Costello, C., Fournet, C., Howell, J., Kohlweiss, M., Kreuter, B., Naehrig, M., Parno, B., Zahur, S.: Geppetto: versatile verifiable computation. In: Proceedings of the 36th IEEE Symposium on Security and Privacy, S&P ’15, pp. 253–270 (2015)

  34. Cormode, G., Mitzenmacher, M., Thaler, J.: Practical verified computation with streaming interactive proofs. In: Proceedings of the 4th Symposium on Innovations in Theoretical Computer Science, ITCS ’12, pp. 90–112 (2012)

  35. Cocks, C., Pinch, R.G.E.: Identity-based cryptosystems based on the weil pairing. Unpublished manuscript (2001)

  36. Cook, S.A., Reckhow, R.A.: Time-bounded random access machines. In: Proceedings of the 4th Annual ACM Symposium on Theory of Computing, STOC ’72, pp. 73–80 (1972)

  37. Canetti, R., Riva, B., Rothblum, G.N.: Practical delegation of computation using multiple servers. In: Proceedings of the 18th ACM Conference on Computer and Communications Security, CCS ’11, pp. 445–454 (2011)

  38. Chiesa, A., Tromer, E.: Proof-carrying data and hearsay arguments from signature cards. In: Proceedings of the 1st Symposium on Innovations in Computer Science, ICS ’10, pp. 310–331 (2010)

  39. Chiesa, A., Tromer, E.: Proof-carrying data: secure computation on untrusted platforms (high-level description). Next Wave Natl. Secur. Agency’s Rev. Emerg. Technol. 19(2), 40–46 (2012)

    Google Scholar 

  40. Chong, S., Tromer, E., Vaughan, J.A.: Enforcing language semantics using proof-carrying data. Cryptology ePrint Archive, Report 2013/513 (2013)

  41. Chiesa, A., Tromer, E., Virza, M.: Cluster computing in zero knowledge. In: Proceedings of the 34th Annual International Conference on Theory and Application of Cryptographic Techniques, EUROCRYPT ’15, pp. 371–403 (2015)

  42. Dupont, R., Enge, A., Morain, F.: Building curves with arbitrary small MOV degree over finite prime fields. J. Cryptol. 18(2), 79–89 (2005)

    Article  MathSciNet  MATH  Google Scholar 

  43. Danezis, G., Fournet, C., Groth, J., Kohlweiss, M.: Square span programs with applications to succinct NIZK arguments. In: Proceedings of the 20th International Conference on the Theory and Application of Cryptology and Information Security, ASIACRYPT ’14, pp. 532–550 (2014)

  44. Enge, A., Sutherland, A.V.: Class invariants by the CRT method. In: Proceedings of the 9th International Symposium on Algorithmic Number Theory, ANTS ’10, pp. 142–156 (2010)

  45. Frey, G., Müller, M., Rück, H.-G.: The Tate pairing and the discrete logarithm applied to elliptic curve cryptosystems. IEEE Trans. Inf. Theory 45(5), 1717–1719 (2006)

    Article  MathSciNet  MATH  Google Scholar 

  46. Frey, G., Rück, H.-G.: A remark concerning m-divisibility and the discrete logarithm in the divisor class group of curves. Math. Comput. 62(206), 865–874 (1994)

    MathSciNet  MATH  Google Scholar 

  47. Fiat, A., Shamir, A.: How to prove yourself: practical solutions to identification and signature problems. In: Proceedings of the 6th Annual International Cryptology Conference, CRYPTO ’87, pp. 186–194 (1987)

  48. Freeman, D., Scott, M., Teske, E.: A taxonomy of pairing-friendly elliptic curves. J. Cryptol. 23(2), 224–280 (2010)

    Article  MathSciNet  MATH  Google Scholar 

  49. Gennaro, R.: Multi-trapdoor commitments and their applications to proofs of knowledge secure under concurrent man-in-the-middle attacks. In: Proceedings of the 24th Annual International Cryptology Conference, CRYPTO ’04, pp. 220–236 (2004)

  50. Goldreich, O., Goldwasser, S., Halevi, S.: Collision-free hashing from lattice problems. Technical report, 1996. ECCC TR95-042

  51. Garg, S., Gentry, C., Halevi, S.: Candidate multilinear maps from ideal lattices. In: Proceedings of the 32nd Annual International Conference on Theory and Application of Cryptographic Techniques, EUROCRYPT ’13, pp. 1–17 (2013)

  52. Gennaro, R., Gentry, C., Parno, B., Raykova, M.: Quadratic span programs and succinct NIZKs without PCPs. In: Proceedings of the 32nd Annual International Conference on Theory and Application of Cryptographic Techniques, EUROCRYPT ’13, pp. 626–645 (2013)

  53. Galbraith, S.D., Harrison, K., Soldera, D.: Implementing the Tate pairing. In: Proceedings of the 5th International Symposium on Algorithmic Number Theory, ANTS ’02, pp. 324–337 (2002)

  54. Gopalan, P., Lovett, S., Shpilka, A.: On the complexity of boolean functions in different characteristics. In: Proceedings of the 24th Annual IEEE Conference on Computational Complexity, CCC ’09, pp. 173–183 (2009)

  55. Groth, J.: Short pairing-based non-interactive zero-knowledge arguments. In: Proceedings of the 16th International Conference on the Theory and Application of Cryptology and Information Security, ASIACRYPT ’10, pp. 321–340 (2010)

  56. Granger, R., Smart, N.: On computing products of pairings. Cryptology ePrint Archive, report 2006/172 (2006)

  57. Granger, R., Scott, M.: Faster squaring in the cyclotomic subgroup of sixth degree extensions. In: Proceedings of the 13th international conference on Practice and Theory in Public Key Cryptography, PKC’10, pp. 209–223 (2010)

  58. Gassend, B., Suh, G.E., Clarke, D.E., van Dijk, M., Devadas, S.: Caches and hash trees for efficient memory integrity verification. In: Proceedings of the 9th International Symposium on High-Performance Computer Architecture, HPCA ’03, pp. 295–306 (2003)

  59. Goh, E.-J., Shacham, H., Modadugu, N., Boneh, D.: SiRiUS: securing remote untrusted storage. In: Proceedings of the Network and Distributed System Security Symposium, NDSS ’03 (2003)

  60. Gentry, C., Wichs, D.: Separating succinct non-interactive arguments from all falsifiable assumptions. In: Proceedings of the 43rd Annual ACM Symposium on Theory of Computing, STOC ’11, pp. 99–108 (2011)

  61. Hess, F., Smart, N.P., Vercauteren, F.: The Eta pairing revisited. IEEE Trans. Inf. Theory 52(10), 4595–4602 (2006)

    Article  MathSciNet  MATH  Google Scholar 

  62. Joux, A., Jacques, S.: Lattice reduction: a toolbox for the cryptanalyst. J. Cryptol. 11(3), 161–185 (1998)

    Article  MathSciNet  MATH  Google Scholar 

  63. Kim, T., Kim, S., Cheon, J.H.: On the final exponentiation in Tate pairing computations. IEEE Trans. Inf. Theory 59(6), 4033–4041 (2013)

    Article  MathSciNet  MATH  Google Scholar 

  64. Kosba, A.E., Papadopoulos, D., Papamanthou, C., Sayed, M.F., Shi, E., Triandopoulos, N.: TRUESET: faster verifiable set computations. In: Proceedings of the 23rd USENIX Security Symposium, USENIX Security ’14, pp. 765–780 (2014)

  65. Kallahalla, M., Riedel, E., Swaminathan, R., Wang, Q., Fu, K.: Plutus: scalable secure file sharing on untrusted storage. In: Proceedings of the 2003 Conference on File and Storage Technologies, FAST ’03 (2003)

  66. Karabina, K., Teske, E.: On prime-order elliptic curves with embedding degrees \(k=\) 3, 4, and 6. In: Proceedings of the 8th International Conference on Algorithmic Number Theory, ANTS-VIII ’08, pp. 102–117 (2008)

  67. Lipmaa, H.: Progression-free sets and sublinear pairing-based non-interactive zero-knowledge arguments. In: Proceedings of the 9th Theory of Cryptography Conference on Theory of Cryptography, TCC ’12, pp. 169–189 (2012)

  68. Lipmaa, H.: Succinct non-interactive zero knowledge arguments from span programs and linear error-correcting codes. In: Proceedings of the 19th International Conference on the Theory and Application of Cryptology and Information Security, ASIACRYPT ’13, pp. 41–60 (2013)

  69. Lipmaa, H.: Efficient NIZK arguments via parallel verification of Beneš networks. In: Proceedings of the 9th International Conference on Security and Cryptography for Networks, SCN ’14, pp. 416–434 (2014)

  70. Lyubashevsky, V., Micciancio, D.: Generalized compact knapsacks are collision resistant. In: Proceedings of the 33rd International Conference on Automata, Languages and Programming, ICALP ’06, pp. 144–155 (2006)

  71. Lauter, K., Montgomery, P.L., Naehrig, M.: An analysis of affine coordinates for pairing computation. In: Proceedings of the 4th International Conference on Pairing-Based Cryptography, Pairing ’10, pp. 1–20 (2010)

  72. Lyubashevsky, V., Micciancio, D., Peikert, C., Rosen, A.: SWIFFT: a modest proposal for FFT hashing. In: Proceedings of the 15th International Workshop on Fast Software Encryption, FSE ’08, pp. 54–72 (2008)

  73. Lidl, R., Niederreiter, H.: Finite Fields, 2nd edn. Cambridge University Press, Cambridge (1997)

    MATH  Google Scholar 

  74. Micali, S.: Computationally sound proofs. SIAM J. Comput. 30(4):1253–1298, 2000. Preliminary version appeared in FOCS ’94

  75. Miyaji, A., Nakabayashi, M., Takano, S.: New explicit conditions of elliptic curve traces for FR-reduction. IEICE Trans. Fundam. Electron. Commun. Comput. Sci. 84(5), 1234–1243 (2001)

    MATH  Google Scholar 

  76. Menezes, A., Okamoto, T., Vanstone, S.: Reducing elliptic curve logarithms to logarithms in a finite field. In: Proceedings of the 23rd Annual ACM Symposium on Theory of Computing, STOC ’91, pp. 80–89 (1991)

  77. Mazières, D., Shasha, D.: Don’t trust your file server. In: Proceedings of the 8th Workshop on Hot Topics in Operating Systems, HotOS ’01, pp. 113–118 (2001)

  78. Maheshwari, U., Vingralek, R., Shapiro, W.: How to build a trusted database system on untrusted storage. In: Proceedings of the 4th Conference on Symposium on Operating System Design and Implementation, OSDI ’00, pp. 10–10 (2000)

  79. Naor, M., Yung, M.: Universal one-way hash functions and their cryptographic applications. In: Proceedings of the 21st Annual ACM Symposium on Theory of Computing, STOC ’89, pp. 33–43 (1989)

  80. Naor, M., Yung, M.: Public-key cryptosystems provably secure against chosen ciphertext attacks. In: Proceedings of the 22nd Annual ACM Symposium on Theory of Computing, STOC ’90, pp. 427–437 (1990)

  81. Odlyzko, A.M.: Discrete logarithms in finite fields and their cryptographic significance. In: Proceedings of the 3rd Annual International Conference on Theory and Application of Cryptographic Techniques, EUROCRYPT ’85, pp. 224–314 (1985)

  82. Parno, B., Gentry, C., Howell, J., Raykova, M.: Pinocchio: Nearly practical verifiable computation. In: Proceedings of the 34th IEEE Symposium on Security and Privacy, Oakland ’13, pp. 238–252 (2013)

  83. Pohlig, S., Hellman, M.: An improved algorithm for computing logarithms over \(gf(p)\) and its cryptographic significance. J. IEEE Trans. Inf. Theory 24(1), 106–110 (1978)

    Article  MathSciNet  MATH  Google Scholar 

  84. Pollard, J.M.: Monte Carlo methods for index computation (mod p). Math. Comput. 32(143), 918–924 (1978)

    MathSciNet  MATH  Google Scholar 

  85. Pollard, J.M.: Kangaroos, monopoly and discrete logarithms. J. Cryptol. 13, 437–447 (2000)

    Article  MathSciNet  MATH  Google Scholar 

  86. Peikert, C., Rosen, A.: Efficient collision-resistant hashing from worst-case assumptions on cyclic lattices. In: Proceedings of the 3rd Conference on Theory of Cryptography, TCC ’06, pp. 145–166 (2006)

  87. Razborov, A.A.: Lower bounds on the size of bounded depth circuits over a complete basis with logical addition. Math. Notes Acad. Sci. USSR 41(4), 333–338 (1987)

    MATH  Google Scholar 

  88. Rompel, J.: One-way functions are necessary and sufficient for secure signatures. In: Proceedings of the 22nd Annual ACM Symposium on Theory of Computing, STOC ’90, pp. 387–394 (1990)

  89. Satoh, T., Araki, K.: Fermat quotients and the polynomial time discrete log algorithm for anomalous elliptic curves. Comment. Math. Univ. Sancti Pauli 47(1), 81–92 (1998)

    MathSciNet  MATH  Google Scholar 

  90. Scott, M., Barreto, P.S.: Generating more MNT elliptic curves. Des. Codes Cryptogr. 38(2), 209–217 (2006)

    Article  MathSciNet  MATH  Google Scholar 

  91. Scott, M., Benger, N., Charlemagne, M., Dominguez Perez, L.J., Kachisa, E.J.: On the final exponentiation for calculating pairings on ordinary elliptic curves. In: Proceedings of the 3rd International Conference Palo Alto on Pairing-Based Cryptography, Pairing ’09, pp. 78–88 (2009)

  92. Setty, S., Braun, B., Vu, V., Blumberg, A.J., Parno, B., Walfish, M.: Resolving the conflict between generality and plausibility in verified computation. In: Proceedings of the 8th EuoroSys Conference, EuroSys ’13, pp. 71–84 (2013)

  93. Setty, S., Blumberg, A.J., Walfish, M.: Toward practical and unconditional verification of remote computations. In: Proceedings of the 13th USENIX Conference on Hot Topics in Operating Systems, HotOS ’11, pp. 29–29 (2011)

  94. Scott, M.: Computing the Tate pairing. In: Proceedings of the The Cryptographers’ Track at the RSA Conference 2005, CT-RSA ’05, pp. 293–304 (2005)

  95. Scott, M.: Implementing cryptographic pairings. In: Proceedings of the 1st First International Conference on Pairing-Based Cryptography, Pairing ’07, pp. 177–196 (2007)

  96. Semaev, I.A.: Evaluation of discrete logarithms in a group of p-torsion points of an elliptic curve in characteristic p. Math. Comput. 67(221), 353–356 (1998)

    Article  MathSciNet  MATH  Google Scholar 

  97. Shanks, D.: Class number, a theory of factorization, and genera. Symp. Pure Math. 20, 415–440 (1971)

    Article  MathSciNet  MATH  Google Scholar 

  98. Silverman, J.H.: The Arithmetic of Elliptic Curves, 2nd edn. Springer, Berlin (2009)

    Book  MATH  Google Scholar 

  99. Smart, N.P.: The discrete logarithm problem on elliptic curves of trace one. J. Cryptol. 12(3), 193–196 (1999)

    Article  MathSciNet  MATH  Google Scholar 

  100. Setty, S., McPherson, M., Blumberg, A.J., Walfish, M.: Making argument systems for outsourced computation practical (sometimes). In: Proceedings of the 2012 Network and Distributed System Security Symposium, NDSS ’12 (2012)

  101. Smolensky, R.: Algebraic methods in the theory of lower bounds for boolean circuit complexity. In: Proceedings of the 19th Annual ACM Symposium on Theory of Computing, STOC ’87, pp. 77–82 (1987)

  102. Solinas, J.A.: Id-based digital signature algorithms. http://cacr.uwaterloo.ca/conferences/2003/ecc2003/solinas.pdf (2003)

  103. Silverman, J.H., Stange, K.E.: Amicable pairs and aliquot cycles for elliptic curves. Exp. Math. 20(3), 329–357 (2011)

    Article  MathSciNet  MATH  Google Scholar 

  104. Sutherland, A.V.: Computing Hilbert class polynomials with the Chinese remainder theorem. Math. Comput. 80(273), 501–538 (2011)

    Article  MathSciNet  MATH  Google Scholar 

  105. Sutherland, A.V.: Accelerating the CM method. LMS J. Comput. Math. 15, 172–204 (2012)

    Article  MathSciNet  MATH  Google Scholar 

  106. Setty, S., Vu, V., Panpalia, N., Braun, B., Blumberg, A.J., Walfish, M.: Taking proof-based verified computation a few steps closer to practicality. In: Proceedings of the 21st USENIX Security Symposium, Security ’12, pp. 253–268 (2012)

  107. Thaler, J.: Time-optimal interactive proofs for circuit evaluation. In: Proceedings of the 33rd Annual International Cryptology Conference, CRYPTO ’13, pp. 71–89 (2013)

  108. Thaler, J., Roberts, M., Mitzenmacher, M., Pfister, H.: Verifiable computation with massively parallel interactive proofs. CoRR, abs/1202.1350 (2012)

  109. Valiant, P.: Incrementally verifiable computation or proofs of knowledge imply time/space efficiency. In: Proceedings of the 5th Theory of Cryptography Conference, TCC ’08, pp. 1–18 (2008)

  110. Vercauteren, F.: Optimal pairings. IEEE Trans. Inf. Theory 56(1), 455–461 (2010)

    Article  MathSciNet  MATH  Google Scholar 

  111. van Oorschot, P.C., Wiener, M.J.: Parallel collision search with cryptanalytic applications. J. Cryptol. 12(1), 1–28 (1999)

    Article  MathSciNet  MATH  Google Scholar 

  112. Washington, L.C.: Elliptic Curves: Number Theory and Cryptography, 2nd edn. Chapman & Hall/CRC, Boca Raton (2008)

    Book  MATH  Google Scholar 

  113. Wahby, R.S., Setty, S., Ren, Z., Blumberg, A.J., Walfish, M.: Efficient RAM and control flow in verifiable outsourced computation. In: Proceedings of the 22nd Network and Distributed System Security Symposium, NDSS ’15 (2015)

  114. Zhang, Y., Papamanthou, C., Katz, J.: Alitheia: Towards practical verifiable graph processing. In: Proceedings of the 21st ACM Conference on Computer and Communications Security, CCS ’14, pp. 856–867 (2014)

Download references

Acknowledgments

We thank Andrew V. Sutherland for generous help in running the CM method on elliptic curves with large discriminants. We thank Damien Stehlé and Daniele Micciancio for discussions about the security of subset-sum functions. We thank Koray Karabina for answering questions about algorithms in [66]. This work was supported by: the Broadcom Foundation and Tel Aviv University Authentication Initiative; the Center for Science of Information (CSoI), an NSF Science and Technology Center, under Grant agreement CCF-0939370; the Check Point Institute for Information Security; the European Community’s Seventh Framework Programme (FP7/2007-2013) under Grant Agreement Number 240258; the Israeli Centers of Research Excellence I-CORE program (center 4/11); the Israeli Ministry of Science and Technology; the Leona M. and Harry B. Helmsley Charitable Trust; the Simons Foundation, with a Simons Award for Graduate Students in Theoretical Computer Science; and the Skolkovo Foundation with agreement dated 10/26/2011.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Alessandro Chiesa.

Appendices

Appendix 1: Computation Models

We introduce notions and notations for two computation models used in this paper: arithmetic circuits (see Appendix “Arithmetic Circuits”) and random-access machines (see Appendix “Random-Access Machines”).

1.1 Arithmetic Circuits

We work with circuits that are not boolean but arithmetic. Given a field \(\mathbb {F}\), an \(\mathbb {F}\)-arithmetic circuit takes inputs that are elements in \(\mathbb {F}\), and its gates output elements in \(\mathbb {F}\). We naturally associate a circuit with the function it computes. The circuits we consider only have bilinear gates,Footnote 22 and a circuit’s size is defined as the number of gates. To model nondeterminism we consider circuits with an input \(x\in \mathbb {F}^{n}\) and an auxiliary input \(a\in \mathbb {F}^{h}\), called a witness. Arithmetic circuit satisfiability is analogous to the boolean case, as follows.

Definition 8.1

Let \(n,h,l\in \mathbb {N}\) respectively denote the input, witness, and output size. The circuit satisfaction problem of an \(\mathbb {F}\)-arithmetic circuit \(C:\mathbb {F}^{n} \times \mathbb {F}^{h} \rightarrow \mathbb {F}^{l}\) (with bilinear gates) is defined by the relation \(\mathcal {R}_{C} = \{(x,a) \in \mathbb {F}^{n} \times \mathbb {F}^{h} : C(x,a) = 0^{l} \}\); its language is \(\mathcal {L}_{C}=\{x\in \mathbb {F}^{n} : \exists \, a\in \mathbb {F}^{h}, \ C(x,a) = 0^{l} \}\).

At times, we also write \(C(x,a) = 0\) to mean \(C(x,a) = 0^{l}\) for an unspecified \(l\). All the arithmetic circuits we consider are over fields \(\mathbb {F}_{p}\) with p prime (that is at most exponential in the security parameter \(\lambda \)).

1.2 Random-Access Machines

There are many possible definitions of random-access machines [4, 36]. Here we formulate a concrete, yet relatively flexible, definition that suffices for the purposes of this paper. Informally, a machine is specified by a configuration for random-access memory (number of addresses, and number of bits stored at each address) and a CPU. At each step, the CPU gets the current state and the next instruction from memory; executes the instruction; communicates with memory (by storing or loading data); and then outputs the next state and the address for the next instruction. (Thus, random-access memory contains both program and data).

More precisely, a (non-deterministic) random-access machine with verification over a finite field \(\mathbb {F}\) is a tuple \(\mathbf {M}= (A,W,N,\mathrm {CPU}_{\mathsf {exe}},\mathrm {CPU}_{\mathsf {ver}})\) where:

  • \(A,W\in \mathbb {N}\) specify that (random-access) memory \(\mathcal {M}\) contains \(A\) addresses each storing \(W\) bits (i.e., that memory is a function \(\mathcal {M}:[A] \rightarrow \{0,1\}^{W}\)).

  • \(N\in \mathbb {N}\) specifies the length, in bits, of a CPU state.

  • \(\mathrm {CPU}_{\mathsf {exe}}\) is a (stateful) function for executing the CPU (see below).

  • \(\mathrm {CPU}_{\mathsf {ver}}\) is an \(\mathbb {F}\)-arithmetic circuit for verifying the CPU’s execution (see below).

The machine \(\mathbf {M}\) takes as input a program \(\mathcal {P}\) and an auxiliary input \(\mathcal {G}\), and computes on them. More precisely:

  • A program for \(\mathbf {M}\) is a function \(\mathcal {P}:[A] \rightarrow \{0,1\}^{W}\) that specifies the initial memory contents. The program \(\mathcal {P}\) is typically represented in sparse form, by listing the (few) addresses and values for non-zero memory entries, which may store any code and data to the machine.

  • An auxiliary input for \(\mathbf {M}\) is a sequence \(\mathcal {G}= (g_{0},g_{1},g_{2},\dots )\). Each \(g_{i}\) consists of \(W\) bits and is accessed at the i-th computation step. The auxiliary input is treated as a nondeterministic guess.

Then, the computation of \(\mathbf {M}\) on program \(\mathcal {P}\) and auxiliary input \(\mathcal {G}\), denoted \(\mathbf {M}(\mathcal {P};\mathcal {G})\), proceeds as follows. Initialize the CPU state and instruction address to zero: \(s_{\mathsf {cpu},0} := 0^{N}\), \(a_{\mathsf {pc},0} := 0\). Next, for \(i=0,1,2\dots \):

  1. 1.

    \(\mathrm {CPU}_{\mathsf {exe}}\) is given the current CPU state (\(s_{\mathsf {cpu},i} \in \{0,1\}^{N}\)), address of the instruction to be executed (\(a_{\mathsf {pc},i} \in [A]\)), instruction to be executed (\(v_{\mathsf {pc},i} := \mathcal {M}_{i}(a_{\mathsf {pc},i}) \in \{0,1\}^{W}\)), and guess (\(g_{i} \in \{0,1\}^{W}\)).

  2. 2.

    \(\mathrm {CPU}_{\mathsf {exe}}\) outputs an address (\(a_{\mathsf {mem},i} \in [A]\)), a value (\(v_{\mathsf {st},i} \in \{0,1\}^{W}\)), and a store flag (\(f_{\mathsf {st},i} \in \{0,1\}\)).

  3. 3.

    \(\mathrm {CPU}_{\mathsf {exe}}\) is given the value at the address (\(v_{\mathsf {ld},i} := \mathcal {M}_{i}(a_{\mathsf {mem},i}) \in \{0,1\}^{W}\)).

    Set \(\mathcal {M}_{i+1}\) equal to \(\mathcal {M}_{i}\); if a store was requested (i.e., \(f_{\mathsf {st},i}=1\)), do it (i.e., \(\mathcal {M}_{i+1}(a_{\mathsf {mem},i}) := v_{\mathsf {st},i}\)).

  4. 4.

    \(\mathrm {CPU}_{\mathsf {exe}}\) outputs a new CPU state (\(s_{\mathsf {cpu},i+1} \in \{0,1\}^{N}\)), an address for the next instruction (\(a_{\mathsf {pc},i+1} \in [A]\)), and a flag denoting whether the machine has accepted (\(f_{\mathsf {acc},i+1} \in \{0,1\}\)). \(\mathrm {CPU}_{\mathsf {exe}}\)’s state is reset.

Thus \(\mathrm {CPU}_{\mathsf {exe}}\) can be thought of as \(\mathbf {M}\)’s “processor”: step after step, \(\mathrm {CPU}_{\mathsf {exe}}\) takes the previous state and instruction (and its address), executes the instruction, communicates with random-access memory, and produces the next state and instruction address. In contrast, \(\mathrm {CPU}_{\mathsf {ver}}\) is a predicate that verifies the correct input/output relationship of \(\mathrm {CPU}_{\mathsf {exe}}\). In other words \(\mathrm {CPU}_{\mathsf {exe}}\) satisfies the following property:

Fix \(s_{\mathsf {cpu}},s_{\mathsf {cpu}}' \in \{0,1\}^{N}\), \(a_{\mathsf {pc}},a_{\mathsf {mem}},a_{\mathsf {pc}}' \in [A]\), \(v_{\mathsf {pc}},v_{\mathsf {st}},v_{\mathsf {ld}},g\in \{0,1\}^{W}\), \(f_{\mathsf {st}},f_{\mathsf {acc}}' \in \{0,1\}\), and let \(x_{\mathsf {ver}}\) be the concatenation of all these. There is a witness \(a_{\mathsf {ver}}\) such that \(\mathrm {CPU}_{\mathsf {ver}}(x_{\mathsf {ver}},a_{\mathsf {ver}}) = 0\) iff \((a_{\mathsf {mem}},v_{\mathsf {st}},f_{\mathsf {st}}) \leftarrow \mathrm {CPU}_{\mathsf {exe}}(s_{\mathsf {cpu}},a_{\mathsf {pc}},v_{\mathsf {pc}},g)\) and, afterwards, \((s_{\mathsf {cpu}}',a_{\mathsf {pc}}',f_{\mathsf {acc}}') \leftarrow \mathrm {CPU}_{\mathsf {exe}}(v_{\mathsf {ld}})\). Moreover, \(a_{\mathsf {ver}}\) can be efficiently computed from \(x_{\mathsf {ver}}\).

Of course, \(\mathrm {CPU}_{\mathsf {ver}}\) may simply internally execute \(\mathrm {CPU}_{\mathsf {exe}}\) to perform its verification; but, having access to additional advice \(a_{\mathsf {ver}}\), \(\mathrm {CPU}_{\mathsf {ver}}\) may instead perform “smarter”, and more efficient, checks.

We are not concerned about how the function \(\mathrm {CPU}_{\mathsf {exe}}\) is specified (e.g., it can be a computed program), but \(\mathrm {CPU}_{\mathsf {ver}}\) must be specified as an \(\mathbb {F}\)-arithmetic circuit (for an appropriate \(\mathbb {F}\) that we will discuss).

The language of accepting computations We define the language of accepting computations on \(\mathbf {M}\). A program \(\mathcal {P}\) is treated as “given”, while the auxiliary input \(\mathcal {G}\) is treated as a nondeterministic advice.

Definition 8.2

For a random-access machine \(\mathbf {M}\), the language \(\mathcal {L}_{\mathbf {M}}\) consists of pairs \((\mathcal {P},T)\) such that:

  • \(\mathcal {P}\) is a program for \(\mathbf {M}\);

  • \(T\) is a time bound;

  • there exists an auxiliary input \(\mathcal {G}\) such that \(\mathbf {M}(\mathcal {P};\mathcal {G})\) accepts in at most \(T\) steps.

We denote by \(\mathcal {R}_{\mathbf {M}}\) the relation corresponding to \(\mathcal {L}_{\mathbf {M}}\).

In this paper we obtain an implementation of scalable \(\text{ zk-SNARK }\)s for proving/verifying membership in the above language (see Appendix “Scalable \(\text{ zk-SNARK }\)s for Random-Access Machines” for a definition). We evaluate our system for a specific choice of machine: \( \textsf {vnTinyRAM} \), a simple RISC von Neumann architecture introduced by [17] (see below). Of course, other choices of random-access machines are possible, and our implementation supports them.

1.3 The Architecture \( \textsf {vnTinyRAM} \)

We evaluate our scalable \(\text{ zk-SNARK }\) on an architecture that previously appeared in (preprocessing) \(\text{ zk-SNARK }\) implementations: \( \textsf {vnTinyRAM} \) [17] (see Sect. 7). We explain how to set “\(\mathbf {M}= \textsf {vnTinyRAM} \)”, i.e., how to specify the architecture \( \textsf {vnTinyRAM} \) via the formalism introduced above (and used by our prototype).

Given \(W,K\), we want to construct a tuple \(\mathbf {M}=(A,W,N,\mathrm {CPU}_{\mathsf {exe}},\mathrm {CPU}_{\mathsf {ver}})\) that implements \(W\)-bit \( \textsf {vnTinyRAM} \) with \(K\) registers. First we need to specify the parameters \(A,W\in \mathbb {N}\) for random access memory. \( \textsf {vnTinyRAM} \) accesses memory, consisting of \(2^{W}\) bytes, either as bytes or as words; moreover, \( \textsf {vnTinyRAM} \) instructions (which are stored in memory) take two words to encode in memory. Thus, we set \(A,W\) so that memory consists of \(A:= \frac{8 \cdot 2^{W}}{2 W}\) addresses, each storing \(W:= 2W\) bits. Next, we set the CPU state length to \(N:= (1+K)W+ 1\) because, in \( \textsf {vnTinyRAM} \), a CPU state consists of the program counter (\(W\) bits), \(K\) general-purpose registers (each of \(W\) bits), and a (condition) flag (1 bit). Finally, \(\mathrm {CPU}_{\mathsf {exe}}\) can be chosen to be any program implementation of \( \textsf {vnTinyRAM} \)’s CPU, while \(\mathrm {CPU}_{\mathsf {ver}}\) can be chosen to be any \(\mathbb {F}\)-arithmetic circuit for verifying the input-output relationship of \(\mathrm {CPU}_{\mathsf {exe}}\). In our implementation, \(\mathbb {F}\) is a prime field of \(298\) bits (since \(\mathbb {F}= \mathbb {F}_{r_{4}}\)), and we get the following sizes for the two settings we consider:

  • for \((W,K)=(16,16)\), \(|\mathrm {CPU}_{\mathsf {ver}}|=766\); and

  • for \((W,K)=(32,16)\), \(|\mathrm {CPU}_{\mathsf {ver}}|=1108\).

Appendix 2: Pairings and Elliptic Curves

The cryptographic primitives we study are based on pairings, which we briefly recall in Appendix “Pairings”. Pairings can, in turn, be based on pairing-friendly elliptic curves; in Appendix “Elliptic Curves” we review basic notions about these.

1.1 Pairings

Let \(\mathbb {G}_{1}\) and \(\mathbb {G}_{2}\) be cyclic groups of a prime order \(r\). We denote elements of \(\mathbb {G}_{1},\mathbb {G}_{2}\) via calligraphic letters such as \(\mathcal {P},\mathcal {Q}\). We write \(\mathbb {G}_{1}\) and \(\mathbb {G}_{2}\) in additive notation. Let \(\mathcal {P}_{1}\) be a generator of \(\mathbb {G}_{1}\), i.e., \(\mathbb {G}_{1}= \{\alpha \mathcal {P}_{1}\}_{\alpha \in \mathbb {F}_{r}}\); let \(\mathcal {P}_{2}\) be a generator for \(\mathbb {G}_{2}\). (We also view \(\alpha \) as an integer, so that \(\alpha \mathcal {P}_{1}\) is well-defined).

A pairing is an efficient map \(e:\mathbb {G}_{1}\times \mathbb {G}_{2}\rightarrow \mathbb {G}_{T}\), where \(\mathbb {G}_{T}\) is also a cyclic group of order \(r\) (which we write in multiplicative notation), satisfying the following properties:

  • Bilinearity. For every nonzero elements \(\alpha ,\beta \in \mathbb {F}_{r}\), it holds that \(e(\alpha \mathcal {P}_{1}, \beta \mathcal {P}_{2}) = e( \mathcal {P}_{1}, \mathcal {P}_{2})^{\alpha \beta }\).

  • Non-degeneracy. \(e(\mathcal {P}_{1},\mathcal {P}_{2})\) is not the identity in \(\mathbb {G}_{T}\).

When describing cryptographic primitives at high level, the choice of instantiation of \(\mathbb {G}_{1},\mathbb {G}_{2},\mathbb {G}_{T},e\) often does not matter. In this paper, however, we discuss implementation details, and such choices matter a great deal. Typically, pairings are based on (pairing-friendly) elliptic curves, discussed next.

1.2 Elliptic Curves

We assume familiarity with elliptic curves; here, we only recall the basic definitions in order to fix notation. See, e.g., [32, 48, 98, 112] for more details.

Definition and curve groups Given a field \(K\), an elliptic curve \(E\) defined over \(K\), denoted \(E/K\), is a smooth projective curve of genus 1 (defined over \(K\)) with a distinguished \(K\)-rational point. We denote by \(E(K)\) the group of \(K\)-rational points on \(E\); when finite, we denote the cardinality of this group by \(\#E(K)\). For any \(r \in \mathbb {N}\), \(E[r]\) denotes the group of r-torsion points in \(E(\overline{K})\), and \(E(K)[r]\) the group of r-torsion points in \(E(K)\). In this paper, we only consider elliptic curves where \(K\) is a finite field \(\mathbb {F}_{q}\); so the definitions below are specific to this case.

Trace and CM discrminant The trace of \(E/\mathbb {F}_{q}\) is \(t := q + 1 - \#E(\mathbb {F}_{q})\). The Hasse bound states that \(|t| \le 2\sqrt{q}\). If \(\gcd (q,t)=1\), then \(E/\mathbb {F}_{q}\) is ordinary; otherwise, it is supersingular. If \(E/\mathbb {F}_{q}\) is ordinary, the CM discriminant of \(E\) is the square-free part D of the integer \(4q-t^2\), non-negative by the Hasse bound.Footnote 23

ECDLP The elliptic-curve discrete logarithm problem (ECDLP) is the following: given \(E/\mathbb {F}_{q}\), \(\mathcal {P} \in E(\mathbb {F}_{q})\), and \(\mathcal {Q} \in \langle \mathcal {P} \rangle \), find \(a \in \mathbb {N}\) such that \(\mathcal {Q} = a \mathcal {P}\). There are several methods to solve, with different time and space complexities, the ECDLP. For instance: the Pohlig–Hellman algorithm [83] (which reduces the problem to subgroups of prime order); Shanks’ [97] baby-step-giant-step method; Pollard’s methods (the rho method [84] and the kangaroo method [85], and their parallel variants by van Oorschot and Wiener [111]); the Menezes–Okamoto–Vanstone (MOV) attack using the Weil pairing [76]; the Frey–Rück attack using the Tate pairing [46]; and the SSSA attack for curves of trace \(t =1\) [89, 96, 99].

Cryptographic uses require the ECDLP to be hard (typically, intractable for polynomial-time adversaries). For points \(\mathcal {P}\) of large prime order r, this is widely believed to be the case. Thus, one only considers curves \(E\) with trace \(t \ne 1\) and having cyclic subgroups of \(E(\mathbb {F}_{q})\) of large prime order r. So \(\#E(\mathbb {F}_{q})\) is either a prime r, or hr for a small cofactor h.

Pairings For cryptographic uses that require efficient computation of pairings (such as the uses considered in this paper), suitable elliptic curves need to satisfy additional requirements, as we now recall.

For any \(r \in \mathbb {N}\) with \(\gcd (q,r)=1\), the embedding degree k of \(E/\mathbb {F}_{q}\) (with respect to r) is the smallest integer such that r divides \(q^{k}-1\); for such r, a bilinear map \(e_{r} :E[r] \times E[r] \rightarrow \mu _{r}\) can be defined, where \(\mu _{r} \subset \mathbb {F}_{q^k}^{*}\) is the subgroup of r-th roots of unity in \(\overline{\mathbb {F}_{q}}\). The map \(e_{r}\) is known as the Weil pairing.

The Weil pairing is not the only bilinear map that can be defined. Depending on properties of the curve \(E\) other, sometimes more efficient, pairings can be defined, e.g., the Tate pairing [45, 46], the Eta pairing [24], and the Ate pairing [61]. In each of these cases, the pairing computation requires arithmetic in \(\mathbb {F}_{q^k}\), so that k cannot be too large. On the other hand, the ECDLP can be translated (via the pairing itself [46, 76]) to the discrete logarithm problem over \(\mathbb {F}_{q^k}^{*}\), which is susceptible to subexponential-time attacks via index calculus [81], so that k has to be large enough to achieve the desired level of hardness for the DLP in \(\mathbb {F}_{q^k}^{*}\).

In light of the above considerations, an (ordinary) elliptic curve \(E/\mathbb {F}_{q}\) is said to be pairing friendly if (i) \(E(\mathbb {F}_{q})\) contains a subgroup of large prime order r, and (ii) \(E\) has embedding degree k (with respect to r) that is not too large (i.e., computations in the field \(\mathbb {F}_{q^k}\) are feasible) and not too small (i.e., the DLP in \(\mathbb {F}_{q^k}^{*}\) is hard enough). The ideal case is when \(E\) has prime order r, and the embedding degree k is such that the ECDLP in \(E(\mathbb {F}_{q})\) and the DLP in \(\mathbb {F}_{q^k}^{*}\) have approximately the same hardness, i.e., are balanced.

Instantiations of pairings A pairing is specified by a prime \(r \in \mathbb {N}\), three cyclic groups \(\mathbb {G}_{1},\mathbb {G}_{2},\mathbb {G}_{T}\) of order r, and an efficient bilinear map \(e:\mathbb {G}_{1}\times \mathbb {G}_{2}\rightarrow \mathbb {G}_{T}\). (See Appendix “Pairings”). Suppose one uses a curve \(E/\mathbb {F}_{q}\) with embedding degree k to instantiate the pairing. Then \(\mathbb {G}_{T}\) is set to \(\mu _{r} \subset \mathbb {F}_{q^k}^*\). The instantiation of \(\mathbb {G}_{1}\) and \(\mathbb {G}_{2}\) depends on the choice of \(e\); typically, \(\mathbb {G}_{1}\) is instantiated as an order-\(r\) subgroup of \(E(\mathbb {F}_{q})\), while, for efficiency reasons [25, 28], \(\mathbb {G}_{2}\) as an order-\(r\) subgroup of \(E'(\mathbb {F}_{k/d})\) where \(E'\) is a d-th twist of \(E\).

Appendix 3: Preprocessing \(\text{ zk-SNARK }\)s for Arithmetic Circuit Satisfiability

At high-level, a preprocessing \(\text{ zk-SNARK }\) for arithmetic-circuit satisfiability is a cryptographic primitive that provides short and easy-to-verify non-interactive zero-knowledge proofs of knowledge for the satisfiability of arithmetic circuits. A public proving key is used to generate proofs, and a public verification key is used to verify them; the two keys are jointly generated once, and can then be used any number of times. The adjective “preprocessing” denotes the fact that the key pair depends on the arithmetic circuit \(C\) whose satisfiability is being proved/verified; in particular, the time to generate a key pair for \(C\) is at least linear in the size of \(C\). Below, we informally define this primitive; we refer the reader to, e.g., [14] for a formal definition.

Given a field \(\mathbb {F}\),Footnote 24 a preprocessing \(\text{ zk-SNARK }\) for \(\mathbb {F}\)-arithmetic circuit satisfiability (see Appendix “Arithmetic Circuits”) is a triple of polynomial-time algorithms \((G ,P,V)\), with \(V\) deterministic,Footnote 25 working as follows.

  • \(G(1^{\lambda },C) \rightarrow (\mathsf {pk}, \mathsf {vk})\). On input a security parameter \(\lambda \) (presented in unary) and an \(\mathbb {F}\)-arithmetic circuit \(C\), the key generator \(G\) probabilistically samples a proving key \(\mathsf {pk}\) and a verification key \(\mathsf {vk}\). We assume, without loss of generality, that \(\mathsf {pk}\) contains (a description of) the circuit \(C\).

The keys \(\mathsf {pk}\) and \(\mathsf {vk}\) are published as public parameters and can be used, any number of times, to prove/verify membership in the language \(\mathcal {L}_{C}\), as follows.

  • \(P(\mathsf {pk},x,a) \rightarrow \pi \). On input a proving key \(\mathsf {pk}\) and any \((x,a) \in \mathcal {R}_{C}\), the prover \(P\) outputs a non-interactive proof \(\pi \) for the statement “\(x\in \mathcal {L}_{C}\)”.

  • \(V(\mathsf {vk}, x, \pi ) \rightarrow b\). On input a verification key \(\mathsf {vk}\), an input \(x\), and a proof \(\pi \), the verifier \(V\) outputs \(b=1\) if he is convinced by \(\pi \) that \(x\in \mathcal {L}_{C}\).

The triple \((G ,P,V)\) satisfies the following properties.

Completeness The honest prover can convince the verifier for any instance in the language. Namely, for every security parameter \(\lambda \), \(\mathbb {F}\)-arithmetic circuit \(C\), and instance \(x\in \mathcal {L}_{C}\) with a witness \(a\),

$$\begin{aligned} \Pr \left[ V(\mathsf {vk},x,\pi )=1 \,\, \Bigg \vert \,\,\begin{array}{c} (\mathsf {pk},\mathsf {vk}) \leftarrow G(1^{\lambda },C) \\ \pi \leftarrow P(\mathsf {pk},x,a) \end{array} \right] = 1. \end{aligned}$$

Succinctness For every security parameter \(\lambda \), \(\mathbb {F}\)-arithmetic circuit \(C\), and \((\mathsf {pk},\mathsf {vk}) \in G(1^{\lambda },C)\),

  • an honestly-generated proof \(\pi \) has \(O_{\lambda }(1)\) bits;

  • \(V(\mathsf {vk},x,\pi )\) runs in time \(O_{\lambda }(|x|)\).

Above, \(O_{\lambda }\) hides a (fixed) polynomial factor in \(\lambda \).

Proof of knowledge (and soundness) If the verifier accepts a proof for an instance, the prover “knows” a witness for that instance. (Thus, soundness holds). Namely, for every constant \(c>0\) and every polynomial-size adversary A there is a polynomial-size witness extractor \(E\) such that, for every large-enough security parameter \(\lambda \), for every \(\mathbb {F}\)-arithmetic circuit \(C\) of size \(\lambda ^c\),

$$\begin{aligned} \Pr \left[ \begin{array}{c} V(\mathsf {vk},x,\pi )=1 \\ (x,a) \notin \mathcal {R}_{C} \end{array} \,\, \Bigg \vert \,\, \begin{array}{c} (\mathsf {pk},\mathsf {vk}) \leftarrow G(1^{\lambda },C) \\ (x,\pi ) \leftarrow A(\mathsf {pk},\mathsf {vk}) \\ a\leftarrow E(\mathsf {pk},\mathsf {vk}) \end{array} \right] \le \mathsf {negl}(\lambda ). \end{aligned}$$

Statistical zero knowledge An honestly-generated proof is statistical zero knowledge. Namely, there is a polynomial-time stateful simulator \(S\) such that, for all stateful distinguishers \(D\), the following two probabilities are negligibly-close:

figure j

Remark 8.3

All known preprocessing \(\text{ zk-SNARK }\) constructions can in fact be made perfect zero knowledge, at the only expense of a negligible probability of error in completeness.

1.1 Known Constructions and Security

There are many preprocessing \(\text{ zk-SNARK }\) constructions in the literature [9, 14, 17, 52, 55, 67, 68, 82]. The most efficient ones are based on quadratic arithmetic programs (\(\text{ QAP } \)s) [9, 14, 17, 52, 82]; such constructions provide a linear-time \(G\), quasilinear-time \(P\), and linear-time \(V\).

Three of the above works [9, 17, 82] also investigate and provide implementations of preprocessing \(\text{ zk-SNARK }\)s. As we discuss in Sect. 3.3, in this work we follow the implementation of [17], which, at the time of writing, is the fastest one.

Security of \(\text{ zk-SNARK }\)s is based on knowledge-of-exponent assumptions and variants of Diffie–Hellman assumptions in bilinear groups [5, 49, 55]. Knowledge-of-exponent assumptions are fairly strong, but there is evidence that such assumptions may be inherent for constructing \(\text{ zk-SNARK }\)s [7, 60].

Remark 8.4

(auxiliary input) More generally, the security of \(\text{ zk-SNARK }\)s relies on the extractability of certain functions. Extractability is a delicate property that, depending on how it is stated, yields conditions of different relative strength. One aspect that affects this is the choice of auxiliary input (a discussion of which was omitted in the informal definition above). For instance, if the adversary is allowed any auxiliary input (perhaps even by way of maliciously chosen circuits \(C\)), extraction may be difficult because the auxiliary input may encode an obfuscated strategy [7]; such intuition can in fact be formalized to yield limitations to extractability [16]. On the other end of the spectrum, certain notions of extractability can be achieved [15], and also no limitations are known for certain ‘benign looking’ inputs.

The focus of this paper is practical aspects of \(\text{ zk-SNARK }\)s so our perspective on extractability here is that, similarly to the Fiat–Shamir paradigm [47], knowledge-of-exponent assumptions, despite not being fully understood, provide solid heuristics in practice since no effective attacks against them are known.

1.2 Instantiations Via Elliptic Curves

Known preprocessing \(\text{ zk-SNARK }\) constructions are based on pairings (see Appendix “Pairings”), which can in turn be based on pairing-friendly elliptic curves (see Appendix “Elliptic Curves”). We recall two facts, used in this paper.

Field for the circuit language Let \(E\) be an elliptic curve that is defined over a finite field \(\mathbb {F}_{q}\), has a group \(E(\mathbb {F}_{q})\) of \(\mathbb {F}_{q}\)-rational points with a prime order r (or order divisible by a large prime r), and has embedding degree k with respect to r. Suppose that a preprocessing \(\text{ zk-SNARK }\) \((G ,P,V)\) is instantiated with \(E\). Then,

\((G ,P,V)\) works for \(\mathbb {F}_{r}\)-arithmetic circuit satisfiability,

but all of \(V\)’s arithmetic computations are over \(\mathbb {F}_{q}\) (or extensions of \(\mathbb {F}_{q}\) up to degree k).Footnote 26

This fact motivates most of the discussions in Sect. 3.1.

2-adicity of a curve Prior work identified the 2-adicity of a curve as an important ingredient for efficient implementations of the generator and, especially, the prover [9, 17].

An elliptic curve \(E/\mathbb {F}_{q}\) has 2-adicity \(2^{\ell }\) if the large prime r dividing \(\#E(\mathbb {F}_{q})\) is such that \(2^{\ell }\) divides \(r-1\). This property ensures that the multiplicative group of \(\mathbb {F}_{r}\) contains a \(2^{\ell }\)-th root of unity, which significantly improves the efficiency of interpolation and evaluation of functions defined over certain domains in \(\mathbb {F}_{r}\).

When instantiating a preprocessing \(\text{ zk-SNARK }\) \((G ,P,V)\) with \(E\), the \(\text{ zk-SNARK }\) works for \(\mathbb {F}_{r}\)-arithmetic circuit satisfiability, and both \(G\) and \(P\) need to solve interpolation/evaluation problems over domains of size \(|C|\), where \(C\) is the \(\mathbb {F}_{r}\)-arithmetic circuit given as input to \(G\). Thus, efficiency can be improved if \(E\) is sufficiently 2-adic. Concretely, to fully take advantage of the efficiency benefits of 2-adicity, one requires that \(2^{\ell } \ge |C|\), i.e., \(\nu _{2}(r-1) \ge \lceil \log |C| \rceil \) where \(\nu _{2}(\cdot )\) denotes the 2-adic order function.

This fact motivates much of the extensive search for suitable curve parameters, described in Sect. 3.2.

Remark 8.5

(lack of 2-adicity) One can consider other/weaker requirements (e.g., \(\nu _{3}(r-1) \ge \lceil \log _{3} |C| \rceil \), or \(r-1\) is divisible by a smooth number \(M \ge |C|\)) which would still somewhat simplify interpolation/evaluation problems over \(|C|\)-size domains in \(\mathbb {F}_{r}\). The above requirement that \(\nu _{2}(r-1) \ge \lceil \log |C| \rceil \) is, in a sense, the “ideal” one. Moreover, even if \(E\) does not satisfy these other/weaker requirements, it is still possible to instantiate the \(\text{ zk-SNARK }\), but at a higher computational cost (both asymptotically and in practice), due to the necessary use of “heavier” techniques applying to “generic” fields [82].

1.3 The \(\text{ zk-SNARK }\) Verifier Protocol

The (pairing-based) preprocessing \(\text{ zk-SNARK }\)s that we use follow those of [17] (see Sect. 3.3); in turn, these improve upon and implement those of [82]. In this paper, we construct arithmetic circuits for verifying the evaluation of the \(\text{ zk-SNARK }\) verifier \(V\): a circuit \(C_{V,4}\) for an instantiation based on the curve \(E_{4}\), and a circuit \(C_{V,6}\) for one based on the curve \(E_{6}\) (see Sect. 5.1). For completeness, in Fig. 5 we summarize \(V\)’s abstract protocol.

We see that \(V\)’s protocol consists of two main parts: (a) use the verification key \(\mathsf {vk}\) and input \(\vec {x} \in \mathbb {F}_{r}^{n}\) to compute \(\mathsf {vk}_{\vec {x}}\) (see Step 1); and (b) use the verification key \(\mathsf {vk}\), value \(\mathsf {vk}_{\vec {x}}\), and proof \(\pi \), to compute 12 pairings and perform the required checks (see Step 2, Step 3, Step 4). Thus, the first part requires \(O(n)\) scalar multiplications in \(\mathbb {G}_{1}\), while the second part requires O(1) pairing evaluations.

For additional details regarding \(V\) (and, more generally, the preprocessing \(\text{ zk-SNARK }\) construction), we refer the reader to [17, 82]. Indeed, our focus in this work is not why \(V\) executes these checks, but how we can efficiently verify its checks via suitable arithmetic circuits.

Fig. 5
figure 5

Summary of the checks performed by the \(\text{ zk-SNARK }\) verifier \(V\)

Appendix 4: Proof-Carrying Data for Arithmetic Compliance Predicates

We define a proof-carrying data system (PCD system), which is a cryptographic primitive that captures the notion of proof-carrying data [38, 39]. More precisely, we define preprocessing PCD systems [8]. The definitions here are somewhat informal; for details, we refer the reader to [8].

Proof-carrying data at a glance Fix a predicate \(\Pi \). Consider a distributed computation where nodes perform computations; each computation takes as input messages and outputs a new output message. The security goal is to ensure that each output message is compliant with the predicate \(\Pi \). Proof-carrying data ensures this goal by attaching short and easy-to-verify proofs of \(\Pi \)-compliance to each message.

Concretely, a key generator \(\mathbb {G}\) first sets up a proving key and a verification key. Anyone can then use a prover \(\mathbb {P}\), which is given as input the proving key, prior messages \(\vec {z}_{\mathsf {in}}\) with proofs \(\vec {\pi }_{\mathsf {in}}\), and an output message \(z\), to generate a proof \(\pi \) attesting that \(z\) is \(\Pi \)-compliant. Anyone can use a verifier \(\mathbb {V}\), which is given as input the verification key, a message \(z\), and a proof, to verify that \(z\) is \(\Pi \)-compliant.

Crucially, proof generation and proof verification time are “history independent”: the first only depends on the time to execute \(\Pi \) on input a node’s messages, while the second only on the message length.

We now spell out more details, by first specifying the notion of distributed computation, and then that of compliance with a predicate \(\Pi \). Our discussion is specific to predicates specified as \(\mathbb {F}\)-arithmetic circuits.

Transcripts Given \(n_{\mathsf {msg}},n_{\mathsf {loc}},s\in \mathbb {N}\) and field \(\mathbb {F}\), an \(\mathbb {F}\)-arithmetic transcript (for message size \(n_{\mathsf {msg}}\), local-data size \(n_{\mathsf {loc}}\), and arity \(s\)) is a triple \(\mathsf {T}=(G,\mathsf {loc},\mathsf {data})\), where \(G=(V,E)\) is a directed acyclic graph \(G\), \(\mathsf {loc}:V\rightarrow \mathbb {F}^{n_{\mathsf {loc}}}\) are node labels, and \(\mathsf {data}:E\rightarrow \mathbb {F}^{n_{\mathsf {msg}}}\) are edge labels. The output of \(\mathsf {T}\), denoted \(\mathsf {out}(\mathsf {T})\), equals \(\mathsf {data}(\tilde{u},\tilde{v})\) where \((\tilde{u},\tilde{v})\) is the lexicographically-first edge with \(\tilde{v}\) a sink.

Intuitively, the label \(\mathsf {loc}(v)\) of a node v represents the local data used by v in his local computation; the edge label \(\mathsf {data}(u,v)\) of a directed edged (uv) represents the message sent from node u to node v. Typically, a party at node v uses the local data \(\mathsf {loc}(v)\) and “input messages” \(\big ( \mathsf {data}(u, v) \big )_{u \in \mathsf {parents}(v)}\) to compute an “output message” \(\mathsf {data}(v,w)\) for each child \(w \in \mathsf {children}(v)\).

Compliance Given field \(\mathbb {F}\) and \(n_{\mathsf {msg}},n_{\mathsf {loc}},s\in \mathbb {N}\), an \(\mathbb {F}\) -arithmetic compliance predicate \(\Pi \) (for message size \(n_{\mathsf {msg}}\), local-data size \(n_{\mathsf {loc}}\), and arity \(s\)) is an \(\mathbb {F}\)-arithmetic circuit with domain \(\mathbb {F}^{n_{\mathsf {msg}}} \times \mathbb {F}^{n_{\mathsf {loc}}} \times \mathbb {F}^{s\cdot n_{\mathsf {msg}}} \times \mathbb {F}\). The compliance predicate \(\Pi \) specifies whether a given transcript \(\mathsf {T}\) is compliant or not, as follows. Consider any transcript \(\mathsf {T}\) with message size \(n_{\mathsf {msg}}\), local-data size \(n_{\mathsf {loc}}\), and arity \(s\). We say that \(\mathsf {T}=(G,\mathsf {loc},\mathsf {data})\) is \(\Pi \)-compliant, denoted \(\Pi (\mathsf {T})=0\), if, for every \(v \in V\) and \(w \in \mathsf {children}(v)\), it holds that

$$\begin{aligned} \Pi \Big (\mathsf {data}(v,w),\mathsf {loc}(v),\big ( \mathsf {data}(u, v) \big )_{u \in \mathsf {parents}(v)},b_{\mathsf {base}}\Big )= 0 , \end{aligned}$$

where \(b_{\mathsf {base}}\in \{0,1\}\) is the base case flag (i.e., equals 1 if and only if v is a source). Furthermore, we say that a message \(z\) is \(\Pi \)-compliant if there is \(\mathsf {T}\) such that \(\Pi (\mathsf {T})=0\) and \(\mathsf {out}(\mathsf {T})=z\).

We are now ready to describe the syntax, semantics, and security of a proof-carrying data system.

Given a field \(\mathbb {F}\), a (preprocessing) proof-carrying data system (PCD system) for \(\mathbb {F}\)-arithmetic compliance predicates is a triple of polynomial-time algorithms \((\mathbb {G} ,\mathbb {P},\mathbb {V})\) working as follows.

  • \(\mathbb {G}(1^{\lambda },\Pi ) \rightarrow (\mathsf {pk}, \mathsf {vk})\). On input a security parameter \(\lambda \) (presented in unary) and an \(\mathbb {F}\)-arithmetic compliance predicate \(\Pi \), the key generator \(\mathbb {G}\) probabilistically samples a proving key \(\mathsf {pk}\) and a verification key \(\mathsf {vk}\). We assume, without loss of generality, that \(\mathsf {pk}\) contains (a description of) the predicate \(\Pi \).

The keys \(\mathsf {pk}\) and \(\mathsf {vk}\) are published as public parameters and can be used, any number of times, to prove/verify \(\Pi \)-compliance of messages.

  • \(\mathbb {P}(\mathsf {pk},z,z_{\mathsf {loc}},\vec {z}_{\mathsf {in}},\vec {\pi }_{\mathsf {in}}) \rightarrow \pi \). On input a proving key \(\mathsf {pk}\), outgoing message \(z\), local data \(z_{\mathsf {loc}}\), and incoming messages \(\vec {z}_{\mathsf {in}}\) with proofs \(\vec {\pi }_{\mathsf {in}}\), the prover \(\mathbb {P}\) outputs a proof \(\pi \) for the statement “\(z\) is \(\Pi \)-compliant”.

  • \(\mathbb {V}(\mathsf {vk}, z, \pi ) \rightarrow b\). On input a verification key \(\mathsf {vk}\), a message \(z\), and a proof \(\pi \), the verifier \(\mathbb {V}\) outputs \(b=1\) if he is convinced by \(\pi \) that \(z\) is \(\Pi \)-compliant.

The triple \((\mathbb {G} ,\mathbb {P},\mathbb {V})\) satisfies the following properties.

Completeness The honest prover can convince the verifier that the output of any compliant transcript is indeed compliant. Namely, for every security parameter \(\lambda \), \(\mathbb {F}\)-arithmetic compliance predicate \(\Pi \), and distributed-computation generator \(S\) (see below),

$$\begin{aligned} \Pr \left[ \begin{array}{c} \Pi (\mathsf {T}) = 0 \\ \mathbb {V}\big (\mathsf {vk},\mathsf {out}(\mathsf {T}),\pi \big ) \ne 1 \end{array} \,\, \Bigg \vert \,\, \begin{array}{c} (\mathsf {pk},\mathsf {vk}) \leftarrow \mathbb {G}(1^{\lambda },\Pi ) \\ (\mathsf {T},\pi ) \leftarrow \mathsf {ProofGen}(S,\mathsf {pk},\mathbb {P}) \end{array} \right] = 0. \end{aligned}$$

Above, \(\mathsf {ProofGen}\) is an interactive protocol between a distributed-computation generator \(S\) and the PCD prover \(\mathbb {P}\), in which both are given the compliance predicate \(\Pi \) and the proving key \(\mathsf {pk}\). Essentially, at every time step, \(S\) chooses to do one of the following actions: add a new unlabeled vertex to the computation transcript so far (this corresponds to adding a new computing node to the computation), label an unlabeled vertex (this corresponds to a choice of local data by a computing node), or add a new labeled edge (this corresponds to a new message from one node to another). In case \(S\) chooses the third action, the PCD prover \(\mathbb {P}\) produces a proof for the \(\Pi \)-compliance of the new message, and adds this new proof as an additional label to the new edge. When \(S\) halts, the interactive protocol outputs the distributed computation transcript \(\mathsf {T}\), as well as \(\mathsf {T}\)’s output and corresponding proof. Intuitively, the completeness property requires that if \(\mathsf {T}\) is compliant with \(\Pi \), then the proof attached to the output (which is the result of dynamically invoking \(\mathbb {P}\) for each message in \(\mathsf {T}\), as \(\mathsf {T}\) was being constructed by \(S\)) is accepted by the verifier.

Succinctness For every security parameter \(\lambda \), \(\mathbb {F}\)-arithmetic predicate \(\Pi \), and \((\mathsf {pk},\mathsf {vk}) \in \mathbb {G}(1^{\lambda },\Pi )\),

  • an honestly-generated proof \(\pi \) has \(O_{\lambda }(1)\) bits;

  • \(\mathbb {V}(\mathsf {vk},z,\pi )\) runs in time \(O_{\lambda }(|z|)\).

Above, \(O_{\lambda }\) hides a (fixed) polynomial factor in \(\lambda \).

Proof of knowledge (and soundness) If the verifier accepts a proof for a message, the prover “knows” a compliant transcript \(\mathsf {T}\) with output \(z\). (Thus, soundness holds). Namely, for every constant \(c>0\) and every polynomial-size adversary A there is a polynomial-size witness extractor \(E\) such that, for every large-enough security parameter \(\lambda \), for every \(\mathbb {F}\)-arithmetic compliance predicate \(\Pi \) of size \(\lambda ^c\),

$$\begin{aligned} \Pr \left[ \begin{array}{c} \mathbb {V}(\mathsf {vk},z,\pi )=1 \\ \Big ( \mathsf {out}(\mathsf {T}) \ne z\;\vee \; \Pi (\mathsf {T}) \ne 0 \Big ) \end{array} \,\, \Bigg \vert \,\, \begin{array}{c} (\mathsf {pk},\mathsf {vk}) \leftarrow \mathbb {G}(1^{\lambda },\Pi ) \\ (z,\pi ) \leftarrow A(\mathsf {pk},\mathsf {vk}) \\ \mathsf {T}\leftarrow E(\mathsf {pk},\mathsf {vk}) \end{array} \right] \le \mathsf {negl}(\lambda ). \end{aligned}$$

Statistical zero knowledge An honestly-generated proof is statistical zero knowledge.Footnote 27 Namely, there is a polynomial-time stateful simulator \(S\) such that, for all stateful distinguishers \(D\), the following two probabilities are negligibly-close:

figure k

where, above, \(\Phi = 1\) if and only if: (i) if \(\vec {\pi }_{\mathsf {in}} = \bot \), then \(\Pi (z,z_{\mathsf {loc}},\vec {z}_{\mathsf {in}},1) = 0\); (ii) if \(\vec {\pi }_{\mathsf {in}} \ne \bot \), then \(\Pi (z,z_{\mathsf {loc}},\vec {z}_{\mathsf {in}},0) = 0\) and, for each corresponding pair \((z_{\mathsf {in}},\pi _{\mathsf {in}})\), \(\mathbb {V}(\mathsf {vk},z_{\mathsf {in}},\pi _{\mathsf {in}})=1\); and (iii) \(D(\pi ) = 1\).

Appendix 5: Scalable \(\text{ zk-SNARK }\)s for Random-Access Machines

At high-level, a \(\text{ zk-SNARK }\) for random-access machines is a cryptographic primitive that provides short and easy-to-verify non-interactive zero-knowledge proofs of knowledge for the correct execution of programs. A public proving key is used to generate proofs, and a public verification key is used to verify them; the two keys are jointly generated once, and can then be used any number of times.

In this work, we seek, and obtain an implementation of, \(\text{ zk-SNARK }\)s that are scalable, i.e., that are:

  • Fully succinct This property requires that a single pair of keys suffices for computations of any (polynomial) size. In particular, the time to generate a key pair is short (i.e., bounded by a fixed polynomial in the security parameter) and so is the key length.

  • Incrementally computable This property requires that proof generation is carried out incrementally, along the original computation, by updating, at each step, a proof of correctness of the computation so far.

Below, we informally define fully-succinct \(\text{ zk-SNARK }\)s for random-access machines, as well as the additional property of incremental computation. We refer the reader to, e.g., [8] for a formal treatment. (Also see Remark 8.4 for a technical comment that applies here too).

A fully-succinct \(\text{ zk-SNARK }\) for random-access machines (see Appendix “Random-Access Machines”) is a triple of polynomial-time algorithms \((G^{\star } ,P^{\star },V^{\star })\) working as follows.

  • \(G^{\star }(1^{\lambda },\mathbf {M}) \rightarrow (\mathsf {pk},\mathsf {vk})\). On input a security parameter \(\lambda \) (presented in unary) and a random-access machine \(\mathbf {M}\), the key generator \(G^{\star }\) probabilistically samples a proving key \(\mathsf {pk}\) and a verification key \(\mathsf {vk}\). We assume, without loss of generality, that \(\mathsf {pk}\) contains (a description of) the machine \(\mathbf {M}\).

The keys \(\mathsf {pk}\) and \(\mathsf {vk}\) are published as public parameters and can be used, any number of times, to prove/verify membership of instances in the language \(\mathcal {L}_{\mathbf {M}}\) of accepting computations on \(\mathbf {M}\) (see Definition 8.2). The key generator \(G^{\star }\) is thus succinct and universal (i.e., it does not depend on the program \(\mathcal {P}\), or even computation size, but only on the machine \(\mathbf {M}\) used to run programs). The keys \(\mathsf {pk}\) and \(\mathsf {vk}\) are used as follows.Footnote 28

  • \(P^{\star }(\mathsf {pk},\mathcal {P},T,\mathcal {G}) \rightarrow \pi \). On input a program \(\mathcal {P}\), time bound \(T\), and auxiliary input \(\mathcal {G}\) such that \(\mathbf {M}(\mathcal {P};\mathcal {G})\) accepts in \(\le T\) steps, the prover \(P^{\star }\) outputs a non-interactive proof \(\pi \) for the statement “ \((\mathcal {P},T) \in \mathcal {L}_{\mathbf {M}}\) ”.

  • \(V^{\star }(\mathsf {vk},\mathcal {P},T,\pi ) \rightarrow b\). On input a program \(\mathcal {P}\), time bound \(T\), and proof \(\pi \), the verifier \(V^{\star }\) outputs \(b=1\) if he is convinced by \(\pi \) that \((\mathcal {P},T) \in \mathcal {L}_{\mathbf {M}}\).

The triple \((G^{\star } ,P^{\star },V^{\star })\) satisfies the following properties.

Completeness The honest prover can convince the verifier for any instance in the language. Namely, for every security parameter \(\lambda \), random-access machine \(\mathbf {M}\), and instance \((\mathcal {P},T) \in \mathcal {L}_{\mathbf {M}}\) with a witness \(\mathcal {G}\),

$$\begin{aligned} \Pr \left[ V^{\star }(\mathsf {vk},\mathcal {P},T,\pi )=1 \,\, \Bigg \vert \,\,\begin{array}{c} (\mathsf {pk},\mathsf {vk}) \leftarrow G^{\star }(1^{\lambda },\mathbf {M}) \\ \pi \leftarrow P^{\star }(\mathsf {pk},\mathcal {P},T,\mathcal {G}) \end{array} \right] = 1. \end{aligned}$$

Succinctness For every security parameter \(\lambda \), random-access machine \(\mathbf {M}\), and \((\mathsf {pk},\mathsf {vk}) \in G^{\star }(1^{\lambda },\mathbf {M})\),

  • an honestly-generated proof \(\pi \) has \(O_{\lambda ,\mathbf {M}}(1)\) bits;

  • \(V^{\star }(\mathsf {vk},\mathcal {P},T,\pi )\) runs in time \(O_{\lambda ,\mathbf {M}}(|\mathcal {P}|+\log T)\).

Above, \(O_{\lambda ,\mathbf {M}}\) hides a (fixed) polynomial factor in \(\lambda \) and \(|\mathbf {M}|\). (In our implementation, \(\lambda ,|\mathbf {M}|\) are constants).

Proof of knowledge (and soundness) If the verifier accepts a proof for a polynomial-size computation, the prover “knows” a witness for the instance. (Thus, soundness holds). Namely, for every constant \(c>0\) and every polynomial-size adversary A there is a polynomial-size witness extractor \(E\) such that, for every large enough security parameter \(\lambda \), for every random-access machine \(\mathbf {M}\),

$$\begin{aligned} \Pr \left[ \begin{array}{c} T\le \lambda ^c \\ V^{\star }(\mathsf {vk},\mathcal {P},T,\pi )=1 \\ \big ((\mathcal {P},T),\mathcal {G}\big ) \notin \mathcal {R}_{\mathbf {M}} \end{array} \,\, \Bigg \vert \,\, \begin{array}{c} (\mathsf {pk},\mathsf {vk}) \leftarrow G^{\star }(1^{\lambda },\mathbf {M}) \\ (\mathcal {P},T,\pi ) \leftarrow A(\mathsf {pk},\mathsf {vk}) \\ \mathcal {G}\leftarrow E(\mathsf {pk},\mathsf {vk}) \end{array} \right] \le \mathsf {negl}(\lambda ). \end{aligned}$$

Statistical zero knowledge An honestly-generated proof is statistical zero knowledge.Footnote 29 Namely, there is a polynomial-time stateful simulator \(S\) such that, for all stateful distinguishers \(D\), the following two probabilities are negligibly-close:

figure l

Finally, a fully-succinct \(\text{ zk-SNARK }\) is also incrementally computable if there exist two algorithms, a computation supervisor \(\mathsf {SV}\) and a sub-prover \(\mathsf {SP}\), such that, for every security parameter \(\lambda \), random-access machine \(\mathbf {M}\), instance \((\mathcal {P},T) \in \mathcal {L}_{\mathbf {M}}\) with a witness \(\mathcal {G}= (g_{0},\dots ,g_{T-1})\), key pair \((\mathsf {pk},\mathsf {vk}) \in G^{\star }(1^{\lambda },\mathbf {M})\), and letting \(\pi _{T} := P^{\star }(\mathsf {pk},\mathcal {P},T,\mathcal {G})\), the following holds.

  • For \(i=1,\dots ,T\), \(\pi _{i} = \mathsf {SP}(\mathsf {pk},\mathsf {aux}_{i},\pi _{i-1})\).

  • For \(i=1,\dots ,T\), \(\mathsf {aux}_{i}\) is the final state of memory when \(\mathsf {SV}(\mathbf {M},g_{i})\) has read-write random access to a memory initialized to the state \(\mathsf {aux}_{i-1}\). Moreover, each \(\mathsf {aux}_{i}\) has size \(O_{\lambda ,\mathbf {M}}(S_{i})\), where \(S_{i}\) is the space usage of \(\mathbf {M}(\mathcal {P};\mathcal {G})\) at time i.Footnote 30

  • The proof \(\pi _{0}\) is defined as \(\bot \), and \(\mathsf {aux}_{0}\) as \(\mathcal {P}\).

In particular, \(\mathsf {SV}\) and \(\mathsf {SP}\) have time and space complexity \(O_{\lambda ,\mathbf {M}}(1)\); these costs are incurred each time a new proof is generated from an old one.

1.1 Known Constructions and Security

Theoretical constructions of fully-succinct \(\text{ zk-SNARK }\)s are known, based on various cryptographic assumptions [8, 74, 109]. Despite achieving essentially-optimal asymptotics [8, 12, 13, 20, 23] no implementations of them have been reported in the literature to date.

Of the above, the only approach that also achieves incremental computation is the one of Bitansky et al. [8], which we follow in this paper. Security in [8] is based on the security of preprocessing \(\text{ zk-SNARK }\)s (see Appendix “Known Constructions and Security”) and collision-resistant hash functions.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Ben-Sasson, E., Chiesa, A., Tromer, E. et al. Scalable Zero Knowledge Via Cycles of Elliptic Curves. Algorithmica 79, 1102–1160 (2017). https://doi.org/10.1007/s00453-016-0221-0

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00453-016-0221-0

Keywords

Navigation