Read SiRiUS: Securing Remote Untrusted Storage, Goh et al, 2003. You can skip Section 4 (Implementation and Performance) and skip Section 6 (Extensions).
Would it make sense to add some of Sirius' ideas to Blockstack, in order to get better access control and freshness guarantees despite untrusted storage (and untrusted users)?
Sirius is a UNIX-style file system. Does it seem like UNIX notions of files, file names, path names, directories, and permissions can be made to work well for decentralized web applications? If not, could the paper's ideas be moved to a more appropriate storage architecture?
Do SiRiUS clients need to trust the server? In what ways? That is, what bad things could a malicious server (or conspiring server and client) get away with?
Section 2.2 mentions that the design is optimized for sharing among small groups. What part(s) of the design might not work well for large groups?
Section 3.3 says Sirius guarantees meta-data freshness. What's the line of reasoning for why this is true?
Does Sirius guarantee file content freshness? Would meta-data freshness be valuable without content freshness?
When a user (really a user's client computer) is generating new mdf-files after the user changes some meta-data, where does the client get the md-files and sub-directory mdf-files required to produce the new mdf-files?
Suppose I update file x's meta-data from workstation W1, turn W1 off, instantly log into a different workstation W2, and update file y's meta-data. y is in the same directory as x. W2 has to generate a signed root mdf-file that covers the md-file of x (as well as y). How does W2 ensure it has the latest md-file for x?
Suppose a user needed to change their master keys, due to loss of a notebook (and thus potential theft of those keys). What steps would be needed to restore the user's access to Sirius data?
Much of the complexity in Sirius has to do with mutable files. Some other storage systems don't provide mutability at all; instead, they name data objects with keys that are the cryptographic hash of the data using e.g. SHA1. That means an existing object can't be changed (without changing the key), but makes verification of retrieved objects straightforward. Could one build sensible decentralized apps using this kind of content-hash-keyed immutable data, with no mutable files?
Sirius also involves complexity due to its support for multiple users having permission to modify a given file. Blockstack, in contrast, allows only the owner to modify a file. For decentralized applications, do multi-user mutable data objects seem necessary? Useful? Worth the complexity?