Elliptic curve pairings
\gdef\F{\mathbb{F}} \gdef\G{\mathbb{G}} \gdef\g{\mathrm{G}} \gdef\h{\mathtt{H}} \gdef\e{\mathrm{e}}
Let \G_1, \G_2, \G_3 be elliptic curve groups with the same scalar field \F, generators \g_1, \g_2, \g_3 and a pairing \e: \G_1 × \G_2 → \G_3.
A pairing is a function that satisfies \e(a ⋅ A, b ⋅ B) = a ⋅ b ⋅ \e(A, B) and is not the trivial solution \e(\dummyarg,\dummyarg) = 0. From this it follows that \e(A_1 + A_2, B) = \e(A_1, B) + \e(A_2, B) and other useful linear properties.
Note. The pairing is symmetrical in \G_1 and \G_2 so protocols also work with groups and pairing arguments swapped. This is useful if one group has better performance than the other.
Finding a pairing that satisfy the requirements is challenging, especially when there are additional constraints such as having large binary roots of unity in \F. Different families of solutions have been found:
- MNT, Miyaji-Nakabayashi-Takano (2001; paper).
- BLS, Barreto-Lynn-Scott (2002; paper).
- BN, Barreto-Naehrig (2005; paper).
- KSS, Kachisa-Schaefer-Scott (2008; paper).
Two important specific solutions are
Note. The 128 in alt_bn128
revers to the target security level, but it was since found that it is "closer to 96 or so". BLS12-381
development was in part motivated to address this and targets 128 bit security.
Alt-BN128
Also known as BN254.
r = 21888242871839275222246405745257275088548364400416034343698204186575808495617 p = 21888242871839275222246405745257275088548364400416034343698204186575808495617 q = 21888242871839275222246405745257275088696311157297823662689037894645226208583
Generator 5.
To quickly check a a large number of pairings of the form \e(A_i, B) = \e(C_i, \g_2) we can take a random linear combination: Generate random r_i ∈ \F^n, compute A = \sum_i r_i ⋅ A_i and C = \sum_i r_i ⋅ C_i and check \e\p{A, B} = \e\p{C, \G_2}. We can repeat this trick to aggregate multiple values of B.