Shareable private data #13
Description
Our plan at this time is to implement a private data feature in Noosphere that enables users to author content that is private and/or only readable by an explicitly allowed audience.
This is the tracking issue for our progress towards shareable private data.
User stories
As a Subconscious user, I want to write private notes and share them with specific collaborators, so I can collaborate with those I trust.
As a Subconscious user, I want to write notes that are shared only with mutuals, so I can share with my cozyweb friends, and discourage my notes going viral outside of that local context.
Design notes
We intend to lean on end-to-end encryption strategies to enable this feature. In the default case, we assume that all data is publicly readable, but that some of that data is only made available in an encrypted state. Such encrypted data can be decrypted by the author, but may also be decrypted by an audience of others who the author explicitly addresses it to.
Fission and Peergos have done groundbreaking work building practical systems that achieve this quality, based upon the foundational concept of a cryptree. Fission's specialization of this is referred to as a cryptDAG and is implemented in their open source Web Native File System.
Serendipitously, Web Native File System is currently being re-written in Rust. This suggests that the shortest path to implementing shareable private data will be to incorporate WNFS into our design as it becomes practical to do so. WNFS is coherent with Noosphere as it is based on the same foundational concepts of CID-based content addressing and PKI.
Noosphere public content is non-hierarchical in nature, which means some of the qualities of of WNFS are not relevant for us in that case. It is possible (but not certain) that hierarchy has a place in Noosphere when it comes to shareable private data. To the extent that this is true, WNFS will seem more appealing. If it turns out that we can organize private data in useful ways without arbitrarily deep hierarchy, though, we may be able to implement a simplified solution to the problem.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status