I'd like to examine a very simple secure social architecture.

1. A Distributed Network implies N servers
==================================

By definition a distributed architecture implies that there are N servers on
the network.

For simplicity sake, I am going to describe a system where each user has a
SHARED folder on a server.

In that shared folder they can have:
- Activity Text
- Photos
- Other Media

Next we want to look at secure connections.


2. Secure communication
======================

Anyone that's used a GNU/Linux server will probably know the very standard
pattern for secure, namely SSH

The principle is that everyone has a key pair, and when you put a trusted
friend's, key in your shared file, they can access your shared content.

However note that PKI works not only with the SSH protocol, it can operate
with almost any transport mechanism out there the most common being https

So far so good, now let's make it social.


3. Adding a Social Web
====================

The above procedure works, but is quite manual.  How do you find a friend,
how do you refer to them, how do you find out more about them, how do you
extend the system?

This is the magic sauce that allows scalability.  Give each user a global
identifier.  The best way to do this is FOAF, imho, because once you have a
FOAF you get extensibility for free,  to find friends, groups, interests and
all that other good stuff.

Follow these 3 simple steps and I think we're more or less done.


4. Putting it all together
====================

Using the very simple logic above, through public key infrastructure it's is
conceptually straight forward way to build an N node secure Global Social
architecture that scales, and is extensible.

- Use Distributed Servers
- Secure it with PKI (or the equivalent, you can fall back to a lower
authentication method such as username/password as SSH does)
- Make the identifiers Global

You can tweak certain aspects, but I would say something along those lines
has to be a rough idea of what the 'kernel' of the network should look like.

- By the same argument, you can have several users on a single node (which
is an easier problem than the one we're solving).

- Add drivers/bridges to the other networks with social apis so that you can
pull in all your data, and share it etc.

- Reuse push/pull/IM/dyndns/UpnP technology for realtime access, there's a
few to choose from.  Leverage notifications e.g. with UDP and/or Multicast

- Add things like encrypted file stores (e.g. tahoe), secure transport, one
way hashes for anonymity, zero knowledge proofs etc.

- Plugins / Search / Private Messaging / Groups / Mashups / Applications can
all reuse the base architecture


This is the simplest system I can think of to solve the basic architecture
questions of building a Secure Distributed Social Network.  It should work
to support a large number of nodes, or equally single nodes with a large
number of users.  I would suggest starting with HTTP(S) and then extending
to other protocols.

I think something like this is the way to go with the base architecture,
unless someone can think of something simpler?

Reply via email to