Crypto Pairing

In 2019, I finally really undersood elliptic curve cryptography (ECC), I found something that allowed me to see a clearer future…

Photo by Christian Wiediger on Unsplash

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,Ve(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.