Can we have a private group chat implemented on IPFS?
Motivation (goals - solutions): 0. Don't expose content to the world on IPFS - encrypt before putting in IPFS
- Avoid having to manually manage keys - use password based key derivation with scrypt(CostFactor>=17, r=8)
- Encrypt a single file - use a password based key derivation as in Minilock
- Encrypt entire directory trees, hiding metadata - use cryptree as in Peergos
- 1-1 Sharing - need asymmetric cryptography, Curve25519 (e.g. TweetNaCl), solved in Peergos
- 1-N sharing - Repeat 3 for each target. O(N) or O(1) for multiple shares with a proxy capability
- N-N sharing - hmmm. Essentially want a many-to-many version of Signal Protocol. People are working on such a thing, Messaging Layer Security but it currently depends on a central reliable Delivery Service. Can we make this work in the decentralized setting? Can use Peergos primitives, e.g. sharing a file, and our PKI. Can it be a CRDT?
See if we can use Messaging Layer Security directly in a decentralized setting. Possibly using Peergos primitives.
Same as in the MLS requirements we should scale to 50,000 member groups.
- MLS
- Peergos/Peergos#427
- TweetNaCl
- TweetNaCl in JS
- TweetNaCl in Java
- Scrypt
- Signal Protocol
- Messaging Layer Security
🎤 Slides
Q: Can we use MLS in an IPFS setting?
- Tentative yes
-
To handle prolonged network partitions
- keep group state around for all epochs from the oldest one we think any member is still in
-
eviction of absent/idle members
- this could cause a network partition to result in a fork of the group?
-
possible delivery services (DS):
- per member append only list of messages readable by other members ?
-
need a way to deduce the epoch of every other member (e.g. tail of list in 1. )
-
bare minimum for DS is causal order