Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/trailofbits/reverie

An efficient and generalized implementation of the IKOS-style KKW proof system (https://eprint.iacr.org/2018/475) for arbitrary rings.
https://github.com/trailofbits/reverie

blake3 crypto cryptography nizk rust-lang zk zkproof-prover

Last synced: 7 days ago
JSON representation

An efficient and generalized implementation of the IKOS-style KKW proof system (https://eprint.iacr.org/2018/475) for arbitrary rings.

Awesome Lists containing this project

README

        

# Reverie

An efficient implementation of the NIZKPoK outlined in KKW 2018

[![CI](https://github.com/trailofbits/reverie/actions/workflows/ci.yml/badge.svg)](https://github.com/trailofbits/reverie/actions/workflows/ci.yml)

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](https://eprint.iacr.org/2018/475).
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`

```console
time RUSTFLAGS="-C target-cpu=native -C target-feature=+aes,+ssse3,+sse2" cargo run --release
```

Or even better with `AVX2+AESNI`

```console
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](https://gist.github.com/rot256/174fd53c0aac8cf04ef9810e8a10b0c0) for details).
- Switch to AES with AESNI
- Just-in-time preprocessing to condense proving into a single pass