The shape
- The CMK never leaves the HSM.
- The DEK can be rotated frequently without rewriting every ciphertext immediately (envelopes carry a
dekRefand the corresponding wrap is fetched at decrypt time). - A single record can be re-wrapped for additional organizations (sharing) without re-encrypting.
- Organization key destruction can make remaining encrypted envelopes unrecoverable after the KMS deletion window. It does not erase unencrypted metadata, exports, or endpoint copies.
The algorithm
Additional authenticated data
Every envelope’s AAD binds it to its location. An adversary who copies a ciphertext from one record to another (transplantation attack) cannot decrypt it: the AAD they would have to forge includes the destination record’s identity, and the GCM tag fails verification. This means:- A field copied from one record to another in the same table fails to decrypt.
- A field copied from one organization to another fails to decrypt.
- A field copied between two semantically different fields on the same record fails to decrypt.
DEK lifecycle
A new organization receives a freshly minted DEK:Create the org's CMK
Mint the first DEK
Use the active DEK for new envelopes
Rotate on a recurring schedule
Admin-triggered rotation
Plaintext DEK caching
Decrypting a record requires the plaintext DEK. Calling KMS for every decrypt is too slow for a workspace that opens hundreds of records per session, so plaintext DEKs are cached in the operating system keychain on the desktop with a short lifetime.safeStorage uses the platform credential service to protect cached values at rest. This is an OS-account boundary, not a defense against a privileged process on an unlocked workstation.
The bounded TTL is a deliberate safety margin: a stolen workstation that is signed in for a day still has limited useful key material once the cache expires, and an explicit sign-out purges every cached vault entry immediately.
Cross-organization shares
When a user shares a resource with a member of another organization, the resource’s encrypted contents must become readable to the other org without exposing the originating org’s DEK. Studio uses a per-resource DEK wrap for this:Originating org unwraps the record
Per-record DEK is wrapped for each participating org
Recipient org reads the share
Revoking a share removes the wrap
Encrypted fields
The following fields are encrypted under the org DEK at rest:KMS access policy
Each organization’s CMK has a key policy that only permits decryption when the caller is bound to that organization. The binding is established at sign-in: the user’s identity claim is propagated as an AWS principal tag on every signed call, and KMS will only unwrap a DEK when the tag and the key’s policy align with the encryption context the application supplies. A user signed into organization A should not be able to unwrap organization B’s data key because the identity tag, key policy, and encryption context do not match. This protects encrypted fields; it does not replace resolver checks on unencrypted metadata.Organization deletion and cryptographic shredding
When an organization is deleted, an organization-lifecycle handler:Schedule the CMK for deletion
Stop minting new envelopes
Wait the AWS-mandated window
CMK is destroyed
How to verify any of this
Studio runs as a managed SaaS in Altostrat’s AWS account. The current vault, KMS, CloudTrail, and AppSync control plane is not deployed into your AWS account. The verification options reflect that:- FIPS endpoint and HSM: AWS’s published documentation establishes that the FIPS KMS endpoint in
us-east-1runs on FIPS 140-2 validated hardware. Our internal integration suite asserts on every release that we route to the FIPS endpoint; the assertion details are part of the security pack we share under NDA. - DEK rotation cadence and key isolation: producible from our CloudTrail on request as part of a security or compliance review.
- Per-organization isolation: observable in any record export — each organization’s encrypted blobs reference a different KMS key, and sharing produces additional per-organization wraps.
- Envelope versioning: observable in any record export — the version tag is unambiguous and lets us evolve the format without breaking historical records.