Owner: the founder. Approved: 2026-10-08. Review: annually, and on any significant change — a new key, a new place a key is kept, a new algorithm, or an incident that touches a key.
Scope: every cryptographic mechanism that protects Customer Data or access to
it, and the keys behind each one. Where each credential lives and when it is
due is docs/security/secrets.md; how to replace one is
docs/runbooks/secret-rotation.md. This page states the rules and the limits.
cryptography
library's Fernet, and tokens are signed with standard HMAC constructions.
New code uses SHA-256 or stronger for any new hash or signature.secrets.md §1 names — never
in git, a log line, a template, a model prompt, an issue or a chat.secrets.md §3. A
rotation is finished only when the old value is revoked.| What is protected | Mechanism | Who holds the key |
|---|---|---|
Browser and webhook traffic to ataski.com and api.ataski.com |
TLS 1.2 minimum, TLS 1.3 preferred (Caddy defaults); Let's Encrypt certificates issued and renewed automatically; HSTS for two years including subdomains (the preload directive is sent; the domain is not on the browsers' preload list) | Certificate private keys in Caddy's data volume on the application server |
| Application to Neon Postgres | TLS, required by the connection string | Neon; database credentials in the production environment configuration |
| Application to Cloudflare R2 and to every sub-processor API | HTTPS to the vendor's endpoint | Each vendor; API credentials in the production environment configuration |
| Database at rest, including point-in-time history | AES-256, by Neon | Neon — Ataski holds no key |
| Files at rest (uploads, generated PDFs, transcripts) | AES-256, by Cloudflare R2 | Cloudflare — Ataski holds no key |
| Connected-account credentials (OAuth tokens, API keys, mailbox passwords, customer-supplied Anthropic keys, webhook secrets) | Fernet (AES-128-CBC with HMAC-SHA256) in the application, before the row is written; the columns are classified secret and never exported | One application key in the production environment configuration — see §4 |
| The keyed lookup hash of an accounting company id | HMAC-SHA256 under a subkey derived from the credential key with HKDF-SHA256 | Derived at run time; not stored |
| Sign-in sessions | WorkOS sealed session cookie, __Host- prefixed, Secure, HttpOnly |
The WorkOS session-sealing key, in the production environment configuration |
Signed links and tokens (OAuth state, CSRF, unsubscribe and consent links, share links, add-in and MCP tokens) |
HS256 JWTs, or itsdangerous signatures |
The application signing key, in the production environment configuration |
access-control.md §8).docs/runbooks/secret-rotation.md — mint new, deploy it,
verify the path that uses it, revoke the old, record it in the internal
rotation ledger.