4 个版本
0.11.2 | 2024年2月17日 |
---|---|
0.11.1 | 2024年1月26日 |
0.11.0 | 2023年12月28日 |
0.10.0 | 2023年12月28日 |
892 在 密码学 中排名
每月 1,442 次下载
用于 vsss-rs
245KB
4K SLoC
ed448-goldilocks-plus
此代码未经过审计或审查。使用风险自负。
字段选择
字段大小是 Solinas 三项式素数 2^448 - 2^224 -1。这个素数被称为 Goldilocks 素数。
曲线
此仓库明确实现三种曲线,并隐式实现另一种曲线。
明确实现的三个曲线是
-
Ed448-Goldilocks
-
Curve448
-
Twisted-Goldilocks
Ed448-Goldilocks 曲线
- Goldilocks 曲线是一个具有仿射方程 x^2 + y^2 = 1 - 39081x^2y^2 的 Edwards 曲线。
- 此曲线由 Mike Hamburg 在 https://eprint.iacr.org/2015/625.pdf 中定义。
- 此曲线在 Goldilocks 素数上的系数因子为 4。
Twisted-Goldilocks 曲线
- 扭曲的 Goldilocks 曲线是一个具有仿射方程 y^2 - x^2 = 1 - 39082x^2y^2 的扭曲 Edwards 曲线。
- 此曲线也在 https://eprint.iacr.org/2015/625.pdf 中定义。
- 此曲线在 Goldilocks 素数上的系数因子为 4。
等伦
- 此曲线与 Ed448-Goldilocks 是 2-等伦的。等伦的详细信息可以在此处找到: https://www.shiftleft.org/papers/isogeny/isogeny.pdf
Curve448
此曲线与 Ed448-Goldilocks 是 2-等伦的。Curve448 的详细信息可以在此处找到: https://tools.ietf.org/html/rfc7748
此曲线的主要用途是 X448。
注意。在该文档中有一个与 Curve448 双有理等价的 Edwards 曲线,具有大的 d
值。此曲线未实现,据我所知,没有实用价值。
策略
Ed448-Goldilocks 上群算术的主要策略是执行 2-等伦将点映射到 Twisted-Goldilocks 曲线,然后使用更快的扭曲 Edwards 公式执行标量乘法。计算 2-等伦然后双等伦,一旦将点映射回 Ed448-Goldilocks 曲线,就会拾取一个 4 的因子,因此标量必须乘以 4。调整标量取决于点和标量。更多详细信息可以在 2-等伦论文中找到。
Decaf
Decaf 策略 [链接论文] 用于从扭曲 Goldilocks 曲线上构建一个素数阶的群。选择扭曲 Goldilocks 曲线是因为它具有更快的公式。我们还可以使用 Curve448 或 Ed448-Goldilocks。Decaf 利用一个与雅可比四次曲线相关的同质化,该曲线并未明确定义。有关详细信息,请参阅此处:https://www.shiftleft.org/papers/decaf/decaf.pdf 然而,据我所知,这个仓库中没有关于 Decaf 协议的文档,该协议是对论文中链接的原始 Decaf 协议的修改版本。
完成点与可扩展点
与 Curve25519-Dalek 不同,这个库将实现可扩展点而不是完成点。以下观察导致这一决定
- 从完成点切换到需要 3/4 的域乘法成本。因此,如果我们进行重复的加倍,这将在射影形式中为每次加倍增加额外的成本。有关可扩展点的更多详细信息,请参阅此处 [3.2]:https://www.shiftleft.org/papers/fff/fff.pdf
致谢
库的设计借鉴了 Curve25519 的 Dalek 设计。Montgomery 曲线算术的代码也来自 Dalek 的库。
使用了 Ed448 和 libdecaf 的 Go 实现,作为参考。
特别感谢 Mike Hamburg 回答了关于 Decaf 和 goldilocks 的所有问题。
此库添加了 hash_to_curve 和结构体的序列化。
贡献
除非您明确说明,否则根据 BSD-3-Clause 许可证定义的您有意提交以包含在作品中的任何贡献,都将根据上述方式双授权,不附加任何其他条款或条件。
依赖项
~4.5MB
~87K SLoC