Security model
Local key custody
User identity private keys, recovery phrases, and backup passwords are used locally. Encrypted backups can be stored by Sigma. This reduces server-side exposure of user signing keys, but does not protect a compromised browser, malicious extension, weak backup password, or intentionally exported key.
Sigma also stores account/session data, public profiles, linked-provider evidence, and service metadata, and operates with its own server secrets. Do not describe it as storing “no personal data,” having “zero server secrets,” or providing a universal zero-knowledge guarantee. See the privacy policy.
OAuth and application sessions
Use S256 PKCE, cryptographically random state, browser-bound server transactions, exact redirects, and the registered client signing key. Validate callbacks before token exchange. Verify ID tokens before relying on their claims. Keep application sessions in HttpOnly cookies and enforce resource ownership on the server.
The current Next callback adapters do not independently verify state. The legacy token-for-endpoint helper does not mint an authenticated session. See integration and Bitcoin authentication.
Accounts and recovery
A Better Auth account session, a local backup unlock, and wallet authorization are distinct. Email/social/passkey sign-in can establish a session without making a private key available. Recovery through a linked provider locates ciphertext; the required local decryption factor is still needed.
Session revocation and cookie caching have different freshness properties; the issuer config enables a five-minute session cookie cache. Do not promise immediate global logout from every cached session. Revoking an app grant also does not erase tokens copied elsewhere or data already disclosed.
Claims and certificates
Treat profile display fields as user-authored. Verify account email evidence separately. For certificates, validate signatures, subject, certifier trust, requested fields, and fresh revocation information. A catalog listing is not issuance availability. Publicly disclosed data cannot be made private again by local deletion or revocation.
Operational controls
Rate limiting is opt-in on custom routes and uses multiple buckets; it is not a blanket anti-abuse guarantee. Self-hosted deployments must provision and protect their database, cache, service secrets, provider credentials, HTTPS origin, and dependency updates. No compliance certification, global latency SLA, or security audit result is implied by using Bitcoin signatures.
Report a suspected issue privately through contact with a redacted reproduction; never include live secrets.