-
Notifications
You must be signed in to change notification settings - Fork 4
First cut at req and provide #7
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
# Interfaces | ||
|
||
Document that outlines what each layer requires and provides in more detail. | ||
|
||
Goal of this document: provide a clear interface for other teams working on other parts of the stack. Specifically: Validity Labs and Nym, working on mixnet designs at transport privacy layer. | ||
|
||
## Data Sync clients | ||
|
||
TODO: Later | ||
|
||
Data sync clients are... | ||
|
||
They require... (reliable transmission of data between pairs of peers or groups of peers) | ||
|
||
They provide ... (end user functionality like group chat, 1:1 chat, other forms of socio-economic coordination mechanisms) | ||
|
||
## Data sync | ||
|
||
The data sync layer is responsible for synchronizing data across multiple devices. | ||
|
||
It requires a transport layer security protocol that is able to deliver data securely from one device to another. It may also deliver from one device to many other devices. Data can be delayed, lost, reordered or duplicated. The transport layer security protocol is responsible for properties such as confidentiality, integrity, authenticity and forward secrecy. This layer does not care about what underlying transport is used. | ||
|
||
It also requires that messages are immutable/idempotent, i.e. they can be referred to by some cryptographic hash. | ||
|
||
It provides reliable data synchronization with casual consistency guarantees in a specific group text without relying on centralized services. | ||
|
||
(Inspired by https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BSP.md) | ||
|
||
## Secure transport | ||
|
||
TODO: Connection-oriented vs connectionless, make this more explicit | ||
|
||
The secure transport layer is responsible for providing a secure channel between two - or more - | ||
peers, ensuring confidentiality, integrity, authenticity, forward secrecy and post-compromise security, over a variety of underlying transports. | ||
|
||
It requires a transport that can deliver a sequence of bytes from one device to another. These... | ||
|
||
Additionally, it requires a long term identity key. | ||
|
||
Looking at MLS specifically, it requires a messaging service that provides: | ||
- a long term identity key | ||
- a broadcast channel for each group which relays messages to it | ||
- a place where participants publish initialization keys and download them | ||
|
||
TODO: Is there any difference between initialization keys in MLS and prekeys in DR? | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. They serve the same purpose, but There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oh, had no idea, thanks! |
||
|
||
TODO: Are requirements different for Double Ratchet? E.g. see https://github.com/status-im/status.im/blob/52b9e1c5f5d4b35dd4111952c9114f6ebfe83b96/source/research/pfs.md - it doesn't require a broadcast channel. So this can be seen as an enhancement. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. While this is strictly true, double ratchet is not a really a group algorithm, while MLS main focus is for group communications. DR can be made to work for groups by pairwise encryption, and can leverage a broadcast channel for performance optimization, but you still would have to encrypt On the other hand Overall DR seems to be a better fit for 1-to-1 and MLS (not surprisingly :) ) seems to be a better fit for at least large group chats, although there's seem to be a few issues that still would need to be ironed out, out-of-order messages not being supported out of the box, need to have the most up to date state to post to the group, how to propagate initkeys etc There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. (just re-read the message, when I talk about There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You are right, worth re-emphasizing |
||
|
||
It provides confidentiality, authenticity etc. | ||
|
||
(Inspired by https://code.briarproject.org/briar/briar-spec/blob/master/protocols/BTP.md) | ||
|
||
(Inspired by https://tools.ietf.org/html/draft-barnes-mls-protocol-01) | ||
|
||
## Transport privacy | ||
|
||
TODO: Later | ||
|
||
Transport privacy is ... | ||
|
||
It requires... (p2p overlay) | ||
|
||
It provides... (metadata protection, etc) | ||
|
||
## P2P Overlay | ||
|
||
TODO: Later | ||
|
||
P2P overlay is... | ||
|
||
It requires...(transport TCP/RTC/etc) | ||
|
||
It provides... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Detailed document outlining what each layer requires and provides" reads better