3 个不稳定版本
0.3.2 | 2022 年 11 月 1 日 |
---|---|
0.2.1-rc.4 | 2021 年 4 月 6 日 |
0.2.1-rc.3 | 2020 年 12 月 3 日 |
#1697 in 密码学
145KB
4K SLoC
Reverie
KKW 2018 中概述的 NIZKPoK 的有效实现
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