For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

Cover

No Key Reconstruction

The combined private key d = sc + ss + se is never computed. Only partial signatures are combined using Lagrange interpolation.

Cover

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.

Cover

Enclave Holds Both Shares

Share 2 (active signing) and Share 3 (backup) are both securely stored in the Nitro Enclave. Attestation verifies enclave integrity.

Cover

End-to-End Encryption

Client ↔ Enclave communication uses ECDH key exchange + AES-256-GCM. Server relays encrypted data but CANNOT read it.

Cover

Demo Nonce

This demo uses a shared nonce for simplicity. Production systems should use distributed nonce generation via MPC.

Cover

Simulated Enclave

The Nitro Enclave is simulated for demo purposes. Production should use real AWS Nitro Enclaves with attestation.

Last updated