Threshold Signature Scheme · 2023

Sign with many keys.
Verify with one.

DKLS23 is a multiparty threshold ECDSA protocol. Any t of n participants can jointly sign a message — and the output is a standard single ECDSA signature. No trusted setup. No single point of failure.

Try the Playground → How it Works

Cryptographic invisibility,
by design.

The full private key never exists — not during generation, not during signing. Yet the output is a perfectly standard ECDSA signature.

🎭

Indistinguishable Output

The resulting signature is a standard (r, s) ECDSA pair. On-chain or off-chain verifiers see no difference from a single-party signature.

🛡️

No Trusted Setup

Unlike GG18/GG20, DKLS23 requires no trusted dealer or MPC ceremony to bootstrap. Key generation is fully distributed from the start.

⚡

2-Round Signing

Signing completes in just two communication rounds using OT extension, making it practical for real-time applications and blockchain transactions.

🔒

t-of-n Threshold

Choose any threshold: 2-of-3, 3-of-5, 7-of-10. Any qualifying subset of signers can produce a valid signature — without involving absent parties.

💧

ECDSA Assumptions Only

Security is based solely on the hardness of ECDSA — no additional assumptions like DDH or Paillier encryption are required.

🔗

Reduced Gas Costs

On-chain verification uses the same ecrecover as single-sig. No extra verification logic, no additional smart contract cost.

How DKLS23 Works

A walkthrough of the two core phases: distributed key generation and threshold signing.

01

Distributed Key Generation (DKG)

Each of the n participants generates their own random secret share xᵢ. Through a Verifiable Secret Sharing (VSS) protocol, parties exchange commitments so that no single party ever holds the complete private key x. The combined public key X = x·G is publicly known.

Party 1
x₁ = a3f7…
commit(x₁) →
⟷
← commit(x₂)
Party 2
x₂ = 8c2d…
Key insight: After DKG, each party holds a share of the private key, but the private key never materializes on any single machine. Even if t-1 parties are compromised, the attacker learns nothing about the private key.
02

Oblivious Transfer (OT) Extension

The heart of DKLS23 is using OT extension to allow two parties to perform a multiplication of their secret shares without revealing the values. Party A learns a·b while Party B learns nothing about a.

Sender
Receiver
has: a₀, a₁
— send OT seed commitment —→
choice: b
←— OT extension messages —
output: masked values
— encrypted pairs —→
output: a_b (learns aᵦ only)
03

Threshold Signing — Round 1: Nonce Generation

When t parties want to sign a message, they first jointly generate a nonce k using an OT-based multiplication. Each party contributes a share kᵢ. They publish the nonce's public point R = k·G, from which the signature's r value is derived.

k₁ share
+
k₂ share
+
k₃ share
→ OT multiply →
R = k·G
04

Threshold Signing — Round 2: Signature Assembly

Each party computes a partial signature share using their key share xᵢ and nonce share kᵢ on the message hash H(m). A designated combiner aggregates these into the final s value, completing the standard (r, s) signature.

// Each party computes their share: sᵢ = kᵢ⁻¹ · (H(m) + r · xᵢ) mod q // Combiner aggregates (via OT-based multiplication): s = sum(sᵢ) mod q // Final signature — identical to single-party ECDSA: σ = (r, s) // verify with ecrecover(pubkey, H(m), σ) ✓

DKLS23 Playground

Configure your threshold, generate key shares, sign a message, and verify — step by step.

⚙ Configuration

2 of 3
threshold (t of n)
Total Parties (n) 3
Threshold (t) 2
Any 2 of the 3 parties must cooperate to sign. 1 party can go offline safely.
Parties
Active Signers
1
Distributed Key Generation
waiting

Each party generates a random key share. Commitments are exchanged so the group can compute the joint public key.

2
Threshold Signing
waiting

Select t signers and sign a message. Real SHA-256 hash, real Shamir reconstruction, real secp256k1 signature.

⚠ Shamir model (simplified): This demo reconstructs the private key from t shares to sign. In real DKLS23 the key is never assembled — parties use OT-based multiplication so the private key doesn't exist on any machine.
Select 2 or more parties to sign:
✗ Signing failed — no key share
Signature σ = (r, s)
r: s:
3
Verification
waiting

Standard ECDSA verification against the joint public key. On-chain this is identical to ecrecover.

Choosing the right t-of-n

The threshold determines both security and availability. Higher thresholds mean stronger security; lower thresholds mean higher fault tolerance.

Common Configurations

Config Fault Tolerance Use Case
2-of-2 0 faults 2FA-style authorization
2-of-3 1 fault Personal wallets, small teams
3-of-5 2 faults Enterprise, DAO governance
4-of-7 3 faults Bridge validators, custody
5-of-9 4 faults High-value institutional

Security vs. Availability

Fault tolerance = n - t. The number of parties that can crash or be compromised without breaking availability. Security threshold = t - 1 parties must be corrupted before security is broken.

↑ Security (harder to forge) Availability (survives faults) ↑
t=n (all sign)
t=1 (any signs)
Rule of thumb: Set t > n/2 to ensure a majority must agree. For maximum resilience, use t = ⌊n/2⌋ + 1.
DKLS23 advantage: Because signing is only 2 rounds, the overhead of larger n is minimal — you can safely choose n=7 where other protocols become impractical.

DKLS23 vs. the field

How does DKLS23 stack up against popular threshold ECDSA alternatives?

Protocol Trusted Setup Sign Rounds Keygen Rounds Security Assumption Sig Output Status
DKLS23 None 2 3 ECDSA only Standard ECDSA Active
GG18 Paillier 8 5 Paillier + DDH Standard ECDSA Legacy
GG20 Paillier 7 5 Paillier + DDH Standard ECDSA Widely deployed
FROST None 2 2 DL assumption Schnorr only Active
Lindell17 Paillier 4 3 Paillier + Strong RSA Standard ECDSA 2-party only

Where DKLS23 fits

Any application needing distributed custody or authorization over an ECDSA key.

🏦

Crypto Custody

MPC wallets where no single server holds the full private key. Standard blockchain transactions with no key reconstruction.

🌉

Cross-chain Bridges

Validator committees sign bridge transactions. t-of-n threshold matches existing validator quorum requirements.

🏛️

DAO Governance

Multisig that looks like a single wallet on-chain, eliminating gas overhead of on-chain multisig contracts.

🔐

HSM Replacement

Distribute key material across cloud regions or hardware. No single hardware failure can compromise the key.

📱

Mobile + Server MPC

2-of-2 split between user device and server. Biometric on device, rate-limiting on server — without ever combining.

🤖

AI Agent Authorization

Threshold signing for autonomous agents — require human co-signature above certain transaction values.

Go deeper

Papers, implementations, and benchmarks for production use.