ryco117 / distort-server

A reference-implementation homeserver for the research anonymity protocol, DistoRt, with broadcasting over IPFS
https://ryco117.github.io/distort-server/
GNU General Public License v3.0
3 stars 1 forks source link
anonymity-protocol homeserver ipfs-node

DistoRt Homeserver

(site)

About

A reference implementation homeserver for the research anonymity protocol DistoRt (designed by JS Légaré), with message broadcasting performed over IPFS. The homeserver is created with Node.js and stores its data to a MongoDB database. It can be interacted with remotely through REST API calls. A privately managed IPFS node must be exposed to the homeserver for pushing and receiving messages.

Security

DistoRt provides both anonymity and confidentiality. This means that both the recipients and contents of messages are hidden from anyone monitoring the communication. This is achieved through the use of public-key cryptography and a broadcast network. Messages are encrypted using the public key of the recipient and broadcast over the network to all participants. Since the message was encrypted to a specific key, only intended target will be able to decrypt and read the contents. Furthermore, since the message was broadcast, any one of the peers on the channel could potentially be the target of the message, providing receiver anonymity. In addition, messages are broadcast exactly once every 5 minutes to ensure that anonymity can be preserved even when an attacker is listening for patterns in timing between outgoing messages.

Build

Docker Build

Run docker-compose up to launch containers for a private MongoDB database, contained IPFS node, and the distort homeserver (exposing the configured port; default is 6945).

Host Build

Can be easily built with make && npm install then launched with npm start. In this instance you are responsible for having a private MongoDB database and IPFS node that the homeserver can access. This will require manual configuration of the config.json file, documentation for which can be found here.

Technical Docs

More detailed documentation overviewing the servers function and the REST API can be found here.

Additional Comments