Wanderland

Advaita Key Management Standard

A platform key-management standard for services on CoreWeave that need AWS-managed key material for two purposes: encrypting tenant data at rest, and signing/verifying provenance records. Two key classes share one credential-and-delivery path. The encryption half is proven in advaita-product-drive; the signing half uses wanderland-core-pki and is exercised by foxfire and wisp. Services with either need adopt this rather than reinventing it.

Summary

Two key classes over one delivery path:

Both are reached from a CoreWeave pod by the same projected-ServiceAccount-token web-identity role; both sit under one per-env CMK and one deletion-protection guardrail. Private material lives as an SSM SecureString encrypted under the CMK; public material is published in the clear, so verification never depends on KMS being alive.

Encryption keys (envelope over SSE-C)

Signing keys (wanderland-core PKI)

Rotation without losing verifiability

The requirement: rotating a signing key must never make old chains unverifiable. Old public keys are retained forever; superseded private keys are destroyed.

Delivery and credentials (shared)

Key lifecycle (both classes)

Deletion-protection guardrails

Required for any environment holding real encrypted or signed data, and a production go-live prerequisite:

Deleting a published signing public key destroys verifiability exactly as deleting the CMK destroys ciphertext — the same guardrail family, extended to the SSM public-key path. These live in the deploy repo (ensure_kms + key/parameter policy) and AWS, not in the application.

What an adopting service implements

Encryption:

Signing:

Both:

Boundary

Encryption-at-rest protects against object-store or credential compromise, not against the authenticated client. For browser-direct SSE-C the raw per-object key is handed to the client on every part PUT and GET, so it is not a control against a user reading their own tenant's data — the intended model. A service that must withhold plaintext from the client needs a server-side proxy or a different scheme.

Signing proves authorship and ordering, not confidentiality. In-cluster producers that post unsigned records (for example foxfire's /plan and /placement) sit outside the signed chain and rely on network trust; whether each such producer joins the chain is a per-producer decision now that the signing rails exist.

Tracked work