Finite field Fq,qprime;⟨G⟩elliptic-curve group of order q;scalars in Zq.Parties P1,…,Pn;threshold t;I⊆{1,…,n},∣I∣=t.ECDSA key: x∈Zq,Q=xG;hash H:{0,1}\*→Zq.
Lagrange Interpolation
Let f(X)∈Fq[X] with degf≤t−1. For distinct nonzero indices I={i1,…,it}⊆Fq\*:
This simple identity lets any t parties reconstruct the constant term of a polynomial, while fewer learn nothing.
Try moving the points around to see how the polynomial changes:
Lagrange Interpolation
Simplification for t=2
For I={i,j},i=j:
λi({i,j})(0)=i−j−j,λj({i,j})(0)=j−i−i.
Shamir’s Secret Sharing (SSS)
SSS, or Shamir's Secret Sharing, is a cryptographic protocol
that allows a secret to be split into multiple shares,
such that the secret can only be reconstructed when a sufficient
number of shares are combined. The protocol is designed to be
secure even if some of the shares are compromised.
SSS is based on polynomial interpolation, where the secret is
the y-intercept of the polynomial. The shares are the y-values
of the polynomial at different x-values.
Sharing:
f(X)=s+a1X+⋯+at−1Xt−1,aj∈Fq.
Party Pi receives vi=f(i).
Reconstruction:
s=f(0)=i∈I∑λi(I)(0)vi.
Dealerless:
DKG
Verifiable Secret Sharing (VSS)
VSS, or Verifiable Secret Sharing, is a cryptographic protocol
that allows a secret to be split into multiple shares,
such that the secret can only be reconstructed when a
sufficient number of shares are combined. The protocol is designed
to be secure even if some of the shares are compromised.
It was invented by Feldman in 1987.
VSS is similar to SSS, but with the additional property that
the shares can be verified to be correct. This is done by
attaching a proof to each share, which can be used to verify
that the share is consistent with the other shares.
Feldman VSS
Cj=gaj,gvi=?j=0∏t−1Cjij.
Pedersen VSS
Cj=gajhbj.
VSS ensures consistency of shares and thwarts malicious dealers.
Distributed Key Generation (DKG)
Distributed Key Generation (DKG) is a cryptographic protocol
that allows a group of parties to generate a shared public
key without revealing their private keys. The protocol is
designed to be secure even if some of the parties are malicious.
Each party Pℓ runs VSS for its polynomial f(ℓ)(X). Parties add up:
Complaint-based DKG (math sketch).
Each dealer ℓ broadcasts commitments Cj(ℓ)=gaj(ℓ)(j=0,…,t−1), and sends shares vi(ℓ)=f(ℓ)(i).
Each receiver checks gvi(ℓ)=?∏j=0t−1(Cj(ℓ))ij, complains if it fails, and faulty dealers are disqualified.
Honest contributions are aggregated: f(X)=∑ℓ∈Hf(ℓ)(X),x=f(0),Q=xG.
Threshold ECDSA as MPC
ECDSA signature:
R=kG,r=Rxmodq,s=k−1(H(m)+rx)modq.
Both x and k are shared. MPC must handle multiplication and inversion securely.
Paillier-based MtA protocols + ZK proofs solve this.
{2,2} ECDSA — Lindell-17
Steps
Sample kA,kB; compute R=(kA+kB)G,r=Rx.
Use Paillier MtA to get additive shares of r⋅x and k.
Range proofs: ensure encrypted values are in [0,q).
Typical bit length: 256–384 bits (depends on curve).
Sigma protocols or Bulletproofs; trade size vs performance.
Preprocessing
Presignature batch size: tune to traffic (e.g., hundreds cached).
Online signing: 2–4 rounds, tens of ms latency in practice.
Refresh interval: periodic VSS refresh (weeks to months).
Operational choices
{2,2} for small custodial pairs (HSM + server).
{2,n} for flexible hot-wallet fleets.
{t,n} for large institutions with governance rules (5-of-7, 10-of-15).
Appendix: A Brief History
MPC evolved from theory (1980s) → verifiable primitives (1990s) → efficient protocols (2010s) → real-world threshold ECDSA (2017+).
1970s: Early Building Blocks
1979 — Shamir’s Secret Sharing (SSS)
Secret sharing using polynomials and Lagrange interpolation: any (t) shares reconstruct the secret, fewer reveal nothing. Foundation for all later threshold cryptography.
1980s: Feasibility and Completeness
1982 — Andrew Yao: Defined secure two-party computation in Protocols for Secure Computations. Introduced the “Millionaires’ Problem.”
1986 — Yao again: Garbled circuits (How to Generate and Exchange Secrets), enabling general 2PC.
1987 — GMW (Goldreich–Micali–Wigderson): Showed that, with an honest majority, any function can be securely computed.
1988 — BGW & CCD: Unconditional security for MPC with less than one-third corruptions. BGW emphasized interpolation; CCD introduced simulation-based security.