Applied cryptography

distributed key generation

Distributed key generation (DKG) is how a group creates a shared public/private keypair such that the private key never exists in one place — not even for a moment during setup. When the protocol finishes, the joint public key is known to everyone but each party holds only a share of the corresponding secret.

The classic approach (Pedersen DKG, built on Feldman verifiable secret sharing) runs in parallel: every participant picks a random secret and runs a verifiable secret sharing of it, distributing shares to all others along with public commitments to the polynomial coefficients, so that incorrect or malicious shares can be detected and complained about. Summing everyone's contributions yields a joint secret — the sum of all the random secrets — of which each party now holds a Shamir share, together with a joint public key, yet no one ever learns the joint secret itself. Robust DKGs tolerate up to t malicious participants who send bad shares or abort.

DKG is the trustless bootstrap for threshold signatures and MPC custody: it removes the 'dealer' who, in plain Shamir sharing, would momentarily know the whole key before splitting it. It is used to set up validator threshold keys, randomness beacons (drand combines DKG with BLS), and bridge signer sets. It can also proactively re-share — refreshing everyone's shares without changing the public key — to rotate secrets and heal partial compromises over time.

DKG's entire value over Shamir secret sharing is eliminating the trusted dealer. In Shamir, someone must first know the secret in order to split it; in DKG, the secret is born already split among the parties and is never reconstructed.

Also called
DKG