BLS12-381 pairing-friendly 曲线
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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曲线族主要有:
作为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曲线详细的参数和序列化说明)
- 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/herumi/mcl(C语言和汇编),高性能和安全实现BLS12-381签名。
1.1 Barreto-Naehrig curves
Barreto-Naehrig(BN) curves为a class of paring-friendly 椭圆曲线,即base field为 F q \\mathbbF_q Fq,order为 r r r, r ≈ q r\\approx q r≈q。当 q ≈ 2 254 q\\approx 2^254 q≈2254时,根据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 q≈2384。但,更大的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,但似乎更有助于实现目标安全级别。取 q ≈ 2 384 q\\approx 2^384 q≈2384,embedding degree为 12 12 12(即 r ∣ ( q 12 − 1 ) r|(q^12-1) r∣(q12−1)),可命中128-bit安全级别,其group order为 r ≈ 2 256 r\\approx 2^256 r≈2256,从而可避免在更大的scalar field中的性能和可用性缺陷。
2. BLS12-381
在zk-SNARK方案中,需要基于scalar field F r \\mathbbF_r Fr操作非常大的多项式。为高效进行multi-point evaluation和interpolation with fast fourier transforms,要求 F r \\mathbbF_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 r≈2255,使得以64-bit limbs表示时, r r r和 q q q的最高有效位为unset。
同时,为针对pairing性能优化,要求所设计的BLS曲线的参数具有low Hamming weight。从而最终选中了BLS12-381曲线,其 q ≈ 2 381 q\\approx 2^381 q≈2381:
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)
参考资料
[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
- Craig Costello的书籍 Pairings for beginners,很赞强烈推荐,里面附magma代码,有助于理解。
以上是关于BLS12-381 pairing-friendly 曲线的主要内容,如果未能解决你的问题,请参考以下文章