#elliptic-curve #bls12-381 #pairing #group #construction #operations #pairing-friendly

无需std ic_bls12_381

BLS12-381配对友好型椭圆曲线构建的实现

7个不稳定版本 (3个破坏性更新)

0.10.0 2024年7月17日
0.9.2 2024年6月18日
0.9.0 2024年5月6日
0.8.0 2023年6月14日
0.7.0 2022年9月22日

#121 in 密码学

Download history 7564/week @ 2024-05-02 4562/week @ 2024-05-09 5532/week @ 2024-05-16 6114/week @ 2024-05-23 7234/week @ 2024-05-30 6334/week @ 2024-06-06 6310/week @ 2024-06-13 5922/week @ 2024-06-20 5357/week @ 2024-06-27 7723/week @ 2024-07-04 6346/week @ 2024-07-11 6313/week @ 2024-07-18 8536/week @ 2024-07-25 7541/week @ 2024-08-01 5494/week @ 2024-08-08 5244/week @ 2024-08-15

每月下载量28,036
8个crate中使用 (直接使用2个)

MIT/Apache

555KB
11K SLoC

ic_bls12_381 Crates.io

这是对优秀的zkcrypto/bls12_381的分支,包含了一些修改,以满足互联网计算机的非交互式分布式密钥生成算法的实现需求。

此crate提供BLS12-381配对友好型椭圆曲线构建的实现。

  • 此实现未经审查或审计。使用风险自担。
  • 此实现针对Rust 1.56或更高版本。
  • 此实现不要求Rust标准库。
  • 除非明确指出,所有操作均为常数时间。

特性

  • bits (默认开启):启用用于获取标量位迭代器的API。
  • groups (默认开启):启用用于执行G1、G2和GT的群运算的API。
  • pairings (默认开启):启用一些执行配对的API。
  • alloc (默认开启):启用需要分配器的API;这些包括配对优化。
  • nightly:启用subtle/nightly,尝试防止可能危及常数时间操作的编译器优化。需要nightly Rust编译器。
  • experimental:启用实验性功能。这些功能没有向后兼容性保证,并且可能会随时更改;依赖于特定行为的用户应固定此crate的确切版本。当前实验性功能的列表

文档

曲线描述

BLS12-381 是来自 BLS 家族的配对友好椭圆曲线构造,嵌入度为 12。它基于 381 位素域 GF(p) 构建,具有...

  • z = -0xd201000000010000
  • p = (z - 1)2(z4 - z2 + 1) / 3 + z
    • = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab
  • q = z4 - z2 + 1
    • = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001

... 生成两个 源群 G1 和 G2,每个群的大小为 255 位的素数,存在一个有效的非退化的双线性配对函数 e 到第三个 目标群 GT。具体来说,G1 是 E(Fp) : y2 = x3 + 4 的 q-阶子群,而 G2 是 E'(Fp2) : y2 = x3 + 4(u + 1) 的 q-阶子群,其中扩展域 Fp2 定义为 Fp(u) / (u2 + 1)。

BLS12-381 被选择,以便 GF(q) 有一个大的 232 原根,用于执行基数-2 快速傅里叶变换,以有效地进行多点评估和插值(以提高配对性能)。它还被选择,以便它存在于 BLS12 曲线的特别有效和刚性的子族中。

曲线安全性

配对友好椭圆曲线构造(必然)不如传统椭圆曲线安全,因为它们的“嵌入度”较小。给定的嵌入度足够小,配对函数本身就会在将其投影到弱目标群时导致 DLP 难度下降,因为目标群的弱点会立即转化为源群的弱点。

为了在不使用不合理昂贵的配对函数的情况下实现合理的安全性,必须仔细选择嵌入度、基域特征和素数子群阶数。BLS12-381 使用 12 的嵌入度来确保快速配对性能,但选择 381 位的基域特征以产生 255 位的子群阶数(以保护 against Pollard's rho algorithm),同时达到接近 128 位的保护水平。

存在针对 Number Field Sieve algorithm 的已知优化,可以利用其结构来削弱目标组的 DLP 安全性,因为它是低度扩展域的乘子群。然而,这些攻击需要一种(迄今为止未知)的算法来有效地扫描一个大的多项式空间。即使攻击是实用的,也只能将安全性降低到大约 117 到 120 位。(这与其他情况下 254 位 BN 曲线通常只有不到 100 位的保护水平形成对比。)

替代曲线

应用程序可能希望通过使用BLS24或KSS16曲线来交换配对性能和/或G2性能,这些曲线保守地针对128位安全性。在需要椭圆曲线周期以进行例如任意证明组合的应用中,已知MNT6/MNT4曲线周期针对128位安全性级别。在只需要固定深度证明组合的应用中,此类曲线已被构建为Zexe的一部分。

致谢

请参阅Cargo.toml以获取此代码库的主要作者列表。

许可证

许可方式如下:

任选其一。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,都将根据上述条款双许可,不附加任何额外的条款或条件。

依赖关系