Experiment 04 Security engineering Synthetic data only
Sensitive value, opaque token.
Replace a sensitive value with a random reference before it travels through the rest of your system.
Vault is a technical project for studying token boundaries, tenant isolation, and controlled reveal. It accepts synthetic test data only and is not production-ready.
01 / Method
A narrow tokenisation path.
One value enters the vault boundary. One unrelated reference leaves it.
-
01
Caller / synthetic input
{ profile: "pii.email", payload: "…" } -
02
Vault boundary
validate → encrypt → bind -
03
Caller / opaque output
{ token: "vlt_xK7…wQ" }
The token carries no original format or value. The illustrated payload and token are abbreviated synthetic examples.
02 / Security properties
Designed around narrow trust.
These are mechanisms implemented and exercised by the spike, not claims of certification or production assurance.
-
P.01
Random reference
Opaque by construction
Tokens use 192 random bits and do not preserve the input's shape, length, or semantic profile.
-
P.02
Authenticated encryption
Context-bound protection
AES-256-GCM protection binds ciphertext to tenant, token, profile, and key version as authenticated context.
-
P.03
mTLS + HMAC
Two client checks
Protected operations require a registered mTLS identity and a fresh HMAC HTTP message signature.
-
P.04
Least authority
Scoped lifecycle
Write, reveal, and delete actions are tenant-scoped, profile-aware, and tested for idempotent retry behavior.
03 / Input profiles
Validation at the edge.
Profiles constrain accepted synthetic inputs. Every successful profile returns the
same kind of opaque vlt_ reference.
-
01
generic.opaqueArbitrary non-empty synthetic bytes for general integration exercises.
≤ 64 KiB -
02
gift_card.numberConstrained alphanumeric test identifiers, including hyphens and underscores.
4–64 chars -
03
loyalty.identifierConstrained loyalty references for synthetic customer-flow testing.
4–64 chars -
04
pii.emailASCII email-shaped fixtures with basic local and domain validation.
≤ 254 chars -
05
payment.panLuhn-valid payment-card-shaped test numbers. Never submit real account data.
12–19 digits
04 / Integration
From trust to token in four steps.
The documentation is the source of truth for request and response contracts.
-
01
Provision a test client
Register a synthetic-use mTLS certificate and request-signing key.
-
02
Select a profile
Base64-encode a synthetic fixture that satisfies its input constraints.
-
03
Sign and tokenise
Send a fresh signed request and retain the returned opaque reference.
-
04
Control the lifecycle
Reveal only for an authorised purpose, or delete when the reference expires.
Inspect the exact schema, required signed headers, and synthetic request examples.
Open API reference