<lynX> This was my vision of the future of social networking in 2010, then we started implementing it and now it's called secure share.
Contents |
the Crypto Sharing use case
lynX wants an application to install on his laptop or other personal device that integrates into the desktop and provides for an easy way to send stuff to my friends or selected groups of people. Essentially: If he drops an mp3 into it, it is multicast to his friends, or at least offered to them. And all of this happens with appropriate encryption happening on the user's device, not any servers.
One of the aims would be to maximize privacy not just by encrypting exchanged data but also to hide who is talking to whom, who is friends with whom and to address the possibility of guessing what is being exchanged by looking at the size of data packets. Several researchers have worked on this topic. The need for this degree of privacy sounds paranoid at first, but in the past twenty years what first appeared to be paranoid turned into what is truly necessary as time passes (ssh for example). That is why it's not a bad idea to aim for the best degree of protection currently feasible. Read about pseudonymous network technologies.
Further developments of such an application would be to provide classic regular chat/messaging features and decentralized private activity streams. Being able to show activity streams and profiles in rich style would be a plus.
Once we have such a tool I would want it to be totally end-user friendly in installation and stir a media hype to have millions of people install this. ;-D
the Crypto Sharing challenge
We need to extend the protocol specification in order to allow for rich encrypted semantics. That means, we shouldn't just encrypt the text part of messages as is customary with OTR. We need to define OTR-like encryption for entire PSYC packets (routing exempted).
- Update 2011: This isn't necessary, be letting GNUnet handle the routing, the content of packets travels end-to-end encrypted.
And maybe one-to-one encryption isn't even important. Multicast cryptography is a lot more interesting where a closed group can exchange messages only visible to that group. That includes microblogging and activity streams from a person to all of her friends. The intelligence needs to be built into the clients where a client
- generates a symmetric key for a group
- sends it to each participant encrypted to her public key
- then everyone can exchange messages decryptable by just the intended members
By using a symmetric key everyone is also capable of forging their own logs of chat conversations, thus a certain degree of deniability is given.
the Crypto Sharing implementation
In order to implement this, we do need to work off a client application. Dyskenisia being WebKit-based and OTR-capable would be a good start. PsycZilla has the power of XUL to offer. But maybe we should provide these group encryption functions on a basic level, such as libpsyc.
Routingwise we can either implement this using binary capable content agnostic servers, or by having a direct client to client exchange, making use of some NAT-pwning strategies. In the long term we still need conference control to be defined somewhere, for instance when posting to ~user/#follow, but that doesn't mean the actual traffic has to go through the master defining its control.
Also, in the current PSYC scheme the social structure of friends still resides on servers in unencrypted manner. Would be interesting to move this more onto user devices in a P2P style to enhance privacy, but it can be the same software we used to run on servers. We still need UNIs so an initial redirect to the current location of the user manager is useful. Yes it could simply be a redirect, so we don't need to deploy dyndns for all of humanity.
Another possible approach is to combine this with existing F2F technology.
- Update 2011: That's what we did, we employ GNUnet now.
See also
- File transfer
- Team:Client
- Team:Server
- Communism's shared certificates between friends can be implemented on top of this.
Related work
- There has been a lot of discussion in the GNU Social mailing list leading to
- Ted Smith's plan on what GNU Social should be (very compatible with this plan here).
- LifeSocial is a proprietary endavour heading in just about the same direction as my idea.
- There are more somehow similar projects.
- Wikipedia:Friend-to-friend F2F networks:
- http://www.anonymous-p2p.org/programs.html
- Nodezilla is a multiplatform experimental fault tolerant risilent grid based p2p network system. The goals are multipurpose and integrates with other protocols like BitTorrent. Nodezilla Architecture.
- Update 2011: Check out http://socialswarm.net
Whoever gets it done first and manages to stir a viral hype wins the game. Would be nice if for once it was free software and personal liberty winning, not some dark forces powered executable download, Skype style.
DropBox: the Privacy Monster
Then again, there are too many disadvantages from a commercial point of view. If you want to do business, then you do it like DropBox: Ignore privacy completely, transfer all files in pseudo-encryption to your own servers and optimize delivery by using hashes on the unencrypted files. So DropBox is the complete opposite of crypto sharing: Implementing roughly the same service with the maximum loss of privacy imaginable.