Basically an unnecessary reimplementation of TLS
Each machine in the network has an associated secp256k1 keypair. When a device wants to connect, it negotiates an ECDHE secret. This prevents any snooping from outside.
Once a connection is established, the devices form a gossip network, passing arbitrary messages between participants. These can be public (e.g. connection status), or private (e.g. a personal message). In the latter case, ECDH will be used to securely encrypt the contents.
I wanted to mess around with cryptographic primitives. Also I wanted to make a cool, cypherpunk network.
yarn
yarn start
Please do not contact any contributors privately to disclose a bug. Make an issue so that this is immediately brought to light.
- Typescript
- ZeroMQ for socket communication
- Redux for state management
- Mocha for testing