3-Party MPC Wallet
Tresori is a professional-grade Multi-Party Computation (MPC) wallet service designed to protect your digital assets with institutional-level security. Unlike conventional crypto wallets — where a single private key control all your funds — Tresori splits control across three independent parties, ensuring that no single point of failure can ever compromise your wallet.
Secure threshold ECDSA for Ethereum. The private key is split into 3 shares across Client, Server (relay), and Nitro Enclave. Any 2 shares can sign, but the full key is never reconstructed.
The Core Promise
Your private key is NEVER fully assembled in any one place — not on your device, not on our server, not anywhere. Tresori signs transactions using partial contributions from separate parties, and the complete private key simply does not exist in reconstructed form at any point.
🛡️Zero Knowledge Key Derivation + Server Relay Architecture
The combined private key is never computed. Client communicates with Server only - Server relays to Enclave. Client ↔ Enclave data is end-to-end encrypted.
🔌Service Connections
🌐Client
Active signing party
Generates partial sig s₁
Combines final signature
User interface
Server (Relay)
Relay/Proxy only
Forwards to Enclave
Contributes to DKG
Cannot compute shares
Nitro Enclave
Holds Share 2 (active)
Holds Share 3 (backup)
Attestation verified
All crypto processing
Distributed Key Generation
Generate a new MPC wallet. Each party generates its own secret and shares polynomial evaluations. The combined public key is derived via EC point addition - the private key is never assembled.
When you create a new Tresori wallet, the system uses a cryptographic process called Distributed Key Generation (DKG). Each of the three parties independently generates its portion of the key. The combined Ethereum address is derived without any party ever seeing the complete private key.
• Your key share (Share 1) is generated in your browser and stored only on your device.
• The Enclave independently generates and holds Share 2 (active) and Share 3 (backup).
• No party ever transmits a complete key to another.
• Your Ethereum address is computed from the combined public key — the same address you will use for all transactions.
Recover Client Share (Secret Resharing)
Lost your client share? Recover it using the enclave's Share 2 & Share 3 stored in S3. The enclave uses proactive secret sharing to generate a fresh set of shares for the same private key; old shares are invalidated and replaced.
How Recovery Works
✍️ Sign Message (Client + Enclave Share 2)
Create a valid Ethereum signature using Share 1 (Client) and Share 2 (Enclave via Server relay). Partial signatures are combined using Lagrange interpolation; the private key is never reconstructed.

Security Properties
No Key Reconstruction
The combined private key d = sc + ss + se is never computed. Only partial signatures are combined using Lagrange interpolation.
Server is Relay Only
Server holds NO shares - it only relays encrypted data between Client and Enclave. Server cannot read f_c(3) or compute any shares.
Enclave Holds Both Shares
Share 2 (active signing) and Share 3 (backup) are both securely stored in the Nitro Enclave. Attestation verifies enclave integrity.
End-to-End Encryption
Client ↔ Enclave communication uses ECDH key exchange + AES-256-GCM. Server relays encrypted data but CANNOT read it.
Demo Nonce
This demo uses a shared nonce for simplicity. Production systems should use distributed nonce generation via MPC.
Simulated Enclave
The Nitro Enclave is simulated for demo purposes. Production should use real AWS Nitro Enclaves with attestation.
Last updated