From e4acdcc9091683ca5c8505995dcabc9c174b1bc6 Mon Sep 17 00:00:00 2001 From: Oskar Thoren Date: Mon, 22 Apr 2019 12:50:51 +0800 Subject: [PATCH] x4 Add protocol overview and guiding principles --- x4.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/x4.md b/x4.md index eb044d2..c8a9955 100644 --- a/x4.md +++ b/x4.md @@ -3,17 +3,60 @@ sip: x4 title: Initial Protocol Overview status: Draft type: Standard -author: Adam Babik +author: Adam Babik , Oskar Thorén created: 2019-04-18 updated: --- -**TODO: Give overview of protocol stack and what guarantees it provides through which protocols.** **TODO: Add special considerations when it comes to putting these together** **TODO: Remove everything that's Whisper specific, conversational security, payloads, etc.** -Status Secure Messaging Protocol -================================================== +# Protocol Overview + +The Status protocol stack consists of multiple protocols at multiple levels. In this document, we give a brief overview of each layer and what they provide. We also note any specific considerations when it comes to using these components together. + +| Layer | Purpose | Technology | +|-------------------|---------------------------------|-----------------------| +| Message payloads | End user functionality | 1:1, group chat, public chat | +| Secure Transport | Confidentiality, PFS, etc | Double Ratchet | +| Transport Privacy | Metadata protection | Whisper | +| P2P Overlay | Overlay routing, NAT traversal | devp2p | + +Note that our protocol stack was documented after the fact, which might lead to some inconsistencies or questionable design choices. + +## Guiding principles + +**TODO: This needs some tweaking, as it was taken from https://github.com/status-im/swarms/blob/master/ideas/311-status-protocol.md which also includes how to work, as opposed to how the prinicples apply technically** + +One way of looking at our protocol stack is as a reflection of our principles. While this isn't always true in practice right now, this is what we are aiming for, and also what we want to see in future specification proposals. + +The protocol should be a reflection of our principles. + + I. Liberty - enable sovereignty of individuals with things like key management, as well as economic freedom, etc, by enabling transaction of funds and socio-economic coordination between small groups of people. This also includes being coercion resistant, and not forcing updates on people. + + II. Censorship resistance - enable censorship resistance through things like pluggable transports, as well as being agnostic to the information being transported. + + III. Security - use state-of-the-art technologies, and research new security methods and technologies to make strong security guarantees. + + IV. Privacy - protect privacy in communication and transactions, and strive to provide right to total anonymity. + + V. Transparency - be open about what we are doing, allow community contributions and be clear about trade-offs. + + VI. Openness - specification is open and under a permissive license. + + VII. Decentralization - p2p network, maximizing number of computers/humans who can control and use the protocol we are building. + + VIII. Inclusivity - easy to use our protocols, as well as working towards interopability with other protocols, and educating users. + + IX. Continuance - network should be incentivized to continue on its own. + + X. Resourcefulness - work with other teams to avoid duplication of effort, study prior work deeply to minimize wasted and duplicate effort. + +In the following sections we will elaborate more on these. + +# Status Secure Messaging Protocol + +**TODO: Didn't get this far yet -- Oskar** - [Status Secure Messaging Protocol](#status-secure-messaging-protocol) - [Abstract](#abstract) @@ -50,8 +93,11 @@ Status Secure Messaging Protocol Ethereum empowers users and developers to interact with totally new kind of applications called Dapps (Decentralized applications). These application allows to interact with the blockchain on a completely new level which is not only about exchanging values but also executing arbitrary logic. This logic can form very sophisticated programs like DAOs (Decentralized autonomous organizations). The missing part here is how users of Dapps can communicate securely and in a decentralized way with each other. Communication is an essential part of any activity. In this document, we specify a secure and decentralized messaging protocol that is capable of running on the Ethereum network. + # Terminology +**TODO: Most of these can probably be moved to transport privacy through Whisper spec** + * *Client*: a Whisper node implementing the protocol * *Whisper node*: an Ethereum node with Whisper V6 enabled (in the case of geth, it's `--shh` option) * *Status Whisper node*: an Ethereum node with Whisper V6 enabled and additional Whisper extensions described in [Whisper V6 extensions (or Status Whisper Node)](#whisper-v6-extensions-or-status-whisper-node)