GitHub - trailofbits/reverie: An efficient and generalized implementation of the...
source link: https://github.com/trailofbits/reverie
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Reverie
An efficient implementation of the NIZKPoK outlined in KKW 2018
Reverie is an implementation (prover and verifier) of the MPC-in-the-head NIZKPoK outlined in Improved Non-Interactive Zero Knowledge with Applications to Post-Quantum Signatures. Reverie seeks to offer concrete prover efficiency (linear proving time with small constants) for complex predicates. The implementation seeks to offer 128-bits of (classical) security and support arbitrary rings, most efficiently Z2 and Z64.
Reverie provides both a library (with a simplified and a streaming interface), in addition to a CLI program for proving/verifying statements specified in Bristol format to enable easy experimentation.
Running
Reverie requires a relatively recent nightly
Rust.
Using SSE+AESNI
time RUSTFLAGS="-C target-cpu=native -C target-feature=+aes,+ssse3,+sse2" cargo run --release
Or even better with AVX2+AESNI
time RUSTFLAGS="-C target-cpu=native -C target-feature=+aes,+ssse3,+sse2,+avx2" cargo run --release
Improvements in 0.3+
- Pack 8 instances of 8 players over GF(2) into a single 64-bit integer (see gist for details).
- Switch to AES with AESNI
- Just-in-time preprocessing to condense proving into a single pass
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK