Aller au contenu
ecdsa.com
ObsolescenteWeierstrass réduite

alt_bn128

BN254 (alt_bn128) est la courbe à couplage de Barreto–Naehrig intégrée aux contrats précompilés d’Ethereum.

alt_bn128 est une courbe de Weierstrass réduite y² = x³ + ax + b sur un corps premier de 254 bits, avec un sous-groupe d’ordre premier de 254 bits et un cofacteur de 1 ; son niveau de sécurité estimé est de 100 bits. Statut : encore sûre, en cours d’abandon.

BN254 est la courbe y² = x³ + 3 sur un corps premier de 254 bits, issue de la famille de courbes adaptées aux couplages de Barreto et Naehrig (2005), de degré de plongement 12. Son couplage envoie G1 (les points de cette courbe) et G2 (les points d’une tordue définie sur GF(p²)) dans GF(p¹²), ce dont ont besoin les vérificateurs zk-SNARK et les signatures agrégées.

Ethereum a ajouté, lors de la mise à niveau Byzantium (EIP-196, EIP-197), des contrats précompilés pour l’addition, la multiplication scalaire et la vérification de couplages sur cette courbe, et les vérificateurs Groth16 et PLONK sur Ethereum reposent sur ces précompilés. Les circuits Sprout d’origine de Zcash l’utilisaient aussi.

Sa sécurité était estimée à 128 bits lorsqu’elle a été choisie, mais le crible algébrique par tours étendu (exTNFS, Kim et Barbulescu, 2016) a abaissé l’estimation à environ 100 bits (Barbulescu et Duquesne, 2019). Les nouveaux projets utilisent plutôt BLS12-381.

Noms dans les normes

NormeNom
EIP-196alt_bn128
Barreto–NaehrigBN254
librariesBN256

Paramètres de domaine

corps premier de 254 bits · sécurité d’environ 100 bits

Nombre premier p du corps
0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47
Coefficient a
0x0
Coefficient b
0x3
Coordonnée x du point de base
0x1
Coordonnée y du point de base
0x2
Ordre n du point de base
0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001
Cofacteur h
0x1

Utilisée dans

  • Ethereum precompiles (EIP-196, EIP-197)
  • Groth16 and PLONK zk-SNARKs
  • Zcash Sprout (historical)

Normes et références

Toutes les courbes