Source code and details: https://git.anarchists.space/NanoChat/Server

Features

  • Small codebase
  • Messages expire after 30 days
  • Panic button to delete all messages in a room
  • WebSocket for communication
  • Docker support

Technical details

  • AES-256-GCM for client-side encryption
  • Key is not sent to server

all 5 comments

sorted by: hot top controversial new old
[–] 5 points 4 months ago (1 child)

How does the anonymity work?

  • source
  • hideshow 1 child comment
  • [+] 1 point 4 months ago (1 child)
  • [–] [S] 1 point 4 months ago

    Codebase is small and easy to audit. The panic button wipes all chat history in a room and blocks future messages. OnionShare fully depends on Tor’s built-in encryption for message security while NanoChat has its own encryption, which means you can host it on different anonymity networks.

  • source
  • parent
  • [–] 1 point 4 months ago

    A few ideas that could further strengthen the design:

    • Consider deriving separate keys from a master secret using HKDF (e.g. encryption key, authentication key, attachment key) instead of relying on a single key for everything.
    • Room IDs alone could leak metadata if discovered. An HMAC-based room authentication scheme could help without requiring the server to know any encryption keys.
    • Adding replay protection with counters/nonces and periodic key rotation would make the protocol more resilient.
    • For public deployments, some abuse protection (rate limiting, room creation limits, optional proof-of-work) would help prevent DoS attacks.
  • source