1 个不稳定版本
0.10.4 | 2024 年 8 月 2 日 |
---|
#555 in 密码学
165 每月下载量
用于 2 crates
115KB
2.5K SLoC
jubjub
这是一个纯 Rust 实现的 Jubjub 椭圆曲线群及其相关域。
- 此实现尚未经过审查或审计。使用风险自负。
- 此实现针对 Rust
1.56
或更高版本。 - 除非明确说明,所有操作均为恒定时间。
- 此实现不需要 Rust 标准库。
RFC 流程
此 crate 遵循 zkcrypto RFC 流程。如果您想对此 crate 提出重大更改,请 创建一个 RFC 以进行更广泛的讨论。
文档
曲线描述
Jubjub 是 扭曲的埃德华兹曲线 -u^2 + v^2 = 1 + d.u^2.v^2
,在 GF(q)
上定义的有理点,其子群阶为素数 r
,伴随数为 8
。
q = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001
r = 0x0e7db4ea6533afa906673b0101343b00a6682093ccc81082d0970e5ed6f72cb7
d = -(10240/10241)
GF(q)
的选择是为了使其成为 BLS12-381 椭圆曲线构造的标量域。
Jubjub 与 Montogomery 曲线在相同的域上双有理化等价,其方程为 y^2 = x^3 + Ax^2 + x
,其中 A = 40962
。这个 A
的值是最小的整数,使得 (A - 2) / 4
是一个小的整数,A^2 - 4
在 GF(q)
中不是平方数,Montgomery 曲线和它的二次扭曲有小的系数 8
和 4
,分别。这和 Curve25519 和 ed25519 之间的关系相同。
请参见 ./doc/evidence/ 以获取支持证据,证明 Jubjub 符合 SafeCurves 标准。在 ./doc/derive/ 中的工具将通过上述标准推导出曲线参数,以证明其刚性。
致谢
Jubjub 是由 Sean Bowe 设计的。Daira Hopwood 负责其名称和规范。在 ./doc/evidence/ 中的安全性证据是 Daira Hopwood 的作品,基于 Daniel J. Bernstein 和 Tanja Lange 的 SafeCurves。Peter Newell 和 Daira Hopwood 负责了 Jubjub 鸟的图像。
请参阅 Cargo.toml
以获取此代码库的主要作者列表。
许可
在以下两者中选择一种许可方式
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由你选择。
贡献
除非你明确声明,否则任何有意提交以包含在你的工作中的贡献,如 Apache-2.0 许可证中定义的,将按照上述方式双许可,没有额外的条款或条件。
依赖项
~5MB
~103K SLoC