Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3460120.3484795acmconferencesArticle/Chapter ViewAbstractPublication PagesccsConference Proceedingsconference-collections
research-article
Public Access

Zero Knowledge Static Program Analysis

Published: 13 November 2021 Publication History

Abstract

Static program analysis tools can automatically prove many useful properties of programs. However, using static analysis to prove to a third party that a program satisfies a property requires revealing the program's source code. We introduce the concept of zero-knowledge static analysis, in which the prover constructs a zero-knowledge proof about the outcome of the static analysis without revealing the program. We present novel zero-knowledge proof schemes for intra- and inter-procedural abstract interpretation. Our schemes are significantly more efficient than the naive translation of the corresponding static analysis algorithms using existing schemes. We evaluate our approach empirically on real and synthetic programs; with a pairing-based zero knowledge proof scheme as the backend, we are able to prove the control flow analysis on a 2,000-line program in 1,738s. The proof is only 128 bytes and the verification time is 1.4ms. With a transparent zero knowledge proof scheme based on discrete-log, we generate the proof for the tainting analysis on a 12,800-line program in 406 seconds, the proof size is 282 kilobytes, and the verification time is 66 seconds.

Supplementary Material

MP4 File (video1499141727.mp4)
This is a brief 2-minute introduction to our zero-knowledge static program analysis.

References

[1]
[n.d.]. Buffet. https://github.com/pepper-project/releases.
[2]
[n.d.]. California Consumer Privacy Act (CCPA). https://oag.ca.gov/privacy/ccpa.
[3]
[n.d.]. Children's Online Privacy Protection Rule ("COPPA"). https://www.ftc.gov/enforcement/rules/rulemaking-regulatory-reform-proceedings/childrens-online-privacy-protection-rule.
[4]
[n.d.]. DroidBench 2.0. https://github.com/secure-software-engineering/DroidBench. Accessed: 2020--12-03.
[5]
[n.d.]. General Data Protection Regulation (GDPR) - Official Legal Text. https://gdpr-info.eu/.
[6]
[n.d.]. Health Insurance Portability and Accountability Act of 1996. https://www.hhs.gov/hipaa/index.html.
[7]
[n.d.]. Pequin: An end-to-end toolchain for verifiable computation, SNARKs, and probabilistic proofs. https://github.com/pepper-project/pequin. Accessed: 2020--12-03.
[8]
[n.d.]. Reachability. https://github.com/ilyasergey/reachability.
[9]
[n.d.]. WCET Project Benchmarks. http://www.mrtc.mdh.se/projects/wcet/benchmarks.html. Accessed: 2020--12-03.
[10]
2014. libsnark: a C++ library for zkSNARK proofs. https://github.com/scipr-lab/libsnark.
[11]
Scott Ames, Carmit Hazay, Yuval Ishai, and Muthuramakrishnan Venkitasubramaniam. 2017. Ligero: Lightweight sublinear arguments without a trusted setup. In Proceedings of the ACM SIGSAC Conference on Computer and Communications Security.
[12]
Stephanie Bayer and Jens Groth. 2012. Efficient zero-knowledge argument for correctness of a shuffle. In Annual International Conference on the Theory and Applications of Cryptographic Techniques. Springer, 263--280.
[13]
Eli Ben-Sasson, Iddo Bentov, Yinon Horesh, and Michael Riabzev. 2019. Scalable zero knowledge with no trusted setup. In Annual International Cryptology Conference. Springer, 701--732.
[14]
Eli Ben-Sasson, Alessandro Chiesa, Daniel Genkin, Eran Tromer, and Madars Virza. [n.d.]. SNARKs for C: Verifying program executions succinctly and in zero knowledge. In CRYPTO 2013.
[15]
Eli Ben-Sasson, Alessandro Chiesa, Michael Riabzev, Nicholas Spooner, Madars Virza, and Nicholas P. Ward. 2019. Aurora: Transparent Succinct Arguments for R1CS. In Advances in Cryptology -- EUROCRYPT 2019. Springer International Publishing, 103--128. https://doi.org/10.1007/978--3-030--17653--2_4
[16]
Eli Ben-Sasson, Alessandro Chiesa, Eran Tromer, and Madars Virza. [n.d.]. Succinct Non-Interactive Zero Knowledge for a von Neumann Architecture. In Proceedings of the USENIX Security Symposium, 2014.
[17]
Eli Ben-Sasson, Alessandro Chiesa, Eran Tromer, and Madars Virza. 2014. Scalable zero knowledge via cycles of elliptic curves. In CRYPTO 2014. 276--294.
[18]
Manuel Blum, Will Evans, Peter Gemmell, Sampath Kannan, and Moni Naor. 1994. Checking the correctness of memories. Algorithmica 12, 2--3 (1994), 225--244.
[19]
Jonathan Bootle, Andrea Cerulli, Pyrros Chaidos, Jens Groth, and Christophe Petit. 2016. Efficient zero-knowledge arguments for arithmetic circuits in the discrete log setting. In International Conference on the Theory and Applications of Cryptographic Techniques.
[20]
Jonathan Bootle, Andrea Cerulli, Essam Ghadafi, Jens Groth, Mohammad Hajiabadi, and Sune K Jakobsen. 2017. Linear-time zero-knowledge proofs for arithmetic circuit satisfiability. In International Conference on the Theory and Application of Cryptology and Information Security. Springer, 336--365.
[21]
Jonathan Bootle, Andrea Cerulli, Jens Groth, Sune Jakobsen, and Mary Maller. 2018. Arya: Nearly linear-time zero-knowledge proofs for correct program execution. In International Conference on the Theory and Application of Cryptology and Information Security. Springer, 595--626.
[22]
Benjamin Braun, Ariel J. Feldman, Zuocheng Ren, Srinath T. V. Setty, Andrew J. Blumberg, and Michael Walfish. [n.d.]. Verifying computations with state. In ACM SIGOPS 24th Symposium on Operating Systems Principles, SOSP, 2013.
[23]
B. Bünz, J. Bootle, D. Boneh, A. Poelstra, P. Wuille, and G. Maxwell. [n.d.]. Bulletproofs: Short Proofs for Confidential Transactions and More. In Proceedings of the Symposium on Security and Privacy (SP), 2018, Vol. 00. 319--338.
[24]
Matteo Campanelli, Dario Fiore, and Anaïs Querol. [n.d.]. LegoSNARK: Modular Design and Composition of Succinct Zero-Knowledge Proofs. In CCS 2019.
[25]
Alessandro Chiesa, Yuncong Hu, Mary Maller, Pratyush Mishra, Noah Vesely, and Nicholas Ward. 2020. Marlin: Preprocessing zksnarks with universal and updatable srs. In Annual International Conference on the Theory and Applications of Cryptographic Techniques. Springer, 738--768.
[26]
Byron Cook, Andreas Podelski, and Andrey Rybalchenko. 2006. Terminator: Beyond Safety. In Computer Aided Verification, Thomas Ball and Robert B. Jones (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 415--418.
[27]
Craig Costello, Cédric Fournet, Jon Howell, Markulf Kohlweiss, Benjamin Kreuter, Michael Naehrig, Bryan Parno, and Samee Zahur. [n.d.]. Geppetto: Versatile Verifiable Computation. In S&P 2015.
[28]
P. Cousot. 1999. The Calculational Design of a Generic Abstract Interpreter. In Calculational System Design, M. Broy and R. Steinbrüggen (Eds.). NATO ASI Series F. IOS Press, Amsterdam.
[29]
P. Cousot and R. Cousot. 1976. Static determination of dynamic properties of programs. In Proceedings of the Second International Symposium on Programming. Dunod, Paris, France, 106--130.
[30]
P. Cousot and R. Cousot. 1977. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Conference Record of the Fourth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press, New York, NY, Los Angeles, California, 238--252.
[31]
P. Cousot and R. Cousot. 1979. Systematic design of program analysis frameworks. In Conference Record of the Sixth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press, New York, NY, San Antonio, Texas, 269--282.
[32]
P. Cousot and R. Cousot. 1992. Inductive Definitions, Semantics and Abstract Interpretation. In Conference Record of the Ninthteenth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press, New York, NY, Albuquerque, New Mexico, 83--94.
[33]
Patrick Cousot and Radhia Cousot. 2014. A Galois connection calculus for abstract interpretation. In The 41st Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL '14, San Diego, CA, USA, January 20--21, 2014, Suresh Jagannathan and Peter Sewell (Eds.). ACM, 3--4.
[34]
P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Miné, D. Monniaux, and X. Rival. 2005. The ASTRÉE Analyser. In Proceedings of the European Symposium on Programming (ESOP'05) (Lecture Notes in Computer Science, Vol. 3444), M. Sagiv (Ed.). ©Springer, Edinburgh, Scotland, 21--30.
[35]
Cynthia Dwork, Frank McSherry, Kobbi Nissim, and Adam Smith. 2006. Calibrating noise to sensitivity in private data analysis. In Theory of cryptography conference. Springer, 265--284.
[36]
Christian Ferdinand and Reinhold Heckmann. 2004. aiT: Worst-Case Execution Time Prediction by Static Program Analysis. In Building the Information Society, Renè Jacquart (Ed.). Springer US, Boston, MA, 377--383.
[37]
Dario Fiore, Cédric Fournet, Esha Ghosh, Markulf Kohlweiss, Olga Ohrimenko, and Bryan Parno. 2016. Hash first, argue later: Adaptive verifiable computations on outsourced data. In Proceedings of the ACM SIGSAC Conference on Computer and Communications Security.
[38]
Robert W Floyd. 1993. Assigning meanings to programs. In Program Verification. Springer, 65--81.
[39]
Shafi Goldwasser, Silvio Micali, and Charles Rackoff. 1989. The knowledge complexity of interactive proof systems. SIAM Journal on computing 18, 1 (1989), 186--208.
[40]
Eric Goubault and Sylvie Putot. 2013. Robustness Analysis of Finite Precision Implementations. In Programming Languages and Systems, Chung-chieh Shan (Ed.). Springer International Publishing, Cham, 50--57.
[41]
Jens Groth. 2009. Linear algebra with sub-linear zero-knowledge arguments. In Advances in Cryptology-CRYPTO 2009. Springer, 192--208.
[42]
Jens Groth. 2016. On the Size of Pairing-Based Non-interactive Arguments. In Advances in Cryptology - EUROCRYPT 2016 - 35th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Vienna, Austria, May 8--12, 2016, Proceedings, Part II. 305--326.
[43]
David Heath and Vladimir Kolesnikov. 2020. Stacked garbling for disjunctive zero-knowledge proofs. In Annual International Conference on the Theory and Applications of Cryptographic Techniques. Springer, 569--598.
[44]
Charles Antony Richard Hoare. 1969. An axiomatic basis for computer programming. Commun. ACM 12, 10 (1969), 576--580.
[45]
Yungbum Jung, Jaehwang Kim, Jaeho Shin, and Kwangkeun Yi. 2005. Taming False Alarms from a Domain-Unaware c Analyzer by a Bayesian Statistical Post Analysis. In Proceedings of the 12th International Conference on Static Analysis (London, UK) (SAS'05). Springer-Verlag, Berlin, Heidelberg, 203--217. https://doi.org/10.1007/11547662_15
[46]
John B Kam and Jeffrey D Ullman. 1976. Global data flow analysis and iterative algorithms. Journal of the ACM (JACM) 23, 1 (1976), 158--171.
[47]
Ken Kennedy. 1979. A survey of data flow analysis techniques. IBM Thomas J. Watson Research Division.
[48]
Gary A Kildall. 1973. A unified approach to global program optimization. In Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages. 194--206.
[49]
Joe Kilian. 1992. A Note on Efficient Zero-Knowledge Proofs and Arguments (Extended Abstract). In Proceedings of the ACM Symposium on Theory of Computing.
[50]
James C King. 1976. Symbolic execution and program testing. Commun. ACM 19, 7 (1976), 385--394.
[51]
Paul Kocher, Jann Horn, Anders Fogh, Daniel Genkin, Daniel Gruss, Werner Haas, Mike Hamburg, Moritz Lipp, Stefan Mangard, Thomas Prescher, Michael Schwarz, and Yuval Yarom. 2019. Spectre Attacks: Exploiting Speculative Execution. In 40th IEEE Symposium on Security and Privacy (S&P'19).
[52]
Moritz Lipp, Michael Schwarz, Daniel Gruss, Thomas Prescher, Werner Haas, Anders Fogh, Jann Horn, Stefan Mangard, Paul Kocher, Daniel Genkin, Yuval Yarom, and Mike Hamburg. 2018. Meltdown: Reading Kernel Memory from User Space. In 27th USENIX Security Symposium (USENIX Security 18).
[53]
Mary Maller, Sean Bowe, Markulf Kohlweiss, and Sarah Meiklejohn. 2019. Sonic: Zero-knowledge SNARKs from linear-size universal and updatable structured reference strings. In Proceedings of the 2019 ACM SIGSAC Conference on Computer and Communications Security. 2111--2128.
[54]
Silvio Micali. 2000. Computationally Sound Proofs. SIAM J. Comput. (2000).
[55]
Jan Midtgaard and Thomas Jensen. 2008. A Calculational Approach to Control-Flow Analysis by Abstract Interpretation. In Static Analysis, María Alpuente and Germán Vidal (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 347--362.
[56]
Flemming Nielson, Hanne R. Nielson, and Chris Hankin. 2010. Principles of Program Analysis. Springer Publishing Company, Incorporated.
[57]
Bryan Parno, Jon Howell, Craig Gentry, and Mariana Raykova. 2013. Pinocchio: Nearly practical verifiable computation. In S&P 2013. 238--252.
[58]
David Pichardie. 2005. Interprétation abstraite en logique intuitionniste : extraction d'analyseurs Java certifiés. Ph.D. Dissertation. Université Rennes 1. In french.
[59]
Polyspace Code Prover. 2014. Static Analysis with Polyspace Products. Mathworks, June (2014).
[60]
Jacob T Schwartz. 1979. Probabilistic algorithms for verification of polynomial identities. In International Symposium on Symbolic and Algebraic Manipulation. Springer, 200--215.
[61]
Srinath Setty. 2020. Spartan: Efficient and general-purpose zkSNARKs without trusted setup. In Annual International Cryptology Conference. Springer, 704--737.
[62]
Srinath Setty, Sebastian Angel, Trinabh Gupta, and Jonathan Lee. 2018. Proving the correct execution of concurrent services in zero-knowledge. In 13th USENIX Symposium on Operating Systems Design and Implementation (OSDI 18). 339--356.
[63]
Olin Grigsby Shivers. 1991. Control-Flow Analysis of Higher-Order Languages of Taming Lambda. Ph.D. Dissertation. USA. UMI Order No. GAX91--26964.
[64]
Julien Signoles, Pascal Cuoq, Florent Kirchner, Nikolai Kosmatov, Virgile Prevosto, and Boris Yakobowski. 2012. Frama-c: a Software Analysis Perspective. Formal Aspects of Computing 27. https://doi.org/10.1007/s00165-014-0326--7
[65]
Arnaud Venet and Guillaume Brat. 2004. Precise and Efficient Static Array Bound Checking for Large Embedded C Programs. SIGPLAN Not. 39, 6 (June 2004), 231--242. https://doi.org/10.1145/996893.996869
[66]
Riad S. Wahby, Srinath T. V. Setty, Zuocheng Ren, Andrew J. Blumberg, and Michael Walfish. 2015. Efficient RAM and control flow in verifiable outsourced computation. In 22nd Annual Network and Distributed System Security Symposium, NDSS 2015, San Diego, California, USA, February 8--11, 2015.
[67]
Riad S Wahby, Ioanna Tzialla, Abhi Shelat, Justin Thaler, and Michael Walfish. 2018. Doubly-efficient zkSNARKs without trusted setup. In 2018 IEEE Symposium on Security and Privacy (SP). IEEE, 926--943.
[68]
Guannan Wei, Yuxuan Chen, and Tiark Rompf. 2019. Staged Abstract Interpreters. (2019).
[69]
Tiacheng Xie, Jiaheng Zhang, Yupeng Zhang, Charalampos Papamanthou, and Dawn Song. 2019. Libra: Succinct Zero-Knowledge Proofs with Optimal Prover Computation. In Advances in Cryptology (CRYPTO).
[70]
Jiaheng Zhang, Tiancheng Xie, Yupeng Zhang, and Dawn Song. [n.d.]. Transparent Polynomial Delegation and Its Applications to Zero Knowledge Proof. In S&P 2020.
[71]
Yupeng Zhang, Daniel Genkin, Jonathan Katz, Dimitrios Papadopoulos, and Charalampos Papamanthou. 2017. vSQL: Verifying arbitrary SQL queries over dynamic outsourced databases. In Security and Privacy (SP), 2017 IEEE Symposium on. IEEE, 863--880.
[72]
Yupeng Zhang, Daniel Genkin, Jonathan Katz, Dimitrios Papadopoulos, and Charalampos Papamanthou. 2017. A Zero-Knowledge Version of vSQL. Cryptology ePrint.
[73]
Yupeng Zhang, Daniel Genkin, Jonathan Katz, Dimitrios Papadopoulos, and Charalampos Papamanthou. 2018. vRAM: Faster verifiable RAM with program-independent preprocessing. In Proceeding of IEEE Symposium on Security and Privacy (S&P).
[74]
Richard Zippel. 1979. Probabilistic algorithms for sparse polynomials. In International Symposium on Symbolic and Algebraic Manipulation. Springer, 216--226.

Cited By

View all
  • (2024)PP-CSA: Practical Privacy-Preserving Software Call Stack AnalysisProceedings of the ACM on Programming Languages10.1145/36498568:OOPSLA1(1264-1293)Online publication date: 29-Apr-2024
  • (2024)Static program analysis for IoT risk mitigation in space-air-ground integrated networksSecurity and Safety10.1051/sands/20240073(2024007)Online publication date: 30-Apr-2024
  • (2023)CheeseclothProceedings of the 32nd USENIX Conference on Security Symposium10.5555/3620237.3620602(6525-6540)Online publication date: 9-Aug-2023
  • Show More Cited By

Index Terms

  1. Zero Knowledge Static Program Analysis

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    CCS '21: Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security
    November 2021
    3558 pages
    ISBN:9781450384544
    DOI:10.1145/3460120
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 13 November 2021

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. static program analysis
    2. zero knowledge proofs

    Qualifiers

    • Research-article

    Funding Sources

    • DARPA

    Conference

    CCS '21
    Sponsor:
    CCS '21: 2021 ACM SIGSAC Conference on Computer and Communications Security
    November 15 - 19, 2021
    Virtual Event, Republic of Korea

    Acceptance Rates

    Overall Acceptance Rate 1,261 of 6,999 submissions, 18%

    Upcoming Conference

    CCS '24
    ACM SIGSAC Conference on Computer and Communications Security
    October 14 - 18, 2024
    Salt Lake City , UT , USA

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)396
    • Downloads (Last 6 weeks)49
    Reflects downloads up to 22 Sep 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)PP-CSA: Practical Privacy-Preserving Software Call Stack AnalysisProceedings of the ACM on Programming Languages10.1145/36498568:OOPSLA1(1264-1293)Online publication date: 29-Apr-2024
    • (2024)Static program analysis for IoT risk mitigation in space-air-ground integrated networksSecurity and Safety10.1051/sands/20240073(2024007)Online publication date: 30-Apr-2024
    • (2023)CheeseclothProceedings of the 32nd USENIX Conference on Security Symposium10.5555/3620237.3620602(6525-6540)Online publication date: 9-Aug-2023
    • (2023)Less is more: refinement proofs for probabilistic proofs2023 IEEE Symposium on Security and Privacy (SP)10.1109/SP46215.2023.10179393(1112-1129)Online publication date: May-2023
    • (2022)Proving UNSAT in Zero KnowledgeProceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security10.1145/3548606.3559373(2203-2217)Online publication date: 7-Nov-2022
    • (2022)Simulink Model Static Analysis Results based on Abstract Interpretation2022 9th International Conference on Dependable Systems and Their Applications (DSA)10.1109/DSA56465.2022.00087(605-614)Online publication date: Aug-2022
    • (2022)Orion: Zero Knowledge Proof with Linear Prover TimeAdvances in Cryptology – CRYPTO 202210.1007/978-3-031-15985-5_11(299-328)Online publication date: 15-Aug-2022
    • (undefined)RNA: R1CS Normalization Algorithm Based on Data Flow Graphs for Zero-Knowledge ProofsFormal Aspects of Computing10.1145/3665339

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media