Skip to content

v0.7.0-phase6 — self-hosted encrypted sync

Pre-release
Pre-release

Choose a tag to compare

@t3dboy t3dboy released this 07 Jul 18:32

Phase 6: self-hostable, zero-knowledge encrypted sync.

  • sync/ is a dumb encrypted blob store the user runs themselves; nothing hosted by the project. All key derivation and encryption are client-side (passphrase → PBKDF2 → HKDF → Kenc/Kmac/Kauth/group_id); the server only holds opaque ciphertext and a hash of the group auth token.
  • Pure stdlib (http.server + sqlite3): server, reference client, and 15-test suite pass on Python 3.9 with no third-party packages. Live pair→push→pull round-trip verified; DB inspection confirms only ciphertext at rest.
  • Endpoints authenticated with request-binding HMAC proofs + constant-time compare; last-writer-wins with tombstones. Dockerfile/compose included (TLS is the operator's job).
  • Shipped AEAD is a documented encrypt-then-MAC construction (stdlib has no AES-GCM); PROTOCOL.md specifies the production upgrade path. Browser-side client integration deferred (ADR-0006).