Skip to content

code-zm/nymCHAT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nymCHAT

A security focused messaging app powered by the Nym Mixnet. The repo is divided into two parts: the Chat Client (in the client folder) and the Discovery Node (in the server folder). Together they enable pseudonymous, end-to-end encrypted messaging.

Overview

Users register a public key and username with a discovery node. The discovery node provides user lookups & message relaying. Nodes maintain a database mapping each username to its corresponding public key and a senderTag.

A senderTag is a random UUID string derived from received SURBs. This is used to track which received messages correspond to SURBs. Single Use Reply Blocks (SURBs) allow the server to forward messages to clients without ever knowing the destination of the message.

Initially, messages are routed through the discovery node; however, clients can exchange an encrypted handshake to enable direct client-to-client communication for an extra layer of privacy.

Security Properties

I. Transport Privacy

All traffic routed through Nym mixnet via sphinx packet format

II. Message Privacy

End-to-end encryption using ECDH with ephemeral keys + AES-GCM

III. Authentication

Signature verification using long-term EC keys (SECP256R1)

IV. Pseudonymity

Username registration with no linkage to real identity

V. Direct Communication

Optional p2p mode bypasses discovery node after initial contact

Quickstart

For ease of use, we recommend running the app via Docker.

Detailed documentation on building, running, and troubleshooting:

For those interested in the system design, we recommend starting here:

Future Work

  • Rust backend
  • Group chats
  • MLS Cryptography
  • Federated network of discovery nodes

About

Mixnet Messaging App

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •