Did you ever hear about these fancy-shmancy elliptic curves with “pairings” or “bilinear maps”? Did you know *S*NARKs would not be possible without them? Or that jail time can be conducive to great mathematical results?
If so, this blog post is for you: alinush.github.io/2022/12/31/pairings-or-bilinear-maps.html
It covers (1) the high-level definition of pairings, (2) their properties, (3) their incredible history, (4) their cryptographic applications, (5) a few internal details (see below) and (6) what you should know as a practitioner when implementing pairing-based cryptosystems.
I first run you through the three key properties of a pairing: bilinearity, non-degeneracy and efficiency.
Next, history time! André Weil (see picture) devises computable pairings while in prison. Victor Miller makes them more efficient. Menezes, Vanstone & Okamoto uses them for cryptanalysis. Last, Antoine Joux uses them to build efficient cryptosystems => pairing-based cryptography!
After that, I’ll show you 3 examples of pairing-based cryptosystems: (1) how Alice, Bob and Carl can agree on a secret key in one-round, (2) how to create really short signatures, and (3) how to encrypt directly to an email address, instead of these pesky, cumbersome public keys.
Lastly, for those who implement cryptography, I’ll explain the performance characteristics of pairing-friendly groups and a few tricks and trade-offs you can use to optimize your implementations.