dione

Dione is an anonymize and encrypted messaging system build on top on a peer to peer layer.

https://github.com/dione-software/dione

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    1 of 8 committers (12.5%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.7%) to scientific vocabulary

Keywords

hacktoberfest messaging p2p privacy

Keywords from Contributors

ode graph-generation mesh pypi hydrology sequences interactive pinn graph-computing hacking
Last synced: 6 months ago · JSON representation ·

Repository

Dione is an anonymize and encrypted messaging system build on top on a peer to peer layer.

Basic Info
  • Host: GitHub
  • Owner: Dione-Software
  • License: agpl-3.0
  • Language: Rust
  • Default Branch: master
  • Homepage: http://dione.network
  • Size: 212 KB
Statistics
  • Stars: 44
  • Watchers: 2
  • Forks: 1
  • Open Issues: 16
  • Releases: 1
Topics
hacktoberfest messaging p2p privacy
Created over 4 years ago · Last pushed about 3 years ago
Metadata Files
Readme License Citation

README.md

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.

Owner

  • Name: Dione
  • Login: Dione-Software
  • Kind: organization
  • Location: Switzerland

Organization belonging to the Dione network.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software or base research around it, please cite it as below."
authors:
- family-names: "Furmans"
  given-names: "Hannes"
  orcid: "https://orcid.org/0000-0001-5258-9556"
title: "Dione - Decentralized communcication system"
version: 0.1.0
date-released: 2021-07-03
url: "https://github.com/Dione-Software/dione.git"

GitHub Events

Total
Last Year

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 113
  • Total Committers: 8
  • Avg Commits per committer: 14.125
  • Development Distribution Score (DDS): 0.31
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Hannes 5****n 78
Hannes h****s@w****e 16
Noah Dörr a****1@g****m 7
Hannes Furmans h****s@p****h 6
dependabot[bot] 4****] 3
The Codacy Badger b****r@c****m 1
Sagi Sarussi s****s@s****v 1
Hannes h****s@h****4 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 9 months ago

All Time
  • Total issues: 7
  • Total pull requests: 93
  • Average time to close issues: 2 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 5
  • Total pull request authors: 5
  • Average comments per issue: 0.43
  • Average comments per pull request: 0.53
  • Merged pull requests: 32
  • Bot issues: 3
  • Bot pull requests: 62
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • github-actions[bot] (3)
  • umgefahren (1)
  • forouhar-panah (1)
  • hardBSDk (1)
  • ArcheCraft (1)
Pull Request Authors
  • dependabot[bot] (62)
  • umgefahren (26)
  • ArcheCraft (3)
  • tuxiqae (1)
  • codacy-badger (1)
Top Labels
Issue Labels
Database (2)
Pull Request Labels
dependencies (63) enhancement (4) Database (2) hacktoberfest-approved (1)

Dependencies

dione-lib/Cargo.toml cargo
  • criterion 0.3.5 development
  • adler 1.0.2
  • aes-gcm 0.9.2
  • aes-gcm-siv 0.10.3
  • bincode 1.3.3
  • crossbeam-deque 0.8.1
  • digest 0.9
  • double-ratchet-2 0.3.4
  • hashbrown 0.11.2
  • hkdf 0.11.0
  • hmac 0.11.0
  • lz4_flex 0.9.0
  • p256 0.9.0
  • rand 0.8.4
  • rand_core 0.6.3
  • ring-compat 0.3.2
  • seahash 4.1.0
  • serde 1
  • serde_bytes 0.11.5
  • sss-rs 0.9
  • x3dh-ke 0.1.4
  • zeroize 1.3
dione-server/Cargo.toml cargo
  • actix-rt 2.2.0
  • actix-web 3
  • adler 1.0.2
  • anyhow 1.0.43
  • async-trait 0.1.51
  • bincode 1.3.3
  • libp2p 0.40.0
  • prost 0.8
  • rustls 0.18
  • serde 1
  • serde_derive 1
  • sled 0.34.6
  • structopt 0.3.22
  • tera 1.12.1
  • tokio 1.13
  • tokio-stream 0.1.7
  • toml 0.5
  • tonic 0.5
  • tracing 0.1
  • tracing-subscriber 0.3.1
  • void 1.0.2
.github/workflows/docker.yml actions
  • docker/build-push-action v2 composite
  • docker/login-action v1 composite
  • docker/setup-buildx-action v1 composite
  • docker/setup-qemu-action v1 composite
.github/workflows/rust-sec.yml actions
  • actions-rs/audit-check v1 composite
  • actions/checkout v1 composite
.github/workflows/rust.yml actions
  • actions/checkout v2 composite
Dockerfile docker
  • debian buster-slim build
  • rust latest build