Yesterday I have implemented and committed the naive
implementation of foaf into the trunk... (foaf routing :
http://archives.freenetproject.org/message/20080707.111733.13824377.en.h
tml)

I am reluctant to enable it by default as they are some major security
implications. As far as I understand, the logic was: "the swapping
algorithm can already be subverted by an attacker to extract our peers'
location... hence implementing foaf won't harm much: it will just
provide more accurate data to a potential attacker".

Foaf-routing is about two things:
        1) publish our peers' location
        2) use the intelligence our peers provide us to route more
        effectively

While the old logic covers point 1 it doesn't cover point 2 and we have
to ask ourselves how point 2 can be used by a bad guy...

The obvious attack scenario is:
        The attacker has a direct link to my node. For his attack to
        succeed he would like to capture all my outgoing traffic (in
        which case it's obvious I don't have any anonymity). It is
        trivial to do on a foaf-enabled node; The routing algorithm
        always route to "the closest location it can find"; The bad guy
        can advertise several locations for his node (pretending he is
        peered to some nodes who have the locations he wants them to
        have). The bad guy also have an accurate view of my peers'
        location as I have cleverly sent them to him...

        If he advertises two peers for each of my peers with a location
        slightly closer and slightly further on the keyspace (say +/-
        0.000000001), my node *will* send every requests to his node!

It's obviously a problem we will want to address somehow...

One option is to limit the amount of locations he can advertise. It is
an inefficient mitigation measure as he doesn't need many of them: the
average node has 20 links... so he would only need to advertise 2*20=40
locations to cover all the keyspace.

An other solution would be to compute the proportion of the keyspace
each node controls... That would be an efficient mitigation measure...
Moreover we could use that metric to determine whether a clustering
attack is going on or not... and decide whether we should randomize our
location or not. Of course it means introducing some more alchemy into
the algorithm and the code... but I don't regard the current solution as
acceptable.

Can anyone think about some other mitigation measure we could use?
Is anyone willing to run some simulations and find out the magic-values
we are going to use in the mitigation algorithm?

NextGen$
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20080718/1c630c2c/attachment.pgp>

Reply via email to