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: