Introduction
Distributed key generation is an interesting key generation mechanism that exploits the Shamir Secret Sharing (SSS) scheme in a nested manner to create a ceremony where no trusted dealer is required to generate the actual shares of a private key.
Lagrange Interpolation
SSS exploits Lagrange interpolation, which states that one can uniquely determine a polynomial
of degree
The resulting Lagrange interpolating polynomial
Shamir Secret Sharing With Trusted Dealer
Before we move on to the DKG, consider that a trusted dealer generates a random polynomial of degree
where
For each of the
To recover
Exploiting Lagrange interpolation, the parties can recover the original polynomial
The secret is then reconstructed directly as:
Hence we have recovered
Distributed Key Generation
In DKG, we remove the role of the dealer entirely. Instead, only share holders participate in a key-generation ceremony to eventually calculate the shares of a private key unknown to all parties.
This time, instead of a dealer randomly generating a degree
The constant terms
Now each party calculates the evaluations:
Then privately sends
After each party
It works because the eventual result is the same as performing the SSS ceremony with a polynomial that is the sum of all parties' randomly chosen polynomials:
The final secret is the constant term of this aggregate polynomial:
This is our distributed key generation scheme.