15 个版本

0.1.0 2024年5月24日
0.0.1 2024年2月2日
0.0.1-beta62024年1月30日
0.0.1-beta12023年12月27日
0.0.1-alpha22023年8月31日

#741 in 密码学

MIT/Apache

130KB
2K SLoC

尼姆:一个 Fiat-Shamir 库

此库尚未经过外部审查,不应被视为准备就绪。

尼姆是一个对哈希无感知的库,它相信随机预言机。它便于编写多轮公共硬币协议。建立在 SAFE 框架之上,并提供生成验证者和证明者随机硬币的 API。

特性

自动转录生成。 nimue 随带电池,用于序列化和反序列化算术元素,如 arkworkszkcrypto 中的域/群元素。用户可以通过扩展特性在其之上构建。

支持自定义哈希函数。 要构建安全的 Fiat-Shamir 转换,最小要求是支持字节编码的某个集合上的排列函数。它可以是一个代表 $\mathbb{F}_{2^8}$ 或任何大特征素域 $\mathbb{F}_p$ 的 u8

后向兼容性。 我们为满足 digest::Digest 特性的任何哈希函数提供遗留接口,例如 sha2blake2

  • 预处理。 在递归 SNARKs 中,最小化哈希调用次数同时保持安全性至关重要。我们提供工具来预处理转录(即 Fiat-Shamir 转换的状态)以实现此目标。

  • 私有随机数生成。 避免为相同的证明者消息提供两个不同的挑战至关重要。我们通过将证明者随机数绑定到协议转录,而不使证明确定性,尽最大努力避免这种情况。

查看文档和一些examples/

依赖关系

~1–2.5MB
~50K SLoC