Security model

Security claims should be specific and verifiable.

Here's exactly what JawaChat protects today, what it doesn't yet, and the work still needed before high-risk use.

Local key vault

Your recovery key is encrypted with PBKDF2-SHA-256 (310,000 iterations) and AES-256-GCM. The vault password is never stored.

Encrypted messaging

Messages, reactions, edits, receipts and call signaling use NIP-17 / NIP-59 / NIP-44. Group messages are wrapped separately for each member.

Identity verification

Pairwise safety codes, verified contacts and key pinning help you spot unexpected identity changes.

Encrypted at rest

History, contacts, groups, settings and the outbox are encrypted with HKDF-derived AES-GCM keys and authenticated data.

Metadata hygiene

Photos are re-encoded in the browser to strip EXIF/GPS. Notification previews are off by default. Relay-only calls can hide your IP.

Hardened relay

Signed challenge authentication, fresh timestamps, payload caps, rate limits, origin allow-lists and idle cleanup.

Already implemented
  • Encrypted browser vault and local data store
  • Signed public profile events and handle lookup
  • Author-checked edits and unsend requests
  • Safety-code verification, key pinning and blocking
  • Strict Content Security Policy, no third-party scripts
  • Relay challenge auth, payload limits and rate controls
Needed for higher assurance
  • Forward-secret ratcheting sessions
  • Post-compromise security
  • MLS-class group session review
  • Device revocation and key transparency
  • Protocol fuzzing and supply-chain hardening
  • Independent cryptographic and application audit
Threat model at a glance

Who can see what

PartyCan seeCannot see
Relay operatorsEncrypted gift wraps, recipient key tags, timing, IP addressMessage content, sender identity inside the wrap
Network observersThat you connect to relays and STUN/TURN serversMessage content (TLS + end-to-end encryption)
Call peersYour IP address (unless relay-only TURN is on)Your other conversations
Anyone with your unlocked deviceEverything while you're signed inYour vault password
JawaChat projectNothing — there is no JawaChat account serverYour identity, contacts or messages
Current use boundary

JawaChat is an active prototype. Don't rely on it for emergency calling, guaranteed anonymity or life-safety communication.

Found a vulnerability?

Please email jawachat@yahoo.com with the details and give us time to fix it before sharing them publicly.