Privacy & Session Confidentiality¶
Alkiviades encrypts your conversations so that nobody — including the operator of this service — can read what you have written or searched.
What is protected¶
| Data | Stored as |
|---|---|
| Your messages (questions and answers) | AES-256-GCM ciphertext |
| Session titles | AES-256-GCM ciphertext |
| Web search queries and cached results | AES-256-GCM ciphertext |
| Tool-call metadata, cited sources | AES-256-GCM ciphertext |
Session ids, timestamps, and turn counts remain visible so the sidebar can list your sessions — these contain no content.
How it works¶
- Your browser derives a key-encryption key (KEK) from your password (PBKDF2, 600,000 iterations). This key never leaves your device.
- A random data key (DEK) encrypts your data. Only the wrapped DEK (encrypted with your KEK) is stored on the server — the server can never open it on its own.
- The DEK is sent over TLS with each request and lives only in your
browser tab (
sessionStorage) and the server's memory for the duration of the request. It is never written to disk or a database. - Logs are scrubbed: search queries, tokens, and credentials are redacted before anything is written to a log file.
What this protects against¶
- Anyone reading the database directly (operator, hosting provider, a database breach) — they see only ciphertext.
- Log files and admin diagnostic tools — they contain no user content.
- Server restarts, backups, or database dumps — useless without your KEK.
Honest limitations¶
- The server must process your text in memory to answer (it sends it to the AI provider). A maliciously modified server — or a runtime compromise — could in principle read it while processing. This design guarantees zero access at rest, not against an actively hostile server.
- The AI provider (DeepSeek) processes your text under its own privacy policy.
- If you forget your password, your history cannot be decrypted (the same trade-off password managers make). Use a strong, memorable password; recovery phrases for device login are planned.
- Your own computer is trusted: the KEK derivation happens there.
For clients and auditors¶
Verification is scripted and repeatable: backend/e2e_crypto_check.py
performs the full flow (login → key bootstrap → chat) and then audits
the database, the API without keys, the log files, and the search
cache for plaintext leakage. Run it against any deployment.