Overview
A distributed virtual HSM (vHSM) built on a constellation of attested SGX enclaves.
Enclave Vaults is a distributed virtual HSM (vHSM). Each vault instance is a small key-management service that runs inside an Intel SGX enclave: it holds typed key objects, executes cryptographic operations on them inside the enclave, and refuses to act outside the policy attached to each key. A constellation of independent vault instances forms a single logical key-management surface, with redundancy across machines and an information-theoretic distribution path for the secrets that warrant it.
This page is a one-screen orientation. The Architecture page describes the runtime in detail, the Access Control page covers policies, principals, and approvals, and the Standard Interfaces page covers the PKCS#11, KMIP, and REST surfaces your existing software can use to reach a vault-held key.
Where Enclave Vaults sits
| Approach | Trust anchor | Where the master key lives | Cost |
|---|---|---|---|
| Hardware Security Module | Tamper-resistant silicon, FIPS-certified | One device, or a small replicated cluster | €30k to €100k per appliance |
| Cloud KMS | The cloud provider | Provider-operated HSMs | Low, but you trust the provider |
| Software vault | Operating system | Process memory after unsealing | Low, no hardware boundary |
| Enclave Vaults | Independent SGX enclaves, with Shamir Secret Sharing for the secrets that need it | Inside per-vault sealed storage; sensitive shared secrets are split across the constellation | Open source, runs on commodity SGX servers |
Enclave Vaults is the right fit when you want HSM-style key custody without putting the trust of the system in any one device, provider, or operator.
Three properties to remember
- Keys live inside attested enclaves. Typed key objects (signing keys, AES data keys, HMAC keys, derivation seeds, opaque shared secrets) sit in the enclave's sealed state. Callers ask the vault to
Sign,Wrap,Mac,Derive, and so on. By default, raw key material does not cross the enclave boundary. - Distributed trust where it matters. Highly sensitive secrets that the owner wants to keep recoverable across the constellation can be stored as
RawSharekeys: the secret is split with Shamir Secret Sharing, one share per vault, and reconstructed by the owner from any quorum. A single compromised vault leaks one share, which reveals nothing about the secret. - Every operation is gated by a policy that the enclave enforces. A
KeyPolicydescribes which OIDC identities, which calling enclaves, and which fresh approvals are required for each operation. The enclave refuses anything that does not match. There is no admin override.
Typed keys and in-enclave operations
The v0.19 redesign reorganised the vault around typed keys and in-enclave operations, and that is the shape today. The earlier information-theoretic distribution of opaque secrets across attested enclaves is still here as the RawShare key type.
- Typed key objects with in-enclave operations.
Aes256GcmKey,Ed25519SigningKey,P256SigningKey,HmacKey,Bip32MasterSeed,WrappedBlob. By default these keys are non-exportable: the operation runs inside the enclave, only the result leaves. Signing covers both a message the vault hashes and a pre-computed digest the vault signs raw (the path TLS stacks and code signers use). - A richer
KeyPolicy. Per-operation rules with composable conditions (AttestationMatches,ManagerApproval,TimeWindow,CallerHoldsRole), a separateMutabilitysurface, and explicitprincipalsfor owner, managers, auditors, plus optional TEE / FIDO2 / mTLS principals. - A controlled lifecycle for caller-enclave version changes. When the customer application that consumes a key is rebuilt and its MRENCLAVE changes from
v(N)tov(N+1), the new measurement is held in a pending slot until the key owner (and managers, if configured) explicitly approves promoting it into the key'sattestation_profiles. The platform never auto-grants a new measurement access to existing key material; this is a protocol invariant.
A user-first KMS with standard interfaces
Two capabilities were added on top of that core.
- A developer can own keys. Custody is no longer reserved for platform enclaves. Any user can create a vault, hold signing and wrapping keys in it, and author the policy that governs them, through the Privasys CLI (
privasys vault ...) and a REST API shaped like the cloud KMS surfaces developers already know. The API is a client-side proxy, so the data plane stays a direct, attested channel to the constellation; the platform mints the grant and enforces quotas but never sees the key material. - Existing software reaches a vault key unchanged. A PKCS#11 3.1 module puts a vault-held key behind OpenSSL, Java, TLS servers, and code-signing tools, and a KMIP 2.1 gateway lets enterprise key-management software use the constellation as a remote key manager. See Standard Interfaces.
Components
| Component | Repository | Role |
|---|---|---|
| Vault enclave | Privasys/enclave-vaults | Runs inside Intel SGX. Holds keys, runs in-enclave operations, enforces KeyPolicy. |
| Vault directory | Privasys/management-service | Phonebook for the constellation, served from GET /api/v1/vaults. Returns the active set of (endpoint, measurement) tuples for clients to dial and verify. Treated as untrusted by every other component. (Replaced the standalone Attested Registry.) |
| PKCS#11 module | Privasys/pkcs11-provider | A Cryptoki 3.1 provider that proxies to a local agent holding the vault session. Consumption surface for OpenSSL, Java, and other PKCS#11 clients. |
| KMIP gateway | Privasys/kmip-gateway | A KMIP 2.1 front-end deployed as an attested confidential workload. |
| Client SDK (Rust + Go) | Privasys/enclave-vaults-client | Three layers: directory client (discover), Client (single-vault session), Constellation (fan-out, approvals, pending-profile lifecycle). |
| Privasys Wallet | Privasys/auth | Default surface for the live FIDO2 approvals required by sensitive policies. |
| Underlying enclave OS | Privasys/enclave-os-mini | Provides attestation, RA-TLS, sealed storage, OIDC, and the module system the vault is built on. |
Boundaries
Enclave Vaults is a vHSM, not a FIPS 140-3 certified HSM. It has no tamper-evident enclosure and no environmental sensors. The security model rests on Intel SGX isolation, on attested identity for every connection, and (for RawShare keys) on the unlinkability of Shamir shares across independent enclaves. For most threat models this improves on a single appliance taken on faith. Where a specific FIPS certification is a hard legal requirement, dedicated certified HSMs remain the right choice.
The standard interfaces carry a deliberate limit as well: a PKCS#11 or KMIP client cannot present a wallet approval or reason about attested measurements, so operations a key gates on those conditions are unavailable over those interfaces and fail closed. A standard client gets the baseline operations; the richer policy is authored through the native API.
The architectural rationale is in the original blog post on rethinking secrets management. The typed-key redesign is covered in the v0.19 release post, and the standard interfaces in Enclave Vaults speaks PKCS#11 and KMIP.
Attested Dependencies
How a confidential app pins the other enclaves it depends on, so users consent to the whole dependency and the runtime enforces it fail-closed.
Architecture
How the Enclave Vaults distributed vHSM is built. Typed key objects, in-enclave operations, RawShare distribution, per-key policy, and a controlled lifecycle for caller-enclave version changes.