helium/HIP

HIP30: BLS12-381 for Threshold Cryptography

jamiew opened this issue · 7 comments

Author(s): @vihu, @Vagabond, Helium Systems, Inc. team
Start Date: 2021-04-19
Category: Technical
Initial PR: #155
Tracking Issue: this
Status: In Discussion

Rendered view:

https://github.com/helium/HIP/blob/master/0030-update-threshold-cryptography.md

Summary:

Helium Distributed Key Generation and Honeybadger Consensus Protocol both rely on curve SS512 for pairing-based cryptography. Curve SS512 is considered a very old curve and is not commonly used. In addition, the library we use for pairing-based cryptography, Ben Lynn's pbc library, has not seen major maintenance since 2013.

This HIP proposes switching to an industry standard curve BLS12-381 for doing threshold cryptography. The underlying implementation for BLS12-381 is security-audited, faster, and more secure than curve SS512.

We have been testing a new threshold cryptography library that has been in use on the Validator Testnet for several weeks and believe it is ready for Mainnet.

Good stuff. I support this. I was participating in the testnet when this was tested and saw the difference it made in the ability to increase the consensus group size to over 50.

I also like this that reuses an existing implementation that has been audited and field tested as well as the fact that this same curve is used by other large crypto projects.

There has been universally positive support for this HIP in GitHub commnents, Discord chats, the most recent community call and there were 100% "yes" votes from 50 people in a straw poll. In recognition of this I am pleased to recognize this HIP as approved by the Helium community and will update statuses accordingly.

Screen Shot 2021-05-01 at 11-07-12 hip-30-threshold-crypto-upgrade - Discord

@vihu could you link to any existing work/PRs in other repositories for the record? Thanks!

vihu commented

@vihu could you link to any existing work/PRs in other repositories for the record? Thanks!

So here's the work we have so far:

erlang-tc: This is base NIF for using threshold cryptographic functions
miner#733: Miner layer to switch to threshold crypto
dkg#36: DKG work to understand new curve keys
hbbft#66: Consensus group related compatibility work

abhay commented

Close as implemented? @jamiew

Same for this one – just need a Deployed and/or Audit link and I'm happy to update