SamaChatSamaChat

Security & Encryption

Last updated: 23 July 2026

SamaChat is engineered so that only you and your intended recipients can read your conversations. Not our engineers. Not our infrastructure providers. Not us. This page describes the cryptographic design, our operational safeguards and how to disclose vulnerabilities responsibly.

Encryption at a glance

  • Messages: NaCl "box" — Curve25519 ECDH for key agreement, XSalsa20 for the stream cipher, Poly1305 for authentication. 24-byte random nonce per message.
  • Key derivation: your Curve25519 seed is derived from your password on your device using PBKDF2-SHA256, 210,000 iterations, with a per-user salt bound to your user ID.
  • Key storage: the derived private key is cached in your browser's local storage under a user-scoped key. It is never transmitted to our servers.
  • Key discovery: only your Curve25519 public key is published to our directory so contacts can encrypt to you.
  • Calls (audio/video): media flows peer-to-peer through a Selective Forwarding Unit (Cloudflare Calls) protected by DTLS-SRTP. Media is not recorded and is never stored on our servers.

What our servers can — and cannot — see

  • Cannot see: the plaintext of your messages, attachments, reactions or edits; the content of your calls; your password; your private encryption key.
  • Can see: that a ciphertext blob was sent from one account to another at a given moment; conversation membership; call signalling metadata; billing status.

We consider metadata sensitive and minimise its collection. See the Privacy Policy for retention windows.

Edit & delete

Editing a message re-encrypts the new ciphertext and replaces the old server blob. Deleting removes the row immediately. Because we hold no plaintext copy, deletion is irreversible on our side once processed.

Cross-device continuity

Signing in from a new device deterministically re-derives the same keypair from your password, so past messages decrypt. Changing your password (which is strongly recommended if compromised) rotates your keypair and prevents new senders from encrypting to the old key. Please export any critical content before a password change if you rely on it.

Transport & infrastructure

  • TLS 1.3 everywhere between clients and edge.
  • HSTS enforced on www.samachat.co.uk.
  • Content Security Policy, X-Frame-Options and referrer controls to reduce injection and clickjacking risk.
  • Postgres row-level security (RLS) on every user-facing table — data isolation is enforced in the database, not just the app layer.
  • Least-privilege service roles; secrets stored in an encrypted vault; no service keys shipped to browsers.

Account safety controls

  • Passwords are checked against the Have I Been Pwned (HIBP) leaked-password corpus at sign-up.
  • Email verification is required to activate an account.
  • Every user can block and report another user. Reports are triaged by our safety team.
  • Admins can suspend accounts that breach our Terms; suspended sessions are invalidated at the auth layer.

Vulnerability disclosure

We welcome coordinated disclosure. Please email hello@samachat.co.uk with:

  • A clear description and reproduction steps.
  • The affected URL(s) and any proof-of-concept payload.
  • Your preferred contact method for follow-up.

We aim to acknowledge within 48 hours and to keep you updated until resolution. Please do not exploit, exfiltrate, or share user data. Good-faith research conducted within these guidelines will not result in legal action.

Limitations you should know

  • End-to-end encryption cannot protect against a compromised device (malware, physical access, screen recording). Keep your device patched.
  • Metadata (who talks to whom, when) is inherently visible to any messaging service.
  • Recovery of past messages requires knowing your password; we cannot reset it and preserve historical decryption.