Traditional cryptographic systems rely on a single party for cryptographic operations, introducing a single point of failure that compromises the entire system if breached. Threshold cryptography mitigates this risk by distributing trust among multiple parties, requiring only a subset (threshold) to collaboratively perform cryptographic operations.
This series of posts focuses on widely adopted threshold signature schemes, their implementations, and security considerations relevant to blockchain. It aims to bridge the gap between developers, cryptography enthusiasts, and academic literature by presenting technically dense content in an accessible format.
This first post introduces Distributed Key Generation (DKG), which allows multiple participants to jointly generate a secret key without ever reconstructing the full secret key, enhancing security and fault tolerance. It is fundamental to decentralized consensus, secure multiparty computation, and threshold signatures.
We will begin with the well-known Shamir’s Secret Sharing.
Secret Sharing Scheme
Shamir’s Secret Sharing
Shamir’s Secret Sharing (SSS) [1] is a threshold key generation scheme for dividing a secret KaTeX can only parse string typed expression
s into KaTeX can only parse string typed expression
n shares to KaTeX can only parse string typed expression
n participants such that any KaTeX can only parse string typed expression
t+1 of them or more can reconstruct the secret, but a group of KaTeX can only parse string typed expression
<t+1 participants reveal no information about the secret key. The scheme leverages the Lagrange polynomial interpolation over a large finite field KaTeX can only parse string typed expression
Zq.
To create the share KaTeX can only parse string typed expression
s, a dealer selects a random polynomial KaTeX can only parse string typed expression
f(x)=s+a1⋅x+⋯+at⋅xt of degree KaTeX can only parse string typed expression
t over the finite field KaTeX can only parse string typed expression
Zq (i.e., all coefficients are in KaTeX can only parse string typed expression
Zq), then KaTeX can only parse string typed expression
f(0)=s is the secret. Each share is computed as point KaTeX can only parse string typed expression
(i,f(i)) for KaTeX can only parse string typed expression
i=1,2,⋯,n, and distributed to the KaTeX can only parse string typed expression
n participants.
When KaTeX can only parse string typed expression
t+1 or more shares are collected from the n participants, Lagrange interpolation is used to reconstruct the polynomial KaTeX can only parse string typed expression
f(x)=∑i=1t+1si⋅(∏1≤j≤t+1,i=ji−jx−j) (for simplicity, the formula is given for the first KaTeX can only parse string typed expression
t+1 shares), thereby recovering the secret s at KaTeX can only parse string typed expression
x=0. The security of SSS relies on the mathematical fact that a degree-KaTeX can only parse string typed expression
t polynomial is fully determined only when KaTeX can only parse string typed expression
t+1 or more distinct points on the graph of the polynomial are known.
For example, a 3 out of 5 configuration (an instance of KaTeX can only parse string typed expression
t+1 out of KaTeX can only parse string typed expression
n) produces a degree-2 polynomial illustrated in the following diagram. The share coordinates are KaTeX can only parse string typed expression
x=1,2,3,4,5 and its corresponding values KaTeX can only parse string typed expression
f(i) are the secret shares, then any 3 points are sufficient to reconstruct the degree-2 polynomial passing through the points, while 2 points are insufficient. In the diagram, the 3 points are located at 1, 2, and 4, and the y-axis shows the secret at KaTeX can only parse string typed expression
x=0.
Note that the share coordinates are chosen as integers, KaTeX can only parse string typed expression
1,2,⋯,n for convenience, and any sequence from KaTeX can only parse string typed expression
Zq (except for 0) can be utilized. Successful execution of SSS requires all share coordinates mod KaTeX can only parse string typed expression
q to be unique and non-zero, as a zero coordinate would directly expose the secret.

A limitation of Shamir’s Secret Sharing is the lack of share verifiability, which means the participant cannot verify whether its received share is correct. Feldman’s Verifiable Secret Sharing (VSS) [2] addresses this by enabling public verification of shares to detect invalid shares.
Feldman’s Verifiable Secret Sharing
Feldman’s VSS scheme operates over a large finite field KaTeX can only parse string typed expression
Zq with a generator KaTeX can only parse string typed expression
g of prime order KaTeX can only parse string typed expression
q on an elliptic curve. The dealer constructs a random degree-KaTeX can only parse string typed expression
t polynomial KaTeX can only parse string typed expression
f(x)=s+a1⋅x+⋯+at⋅xt, where the secret is KaTeX can only parse string typed expression
s=f(0). Each participant KaTeX can only parse string typed expression
Pi (KaTeX can only parse string typed expression
i=1,2,⋯,n) receives a share KaTeX can only parse string typed expression
si=f(i) as in Shamir’s Secret Sharing.
To enable share verification, the dealer also publishes commitments to the polynomial coefficients KaTeX can only parse string typed expression
aj with KaTeX can only parse string typed expression
Cj=aj∙g for KaTeX can only parse string typed expression
j=0,⋯,t, where KaTeX can only parse string typed expression
∙ denotes the scalar multiplication. In particular, KaTeX can only parse string typed expression
C0=s∙g is the public key corresponding to the secret key KaTeX can only parse string typed expression
s.
Participant KaTeX can only parse string typed expression
Pi can verify its share KaTeX can only parse string typed expression
si by checking whether KaTeX can only parse string typed expression
si∙g=∑j=0j=tij∙Cj, which is basically the scalar multiplication with generator KaTeX can only parse string typed expression
g on both sides of KaTeX can only parse string typed expression
f(i)=s+a1⋅i+⋅+at⋅it, thereby allowing any participant KaTeX can only parse string typed expression
Pi to detect if its received share KaTeX can only parse string typed expression
si is invalid without revealing the secret.
To prevent a dealer from sending inconsistent commitments, participants could broadcast their received commitments and verify that all views are identical.
Distributed Key Generation
Leveraging Shamir's Secret Sharing and Feldman's Verifiable Secret Sharing, we will now introduce key distribution with a trusted dealer and distributed key generation.
Key Distribution with A Trusted Dealer
Key distribution with a trusted dealer is a common setup in threshold cryptographic schemes where a dealer is responsible for generating and distributing secret key shares among KaTeX can only parse string typed expression
n participants. This is particularly useful to import a preexisting secret key and distribute it among KaTeX can only parse string typed expression
n participants.
Broadcast Shares and Commitments
The dealer begins with a secret key KaTeX can only parse string typed expression
s (preexisting or newly generated) and constructs a random degree-KaTeX can only parse string typed expression
t polynomial KaTeX can only parse string typed expression
f(x)=s+a1⋅x+⋯+at⋅xt with KaTeX can only parse string typed expression
s=f(0). Using Shamir’s Secret Sharing, the dealer computes KaTeX can only parse string typed expression
si=f(i) for KaTeX can only parse string typed expression
i=1,⋯,n and privately sends the KaTeX can only parse string typed expression
i-th share KaTeX can only parse string typed expression
si to participant KaTeX can only parse string typed expression
Pi.
To enable public key reconstruction, the dealer publishes the public key KaTeX can only parse string typed expression
pk=s∙g and optionally uses Feldman’s VSS to provide commitments KaTeX can only parse string typed expression
Cj=aj∙g with KaTeX can only parse string typed expression
j=0,⋯,t, for verifiability of the distributed shares. Similarly, to prevent a dealer from sending inconsistent commitments, participants broadcast their received commitments and verify that all views are identical.
Verify Shares with Commitments
Upon receiving the share KaTeX can only parse string typed expression
si, each participant KaTeX can only parse string typed expression
Pi verifies it by checking KaTeX can only parse string typed expression
si∙g=∑j=0j=tij∙Cj.
If the public key is available, then it can be verified with KaTeX can only parse string typed expression
pk=C0. This ensures that any subset of at least KaTeX can only parse string typed expression
t+1 participants can jointly reconstruct the secret or perform threshold cryptographic operations, while fewer than KaTeX can only parse string typed expression
t+1 participants gains no information about the secret KaTeX can only parse string typed expression
s except that its public key KaTeX can only parse string typed expression
pk=C0 is revealed.
Pedersen’s Distributed Key Generation
Centralized key generation with a trusted dealer poses a security risk, even if the key is later deleted. For generation of fresh secrets, this is mitigated using Pedersen’s Distributed Key Generation (DKG) [3].
Pedersen’s DKG is effectively a parallel execution of Feldman’s VSS, where each participant independently acts as a dealer for a random secret. The final secret key is the sum of all shared secrets, ensuring no single party learns the full secret key.
The protocol executes in 2 rounds among KaTeX can only parse string typed expression
n participants, incorporating additional security measures.

Round 1
- Each participant
KaTeX can only parse string typed expression
Pi samples a random degree-KaTeX can only parse string typed expression
t polynomial KaTeX can only parse string typed expression
fi(x)=ai,0+ai,1⋅x+⋯+ai,t⋅xt over a large prime field KaTeX can only parse string typed expression
Zq, where KaTeX can only parse string typed expression
q is the order of a generator KaTeX can only parse string typed expression
g on the underlying elliptic curve.
KaTeX can only parse string typed expression
Pi computes the commitment KaTeX can only parse string typed expression
Ci=(Ai,0,Ai,1,⋯,Ai,t) where KaTeX can only parse string typed expression
Ai,j=ai,j∙g for KaTeX can only parse string typed expression
0≤j≤t.
- To prove the knowledge of its secret
KaTeX can only parse string typed expression
ai,0, KaTeX can only parse string typed expression
Pi creates a Schnorr proof KaTeX can only parse string typed expression
(Ri,bi) where KaTeX can only parse string typed expression
Ri=ri∙g with KaTeX can only parse string typed expression
ri uniformly generated from KaTeX can only parse string typed expression
Zq and KaTeX can only parse string typed expression
bi=ri+ci⋅ai,0, such that KaTeX can only parse string typed expression
ci=H(i,Ri,Ai,0) is the challenge, possibly including some contexts to prevent replay attacks.
- Each participant
KaTeX can only parse string typed expression
Pi then broadcasts the Schnorr proof KaTeX can only parse string typed expression
(Ri,bi) and commitment KaTeX can only parse string typed expression
Ci to other participants KaTeX can only parse string typed expression
Pj.
Round 2
- Upon receiving the Schnorr proof
KaTeX can only parse string typed expression
(Rk,bk) and commitment KaTeX can only parse string typed expression
Ck from another participant KaTeX can only parse string typed expression
Pk, each participant KaTeX can only parse string typed expression
Pi verifies the Schnorr proof with KaTeX can only parse string typed expression
Rk=bk∙g−ck∙Ak,0, where KaTeX can only parse string typed expression
ck=H(k,Rk,Ak,0). If the verification fails, then KaTeX can only parse string typed expression
Pi aborts immediately.
- Each
KaTeX can only parse string typed expression
Pi sends the secret share KaTeX can only parse string typed expression
(j,fi(j)) to another participant KaTeX can only parse string typed expression
Pj via p2p, then deletes KaTeX can only parse string typed expression
fi and all sent shares, retaining only KaTeX can only parse string typed expression
fi(i).
- Each
KaTeX can only parse string typed expression
Pi verifies all the received shares from other KaTeX can only parse string typed expression
Pk via the check KaTeX can only parse string typed expression
fk(i)∙g=∑j=0tij∙Ak,j for KaTeX can only parse string typed expression
1≤k≤n, KaTeX can only parse string typed expression
k=i.
- Finally,
KaTeX can only parse string typed expression
Pi aggregates all received secret shares KaTeX can only parse string typed expression
fk(i) to obtain its final share KaTeX can only parse string typed expression
si=∑k=1nfk(i).
The protocol is fully symmetric across all KaTeX can only parse string typed expression
n participants; any participant aborts immediately upon verification failure.
Conclusion
This post reviewed common distributed key generation techniques, including Shamir’s Secret Sharing, Feldman’s Verifiable Secret Sharing, and Pedersen’s Distributed Key Generation.
The pros and cons of key distribution with a trusted dealer versus distributed key generation are summarized below, with respect to centralization, protocol complexity, and secret key usage.
Methods | Centralization | Complexity | Secret Key Usage |
---|
Key distribution with a trusted dealer | Yes | 1-round communication | Distribute a preexisting secret key or generate a new one |
Pedersen’s Distributed key generation | No | 2-round communication | Generate a new secret key |
The next post in the series of threshold cryptography will analyze the FROST protocol [4] and examine challenges in its decentralized implementation.
References
- Adi Shamir, 1979: How to share a secret.
- Paul Feldman, 1987: A practical scheme for non-interactive verifiable secret sharing.
- Torben Pedersen, 1991: A threshold cryptosystem without a trusted party.
- Chelsea Komlo, Ian Goldberg, 2020: FROST: Flexible Round-Optimized Schnorr Threshold Signatures