Distributed Key Generation (DKG)
Distributed key generation creates a shared cryptographic key across multiple parties so that no single party ever possesses the complete key.
Key Takeaways
- Distributed key generation (DKG) allows a group of participants to collaboratively create a shared cryptographic key pair without any single party ever knowing the complete private key. This eliminates the single point of failure inherent in Shamir's Secret Sharing, which requires a trusted dealer.
- DKG powers threshold signature schemes like FROST, where any t-of-n participants can produce a valid signature. The resulting signatures are indistinguishable from standard single-signer Schnorr signatures on the blockchain.
- Spark uses FROST DKG so that its operator set collectively holds a key share without any single operator possessing the full key. This creates a trust-minimized architecture where only one honest operator is needed to protect user funds.
What Is Distributed Key Generation?
Distributed key generation (DKG) is a cryptographic protocol that enables a group of n participants to collectively generate a shared public/private key pair. Unlike traditional key generation where one entity creates the entire key, DKG ensures the private key is never constructed or stored in a single location. Each participant ends up with a secret share of the private key, and any threshold number (t) of participants can cooperate to produce signatures, but no individual or coalition smaller than t can learn anything about the full key.
The concept was first formalized by Torben Pedersen in 1991, building on Feldman's Verifiable Secret Sharing (VSS) scheme from 1987. In 1999, Gennaro, Jarecki, Krawczyk, and Rabin identified a key-bias vulnerability in Pedersen's original protocol and proposed improvements, while also proving that the bias does not compromise security for threshold Schnorr signature schemes.
DKG is a foundational building block for modern multi-party computation and threshold cryptography. In Bitcoin, it enables protocols like FROST to produce standard Schnorr signatures from distributed key shares, making threshold-signed transactions indistinguishable from ordinary Taproot spends on chain.
How It Works
A DKG protocol runs in multiple rounds of communication between participants. The most widely used variant (Pedersen DKG with Feldman VSS) works by having each participant act as a "dealer" in their own secret sharing instance. The final key is the aggregate of all participants' independent contributions.
Round 1: Commitment
Each participant P_i generates a random polynomial f_i(x) of degree t-1, where t is the signing threshold. The constant term of each polynomial is that participant's secret contribution. For each coefficient, the participant computes an elliptic curve commitment by multiplying the coefficient by the generator point G:
// Participant i generates their polynomial
f_i(x) = a_{i,0} + a_{i,1}·x + a_{i,2}·x² + ... + a_{i,t-1}·x^(t-1)
// Compute commitments for each coefficient
A_{i,j} = a_{i,j} · G for j = 0, 1, ..., t-1
// Generate a Schnorr proof of knowledge for a_{i,0}
proof_i = SchnorrSign(a_{i,0}, "DKG context")Each participant broadcasts their commitments and proof of knowledge to all other participants. The Schnorr proof prevents rogue-key attacks, where a malicious participant could choose their contribution as a function of others' contributions to control the final group key.
Round 2: Share Distribution and Verification
After verifying all received proofs of knowledge, each participant evaluates their polynomial at every other participant's index and sends the resulting share privately:
// Participant i sends share s_{i→j} to participant j
s_{i→j} = f_i(j) for each participant j
// Participant j verifies each received share using Feldman's VSS
// Check: s_{k→j} · G == Σ (j^m · A_{k,m}) for m = 0 to t-1
// If verification fails, j broadcasts a complaint against kThe verification step is critical: it allows each recipient to confirm that the share they received is consistent with the sender's public commitments, without revealing any other shares. If a participant sends an invalid share, the recipient can prove this publicly by broadcasting a complaint. The accused must then reveal the share, or be excluded from the protocol.
Key Derivation
Once all shares are verified, each participant aggregates the shares they received from every other participant (plus their own contribution at their index):
// Participant j computes their final signing share
s_j = Σ f_k(j) for all valid participants k
// The group public key is computed from the constant-term commitments
PK = Σ A_{k,0} for all valid participants k
// The implicit group private key (never constructed)
sk = Σ a_{k,0} for all valid participants kAt the end of the protocol, each participant holds their signing share s_j, their verification key share (s_j multiplied by G), and the group public key PK. The group private key sk exists only as an implicit mathematical relationship: the sum of all participants' secret contributions. It is never computed, stored, or transmitted.
DKG vs. Trusted Dealer
The alternative to DKG is trusted-dealer key generation, where a single entity creates the full private key and splits it into shares using Shamir's Secret Sharing. The dealer distributes the shares to participants and then must destroy the original key. This approach is simpler but introduces a fundamental problem: the dealer knows the complete private key.
| Property | Trusted Dealer (Shamir) | DKG (Dealerless) |
|---|---|---|
| Full key exists? | Yes, at the dealer during setup | Never, at any point |
| Single point of failure | Dealer can be compromised or coerced | No single party to target |
| Share verification | Recipients cannot verify correctness | Built-in via Feldman/Pedersen VSS |
| Trust assumption | Dealer must be honest and destroy the key | Honest majority during ceremony only |
| Suitable for decentralized use | No | Yes |
| Communication rounds | 1 (dealer distributes shares) | 2+ (commitment, share, verification) |
The trusted-dealer approach may be acceptable when participants already trust one entity (for example, an organization splitting its own backup key). DKG is necessary when no single party should be trusted, such as in decentralized protocols, cross-organizational custody, or key ceremonies for blockchain infrastructure.
DKG in FROST Threshold Signatures
FROST (Flexible Round-Optimized Schnorr Threshold Signatures) specifies a DKG protocol based on Pedersen's scheme with an important addition: each participant must provide a Schnorr proof of knowledge of their secret contribution during Round 1. This proof prevents rogue-key attacks where a malicious participant manipulates the group public key.
The FROST DKG produces shares that are directly compatible with FROST's two-round signing protocol. Once DKG completes, any t-of-n participants can collaborate to produce a standard Schnorr signature that verifies against the group public key. External verifiers cannot distinguish this signature from one produced by a single signer. For more detail on how the signing protocol works after key generation, see the FROST threshold signatures deep dive.
IETF RFC 9591 (published June 2024) standardizes the FROST signing protocol with five ciphersuites, including FROST(secp256k1, SHA-256) for Bitcoin compatibility. The RFC intentionally leaves DKG out of scope, including only a trusted-dealer appendix for reference. A separate BIP for FROST signing on Bitcoin is under active development.
Share Refresh and Key Rotation
FROST supports proactive secret sharing, which allows participants to refresh their key shares without changing the group public key. Each participant generates a new random polynomial with a zero constant term, and the group runs a protocol similar to DKG to update shares. After refresh, old shares become invalid: an attacker who compromised a share before the refresh gains no advantage from it. This also enables adding or removing participants without changing the on-chain address, which is critical for key rotation in production systems.
Use Cases
Bitcoin Layer 2 Protocols
Spark uses FROST DKG so that its set of independent operators collectively holds one side of a 2-of-2 signing arrangement for each virtual UTXO. The user holds the other key share. Because the operator key is generated via DKG, no single operator can sign unilaterally: the threshold of operators must cooperate. This creates a 1-of-n trust model from the user's perspective, since only one honest operator is needed to prevent theft. Learn more about Spark's architecture in the Spark Layer 2 overview.
Institutional Custody
Custodians and exchanges use DKG-based threshold signing to eliminate single points of failure in key management. Instead of storing a master key in a hardware security module, the key is generated distributedly across multiple HSMs in different locations. No single device or operator can produce a signature alone, reducing insider threat and physical compromise risk.
Decentralized Protocols
Any system that requires shared control over a cryptographic key benefits from DKG:
- Cross-chain bridges that require a committee to sign withdrawal transactions
- Decentralized oracle networks that sign price attestations collectively
- Randomness beacons like drand that produce verifiable random values through threshold BLS signatures
- Multi-party wallets that want the efficiency of single-signature transactions with the security of distributed key control
Efficiency over Multisig
Traditional multisig requires each signer to produce a separate on-chain signature, increasing transaction size and fees. DKG-based threshold signing produces a single compact signature regardless of how many participants contributed. On Bitcoin, this means a FROST threshold signature is the same size and cost as an ordinary Taproot spend: 64 bytes.
Risks and Considerations
Communication Complexity
DKG requires multiple rounds of authenticated, point-to-point communication between all participants. For n participants, Round 2 alone requires n(n-1) private messages. This scales quadratically, making DKG with very large participant sets (hundreds or thousands) impractical without protocol modifications. Most production deployments use modest participant counts (typically 3 to 20).
Liveness Requirements
All participants must be online and responsive during the DKG ceremony. If a participant goes offline mid-protocol, the ceremony may need to restart (excluding the absent party) or fall back to a reduced participant set. This is a one-time cost: once DKG completes, ongoing signing only requires t-of-n participants to be available.
Key Bias in Pedersen DKG
Gennaro et al. demonstrated that a malicious participant in Pedersen's DKG can bias the distribution of the group public key. Two colluding adversaries can bias the last bit of the public key with probability 3/4 instead of 1/2. However, this bias does not help compute discrete logarithms and therefore does not weaken threshold Schnorr signatures. For applications requiring uniformly random keys (such as certain commitment schemes), the "New-DKG" variant by Gennaro et al. adds an additional round to eliminate the bias.
No Post-Quantum Security
DKG protocols based on elliptic curve cryptography inherit the same vulnerability to quantum computers as the underlying digital signature scheme. A sufficiently powerful quantum computer running Shor's algorithm could extract the private key from the public key, regardless of how the key was generated. Research into lattice-based DKG protocols is ongoing but not yet standardized.
Secure Channels Required
Round 2 of DKG transmits secret shares between participants. These shares must be sent over encrypted, authenticated channels. If an attacker intercepts shares from t or more participants, they can reconstruct the full private key. Production implementations typically use X25519 key exchange with AES-GCM encryption for share transmission.
This glossary entry is for informational purposes only and does not constitute financial or investment advice. Always do your own research before using any protocol or technology.