Matthew Toseland wrote:
> - It should be possible with such a simple request/response to make it 
> extremely difficult for two nodes to realise they are on the same path, 
> except in the case where they are actually adjacent.

I think that's optimistic - they could use the tunnel construction time,
or the delay between the tunnel being constructed and used, or (for
two-way tunnels) the delay between the request and the response.

Let's say the attacker controls the exit node of tunnel X, and it
normally takes 5 seconds to construct a tunnel. If an interesting
request is sent through tunnel X, all the attacker's nodes record
predecessor samples for any outgoing tunnels constructed in the 5
seconds before tunnel X was constructed, and successor samples for any
incoming tunnels constructed in the 5 seconds after tunnel X was
constructed. It doesn't matter that most of the samples are wrong - all
that matters is that the initiator is more likely to be recorded than a
random node (or a random member of the cell).

If the attacker knows that tunnels always contain more than two nodes
and don't pass through any node more than once, he can also eliminate
samples from the exit node and its immediate neighbours. But that's not
vital, it just reduces the level of noise.

> However, it *is* 
> known that it is one of the nodes along that path that is the problem, and 
> this may be enough.

Yup, if we can trust the topological information then we should be able
to identify unreliable nodes and avoid using them in tunnels (but on the
other hand that allows an attacker to attract more tunnels and thus
gather more samples by performing well, as in I2P).

> Each node publishes its links, including its pubkeys, their pubkey hashes, 
> and 
> a signature. This is relayed to some distance. We compute a credibility value 
> for each node on the graph by starting with a value of 1.0 on each node we 
> are a direct peer of, and dividing it by the number of peers on each node 
> going outwards, adding up the values from different branches. We can then 
> ignore nodes which have a low credibility value.

Sounds promising, but the result will be different from each node's
point of view. How do we ensure that all members of the cell agree about
which nodes to ignore? If they don't agree then it's easy for an
attacker to calculate credibility values from every other node's point
of view in order to work out who would or wouldn't have chosen a given
exit node.

> Now, we may not be able to 
> do exactly this, if we have to have semi-permanent cell structures, but it 
> should be possible to find an algorithm to serve this purpose (eigenvector 
> centrality? TrustRank etc?).

We're caught in a cleft stick here: algorithms that give a universally
agreed score for each node are vulnerable to Sybil attacks [1], but if a
node's score depends on who evaluates it (eg the flow-based algorithm
you sketched above) then how do we agree about which nodes to ignore?

Cheers,
Michael

[1] http://www.sigcomm.org/sigcomm2005/paper-CheFri.pdf
_______________________________________________
Devl mailing list
Devl@freenetproject.org
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to