Python implementation of Tribler's IPv8 p2p- networking layer (Evacuated from NSA/Microsoft Github)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Anonymous b38caed51b no windows support / updating readme 3 months ago
doc degithubbing, depython2ing 3 months ago
ipv8 Only advertise services your peer is actually a part of 5 years ago
twisted/plugins Fixed Twisted plugin import path for Android 5 years ago
.gitignore Added DS_Store files to gitignore 5 years ago
.gitmodules Moved libnacl from submodule to requirements.txt 5 years ago
.pylintrc Disabled no-else-return 5 years ago
LICENSE Initial commit 6 years ago
README.md no windows support / updating readme 3 months ago
__init__.py Initialized project structure 6 years ago
create_test_coverage_report.py Remove test folder from coverage report 5 years ago
ipv8_service.py Add endpoint listening address option 5 years ago
requirements.txt Added support for smaller prime generation 5 years ago
run_all_tests_unix.sh degithubbing, depython2ing 3 months ago
setup.py Added setup.py 5 years ago
test_classes_list.txt Fixed error on execute for closed db 5 years ago

README.md

What is IPv8 ?

IPv8 aims to provide authenticated communication with privacy.

This project has been evacuated from NSA/Microsoft Github.

(I know the name is kinda crazy but that's what they called it)

IPv8 Objectives

  • Authentication. We offer mutual authentication using strong cryptography. During an IPv8 communication session, both parties can be sure of the other party’s identity. IPv8 users are identified by their public key. The initial key exchange is designed so that secrets are never transmitted across the Internet, not even in encrypted form. We use a standard challenge/response protocol with protection against spoofing, man-in-the-middle, and replay attacks.
  • Privacy. IPv8 is specifically designed for strong privacy protection and end-to-end encryption with perfect forward secrecy. We enhanced the industry standard onion routing protocol, Tor, for usage in a trustless environment (e.g. no trusted central directory servers).
  • No infrastructure dependency. Everybody is equal in the world of IPv8. No central web server, discovery server, or support foundation is needed.
  • NAT traversal. IPv8 can establish direct communication in difficult network situations. This includes connecting people behind a NAT or firewall. IPv8 includes a single simple and effective NAT traversal technique: UDP hole-punching. This is essential when offering privacy without infrastructure and consumer-grade donated resources.
  • Trust. You can enhance your security if you tell IPv8 which people you know and trust. It tries to build a web-of-trust automatically.

This package contains IPv8: an amalgamation of peer-to-peer communication functionality from Dispersy and Tribler, developed over the last 10+ years by students and employees of the Delft University of Technology.

The IPv8 library allows you to interface with the existing Dispersy network to build your own applications.

Functionality included by IPv8 at this point is:

  • Cryptographically signed messaging
  • Tor-like anonymous messaging
  • Public service discovery
  • Hidden service discovery
  • TrustChain self-sovereign blockchain
  • Peer discovery using random walks and (sybil resistant) edge walks
  • Peer keep-alive mechanisms
  • Hidden attribute attestation

Implementations on the horizon of this library are stream-based messaging (instead of packet-based), scalable TrustChain concensus and mixnet functionality.

Dependencies

The dependencies for IPv8 are collected in the requirements.txt file

At one point they could be installed using pip:

pip install --upgrade -r requirements.txt

The libsodium library will have to be installed manually. Please follow the instructions for your platform below:

Devuan/Debian/Ubuntu: sudo apt-get install libsodium18

Tests

The test suite can run without any external packages, but the nosetests package is recommended (pip install nose). The test suite will automatically detect your back-end when running the tests. Running tests can be done (on UNIX) by running:

bash run_all_tests_unix.sh

Getting started

IPv8 can be used as a library or as a service. It is easiest to start off with the service, which has been provided here (see the configuration file for invocation options). This file will load the IPv8 stack for signed messaging, anonymous messaging, attribute attestation, public service discovery, peer discovery and peer keep-alive. You can start creating your first network overlay by following the overlay creation tutorial.

Additional documentation is also available for the TrustChain and anonymization provided in IPv8.