Awesome
shol'va <img src="https://user-images.githubusercontent.com/3059210/147595717-ec80740c-d4eb-4dd5-972a-d57c228c042d.png" width="48">
<!-- Icon attribution: Mikla, https://commons.wikimedia.org/wiki/File:Apophis_Symbol_(Stargate).svg -->shol'va is a tool for generating zero knowledge proofs of program execution, composed of
- mttn: an instruction-resolution program tracer
- tiny86: a Verilog and Clash trace verifier circuit
Usage
Note: shol'va does native tracing X86 Linux programs, and as a result is strictly limited to that architecture.
Dependencies
sholva
is built using nix.
It is recommended to use the Determinate Systems installer:
$ curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
Building
mttn
$ nix build .#mttn
This builds:
bin/mttn
: tracer binarytraces/*.trace.txt
: self-test tracing results
Enter a shell with development dependencies:
$ cd mttn
$ nix develop .#mttn
Manual testing:
# build all the of the test binaries
$ make -C test elfs
# run the mttn self-tests
$ cargo test
tiny86
$ nix build .#tiny86
This builds:
circuit/tiny86.blif
: synthesized circuit
Enter a shell with development dependencies:
$ cd tiny86
$ nix develop .#tiny86
Manual testing:
# test the full Tiny86 circuit test suite
$ make _test-tiny86
# test the Tiny86 circuit Clash components Haskell source
$ make _test-clash
# test the Tiny86 circuit Verilog components
$ make _test-verilog
# test the Tiny86 circuit Verilog components, isolating modules
$ SHOLVA_MODULES="alu syscall" make _test-verilog
# test the manual end-to-end test suite
$ make _test-pipeline
sv_circuit
$ nix build .#sv_circuit
This builds the sv-compositor
binary, which takes a BLIF file (defining a single step of Tiny86)
and trace artifacts as input and yields proof artifacts
(currently, a SIEVE IR0 circuit, public input, and private input) as output.
Enter a shell with development dependencies:
$ cd sv_circuit
$ nix develop .#sv_circuit
Manual testing (from the development environment):
$ cargo test
Exploit Modeling
Uses a provided jdk build cross-compiled to 80386.
Distribution and Licensing
This research was developed with funding from the Defense Advanced Research Projects Agency (DARPA) under Agreement No. HR001120C0084.
The views, opinions, and/or findings expressed are those of the author(s) and should not be interpreted as representing the official views or policies of the Department of Defense or the U.S. Government.
DISTRIBUTION STATEMENT A: Approved for public release, distribution unlimited.
shol'va is licensed under the GNU AGPLv3 License. A copy of the terms can be found in the LICENSE file.