2个版本
0.1.2 | 2022年11月17日 |
---|---|
0.1.1 | 2022年11月17日 |
#2411 in 密码学
98KB
2K SLoC
零知识Paillier
此库包含用Rust编写的Paillier密码系统零知识证明的集合。每个证明可以作为独立的证明使用,但通常它将作为另一个协议的一部分使用。对于每个证明,我们在注释中说明所需的安全假设。请注意,需要比DCRA(Paillier密码系统使用的假设)更多假设的证明。
当前实现的证明
- 证明密文加密了零
- 证明知道明文(密文的正确性)
- 证明正确生成Paillier密钥对
- 非交互式正确生成Paillier密钥对的证明
- Paillier密文位于区间[0,q]的证明
- 非交互式Paillier密文位于区间[0,q]的证明
- 正确打开密文的证明
- 证明密文加密了来自给定消息空间的消息
- 复合模数的离散对数知识的不变性证明
- 非交互式明文乘法证明:密文
e_a = Enc(a), e_b = Enc(b), e_c = Enc(c)
满足ab = c mod n
- 非交互式多个已知密文明文之间的线性关系证明
用法
目前没有统一的API,请参考每个证明附带的测试用例以获取示例用法。
遗产
《Rust-paillier》最初是一个库,实现了基本的Paillier加密系统,主要贡献者来自Snips。受到KZen对Paillier零知识证明的需求的推动,原始库被分叉,并添加了另一层的证明。随着越来越多的zk证明被添加,我们意识到基础Paillier加密系统层已经达到稳定状态,只需偶尔进行一些小改动,而另一层的zk证明则以更快的速度发展,代码应被视为更实验性的。在这个阶段,我们决定将库分为基础层(rust-paillier)和zk-paillier,这是当前的库。
最后,我们想感谢Morten Dahl,他是rust-paillier的负责人和KZen顾问。还要感谢Pascal Paillier。
开发过程
Rust工具wiki包含关于工作流程和环境设置的信息。.
请随时联系或加入KZen Research的Telegram群组,以讨论代码和研究。
许可证
zk-paillier在GPL-3.0许可证下发布。有关更多信息,请参阅LICENSE。
联系方式
依赖关系
~12MB
~217K SLoC