#配对 #加密

无std zeropool-bn

将配对密码学与Barreto-Naehrig曲线结合

13个版本

0.5.11 2022年1月23日
0.5.10 2021年12月8日
0.5.9 2021年2月18日
0.5.7 2020年7月24日
0.4.4 2020年6月14日

#195加密学

Download history 3759/week @ 2024-04-21 3954/week @ 2024-04-28 4697/week @ 2024-05-05 4753/week @ 2024-05-12 4486/week @ 2024-05-19 5112/week @ 2024-05-26 6726/week @ 2024-06-02 4853/week @ 2024-06-09 5726/week @ 2024-06-16 4007/week @ 2024-06-23 3735/week @ 2024-06-30 3756/week @ 2024-07-07 4131/week @ 2024-07-14 3557/week @ 2024-07-21 4330/week @ 2024-07-28 3837/week @ 2024-08-04

16,035 每月下载量
用于 51 个crate(3个直接使用)

MIT/Apache

265KB
7.5K SLoC

bn Crates.io 构建状态

这是一个使用纯Rust编写的配对密码学库。它利用来自[BCTV2015]的Barreto-Naehrig (BN)曲线构造,提供两个循环群 G1G2,并具有高效的双线性配对

e: G1 × G2 → GT

安全警告

这个库,就像其他实现此构造的配对密码学库一样,不抵抗侧信道攻击。

用法

bn crate 添加到您的 Cargo.toml 依赖中...

[dependencies]
bn = "0.4.2"

...并在您的crate根目录中添加一个 extern crate 声明

extern crate bn;

API

  • Fr 是 Fr 的一个元素
  • G1 是BN曲线E/Fq : y^2 = x^3 + b上的一个点
  • G2 是扭曲的BN曲线E'/Fq2 : y^2 = x^3 + b/xi上的一个点
  • Gt 是通过在 G1G2 上使用 pairing 函数获得的群元素(乘法表示)。

示例

Joux密钥协议

在典型的Diffie-Hellman密钥交换中,依赖于ECDLP,三方密钥交换需要两轮。通过使用双线性配对可以实现单轮协议:给定Alice的公钥 aP1 和Bob的公钥 bP2,Carol可以使用她的私钥 c 通过 e(aP1, bP2)c 计算共享密钥。

(详见 examples/joux.rs 中的完整示例。)

// Generate private keys
let alice_sk = Fr::random(rng);
let bob_sk = Fr::random(rng);
let carol_sk = Fr::random(rng);

// Generate public keys in G1 and G2
let (alice_pk1, alice_pk2) = (G1::one() * alice_sk, G2::one() * alice_sk);
let (bob_pk1, bob_pk2) = (G1::one() * bob_sk, G2::one() * bob_sk);
let (carol_pk1, carol_pk2) = (G1::one() * carol_sk, G2::one() * carol_sk);

// Each party computes the shared secret
let alice_ss = pairing(bob_pk1, carol_pk2).pow(alice_sk);
let bob_ss = pairing(carol_pk1, alice_pk2).pow(bob_sk);
let carol_ss = pairing(alice_pk1, bob_pk2).pow(carol_sk);

assert!(alice_ss == bob_ss && bob_ss == carol_ss);

许可证

许可协议为以下之一

由您选择。

版权所有 2016 Zcash Electric Coin Company。Zcash公司承诺在crates.io上按照此MIT/Apache-2.0双许可证维护"bn"crate。

作者

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交用于作品中的任何贡献,应双授权如上,不附加任何额外条款或条件。

依赖项

约3.5MB
约73K SLoC