Crates.io | onemfive |
lib.rs | onemfive |
version | 0.0.15 |
source | src |
created_at | 2020-04-28 19:20:49.762861 |
updated_at | 2020-04-28 19:22:56.223996 |
description | 1M5 daemon providing censorship-resistant communications and services |
homepage | https://1m5.io |
repository | https://github.com/1m5/1m5-daemon.git |
max_upload_size | |
id | 235094 |
size | 189,228 |
or request a BTC or XMR address to donate crypto directly!
A secure open-source decentralized censorship-resistant peer-to-peer application platform with end-to-end encryption and anonymity as a base layer for creating easy to build and use secure decentralized peer-to-peer applications requiring no server connections that can be used around the world by any person looking to protect their communications and personal data from unethical monitoring, interception, intrusion, and censorship.
Currently moving Java-based version 0.6.5-SNAPSHOT to Rust embedded within a Linux-based operating system.
In the interests of ensuring the 1M5 mission, all copyright automatically imposed on the 1M5 project by any and all people and organizations are removed and thus nullified. We believe this to be encompassed in the Unlicense statement. All 1M5 services and sensors are created with the Unlicense statement by default unless otherwise specified,
Bouncycastle is embedded in 1M5 Core and its MIT-like license is here.
Freedom of Speech - a principle that supports the freedom of an individual or a community to articulate their opinions and ideas without fear of retaliation, censorship, or sanction. The term "freedom of expression" is sometimes used synonymously but includes any act of seeking, receiving, and imparting information or ideas, regardless of the medium used.
Censorship - the suppression of speech, public communication, or other information, on the basis that such material is considered objectionable, harmful, sensitive, politically incorrect or "inconvenient" as determined by government authorities or by community consensus.
Constraining the free flow of information between people is a direct threat to our freedom and censorship of communications on-line is growing world-wide.
On-line communications are censored at the point of entrance by Internet Service Providers (ISP). They act as gateways to the internet providing governments control over speech by having the ability to restrict usage and track people's usage via their leased IP addresses. In order to make tracking usage much more difficult, tools have come out that provide techniques called onion-/garlic-routing where the source and destinations of internet routes can not be determined without breaking encryption, a very expensive feat, sometimes impossible today when considering the encryption algorithms used.
Two primary tools today that support this are Tor and I2P. Tor provides a browser that makes it easier to use while I2P is much less known. Both are complementary in that Tor was designed for browsing today's current web sites anonymously. I2P was designed for peer-to-peer communications within I2P. Neither have good APIs for developers to embed in their products making uptake slow for many applications.
A third tool on the horizon is one that completely circumvents ISPs by not using them. They're called direct wireless mesh networks and they can communicate directly device-to-device using technologies such as WiFi Direct. Firechat is an example used during the 2014 Hong Kong protests after the Chinese government threatened to shutdown the internet in that area. New mesh solutions are popping up including RightMesh that seek to improve on earlier designs. But the technology is still in its infancy and needs to be pulled into ever day applications more easily once they've matured.
Even getting these technologies in wide use doesn't solve the problem of online censorship. People in governments, corporations, and other thieves are constantly finding ways to circumvent these technologies to censor and steal information.
In addition:
1M5 works to solve these issues by providing three primary benefits.
We provide a Maneuvering Condition (ManCon) setting to signal what level of maneuvering is likely required to prevent censorship. This should be set by the end user based on their circumstances. They should also be made aware of recommended ManCon levels for the jurisdiction they are currently in. These ManCon levels are largely based on Press Freedom Index and updated on the ManCon page.
Setting the ManCon level manually by the end user informs the codebase what based level of ManCon should be used although final ManCon is determined by blocks encountered during routing and thus how to ratchet up resistance as these blocks occur.
For developers using the API, all requests for services, e.g. Bitcoin, require an Envelope with a ManCon level set. This ManCon level decides what base level of privacy is desired. Options are Low, Medium, High, Very High, Extreme, and Neo. All P2P communications use High ManCon as the default resulting in the use of I2P with latency expectations between 200 milliseconds and 2 seconds. This is the default setting in the Envelope.
When making web requests, remember to set the appropriate ManCon level otherwise all web requests will use the HIGH ManCon level thereby routing all web requests through the I2P layer to 1M5 nodes with Tor enabled resulting in higher than might be expected latencies yet very censorship-resistant and private page views. This is the ideal setup for people in China as an example wishing to view web pages globally without censorship and without getting a knock on their door where Tor is getting heavily blocked.
Open/normal SSL based communications with no expected censorship or privacy intrusion attempts is the norm.
Examples: Norway, Iceland, Costa Rica, Jamaica, Ireland
Expect latencies of 500 milliseconds to 2 seconds unless 1DN is needed.
Normal censorship attempts by states on reading news (public web sites getting blocked, government shutdown of cloud cdn content). Many moving towards using Tor and/or VPNs although no fear of circumventing censorship attempts.
Examples: Australia, United States, France, United Kingdom
Expect latencies of 500 milliseconds to 4 seconds unless 1DN is needed.
Tor and VPNs are beginning to get blocked. Many beginning to move to I2P. Some self-censorship likely. This is the default setting for 1M5.
Examples: Brazil, Greece, Poland, Panama, Nicaragua
Expect latencies of 4-10 seconds.
I2P is getting attacked slowing the network and people are beginning to get threatened for circumventing censorship attempts resulting in self-censorship.
Examples: Mexico, Venezuela, Russia, India, Turkey
Expect latencies of 6-16 seconds unless 1DN used which could result in very large latencies where only asynchronous messaging (e.g. Email) and asynchronous web requests are plausible.
Internet has been blocked for end user, e.g. local cellular service towers shutdown or provider turns off access and/or threats of imprisonment and/or death are made to induce self-censorship with actual evidence of enforcement.
Examples: China, North Korea, East Turkestan, Iran, Saudi Arabia, Iraq, Egypt
Expect wide-ranging latencies.
Whistleblower with deep state top secrets or investigative journalist with life-threatening information.
Wide-ranging latencies but highest privacy and censorship-resistance.
1M5 is composed of a Service-Oriented Architecture (SOA) design using a minimalistic service bus for micro-services, a Staged Event-Driven Architecture (SEDA) design for asynchronous multi-threaded inter-service communications, a service registry, internal core services, and a number of networked services for advanced intelligent interaction with peers.
This software runs as an operating system daemon providing:
Packets are used to route Envelopes across networks.
Envelopes are routed within the destination node's 1M5 Daemon process to fulfill a request.
----------- OS Process -------------- ----------- OS Process --------------
- ------------------------------- - - ------------------------------- -
- - SEDA Bus - - - - [API] Browser - -
- ------------------------------- - - ------------------------------- -
- - -------------------------------------
- ------- ---------------------- -
- - - - Network Router - - ------------ OS Process -------------
- - - ---------------------- - - ------------------------------- -
- - - - - - [API] Messenger - -
- - - ---------------------- - - ------------------------------- -
- - - - LiFi Client - - -------------------------------------
- - - ---------------------- -
- - - - ----------- OS Process --------------
- - S - ---------------------- - - ------------------------------- -
- - e - - Bluetooth Client - - - - [API] CLI - -
- - r - ---------------------- - - ------------------------------- -
- - v - - -------------------------------------
- - i - ---------------------- -
- - c - - WiFi Direct Client - - ----------- OS Process --------------
- - - ---------------------- - - ------------------------------- -
- - B - - - - [API] External Service - -
- - u - ---------------------- - - ------------------------------- -
- - s - - HTTPS Client - - -------------------------------------
- - - ---------------------- -
- - - -
- - - ---------------------- -
- - - - VPN Client - -
- - - ---------------------- -
- - - -
- - - ---------------------- -
- - - - TOR Client - -
- - - ---------------------- -
- - - -
- - - ---------------------- -
- - - - I2P Client - -
- - - ---------------------- -
- - - -
- - - ---------------------- -
- - - - Locha Mesh Client - -
- - - ---------------------- -
- - - -
- - - ---------------------- -
- - - - Satellite Client - -
- - - ---------------------- -
- - - -
- - - ---------------------- -
- - - - FS Radio Client - -
- - - ---------------------- -
- - - -
- - - ---------------------- -
- - - - API (Localhost) - -
- - - ---------------------- -
- - - -
- - - ---------------------- -
- - - - Service Router - -
- - - ---------------------- -
- - - -
- - - ---------------------- -
- - - - Keychain - -
- - - ---------------------- -
- - - -
- - - ---------------------- -
- - - - InfoVault - -
- - - ---------------------- -
- - - -
- - - ---------------------- -
- - - - CDN - -
- - - ---------------------- -
- - - -
- - - ---------------------- -
- - - - DID - -
- - - ---------------------- -
- - - -
- - - ---------------------- -
- - - - MongoDB - -
- - - ---------------------- -
- ------- -
-------------------------------------
External processes like the Browser, Messenger, and CLI can use the API to send/receive messages via services. The API packs up the service request into an Envelope and transmits it to the SEDA Bus via its inbound external channel. The SEDA Bus retrieves this message asynchronously sending it to the Service Bus. If the message is a Packet, it sends it to the Network Router. If the message is an Envelope, it sends it to the Service Router.
$> cargo build --release
$> cargo test
$> rustup target add armv7-unknown-linux-gnueabihf
$> sudo apt-get install -qq gcc-arm-linux-gnueabihf
$> cargo build --release --target=armv7-unknown-linux-gnueabihf
$> cargo install cargo-deb
$> cargo deb
$> cargo install cargo-rpm
$> cargo rpm build