[tor-talk] Creating distributed social networks with WebId behind Tor
cmt.minibill at gmail.com
Tue May 15 19:25:46 UTC 2012
1) nice idea
2) tor hidden services already have transport level encryption
3) there are plenty of https hosts providers, but no .onion ones
4) this requires every user to have an always on machine
Il giorno 15/mag/2012 11:55, "Henry Story" <henry.story at bblfish.net> ha
> Recently in Berlin I was lucky to met Jacob Applebaum at the CCCB as he
> arrived to talk at the re:publica conference. I had been wondering for some
> time if it would be possible to use WebID for distributed social networks
> using linked data behind Tor, but I had not yet had time to make it a
> priority . From the discussion with Jacob, it seems like this should be
> feasible, and indeed relatively easy, but of course only real
> implementations can tell.
> Here of course a bit of background on WebId is needed (
> http://webid.info/spec/ ). There are a number of ways of thinking of
> WebID. At one level it is an application of mathematical logic and web
> architecture to the problem of identity. At another it is a philosophical
> hack of TLS, whose effect is to shift the Trust in TLS from a hierarchical
> system into a web of trust.
> To understand its power one has to understand LinkedData and RESTful web
> services. But those are in fact exceedingly easy: REST is easy and well
> known, and LinkedData is just the idea that one applies the concept of
> hypertext to data - indeed some have called it hyperdata. Hyperdata allows
> one to create distributed social networks, the same way we have created the
> world wide web - allowing each individual person or organisation to control
> access to their data (web site). Place the web site behind Tor, use .onion
> URLs and you now have a web site - as I understand it - that can't be
> located by IP address. Place your (linked-)data behind tor, use .onion URLs
> and you should be able to publish data without anyone knowing where the
> server is. This of course creates issues of trust, and this is where
> distributed Social Networks can help.
> In order to understand distributed social networks built using LinkedData
> it helps not to start with TOR. Indeed
> it helps to start without TLS, and just use plain HTTP. This way we have
> been able to create distributed social networks
> with millions of users using the foaf (friend of a friend) ontology. ( I
> go into how that works in detail in a presentation
> "Philosophy of the Social Web" http://bblfish.net/tmp/2010/10/26/ ). But
> of course that does not address the serious issues of privacy. So this lead
> me to add a layer around http with TLS and use client side certificates to
> identify people in a distributed social web that can use access control to
> limit who can see what. ( the http://webid.info/spec/ has a diagram that
> makes that clear ). But TLS with WebID still reveals the users IP address.
> So this is where we should be able add another layer to our onion: Tor.
> All we need are Tor onion URIs. Place an onion URI for your profile in
> your X509 certificate and you should now be able to authenticate to any web
> site without the server you are authenticating to knowing where your
> identity Profile is located. If that server wishes to know more about you
> than your public key, your server can let it know as much or as little as
> you wish it to know by requiring it to authenticate with WebID and then
> calculating its position in your web of trust. (WebID is a recursive
> protocol). In such a social web you can allow your friends to post to your
> wall, and you can interact happily as if you were on Facebook, but with no
> big brother in the loop. Anyone else will just see your onion URL and a
> public key.
> There is a short screen cast showing how this works with current browsers
> at http://webid.info/ .
> So how does one proceed to test this out? I think there are a 3 stages,
> of increasing complexity
> 1. build a foaf social web behind Tor
> Instead of links such as the following ( which you can find in my
> foaf-profile at http://bblfish.net/people/henry/card )
> @prefix foaf: <http://xmlns.com/foaf/0.1/> .
> <http://bblfish.net/people/henry/card#me> a foaf:Person;
> foaf:knows <http://www.w3.org/People/Berners-Lee/card#i> .
> you need to write the above using .onion URIs and make those publicly
> available on the tor network. It should be possible to follow the links
> from one profile to another, deference the second url and get more
> information... using well known LinkedData principles. It is best if those
> files are on different machines to make it real.
> 2. if the above works then you can add your X509 public key to your
> profile as explained in the http://webid.info/spec/
> <http://a2342sdsf.onion/profile#me> cert:key [ cert:modulus
> "...."^^xsd:hexBinary; cert:exponent 65537 ] .
> 2.1 then create a service behind tor that authenticates users with X509
> WebId certificates with .onion urls and see if you can log in there.
> If the above can be done, then adding access control is just one more
> step that is relatively easy.
> I am currently building a server in Scala that can do this type of work
> very efficiently, but there are others who
> have done it already in php/python and C# .
> Currently I am focusing on building the server with access control using
> plain https without Tor. If I am right in believing the above to be
> workable, then it should be quite easy to add Tor to such a server. Jacob
> suggested I look at JTor, as I am working in the Java ecosystem
> https://github.com/brl/jtor . But perhaps others will want to explore
> some of this before I get around to doing it, or indeed perhaps there are
> some Scala/Java people who are interested in working with me on this a bit
> more closely (so we can move faster).
> I hope that helps and would be interested in your feedback,
> Social Web Architect
> tor-talk mailing list
> tor-talk at lists.torproject.org
More information about the tor-talk