BLS12-381 pairing-friendly 曲线

1. 引言

Pairing-based cryptography已发展了数十年,可用于:

  • short数字签名,见2001年论文 Short signatures from the Weil pairing,该签名方案可高效aggregatable,详细见2003年论文 Aggregate and Verifiably Encrypted Signatures from Bilinear Maps
  • identity-based cryptography
  • 单轮多方秘钥交换,详细见2000年论文 A One Round Protocol for Tripartite Diffie–Hellman
  • 多项式承诺方案,如KZG commitment

paring-friendly椭圆曲线应具有:

  • 合适的embedding degree
  • 大的prime-order subgroup

同时满足以上2个要求的椭圆曲线比较稀有,根据2006年论文 A TAXONOMY OF PAIRING-FRIENDLY ELLIPTIC CURVES 可知,现有的pairing-friendly曲线族主要有:
BLS12-381 pairing-friendly 曲线_第1张图片

作为ZCash Sapling升级的基石,ZCash团队Sean Bowe 2017年设计实现了一种新的 pairing-friendly 椭圆曲线——BLS12-381,其针对zk-SNARKs优化,并具有128-bit security level。

“下一代”可扩展区块链协议的激增,使得生成可高效聚合或轻松阈值化的短数字签名变得尤为重要。BLS12-381的特性经常使其成为这些协议的首选曲线。BLS12-381目前已广泛用于以下项目的数字签名和Zero-Knowledge Proof(ZKP)方案中:

  • ZCash
  • Ethereum 2.0
  • Skale
  • Algorand
  • Dfinity
  • Chia
  • 等等

详细代码实现可参看:

  • https://github.com/zkcrypto/pairing(提供了basic traits for pairing-friendly椭圆曲线)(Rust语言)
  • https://github.com/zkcrypto/bls12_381(实现了BLS12-381曲线)(Rust语言)
  • https://github.com/zcash/librustzcash/blob/6e0364cd42a2b3d2b958a54771ef51a8db79dd29/pairing/src/bls12_381/README.md(BLS12-381曲线详细的参数和序列化说明)
  • Apache的 https://github.com/apache/incubator-milagro-crypto-c/tree/develop/src中有rom_curve_BLS381(C语言)
  • https://github.com/herumi/mcl中实现了bls12-381(C语言)
  • https://github.com/supranational/blst(C语言和汇编),高性能和安全实现BLS12-381签名。

目前,BLS-381已被纳入IETF标准中:

  • 2020年IETF标准草案 Pairing-Friendly Curves draft-yonezawa-pairing-friendly-curves-02
  • 2020年IETF标准草案 Hashing to Elliptic Curves draft-irtf-cfrg-hash-to-curve-05
  • 2020年IETF标准草案 draft-irtf-cfrg-bls-signature-00.txt draft-irtf-cfrg-bls-signature-00

1.1 Barreto-Naehrig curves

Barreto-Naehrig(BN) curves为a class of paring-friendly 椭圆曲线,即base field为 F q \mathbb{F}_q Fq,order为 r r r r ≈ q r\approx q rq。当 q ≈ 2 254 q\approx 2^{254} q2254时,根据Kim–Barbulescu variant of the Number Field Sieve to compute discrete logarithms in finite fields以及 2016年论文 Challenges with Assessing the Impact of NFS Advances on the Security of Pairing-based Cryptography,其安全性约为110 bits。

可构建目标为128-bit安全性的新BN曲线,需 q ≈ 2 384 q\approx 2^{384} q2384。但,更大的group order r r r值,会损害zk-SNARK以及MPC方案中所需的multi-exponentiation、fast fourier transforms等密码学操作计算性能。

1.2 Barreto-Lynn-Scott curves

Barreto-Lynn-Scott curves(BLS)为相对更老的pairing-friendly curves class(见2002年论文Constructing Elliptic Curves with Prescribed Embedding Degrees),但似乎更有助于实现目标安全级别。取 q ≈ 2 384 q\approx 2^{384} q2384,embedding degree为 12 12 12(即 r ∣ ( q 12 − 1 ) r|(q^{12}-1) r(q121)),可命中128-bit安全级别,其group order为 r ≈ 2 256 r\approx 2^{256} r2256,从而可避免在更大的scalar field中的性能和可用性缺陷。

2. BLS12-381

在zk-SNARK方案中,需要基于scalar field F r \mathbb{F}_r Fr操作非常大的多项式。为高效进行multi-point evaluation和interpolation with fast fourier transforms,要求 F r \mathbb{F}_r Fr具有large 2 s 2^s 2s root of unity。

根据2012年论文Implementing Pairings at the 192-bit Security Level,想设计具有optimal extension field towers以及simple twisting isomorphisms,并确保Montgomery reductions以及其他approximation算法是space-efficient的,取 r ≈ 2 255 r\approx 2^{255} r2255,使得以64-bit limbs表示时, r r r q q q的最高有效位为unset。

同时,为针对pairing性能优化,要求所设计的BLS曲线的参数具有low Hamming weight。从而最终选中了BLS12-381曲线,其 q ≈ 2 381 q\approx 2^{381} q2381

u = -0xd201000000010000

k = 12

q = 0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab

r = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001

E(Fq) := y^2 = x^3 + 4

Fq2 := Fq[i]/(x^2 + 1)

E'(Fq2) := y^2 = x^3 + 4(i + 1)

BLS12-381为BLS曲线族的成员之一。381为表示曲线上坐标所需的bit位数。381是一个很方便的数字,每个field element可用48字节表示,剩余的3个bit可用作标签或计算优化。

参考资料

[1] BLS12-381 For The Rest Of Us
[2] BLS12-381: New zk-SNARK Elliptic Curve Construction

附录A:椭圆曲线密码学入门资料

关于椭圆曲线密码学的入门资料,可参看ANDREA CORBELLINI系列文章:

  • Elliptic Curve Cryptography: a gentle introduction
  • Elliptic Curve Cryptography: finite fields and discrete logarithms
  • Elliptic Curve Cryptography: ECDH and ECDSA
  • Elliptic Curve Cryptography: breaking security and a comparison with RSA

附录B:基于pairing的密码学入门资料

基于pairing的密码学入门资料有:

  • MIT课件 Lecture 25: Pairing-Based Cryptography
  • Alfred Menezes文章 An Introduction to Pairing-Based Cryptography
  • Vitalik博客 Exploring Elliptic Curve Pairings
  • NIST 2015年报告 Report on Pairing-based Cryptography,重点推荐第2节和附录。
  • 2020年IETF标准草案 Pairing-Friendly Curves draft-yonezawa-pairing-friendly-curves-02,很好的pairing-friendly curves背景资料
  • Craig Costello的书籍 Pairings for beginners,很赞强烈推荐,里面附magma代码,有助于理解。

你可能感兴趣的:(基础理论,椭圆曲线)