Aller au contenu
ecdsa.com
AcceptableWeierstrass réduite

BLS12-381

BLS12-381 est la courbe adaptée aux couplages qu’utilisent la couche de consensus d’Ethereum, Zcash et Filecoin.

BLS12-381 est une courbe de Weierstrass réduite y² = x³ + ax + b sur un corps premier de 381 bits, avec un sous-groupe d’ordre premier de 255 bits et un cofacteur de 76329603384216526031706109802092473003 ; son niveau de sécurité estimé est de 117 bits. Statut : sûre, mais régionale ou de niche.

BLS12-381 est une courbe de Barreto–Lynn–Scott de degré de plongement 12, conçue par Sean Bowe pour Zcash en 2017. G1 est la courbe y² = x³ + 4 sur un corps premier de 381 bits, G2 se trouve sur une tordue définie sur GF(p²), et tous deux utilisent un sous-groupe d’ordre premier de 255 bits. Sa sécurité est estimée à environ 117 à 120 bits depuis les progrès du crible algébrique (NFS) qui ont affaibli BN254.

Le consensus en preuve d’enjeu (proof-of-stake) d’Ethereum signe les attestations avec des signatures BLS sur cette courbe (draft-irtf-cfrg-bls-signature), ce qui permet d’agréger des milliers de signatures en une seule, et l’EIP-2537 ajoute à la couche d’exécution des contrats précompilés pour cette courbe. Zcash Sapling, Filecoin et la balise d’aléa drand l’utilisent aussi.

Le cofacteur de G1 est grand (h ci-dessus) : les implémentations doivent donc vérifier que les points reçus appartiennent au sous-groupe d’ordre premier avant de les utiliser.

Noms dans les normes

NormeNom
draft-irtf-cfrg-pairing-friendly-curvesBLS12-381
EIP-2537BLS12_381

Paramètres de domaine

corps premier de 381 bits · sécurité d’environ 117 bits

Nombre premier p du corps
0x1a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaab
Coefficient a
0x0
Coefficient b
0x4
Coordonnée x du point de base
0x17f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb
Coordonnée y du point de base
0x8b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1
Ordre n du point de base
0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001
Cofacteur h
0x396c8c005555e1568c00aaab0000aaab

Utilisée dans

  • Ethereum consensus (BLS signatures)
  • Ethereum precompiles (EIP-2537)
  • Zcash Sapling
  • Filecoin
  • drand

Normes et références

Toutes les courbes