The one-sentence version
MPC (Multi-Party Computation) wallets split a private key into multiple shares and distribute them among different devices or servers. During signing, the parties collaborate to compute a standard signature, ensuring the full private key never appears in any single location. It is more resilient to single points of failure than a single private key and appears as a regular address on-chain. However, threshold ECDSA protocols are extremely complex; theoretical security does not equal implementation security. Vulnerabilities disclosed in 2023, such as BitForge and TSSHOCK, demonstrate that failing to validate parameters or omitting zero-knowledge proofs can allow a malicious participant to derive the full private key from others' shares.
This article has three layers:
- Layer 1: The Intuition: From "splitting keys" to "never reassembling keys"
- Layer 2: Real-World Use: Institutional custody, exchanges, personal MPC wallets, and real vulnerabilities
- Layer 3: Mathematics and Engineering details: The difficulty gap between threshold Schnorr and threshold ECDSA, share refreshing, and implementation checklists
Layer 1: The Intuition
1.1 From "Splitting Keys" to "Never Reassembling Keys"
| Scheme | Approach | Weakness |
|---|---|---|
| Shamir Secret Sharing | The private key is split into several shares and stored separately; they are reassembled when needed | The moment they are reassembled, the full private key appears on a specific machine |
| Multi-sig (On-chain) | On-chain contracts require signatures from multiple independent private keys | Rules are public, gas fees are high, and it must be deployed separately for each chain |
| MPC / Threshold Signature | Each party holds one share and they collaborate to compute the signature directly without ever reassembling the private key | The protocol is complex and prone to implementation errors |
1.2 An Analogy
Three people each know one part of a number, and they want to collectively calculate the result of "this number multiplied by a public number." Through a carefully designed set of rules for exchanging information, all three eventually obtain the correct result, but no one learns the complete number. Threshold signatures do something similar, except "multiplication" is replaced by signature computation.
Layer 2: Real-World Use
- Institutional Custody and Exchanges: Custody systems for institutions like Fireblocks and Coinbase make extensive use of MPC, distributing shares across different servers, different clouds, and Hardware Security Modules (HSMs).
- Personal MPC Wallets: A typical configuration is "one share on the phone, one share with the service provider, and one backup share." If the phone is lost, the other two shares can be used for recovery, eliminating the need for a recovery phrase.
- On-chain Transparency: MPC produces standard signatures, so it looks like a regular address on-chain. This differs from multi-sig in EOA and smart contract wallets: it incurs no extra gas fees, but the rules are not enforced on-chain.
Real-world Vulnerabilities:
| Disclosure | Issue |
|---|---|
| BitForge (Fireblocks research team, 2023) | Several popular threshold ECDSA implementations (based on protocols like GG18 / GG20) omitted or simplified zero-knowledge proofs for Paillier key parameters. A malicious participant can construct special parameters to derive other participants' shares through a few signature interactions. |
| TSSHOCK (Verichains, 2023) | In some implementations, the hash encoding method for zero-knowledge proofs was ambiguous, or the challenge space was too small, allowing attackers to forge proofs. |
These are not mathematical errors in the protocol papers, but rather omissions of checks during implementation for the sake of performance or convenience.
Layer 3: Principles and Engineering
3.1 Threshold Schnorr is Easy, Threshold ECDSA is Hard
The signature value of a Schnorr signature is linear with respect to the private key and the nonce . If and are both split using Shamir Secret Sharing, each party calculates their own , and the full signature is obtained by summing them up using Lagrange coefficients. The FROST protocol works this way.
The ECDSA signature value is:
It contains , as well as the product of and . Multiplication and inversion after splitting cannot be done by simply "calculating individually and then adding"; they require additional cryptographic tools. Common practices involve using Paillier Homomorphic Encryption (see "Homomorphic Encryption") or Oblivious Transfer (OT) to perform "multiplication of secret shares," combined with extensive zero-knowledge proofs to ensure every party is honest. The protocol involves many steps and many parameters, leading to many potential points of failure.
3.2 Proactive Refresh
If an attacker can steal shares one by one over time, they will eventually reach the threshold. The countermeasure is periodic refreshing: the parties collaborate to replace their shares with a new set, where the corresponding private key remains unchanged, but the old shares become invalid. This forces an attacker to steal enough threshold shares within a single refresh cycle.
The refresh protocol itself must be handled carefully: if a refresh fails midway or a participant goes offline, it must not leave the system in a chaotic "half-new, half-old" state.
3.3 Implementation Checklist
| Check | Description |
|---|---|
| All zero-knowledge proofs must be verified; they cannot be skipped for performance | The root cause of BitForge |
| Perform full validation on parameters provided by other participants | For example, ensuring the Paillier modulus is indeed a product of two large primes and has no small factors (see "Primality Testing") |
| Fiat–Shamir hashes must encode the entire context without ambiguity | The root cause of TSSHOCK (see Fiat–Shamir in "Schnorr Signatures") |
| The challenge space must be sufficiently large | A space that is too small makes forging proofs feasible |
| The signature nonce must not be reused and must not be controlled by a single party | Otherwise, it leads to the repetition disaster in elliptic curves |
| Malicious participants must be identifiable and excludable when detected | "Identifiable abort" |
| Use audited, actively maintained libraries and follow security advisories | Do not implement it yourself |
3.4 Problems MPC Cannot Solve
- Off-chain Policy: The MPC server "only participates in signing when the policy is met," but this commitment relies on the server's code and operations rather than on-chain rules. If the server is compromised, the policy may fail.
- Frontend Tampering: If all participants sign the same tampered transaction, MPC will still produce a valid signature (see "Bybit Incident and Frontend Integrity").
- Service Provider Dependency: If one party is a service provider, can the remaining shares be used for recovery if the provider goes bankrupt or refuses service? This must be clarified when choosing a product.
Summary
| Layer | Key points |
|---|---|
| Intuition | Shares collaborate to compute the signature; the full private key never appears |
| Difficulty | The and products in ECDSA make thresholding complex; Schnorr is much simpler |
| Lessons | BitForge, TSSHOCK: The protocols are correct, but implementations skipped checks |
| Limitations | Policies are off-chain; cannot prevent frontend tampering; shares must be refreshed periodically |