In the original Proof-of-Concept that this whole project started with, there was a lot of emphasis on end-to-end encryption, as a way to accomplish host-proof hosting.Since then, the idea of instant data liberation (using more than one application on the same data) has entered.
One option to combine the two concepts, is to introduce three layers instead of two: app (pluggable), identity (a trusted host where encryption keys are stored), storage (encrypted). This is possible, but becomes less plausible. If you have a server where you host your identity (e.g. a WordPress, your indieweb homestead), then why not install ownCloud or similar on that server, and host your data yourself? well, 'yourself', relatively, because it would still be on a hosting account.
So how to do the encryption is a bit of an open question still. In the meantime, there's the question of what we can achieve without using encryption.Encryption is hard, and makes the system more susceptible to catastrophy. If there's a bug in the code, and encrypted blobs are publicly available, or at least available to people who are not allowed to unencrypt them, then this would endanger all data of all users that have been using the buggy code. If you don't use encryption, and use a trusted server instead to store all your data, then the consequences of a bug would likely be solved by patching the host that runs the buggy code currently.
Two ways:- providing choice. as a power user, i can choose who i trust, instead of having to trust specifically the company who offers a website that i want to use my data on- pushing for user-readable terms of service and/or a 'green label' or five-star rating on different scales, i.e. something that makes this choice accessible to non-power users.
Encryption /sounds/ good, and probably a lot of our twitter followers who are not necessarily programmers, but rather general proponents of freedom, will have associated us with cool projects that use encryption in impressive ways. So we would probably disappoint/confuse/lose that part of our audience a little bit if we stop talking so much about cryptography. Everything else being equal, having an audience is important to help adoption. But if there's a choice between being an interesting project and being a useful project, I think we should obviously switch to being more useful, even if that makes us less interesting. Also, I think the important public we should try to sound interesting to, should be the "html5" or "jsconf" audience. Web developers. They will probably care (or if not, then probably should care) a lot more about freeing a user's data by adding instant data liberation, and building interoperable apps on top of unhosted data, than about host-proof hosting.
Would it simplify setting up a plug server to serve all your separate web-app data? The FreedomBox guys would like that.
I have to admit that I was attracted by the end-to-end encryption
property of Unhosted at first. I thought the cool guys behind Unhosted
have invented some clever mechanism to encrypt data at client side
securely without adding burden to the user experience. However I soon
found that this innovative mechanism does not exist yet, and what we
have now is an imperfect solution.
Why the current one is imperfect? The problem mainly lie in storing
and sharing the secret key among devices securely. By secure, I mean
the key is accessible by only authorized person and trusted entity,
and also, the risk of losing the key is low. To many users, it is no
less disaster to lose the key (and hence total lose of all their data
instantly) than some unknown person seeing their personal photos.
It is possible to have both encryption and instant data liberation,
but we couldn't do it without scarifying usability and simplicity. As
Michiel mentioned, we can introduce the third layers to Unhosted
architecture to satisfy both end-to-end encryption and instant data
liberation: app, identity, and storage. But adding another service
require the user to make more decisions (finding and choosing the
service providers) and harder to understand the relationship between
service providers (which the user ought to know in order to choose the
providers wisely). Also, this architecture assumed the user
authenticate to the identity and storage independently and the
encrypted data in storage is inaccessible by the identity node. If
this assumption does not hold, there is little reason to separate the
identity and storage because we are allowing the identity node to
access all data in essence. It may even worse to give users a false
sense of security, than disclosing the fact that there are risks in
Unhosted to use a bad storage, and tell the users to choose the
service providers wisely.
You may argued that users could store their keys in a trusted host and
encrypted data in untrusted host. For most average users, if he could
trust some host to store his private key, why not putting all data in
that trusted host? It is much easier for users and developers if fewer
services are involved. In reality, because the users are more willing
to pay for the storage instead of someone who simply storing the key,
it is more likely to find a storage provide that I could trust (in
term of privacy and continuity of service).
Encrypting the data does not make back up easier, because you still
have to back up your key. If you lose the key, all the back up become
rubbish.
My opinion is, before we find a perfect end-to-end encryption
mechanism which is both secure and easy to use, we should make the
encryption a optional feature of Unhosted software. Serious users who
want to encrypt their data may tolerate the need for separate
passphrase to unlock their key, or even use a usb drive to bring their
key along.
I think introducing standardized term of service (simple like Creative
Commons) or some kind of labeling/rating system do help users a lot to
choose their service provide. It could also be part of the campaign to
promote Unhosted software. We could label/rate the popular cloud
service to educate the public how bad are their ToS, similar to
Greenpeace's Guide to Greener Electronic
http://www.greenpeace.org/international/en/campaigns/toxics/electronics/Guide-to-Greener-Electronics/.
I share your worry about it may sounds less "interesting" without
end-to-end encryption as a core part of Unhosted, as I am one of the
people attracted by it :). But I believed that making the project
useful is a much more important goal, and Unhosted is no less
interesting without end-to-end encryption. Unhosted is still about
"freeing" the cloud. I think the "freedom fighters" following Unhosted
are smart persons who would understand us.
Edwin