Ed25519. Your keys. Your KMS.
The signing layer is the load-bearing cryptographic surface of the platform. Veridra cannot sign on your behalf without you — by construction, not by policy.
We designed it so Veridra can't sign on your behalf without you: by construction, not by policy.
Algorithm choice
We sign every attestation with Ed25519 (RFC 8032). Ed25519 is deterministic, misuse-resistant, fast enough to run at decision-rate without batching, and widely supported by HSMs and managed KMSs. Signatures are 64 bytes, public keys are 32 bytes, and the construction avoids the side-channel leaks ECDSA nonce reuse can cause.
Payloads are canonicalized with RFC 8785 JCS before signing. Determinism is enforced across every SDK (Python, Node, Go, Java) by golden-vector tests in CI. A decision signed from Python and re-signed from Go over the same logical payload produces byte-identical signatures.
Key custody
The defining property of the signing layer is that Veridra doesn't hold the private key. It's a structural claim enforced by the data path, not a soft claim enforced by audit.
BYOK is the default, not an upsell
Each tenant is provisioned with their own signing key in their own KMS or HSM. There is no shared key, and no platform-level signing identity that can impersonate a tenant.
KMS-relative, not key-resident
The signer service holds a KMS reference (ARN, key URI, PKCS#11 handle), not key material. It requests signatures over mTLS; the key never leaves the HSM/KMS boundary. Revoke the reference and Veridra immediately loses the ability to sign for you.
Per-tenant isolation
The kms-adapter enforces tenant scope on every request. A signer pod handling tenant A physically cannot call the key associated with tenant B, because the SPIFFE identity on the mTLS session is not authorized for it.
Rotation without re-signing history
Keys rotate on schedule or on demand. Old public keys stay published for verification of historical signatures. A rotation event is itself a signed entry in the transparency log, so auditors can see exactly when custody changed.
Supported backends
The kms-adapter speaks a small internal protocol and a backend driver for each supported custodian. All drivers present the same Ed25519 interface upward; the signer has no awareness of which backend a tenant uses.
- AWS KMS — Asymmetric Ed25519 CMK with per-tenant grants. Usage is bounded by CloudTrail, giving you your own audit log of every signature we requested.
- Azure Key Vault / Managed HSM — Ed25519 key with per-tenant access policy. Managed HSM variant gives FIPS 140-2 Level 3 custody.
- GCP KMS / Cloud HSM — Ed25519 key in a tenant-owned keyring. HSM protection level where required by residency or certification.
- HashiCorp Vault (Transit) — Self-hosted option for customers who keep their root of trust on-prem.
- PKCS#11 HSM — Direct integration with on-prem HSMs (Thales, Entrust, YubiHSM) for regulated environments where even managed cloud KMS is out of scope.
Signing, logging, and verification together
A signature proves a statement came from the holder of a specific key. The transparency log then proves when that statement entered the record, and that it hasn't been altered since. Together they give a regulator-admissible evidence chain.
Verification is open-source and doesn't require Veridra to be online. Customers, auditors, and adversaries can run the same CLI against the same public keys and the same witness-co-signed log roots, and get the same answer.