Skip to main content

1. Goals and Terminology

Work in progress — not audited

This chapter is part of an initial draft specification. Enkrypted Chat has not been independently audited. Content may change.

1.1 Goals

Enkrypted Chat aims to provide:

  1. Direct peer messaging — Browser-to-browser communication over WebRTC without a central message store.
  2. Layered end-to-end encryption — Application-level cascade (MLS, Signal, ML-KEM, AES) on top of WebRTC transport cryptography.
  3. User-controlled keys — Keys generated and held on the client; no registration server for identity.
  4. Modular delivery — Shared cryptography, P2P, and UI logic via Module Federation across apps (chat, files, calls).
  5. Self-hostable infrastructure — Signaling broker, static bundles, and TURN/STUN can be operated by the user or third parties.

1.2 Non-goals (v1 specification scope)

The following are out of scope for this specification version unless noted as future work:

  • QR / offline manual signaling — Connection establishment via broker only (see Chapter 3).
  • Interoperability with Signal, Matrix, or other clients — single implementation only.
  • Formal compliance certification — No HIPAA/GDPR certification claims; privacy-by-design goals only (Chapter 7).
  • Tor-native routing — WebRTC is not documented for Tor; see Chapter 11.
  • Monetization or business model — Product FAQ covers project economics separately.

1.3 Product scope

This specification covers the Enkrypted Chat product surface, including features present in code (some experimental):

Feature areaSpecification treatment
1:1 messagingCore, normative
Group chatDocumented; partial / experimental
File sharing & OPFSDocumented; encryption at rest WIP
Document editor & calendarDocumented at architecture level
Voice/video callsDocumented; SFrame E2EE experimental
PWA / browser deploymentIn scope
Tauri Android / desktopOut of scope for current deployment

1.4 Terminology

TermDefinition
PeerA browser instance identified by a peer ID and participating in WebRTC.
Peer IDOpaque client-generated identifier used for signaling and routing; not a long-term cryptographic identity by itself.
Signaling serverPeerJS-compatible broker; relays SDP/ICE for connection setup only.
TURN relayRelay server used when direct P2P fails; may see encrypted traffic and metadata.
Application ciphertextPayload after cascading cipher encryption, before WebRTC framing.
Cascade / cascading cipherSequential application of multiple cipher layers (see Chapter 4).
MLSMessage Layer Security (RFC 9420); group-oriented protocol used as a cascade layer.
Signal ProtocolX3DH key agreement + Double Ratchet; implemented in Rust/WASM.
ML-KEMModule-lattice KEM (post-quantum layer in cascade).
Semi-trustedInfrastructure that must not learn plaintext but may learn metadata or deliver untrusted code if compromised.
TCBTrusted computing base — here, the user’s browser/OS assumed for crypto execution.

1.5 Normative language

When this specification uses MUST, SHOULD, MAY, MUST NOT, and SHOULD NOT, they are to be interpreted as described in RFC 2119.

1.6 Privacy-by-design principles

Positive Intentions designs Enkrypted Chat toward:

  • Data minimization — No central archive of message plaintext.
  • Purpose limitation — Infrastructure components used only for connectivity and static delivery, not analytics on message content.
  • User control — Local storage, optional relay/TURN configuration, disablement of metadata-heavy features where implemented.
  • Transparency — Open documentation of trust boundaries and known limitations.

These are design goals, not regulatory certifications.