Securing Information for Encrypted Verification and Evaluation (SIEVE)
Develop computer science theory and software to create mathematically verifiable public statements derived from hidden, sensitive information in order to publically yet securely communicate about DoD capabilities.
Enable verification while keeping secrets
How it's done today and why it matters to DoD
Currently, sensitive information must be revealed in order to prove assertions in the real world. SIEVE will enable a fundamental change in capability in three key areas:
Statements about software
Prove that a system is vulnerable without ever revealing the vulnerability/exploit
Statements about computation
(Algorithm) Proving data provenance without ever revealing its source or how it was processed
(Inputs) Prove that a machine learning classifier was created following appropriate regulations without ever revealing any of the training data
Statements about socio-technical interactions
Prove that the North Koreans have exploited a particular system without ever revealing USG intelligence on North Korean capabilities
Challenge: Efficient ZK Proofs for Complex Problem Statements
Note: not interested in Succinctness in DARPA, really cares about what can describe that would be amenable to a zero knowledge proof.
SIEVE Program Vision
Proof of Exploit in MSP430 microcontroller (Binary) (ZKPoE)
Demonstration built on microcorruption CTF challenge. Proved that team could unlock a smart lock without showing how.
Demonstrated the protected disclosure for a wide variety of common vulnerabilities binaries, including stack and heap overflows, code injection, format string vulnerabil bypassing memory protections such as DEP and ASLR.
Exploits taken from http://microcorruption.com/
For more on approach, see https://blog.trailofbits.com/2020/05/21/reinventing-vulnerabilitydisclosure-using-zero-knowledge-proofs/
Proof of Exploit in C Code (Source)
Vulnerable program: Image file converter in GameBoy Advance 11 k lines of C++ code
Demonstrate the vulnerability: Concrete simulation of program (LLVM), identifying illegal memory access as it occurs
Prove it in Zero Knowledge:
Prover proves she ran a consistent execution of program... With this specific input...
Resulting in this specific error condition......
Without revealing the input used or anything about program flow
Protocol Statistics: 57M multiplications, 9GB memory, 9 minutes to prove, 8 minutes to verify
Implications of the proof: A correct compiler C/C++ can legally compile the program to a binary that, given the input, could do anything (including executing attacker-provided code)
Exploring Potential Uses of ZKP in Legal Settings
Challenges:
Explain the basic idea to a legal audience (highly sophisticated but non-technical):
Tie down (or at least expose) loose ends:
What is the public input? the witness? the statement? Who decides?
How to connect the bits to the real world? To the ground truth?
Need to encode complex decision processes ahead of time, cover all cases
Single Prover vs. Many Provers (witness split across parties)
Who would initiate the use of ZK? Who would vet it? (the parties? The court?)
Promise:
Make law more efficient
Allow for greater privacy and greater accountability
Allow for new & nimble (expressive, precise) legal tradeoffs between verification and exposure
New legal landscape: Co-design of law and technology
New legal landscape: Co-design of law and technology
For more, see: "Verification Dilemmas, Law, and the Promise of Zero-Knowledge Proofs" Kenneth Bamberger, Ran Canetti, Shafi Goldwasser, Rebecca Wexler, Evan Zimmerman (To appear in Berkeley Technology Law Journal, Vol. 37, No. 1, 2022)