Skip to content

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

  1. Your browser derives a key-encryption key (KEK) from your password (PBKDF2, 600,000 iterations). This key never leaves your device.
  2. 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.
  3. 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.
  4. 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.