All Projects → status-im → bigbrother-specs

status-im / bigbrother-specs

Licence: other
Research and specification for Big Brother protocol

Projects that are alternatives of or similar to bigbrother-specs

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 (+39138.46%)
Mutual labels:  messaging, p2p
Antidote
No longer maintained
Stars: ✭ 388 (+2884.62%)
Mutual labels:  messaging, p2p
Eiskaltdcpp
File sharing program using DC and ADC protocols
Stars: ✭ 277 (+2030.77%)
Mutual labels:  messaging, p2p
rfc
Modular p2p messaging stack, with a focus on secure messaging.
Stars: ✭ 81 (+523.08%)
Mutual labels:  messaging, p2p
Berkanansdk
Bluetooth mesh messaging SDK for apps
Stars: ✭ 150 (+1053.85%)
Mutual labels:  messaging, p2p
Specs
Modular p2p messaging stack, with a focus on secure messaging.
Stars: ✭ 40 (+207.69%)
Mutual labels:  messaging, p2p
Qtox
qTox is a chat, voice, video, and file transfer IM client using the encrypted peer-to-peer Tox protocol.
Stars: ✭ 3,843 (+29461.54%)
Mutual labels:  messaging, p2p
Conceal Core
Conceal Core - Daemon & Wallets (CLI)
Stars: ✭ 72 (+453.85%)
Mutual labels:  messaging, p2p
research
research, notes & ideas on various subjects
Stars: ✭ 54 (+315.38%)
Mutual labels:  messaging, p2p
dione
Dione is an anonymize and encrypted messaging system build on top on a peer to peer layer.
Stars: ✭ 41 (+215.38%)
Mutual labels:  messaging, p2p
udpt
UDP Transport: compress, encrypt and send any data reliably over unreliable UDP connections
Stars: ✭ 40 (+207.69%)
Mutual labels:  messaging
qpid-proton-j
Mirror of Apache Qpid Proton-J
Stars: ✭ 28 (+115.38%)
Mutual labels:  messaging
PriceDoge
A Chrome extension for price comparison
Stars: ✭ 67 (+415.38%)
Mutual labels:  p2p
autodl-rutorrent
ruTorrent plugin for autodl-community fork of autodl-irssi
Stars: ✭ 90 (+592.31%)
Mutual labels:  p2p
ios-swift-chat-app
Open-source Voice & Video Calling and Text Chat App for Swift (iOS)
Stars: ✭ 111 (+753.85%)
Mutual labels:  messaging
P2P-CKPlayer
嵌入P2P引擎的CKPlayer,视频网站省流量&加速神器
Stars: ✭ 49 (+276.92%)
Mutual labels:  p2p
eventide-postgres
Event Sourcing and Microservices Stack for Ruby
Stars: ✭ 92 (+607.69%)
Mutual labels:  messaging
jfastnet
Fast, reliable UDP messaging for Java. Designed for games.
Stars: ✭ 26 (+100%)
Mutual labels:  messaging
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 (+592.31%)
Mutual labels:  p2p
mute-structs
MUTE-structs is a Typescript library that provides an implementation of the LogootSplit CRDT algorithm.
Stars: ✭ 14 (+7.69%)
Mutual labels:  p2p

BigBrother Specs

Big Brother can't watch you!

Table of Contents

Abstract

BigBrother defines a family of protocols that when combined create a decentralized peer-to-peer messaging stack. BigBrother should enable various messaging types, in order to be called a messaging stack.

The family of protocols SHOULD be flexible enough to allow various use case implementations not limited to that being defined by the entire family. The BigBrother protocol itself defines mainly the way the family of protocols interact with one another allowing for customizability on each layer.

Motivation

TODO: TALK ABOUT SHORTCOMINGS OF WHISPER

Terms

Term Definition
Stack Defines the entire family of protocols, how they interact and what goals are achieved.
Protocol Defines a single layer in the stack along with its endpoints used for communication with various other protocols in the stack.

Design Goals

  1. Anonymity - sender / receiver MUST remain anonymous.
  2. Unlinkability - It should not be identifiable which parties are talking to eachother.
  3. Scalable - @TODO
  4. Incentivized - @TODO
  5. Decentralized - @TODO
  6. Resistant - @TODO
  7. Inclusive - Protocols within the stack should be designed to work on resource restricted devices, this allows for a higher participation making the entire BigBrother protocol more usable and reliable.

System Design / Architecture

The protocols summarized by BigBrother all follow a standard of architectural design principles with the goal of keeping each component noncomplicated. We architect a stack where each protocol interacts holistically, without the desire to create unnecessary complexity. Each protocol included in the stack should be simplistic enough to allow for multiple implementations creating client diversity, allowing us to ensure that the entire stack is unambiguous1.

SOLID

Throughout the design of the stack we follow the SOLID design principles, redefining them slightly so they make sense in the context of protocols.

  • Single Responsibility principle: Each protocol in the family should only have a single responsibility.
  • Open/closed principle: @TODO
  • Liskov substitution principle: @TODO
  • Interface segregation principle: @TODO
  • Dependency inversion principle: @TODO

Stack

The below table shows the intended layers of the network from the highest to the lowest.

Layer / Protocol Purpose Example
Sync Clients End user functionality 1:1, group chat, tribute, ...
Data Sync Syncing data/state Bramble Sync Protocol (ish)
Secure Transport Confidentiality, PFS, etc Double Ratchet
Transport Privacy Metadata protection Mixnet?
P2P Overlay Overlay routing, NAT traversal libp2p?

Phases

Inspired by the ETH 2.0 implementation process, we have decided to roll out BigBrother in multiple phases. The phases can mostly be linked to various layers in the stack. Some of these phases are sometimes more loosely coupled than ETH 2.0 components meaning they can be done in parallel as only the communication API is relevant.

Phase 0 - XKEYSCORE (Data Sync)

Phase 1 - BULLRUN (Transport Privacy Layer)

  • Mixnet
  • PSS
  • Bluetooth local network
  • Sneakernet

Phase 2 - STONEGHOST (P2P Overlay)

Phase 3 - CREDIBLE (Secure Transport)

  • Message Layer Security (MLS)

Phase 4 - COINTELPRO / JTRIG OPS (Data Sync Clients)

Phase 5 - NATIVEFLORA / TAO OPS (Trust Establishment)

Footnotes

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