GithubHelp home page GithubHelp logo

trailofbits / reverie Goto Github PK

View Code? Open in Web Editor NEW
58.0 28.0 5.0 1.65 MB

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

Home Page: https://crates.io/crates/reverie-zk

License: GNU Affero General Public License v3.0

Rust 100.00%
zk rust-lang cryptography crypto nizk blake3 zkproof-prover

reverie's Introduction

Reverie

An efficient implementation of the NIZKPoK outlined in KKW 2018

CI

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

reverie's People

Contributors

blperez01 avatar dependabot-preview[bot] avatar dependabot[bot] avatar gijsvl avatar rot256 avatar woodruffw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reverie's Issues

Run `cargo fmt` in the CI

This is blocked on moving to a stable release, since nightly toolchains aren't guaranteed to have rustfmt available as a component.

Use a workspace structure for reverie and the companion

The reverie repository itself currently has a single top-level Cargo.toml for the reverie library. The companion is tucked away in the companion/ subdirectory, with its own Cargo.toml.

We should restructure the repository to use cargo workspaces. That'll allow us to unify our dependencies and publish both reverie and the companion to crates.io.

Compile with a stable Rust

We should aim to support compilation and use with a stable Rust release, to avoid encountering nightly bugs and depending on unstable APIs.

Some items that need to be handled:

  • Reverie currently uses the unstable std::test and #[bench]. We should probably use criterion instead.
  • Reverie uses #[feature(stdsimd)] since the MMX intrinsics were never stabilized. Once they're removed in favor of SSE2 and AVX2, we can remove this #[feature]. (#4)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.