#zero-knowledge #zk #signature #crypto

nightly bin+lib reverie-zk

KKW 2018 中概述的 NIZKPoK 的有效实现

3 个不稳定版本

0.3.2 2022 年 11 月 1 日
0.2.1-rc.42021 年 4 月 6 日
0.2.1-rc.32020 年 12 月 3 日

#1697 in 密码学

AGPL-3.0

145KB
4K SLoC

Reverie

KKW 2018 中概述的 NIZKPoK 的有效实现

CI

Reverie 是 Improved Non-Interactive Zero Knowledge with Applications to Post-Quantum Signatures 中概述的 MPC-in-the-head NIZKPoK 的实现(证明器和验证器)。Reverie 旨在为复杂的谓词提供具体的证明效率(线性证明时间,常数较小)。实现旨在提供 128 位的(经典)安全性,并支持任意环,最有效的是 Z2 和 Z64

Reverie 提供了一个库(具有简化和流式接口),以及一个 CLI 程序,用于证明/验证在 Bristol 格式指定的语句,以方便实验。

运行

Reverie 需要相对较新的 nightly Rust。

使用 SSE+AESNI

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

或者更好的是使用 AVX2+AESNI

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

0.3+ 的改进

  • 将 8 个玩家在 GF(2) 上的 8 个实例打包成一个 64 位整数(详细信息请见 gist)。
  • 切换到 AESNI 中的 AES
  • 即时预处理以将证明压缩成单次通过

依赖项

~20–31MB
~584K SLoC