All Projects → Peergos → Peergos

Peergos / Peergos

Licence: agpl-3.0
A p2p, secure file storage, social network and application protocol

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Peergos

Photos
[DEPRECATED] Encrypted, secure, decentralized personal data wallet -- technology behind textile.photos
Stars: ✭ 236 (-73.63%)
Mutual labels:  photos, ipfs, encryption, social-network, decentralized
Web Client
Cryptee's web client source code for all platforms.
Stars: ✭ 174 (-80.56%)
Mutual labels:  documents, photos, privacy, encryption, encrypted
Unstoppable Wallet Ios
A secure and decentralized Bitcoin and other cryptocurrency wallet for iPhone. Supports Bitcoin, Ethereum, EOS, Binance Chain, Bitcoin Cash, DASH, ...
Stars: ✭ 180 (-79.89%)
Mutual labels:  p2p, ipfs, peer-to-peer, decentralized
Gun
An open source cybersecurity protocol for syncing decentralized graph data.
Stars: ✭ 15,172 (+1595.2%)
Mutual labels:  p2p, peer-to-peer, encryption, decentralized
Orion
[Moved to Gitlab] Easy to Use, Inter Planetary File System (IPFS) desktop client
Stars: ✭ 115 (-87.15%)
Mutual labels:  storage, p2p, ipfs, decentralized
Js Ipfs
IPFS implementation in JavaScript
Stars: ✭ 6,129 (+584.8%)
Mutual labels:  p2p, ipfs, peer-to-peer, decentralized
Onionr
Private Decentralized Communication Network 🎭 🧅
Stars: ✭ 84 (-90.61%)
Mutual labels:  p2p, privacy, encryption, decentralized
Constellation
Peer-to-peer encrypted message exchange
Stars: ✭ 365 (-59.22%)
Mutual labels:  p2p, peer-to-peer, privacy, encryption
pop
Run a point-of-presence within Myel, the community powered content delivery network.
Stars: ✭ 28 (-96.87%)
Mutual labels:  peer-to-peer, ipfs, decentralized, p2p
ipfs-chat
Real-time P2P messenger using go-ipfs pubsub. TUI. End-to-end encrypted texting & file-sharing. NAT traversal.
Stars: ✭ 84 (-90.61%)
Mutual labels:  peer-to-peer, ipfs, decentralized, encrypted
Orbit Db
Peer-to-Peer Databases for the Decentralized Web
Stars: ✭ 6,381 (+612.96%)
Mutual labels:  p2p, ipfs, peer-to-peer, decentralized
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 (+469.94%)
Mutual labels:  p2p, ipfs, privacy, encryption
Js Dag Service
Library for storing and replicating hash-linked data over the IPFS network.
Stars: ✭ 81 (-90.95%)
Mutual labels:  p2p, ipfs, peer-to-peer, decentralized
Unstoppable Wallet Android
A secure and decentralized Bitcoin and other cryptocurrency wallet for Android phones. Supports Bitcoin, Ethereum, EOS, Binance Chain, Bitcoin Cash, DASH, ...
Stars: ✭ 165 (-81.56%)
Mutual labels:  p2p, ipfs, peer-to-peer, decentralized
geesome-node
🦈 Your self-hosted decentralized Messenger, Social network, Media file storage on top of IPFS! Freely communicate in encrypted chat groups, share images, video, text or any data without a risk of censorship or blocking.
Stars: ✭ 90 (-89.94%)
Mutual labels:  social-network, peer-to-peer, ipfs, decentralized
field-manual
The Offical User's Guide to OrbitDB
Stars: ✭ 178 (-80.11%)
Mutual labels:  peer-to-peer, ipfs, decentralized, p2p
Rust Ipfs
The InterPlanetary File System (IPFS), implemented in Rust.
Stars: ✭ 739 (-17.43%)
Mutual labels:  p2p, ipfs, peer-to-peer, decentralized
adamant-iOS
iOS native client for ADAMANT Decentralized Messenger
Stars: ✭ 20 (-97.77%)
Mutual labels:  privacy, encryption, decentralized
Yjs
Shared data types for building collaborative software
Stars: ✭ 5,894 (+558.55%)
Mutual labels:  p2p, peer-to-peer, decentralized
Layr
A decentralized (p2p) file storage system built atop Kademlia DHT that enforces data integrity, privacy, and availability through sharding, proofs of retrievability, redundancy, and encryption, with smart-contract powered incentive scheme
Stars: ✭ 90 (-89.94%)
Mutual labels:  peer-to-peer, decentralized, p2p

Peergos Logo

Peergos

Peergos is building the next web - the private web, where end users are in control. Imagine web apps being secure by default and unable to track you. Imagine being able to control exactly what personal data each web app can see. Imagine never having to log in to an app ever again. You own your data and decide where it is stored and who can see it. At Peergos, we believe that privacy is a fundamental human right and we want to make it easy for everyone to interact online in ways that respect this right.

The foundation of Peergos is a peer-to-peer encrypted global filesystem with fine-grained access control designed to be resistant to surveillance of data content or friendship graphs. It will have a secure messenger, with optional interoperability with email, and a totally private and secure social network, where users are in control of who sees what (executed cryptographically). Our motto at Peergos is, "Control your data, control your destiny."

The name Peergos comes from the Greek word Πύργος (Pyrgos), which means stronghold or tower, but phonetically spelt with the nice connection to being peer-to-peer. Pronuniation: peer-goss (as in gossip).

Demo

Want to try it out now? Here's our demo https://demo.peergos.net.

Beta

Our beta is live at https://beta.peergos.net/. There are a limited number of free accounts available.

Tech book

You can read more detail about our features and architecture in our tech book.

Media

The slides of a talk introducing Peergos are here

Architecture talk at IPFS Lab Day:

Architecture Talk

Introduction and 2020 update:

Introduction and 2020 update

Introduction:

Introduction

Tour:

Tour

Support

If you would like to support Peergos development, then please make a

recurring donation less than 100 EUR per week

or a

larger or one off donation.

Audit

Cure53 conducted an audit of Peergos in June 2019. The final report is here.

Chat room

There is a public chat room for Peergos on Matrix.

Peergos aims

  • To allow individuals to securely and privately store files in a peer to peer network which has no central node and is generally difficult to disrupt or surveil
  • To allow secure sharing of files with other users of the network without visible meta-data (who shares with who)
  • To have a beautiful user interface that any computer or mobile user can understand
  • To enable a new secure form of email
  • To be independent of the central TLS Certificate Authority trust architecture
  • Self hostable - A user should be able to easily run Peergos on a machine in their home and get their own Peergos storage space, and social communication platform from it.
  • A secure web interface
  • To enable secure real time chat
  • Plausibly deniable dual login to an account, ala Truecrypt
  • Optional use of U2F for securing login

Project anti-aims

  • Peergos does not provide anonymity, yet. Anonymity can be achieved by creating and only ever accessing a User account over Tor

Architecture

1.0 Layers of architecture

  • 1: Peer-to-peer and data layer - IPFS provides the data storage, routing and retrieval. A User must have at least one peergos instance storing their data for it to be available.
  • 2: Authorization Layer - a key pair controls who is able to modify parts of the file system (every write is signed)
  • 3: Data storage - controlled by a given public key there is a merkle-champ of encrypted chunks under random labels, without any cross links visible to the network (the network can't deduce the size of files)
  • 4: Encryption - Strong encryption is done on the user's machine using TweetNaCl, with each 5MiB chunk of a file being encrypted independently.
  • 5: Social layer implementing the concept of following or being friends with another user, without exposing the friend network to anyone.
  • 5: Sharing - Secure cryptographic sharing of files with friends.

2.0 Language

  • The IPFS layer is currently coded in Go
  • The server is coded to run on JVM to get portability and speed, predominantly Java
  • The web interface is mostly coded in Java and cross compiled to Javascript, with the exception of the tweetnacl and scrypt libraries, and a small amount of GUI code in JS for Vue.js.
  • Apps are written in HTML5

3.0 Nodes

  • There is a pki node which ensures unique usernames using a structure similar to certificate transparency. This data is mirrored on every peergos server. Eventually we might put this small amount of data in a blockchain for full decentralization.
  • A new node contacts any public Peergos server to join the network

4.0 Trust

  • New versions of the software will be delivered through Peergos itself. (Able to be turned off by the user if desired)
  • A user who trusts a public Peergos server (and the SSL Certificate authority chain) can use the web interface over TLS
  • A less trusting user can run a Peergos server on their own machine and use the web interface over localhost
  • A more paranoid user can run a Peergos server on their own machine and use the CLI or the fuse binding
  • Servers are trustless - your data and metadata cannot be exposed even if your server is compromised (assuming your client is not compromised)
  • IPFS itself is not trusted and all data stored or retrieved from it is verified externally.
  • The data store (which may not be ipfs directly, but S3 compatible service for example) is also not trusted

4.0 Logging in

  • A user's username is used along with a random salt and the hash of their password and run through scrypt (with parameters 17, 8, 1, 96, though users can choose harder parameters if desired) to generate a symmetric key, an encrypting keypair and a signing keypair. This means that a user can log in from any machine without transfering any keys, and also that their keys are protected from a brute force attack (see slides above for cost estimate).

5.0 Encryption

  • private keys never leave client node, a random symmetric key is generated for every file (explicitly not convergent encryption, which leaks information)

5.1 Post-quantum encryption

  • Files that haven't been shared with another user are already resistant to quantum computer based attacks. This is because the operations to decrypt them from logging in, to seeing plain-text, include only hashing and symmetric encryption, both of which are currently believed to not be significantly weakened with a quantum computer.
  • Files that have been shared between users are, currently, vulnerable to a large enough quantum computer if an attacker is able to log the initial follow requests sent between the users (before the user retrieves and deletes them). This will be replaced with a post-quantum asymmetric algorithm as soon as a clear candidate arrives.

6.0 Friend network

  • Anyone can send anyone else a "follow request". This amounts to "following" someone and is a one way protocol. This is stored in the target user's server, but the server cannot see who is sending the friend request (it is cryptographically blinded).
  • The target user can respond to friend requests with their own friend request to make it bi-directional (the usual concept of a friend).
  • Once onion routing is integrated, there will be no way for an attacker (or us) to deduce the friendship graph (who is friends with who).

7.0 Sharing of a file (with another user, through a secret link, or publicly)

  • Once user A is being followed by user B, then A can share files with user B (B can revoke their following at any time)
  • File access control is based on cryptree system used by Wuala
  • a link can be generated to a file or a folder which can be shared with anyone through any medium. A link is of the form https://demo.peergos.net/#KEY_MATERIAL which has the property that even the link doesn't leak the file contents to the network, as the key material after the # is not sent to the server, but interpreted locally in the browser.
  • a user can publish a capability to a file or folder they control which makes it publicly visible

Development

Dependencies

Requires jdk11 and ant to build. Use the following to install dependencies:

On debian

sudo apt-get install ant
sudo apt-get install openjdk-11-jdk

On macOS

brew install ant # installs openjdk as a dependency
ant -version
Apache Ant(TM) version 1.10.8 compiled on May 10 2020

Build

Note that this doesn't include any web ui, for the full build including the web interface build https://github.com/peergos/web-ui

ant dist

Cross compile to JS

ant gwtc

Run tests

You need to have ant-optional installed:

On debian

sudo apt-get install ant-optional

On macOS

Nothing additional is needed for the ant package on macOS.

Running tests will install and configure the correct version of IPFS automatically, run the daemon, and terminate it afterwards.

ant test

Usage

Instructions for self hosting will be updated once it is supported.

In the meantime you can experiment (BEWARE: we occasionally need to delete the data on this test network, so don't use it as your only copy of anything) with running your own Peergos server in our demo network by downloading a release from https://alpha.peergos.net/public/peergos/releases

You will need Java >= 11 installed.

Run Peergos with:

java -jar Peergos.jar daemon -pki-node-id QmdM1TrjBJnYzzESATtrrMNPAtjJdqfcV2vF1kM39DY7cc -peergos.identity.hash z59vuwzfFDoqvC6R5QBV4tXx6ZK3SytpvvcjKnWD2VXZXhxDbFq7Fuu -log-to-console true

You can then access the web interface over http:/localhost:8000/

Note that whichever Peergos server you sign up through will be storing your data (we plan to enable migration later), so if you don't intend on leaving your Peergos server running permanently, then we recommend signing up on https://demo.peergos.net and then you can log in through a local Peergos instance and all your data will magically end up on the demo.peergos.net server.

Development Notes

The ant compile target will only compile sources in src/peergos/{client,server,shared} folders.

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].