All Projects → Dione-Software → dione

Dione-Software / dione

Licence: AGPL-3.0 License
Dione is an anonymize and encrypted messaging system build on top on a peer to peer layer.

Programming Languages

rust
11053 projects
HTML
75241 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to dione

Antidote
No longer maintained
Stars: ✭ 388 (+846.34%)
Mutual labels:  messaging, p2p
Qtox
qTox is a chat, voice, video, and file transfer IM client using the encrypted peer-to-peer Tox protocol.
Stars: ✭ 3,843 (+9273.17%)
Mutual labels:  messaging, p2p
bigbrother-specs
Research and specification for Big Brother protocol
Stars: ✭ 13 (-68.29%)
Mutual labels:  messaging, p2p
research
research, notes & ideas on various subjects
Stars: ✭ 54 (+31.71%)
Mutual labels:  messaging, p2p
Conceal Core
Conceal Core - Daemon & Wallets (CLI)
Stars: ✭ 72 (+75.61%)
Mutual labels:  messaging, p2p
Berty
Berty is a secure peer-to-peer messaging app that works with or without internet access, cellular data or trust in the network
Stars: ✭ 5,101 (+12341.46%)
Mutual labels:  messaging, p2p
Eiskaltdcpp
File sharing program using DC and ADC protocols
Stars: ✭ 277 (+575.61%)
Mutual labels:  messaging, p2p
Specs
Modular p2p messaging stack, with a focus on secure messaging.
Stars: ✭ 40 (-2.44%)
Mutual labels:  messaging, p2p
Berkanansdk
Bluetooth mesh messaging SDK for apps
Stars: ✭ 150 (+265.85%)
Mutual labels:  messaging, p2p
rfc
Modular p2p messaging stack, with a focus on secure messaging.
Stars: ✭ 81 (+97.56%)
Mutual labels:  messaging, p2p
iGap-Plus
An alternative official version iGap messenger client
Stars: ✭ 20 (-51.22%)
Mutual labels:  messaging
MessagesView
view for displaying messages similarly to messages iOS system app
Stars: ✭ 16 (-60.98%)
Mutual labels:  messaging
nats-account-server
A simple HTTP/NATS server to host JWTs for nats-server 2.0 account authentication.
Stars: ✭ 62 (+51.22%)
Mutual labels:  messaging
zeronet-tracker
Simple, robust, ZeroNet tracker (client & server) implementation
Stars: ✭ 23 (-43.9%)
Mutual labels:  p2p
mobizon-node
Biblioteca NodeJS para trabalhar com os serviços Mobizon API
Stars: ✭ 17 (-58.54%)
Mutual labels:  messaging
opengnb
GNB is open source de-centralized VPN to achieve layer3 network via p2p with the ultimate capability of NAT Traversal.GNB是一个开源的去中心化的具有极致内网穿透能力的通过P2P进行三层网络交换的VPN。
Stars: ✭ 440 (+973.17%)
Mutual labels:  p2p
jackpair
p2p speech encrypting device with analog audio interface suitable for GSM phones
Stars: ✭ 26 (-36.59%)
Mutual labels:  p2p
decent
Open source messaging platform for the modern web
Stars: ✭ 21 (-48.78%)
Mutual labels:  messaging
facebook-send-api-emulator
Facebook Messenger Emulator & Facebook Send API Emulator functionality allowing you to test web hooks on developer's machine.
Stars: ✭ 24 (-41.46%)
Mutual labels:  messaging
iGap-API
iGap Core Messaging offer Open APIs for developers . This API allows you to build your own customized iGap clients.
Stars: ✭ 22 (-46.34%)
Mutual labels:  messaging

Dione Logo without Text Codacy Badge GitHub issues GitHub Workflow Status GitHub Workflow Status GitHub release date GitHub last commit Docker Pulls GitHub top language

Secure and Anonymous Messaging

WARNING: Currently Dione is not ready to be used nor does it fulfill its goal of being an anonymous messenger. In order to achieve that every client's traffic and maybe every node's traffic hast to be routed through an Onion Router.

At the present moment the following anonymization networks are considered for integration. However, first other issues have to be resolved and none of these services have currently a stable, native and usable Rust client.

Service Favoured Client
Tor Arti
I2P I2p-rs (could be deprecated)
Lokinet (none)

What is Dione?

Dione is the attempt to build a messaging application that is as censorship resistant as possible. This is achieved by not relying on a single entity for storing and distributing messages. Instead, every message is split up into several parts and stored on several servers (nodes). These servers are only known to sender and receiver. This is achieved by a simplified Double Ratchet (Address Ratchet). In the background the Dione servers are connected via libp2p. Kademlia is utilized to find servers for the Address Ratchets Output and to find providers for message parts.

A more detailed description will follow. In the process of standardizing and improving of Dione breaking changes are very likely

Try out Dione yourself

There is a docker image, but this is still under heavy development and not suggested at the present moment.

Currently, there is no Dione main-net that one can just join. For now, you have to set up a test-net yourself.

Install

To install the server as well as the test client you need to have an up-to-date installation of Rust. To update Rust, run:

rustup update

Next you have to clone this repository and enter it. Then run the following command, to install the server as well as the test-client:

cargo install --path .

Alternatively you can run the executables shipped with the release.

Run Nodes

For reasons not fixed yet the application is not stable enough to run on a permanent net. For a net test net you need at least two peers that have to be able to connect to each other.

The server application has many optional arguments one can pass. For now we run the nodes in two terminals on the same computer. For starters just run the following:

dione-server --db-path node1 --ex 0.0.0.0:8010 --clear-address http://localhost:8010 --listen-address /ip4/0.0.0.0/tcp/0

Next open your browser and navigate to: localhost:8080 Copy the peer address starting with /ip4/127.0.0.1/tcp/. This is the libp2p address of the first node which the second node connects to. This address has to be set as the environment variable for remote peer with (run in new terminal window):

export PEER=address copied previous

Next start the second nodes with different parameters:

dione-server --db-path node2 --ex 0.0.0.0:8011 --clear-address http://localhost:8011 --listen-address /ip4/0.0.0.0/tcp/0 --web-http-port 8100

Up next: Sending messages!

Run Client

Open a new terminal (we call this terminal client-1). Run the test client in it with:

dione-test-client client1 --server http://localhost:8010

Open another terminal (we call this terminal client-2). Run the second client in it:

dione-test-client client2 --server http://localhost:8011

In terminal window client-2 one can see an Uuid, probably looking like this: d75258f6-b3b9-4639-87a5-055c5fcf9155 Copy this to your clipboard.

Change to client-1, select Add User. In the next step paste the previously copied Uuid. Select Initiate contact next. Accept the next step.

Copy the Uuid from client-1.

Change to client-2, select Add User. In the next step paste the previously copied Uuid. Select React on invitation next. Accept the next question. Change to client-1 and accept. Change to client-2 and accept again.

You can send and receive messages now.

Use the both terminal windows to send and recieve messages. The menu should be self-explanatory. Obviously a message has to be send, in order to receive one.

Contribute

There's a lot to do:

  • Fix a lot of bugs!
  • Custom libp2p transport
  • Slim dione-lib
  • Audit dione-lib
  • Better error handling and better recovery
  • Check of libp2p part by an expert. Many issues probably start here.
  • Document everything better
  • Make messages universally usable from more language (essentially remove bincode)
  • Implement dione-net-lib and dione-lib in App languages (Swift / Kotlin / Dart)
  • Program end-user-friendly app

If you want to contribute feel free to fork the repository, document your changes and create a pull request.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].