Keys and devices
There are no passwords and no shared accounts. Every person and machine holds keys of its own, made where they are used.
Device keys
Section titled “Device keys”Each device has two P-256 keys: one signs every request (with a timestamp and a nonce, replay-guarded), one is for key agreement, so the hub can seal results, such as a temporary credential, that only this device can open. The device pins the hub’s own certificate authority at pairing.
A device registers how its signing key is protected, and the hub caps what it may do by that level. The level is the client’s statement (there is no attestation yet), but it bounds the device for good: a key file stolen from a CI box never approves and never becomes owner.
| level | the signing key | roles | approves | deletes production directly |
|---|---|---|---|---|
presence | Secure Enclave with user presence; TPM with a PIN for each use | owner, operator, viewer | yes | yes, name typed |
passphrase-interactive | key file, passphrase typed | operator, viewer | no | asks a person |
tpm | TPM without a per-use PIN | operator, viewer | no | asks |
tang | key file unlocked by Clevis/Tang | operator, viewer | no | asks |
passphrase-stored | key file, passphrase from a file or the environment | operator, viewer | no | asks |
The key stores in vai: a passphrase-protected key file on every system; the TPM on Windows and Linux; the Secure Enclave on a Mac through the ownpaas app today, in vai itself In progress.
Agent keys
Section titled “Agent keys”One per agent integration and device, P-256, without user presence, registered by the device’s signing key. The hub derives the principal agent from it and holds it to the agent’s ceiling. See agents and approvals.
API keys
Section titled “API keys”For CI: scoped (read, twins:write, access:developer, access:admin, releases:promote, destructive), with an expiry of 30, 90 or 365 days and an optional list of source addresses. Only a hash of the secret is stored (Argon2id); the key is shown once. A key of kind agent may hold only read, twins:write and access:developer.
The hub’s own keys
Section titled “The hub’s own keys”- Data keys seal every secret the hub stores: your cloud tokens, S3 keys, repository passwords, its certificate authority’s key. They are a systemd credential on the hub’s server, never in the backup bucket.
- The recovery key, shown once by
vai up, unwraps the data keys onto a new server after a loss. Keep it offline. - The agents’ keys (ed25519) sign every request a server’s agent makes.
Release keys
Section titled “Release keys”Releases are signed with keys that stay offline. The hub and the agents install only what verifies. The ceremony for the release keys has not happened yet; the alpha runs on alpha keys In progress.
Reporting a vulnerability
Section titled “Reporting a vulnerability”Write to security@mitjamartini.com. The same address is in vaicoa.com/.well-known/security.txt.