Private Decentralized Communication Network
Go to file
2023-01-16 23:31:30 -06:00
.github Create stale.yml 2020-02-21 03:32:31 -06:00
.vscode added sneakernet auto importing 2020-03-30 20:52:04 -05:00
docs work on wot cli 2022-11-22 00:57:14 -05:00
install move centos install 2021-01-12 05:01:45 +00:00
scripts Removed lots of defunct cruft 2022-09-26 20:06:05 +00:00
src Disconnect peers who stem a bad block 2023-01-16 23:31:30 -06:00
static-data Only expose wot to rpc if rpc is active 2023-01-16 23:30:50 -06:00
tests Added test for multiprocess wrapper 2023-01-12 21:51:03 -06:00
.dockerignore Docker improvements 2021-01-23 04:00:03 +00:00
.env adjusted pythonpath .env 2022-02-09 19:28:00 -06:00
.gitignore add all venvs to gitignore and update changelog 2020-12-22 01:55:05 +00:00
.gitlab-ci.yml added helium test deps to ci 2020-03-04 17:02:03 -06:00
.onionr.yml Rename AUR package to onionr-git 2019-07-22 17:04:02 -07:00
base-requirements.in Mostly finished with wot command processing 2022-09-23 17:31:34 -04:00
CHANGELOG.md add all venvs to gitignore and update changelog 2020-12-22 01:55:05 +00:00
CODE_OF_CONDUCT.md fixed everything being executable permission 2019-06-16 02:04:32 -05:00
CONTRIBUTING.md fixed some bugs 2019-08-06 00:49:31 -05:00
Dockerfile Updated dockerfile 2022-10-22 06:22:05 +00:00
git-update.sh bug fixes in block creation and directory security 2020-11-23 03:47:50 +00:00
ISSUE_TEMPLATE.md Use list for version infos in issue template 2021-01-15 08:56:20 +00:00
LICENSE.txt Update LICENSE.txt 2019-07-12 17:58:46 +00:00
make-release.sh added site lister 2020-02-05 01:49:24 -06:00
Makefile moved to niceware from mnemonic 2019-09-29 21:14:43 -05:00
onionr.sh work on wot cli 2022-11-22 00:57:14 -05:00
README.md Split up requirements that default official plugins have 2022-09-26 20:04:03 +00:00
requirements-base-x86.txt Add result plugin to reduce confusing use of exceptions 2022-12-02 21:41:10 +00:00
requirements-base.in Add result plugin to reduce confusing use of exceptions 2022-12-02 21:41:10 +00:00
requirements-dev.in Bumped dependencies 2021-12-28 13:53:34 -06:00
requirements-dev.txt Bumped dependencies 2021-12-28 13:53:34 -06:00
requirements-x86-all-plugins.txt Add result plugin to reduce confusing use of exceptions 2022-12-02 21:41:10 +00:00
ROADMAP.md correct readme to current status 2022-08-16 10:46:23 -05:00
run_tests.sh Work on gossip tests and cleaned up api server some 2022-05-01 00:45:26 -05:00
SECURITY.md moved tests to parent directory 2019-09-12 21:22:25 -05:00
setprofile.sh fixed everything being executable permission 2019-06-16 02:04:32 -05:00
start-many-nodes.py added script to start many nodes 2020-04-04 00:58:49 -05:00

Privacy Respecting Communication Network 📡

WIP anonymous social platform, mail, file sharing and marketplace

- Discord - Matrix: #onionr:amorgan.xyz

Install Features Screenshots
Docs Get involved Onionr.net/.onion

The main repository for this software is at https://gitlab.com/beardog/onionr/

Note that this README reflects the state of the rewrite, and not the original alpha network

Mirrors Gitea

Onionr ("Onion Relay") is a decentralized/distributed peer-to-peer communication network, designed to be anonymous and resistant to (meta)data analysis, spam, and corruption.

Onionr gives the individual the ability to speak freely, without fear of surveillance and censorship.


Onionr internals

Blocks

At the core, Onionr is an anonymous Distributed Hash Table (DHT) syncing prepackaged blocks using a simple Gossip protocol with Dandelion++ as an overlay network on top of Tor and I2P.

Onionr stores data in independent packages referred to as 'blocks'. The blocks are distributed to all nodes, but are not required to be stored. Blocks and user IDs cannot be easily proven to have been created by a particular user. Even if Dandelion++ is defeated and there is enough evidence to believe that a specific node is linked to a block's creation, nodes still operate behind Tor or I2P and as such cannot be trivially unmasked. Anonymity is achieved by a stateless network, with no given indication of what node a block originates from. In fact, since one is not required to participate in routing or storage to insert a message, blocks often do not originate from any identifiable node, similar to how Bitcoin transactions do not necessarily originate from a wallet directly associated with a node.

Onionr Gossip

Onionr works via epidemic/gossip style routing, with message delivery taking roughly logC(N) cycles where C is the number of nodes to send a message to each cycle and N is the number of connected nodes. So a network of 100 million nodes can deliver messages in a few minutes even with high packet loss and malfunctioning nodes.

Through Dandelion++ message forwarding and key privacy, it is intended to be nigh impossible to discover the identity of a message creator or recipient. Via long-term traffic analysis, a well funded adversary may discover the most probable node(s) to be creating a set of related blocks, however doing so would only lead them to a node behind Tor. As the first node that a block appears on is almost always not the creator of the block, there is plausible deniability regarding the true creator of the block.

Users are identified by ed25519/curve25519 public keys, which can be used to sign blocks or send encrypted data.

Onionr can be used for mail, as a social network, instant messenger, file sharing software, or for encrypted group discussion.

Since Onionr is technically just a data format, any routing scheme can technically be used to pass messages.

The whitepaper is available here.


Main Features

  • 🌐 Fully p2p/decentralized, no trackers or other single points of failure
  • 🕵️ Metadata analysis resistance and anonymity
  • 📡 Transport agnosticism (no internet required)

Roadmap

See ROADMAP.md

Documentation

More docs coming soon.

Install and Run on Linux

The following applies to Ubuntu Bionic. Other distributions may have different package or command names.

Master may be unstable, you should use the latest release tag. (checkout via git: $ git checkout release-latest)

$ sudo apt install python3-pip python3-dev tor

  • Have python3.10, python3-pip, Tor (daemon, not browser) installed. python3-dev is recommended.
  • You may need build-essentials or the equivalent of your platform
  • Clone the git repo: $ git clone https://gitlab.com/beardog/onionr --tags
  • cd into install direction: $ cd onionr/
  • Install the Python dependencies (virtualenv strongly recommended): $ pip3 install --require-hashes -r requirements-x86-all-plugins.txt

Require-hashes is suggested for supply-chain security but is optional. The hashes are not correct for ARM machines. If you are just running a node or want a bare-bones install you can use requirements-base-x86.txt and selectively install the requirements.txt files in static-data/official-plugins/ subdirectories

Run Onionr

  • Run Onionr normally: $ ./onionr.sh start
  • Run Onionr in background as daemon: $ ./start-daemon.sh
  • Gracefully stop Onionr from CLI $ ./onionr.sh stop

Contact/Community

  • Email: onionr [ at ] voidnet.tech
  • Twitter: @onionrnet
  • Matrix: #onionr:amorgan.xyz
  • Discord: https://discord.gg/DVF2bEAzrt (Discord is bad for freedom and privacy, this is only provided for convenience)

Help out

Everyone is welcome to contribute. Help is wanted for the following:

  • Development (Get in touch first)
    • Creation of a shared lib for use from other languages and faster proof-of-work
    • Android and IOS development
    • Mac support (testers needed)
    • Bug fixes and development of new features
  • Testing
  • Translations/localizations
  • UI/UX design
  • Running stable nodes
  • Security review/audit
  • I2P support

Watch the talk from BSidesPDX 2019

improving anonymous networking talk link

Contribute money:

Donating at least $3 gets you cool Onionr stickers. Get in touch if you want them.

sticker

  • Bitcoin: bc1qpayme9rlpkch0qp3r79lvm5racr7t6llauwfmg (Contact us for a unique address or for other coins)

  • Monero: 4B5BA24d1P3R5aWEpkGY5TP7buJJcn2aSGBVRQCHhpiahxeB4aWsu15XwmuTjC6VF62NApZeJGTS248RMVECP8aW73Uj2ax

  • USD (Card/Paypal (no account required)): Ko-Fi

  • Sign up for privacy.com (refferal link) to protect your personal information when contributing or shopping elsewhere, we both get $5 USD.

Note: not tax deductible

Security

Onionr is alpha software. This means it is unstable, probably insecure, and experimental.

No matter how good Onionr and other software gets, there will always be ways for clever or well-funded adversaries to break your security.

Onionr does not protect your identity if you associate your user ID with your name either on Onionr or elsewhere.

Do not rely on Onionr or any other software to hold up if your life or liberty are at stake.

Licenses and Branding

Onionr is published under the GNU GPL v3 license, except for the logo.

The Tor Project and I2P developers do not own, create, or endorse this project, and are not otherwise involved.

Tor is a trademark for the Tor Project. We do not own it.

The Onionr logo was created by Anhar Ismail under the Creative Commons Attribution 4.0 International License.

If you modify and redistribute our code ("forking"), please use a different logo and project name to avoid confusion. Please do not use the project name or logo in a way that makes it seem like we endorse you without our permission.