13个版本 (8个重大更改)

0.8.0 2023年2月27日
0.7.1 2022年12月8日
0.7.0 2022年5月4日
0.6.0 2021年9月2日
0.0.0 2019年2月7日

密码学 中排名第17

Download history 23247/week @ 2024-04-22 20785/week @ 2024-04-29 23077/week @ 2024-05-06 25825/week @ 2024-05-13 26706/week @ 2024-05-20 24799/week @ 2024-05-27 17615/week @ 2024-06-03 18743/week @ 2024-06-10 16874/week @ 2024-06-17 14439/week @ 2024-06-24 14059/week @ 2024-07-01 15200/week @ 2024-07-08 22325/week @ 2024-07-15 23092/week @ 2024-07-22 19749/week @ 2024-07-29 24639/week @ 2024-08-05

每月下载量90,819
170crate中使用(直接使用50个)

MIT/Apache

550KB
11K SLoC

bls12_381 Crates.io

此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 位的素数阶 q,使得存在一个高效的可计算的非退化双线性配对函数 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 的选择使得 z 具有小的汉明重量(以提高配对性能),并且 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 许可证定义的,有意提交以包含在作品中的您的贡献,均应以上述方式双许可,不附加任何额外条款或条件。

依赖项