Crypto Pairing
Crypto Pairing: Putting Privacy At The Core of our Digital World
In 2019, I finally really understood elliptic curve cryptography (ECC), I found something that allowed me to see a clearer future: pairing-based cryptography. Within this, I could see new ways of preserving privacy, and where we could prove things, without revealing our secrets. In the end, my best find was the MIRACL library [here], and which allowed me to experiment with state-of-the-art methods in most of the available software language. So while our crypto researcher — Will Abramson — went for Rust, I plucked for the language that is most like C, but which allows me to integrate with GitHub: Go.
As I was learning pairing cryptography, I used MIRACL to build little test cases, in order for me to understand the core principles:
- BN254 for pairing with MIRACL. Pairing. BN254 using Go for pairing of e(aU,bV)=e(abU,V)
- BN254 for pairing with MIRACL. Pairing. BN254 using Go for pairing of e(aU,bV)=e(U,V)ab
- BN254 for pairing with MIRACL. Pairing. BN254 using Go for pairing of e(U1+U2,V)=e(U1,V)×e(U2,V)
- BN254 for pairing with MIRACL. Pairing. BN254 using Go for pairing of e(aU,bV)=e(bU,aV)
With these under my belt, I moved onto the standard tests for pairing-based crypto, such as for tripartite key sharing:
- BN254 for tripartite key sharing with MIRACL. Tripartite. BN254 using Go lang for three-party key sharing.
And then it was onto key exchange:
- BN254 for pairing with MIRACL. Pairing. BN254 using Go for pairing for ID-based AKE.
- Identity-based (authenticated) key agreement with MIRACL. IBE Secret Key. Bob and Alice end up with the same shared secret.
- Identity-based (authenticated) key agreement with secrets using MIRACL. IBE Secret Key. Bob and Alice end up with the same shared secret.
- Shared key over BN-curves. Shared key over BN-curves. This page demonstrates key generation over three parties with pairing over BN-curves.
- Simple pairing. Key pairing. This page outlines simple examples of pair-based cryptography.
And signature creation and aggregation:
- BN254 with key and signature aggregation with MIRACL. BN254. BN254 using Go lang, and merges the public keys and signatures.
- PS Signatures using MIRACL. PS. Signatures using PS for short signatures.
- Randomized PS Signatures. PS. Signatures using PS for randomized short signatures.
And then onto other challenging areas:
- Encrypted searching using crypto pairing using MIRACL. Enc. Using encrypted searching.
- Encryption using IBE and MIRACL. Encryption with IBE. Bob sends Alice an encrypted message.
- Enhanced Identity-based (authenticated) key agreement with secrets using MIRACL. Enhanced IBE Secret Key. Bob and Alice end up with the same shared secret.
- Enhanced Identity-based (authenticated) key agreement with two trust authorities using MIRACL. Enhanced IBE With Two TAs. Bob and Alice end up with the same shared secret.
- IBE Signatures with MIRACL. IBE Sigs. IBE Signatures in Go.
- Oblivious Transfer (OT) using crypto pairing using MIRACL. OT. Using OT.
- Pair-based cryptography Identity-Based Encryption (IBE) with MIRACL. IBE. IBE Encryption.
- The MOV attack. MOV. The MOV attack uses pairing-based cryptography to reduce the difficulty of elliptic curve cracking.
And where I build zkSnarks from the ground-up:
- Zero-Knowledge Proof using crypto pairing using MIRACL (zk-SNARK). ZKP. Using crypto pairs for ZKP.
The MIRACL library is amazing, and the team have been there with quick support when I hit a bump in the road. I have learnt so much about building crypto from it. If you have time, please go and learn some Go, and some pairing-based cryptography. You will love learning them.