Chapter status: 👷 in progress 👷
TODO:
Pairings
Pairings have allowed a great number of new applications in cryptography. They were first used by Menezes, Okamoto, and Vanstone [MOV91] to break the discrete logarithm problem in supersingular elliptic curves (this is the so-called MOV attack). Later, they were used constructively by Joux [Jou00] to obtain a tripartite Diffie-Hellman protocol and by Boneh and Franklin [BF03] to obtain an identity-based encryption scheme. This got the three of them the Gödel prize in 2013.
We will start with the abstract definition of pairing groups and then we will see how to construct such groups from specific elliptic curves.
Contents
Abstract Definition
Let and be three cyclic groups of prime order For reasons that will become clear later, we will denote and additively and multiplicatively (in particular, and 's identity elements are denoted while 's identity element is denoted A pairing is an efficiently computable function which satisfies two properties:
- non-degeneracy: and implies
- bilinearity: for every and and for every and
Note that bilinearity implies the (more useful in practice) property that for every and
Non-degeneracy has many other definitions (all equivalent assuming bilinearity), such as:
- is not the constant function
- if and are generators of respectively and then is a generator of
Constructing groups admitting a pairing is not very hard. For example, take (the group of integers mod equipped with addition), take for any cyclic group of order let be a generator of and define
However, for being useful from a cryptographic point of view, we need the discrete logarithm problem to be hard in the three groups and (In the example above, while it may be hard in it is certainly not in and ) This is where elliptic curves come to the rescue.
Some more vocabulary: A pairing is said symmetric when and asymmetric when As we will see, both types can be constructed from elliptic curves. Historically, the first proposed constructions were symmetric, but nowadays the asymmetric type prevails for efficiency reasons. It is an open problem to construct a pairing such that and the discrete logarithm problem is (conjectured) hard in
Further Resources
Here are some good resources about pairing-friendly elliptic curves:
- Pairings for beginners by Craig Costello
- Section 5.4 of the Moonmath manual
- Martijn Maas' master thesis
- this post about the security of pairing-friendly curves by Giacomo Pope
- a post about BLS12-381 by Ben Edgington
- a post about BN254 by Jonathan Wang.