Matthew Toseland wrote:
> - Not compatible afaics with ULPRs / failure tables. ULPRs stop requests if 
> we've routed them already (for some period), with the same HTL or less.

Good point, and I guess the same would be true of request coalescing.
Maybe we could get a similar effect by using the weighted coin to decide
whether to coalesce or forward the new request.

> - Load management issues maybe.

Do we currently use the hop counter for any load management decisions?

> - It's a good "invisible" DoS on a single request.

Sorry, I don't see what you mean - the hop counter can be tampered with
but a weighted coin can't, making it harder to influence how other nodes
handle the request.

> - The current counter is reset when we get closer to the target, so to some 
> degree it adapts to the network size. We'd lose this, so we may have to set 
> the probability of termination quite low, and fiddle with it...

Good point, I didn't realise that resetting the counter had that function.

> Why can we not analyse how much information the current counter leaks? 
> Because 
> of the uncertain topology/average number of resets?

I shouldn't have said we can't analyse it, but I wouldn't know where to
start because so much depends on the topology. For example, the
closest-location-so-far obviously leaks information, but how do we
quantify it?

>> This could actually be used in place of premix routing: instead of
>> constructing cells we use random "tunnel IDs". 
> 
> No use against a local attacker.

What kind of attack do you have in mind?

> So a local attacker *immediately* knows that the keys are connected.

Right, but who cares if the attacker knows that? The attacker doesn't
know whether you're the initiator of the tunnel.

> This has been proposed before. One weakness is you'd need more than one 
> tunnel 
> to get good or predictable performance. And as soon as you have multiple 
> correlatable or identical tunnels from the same node, it gets really easy to 
> identify the requestor - admittedly it may require a conspiracy...

The number of tunnels should be kept to a minimum to slow down
predecessor attacks (that's I2P's major weakness: tunnels are rebuilt
too frequently). 100 tunnels will give an attacker as much information
as 100 requests under the current system.

On the other hand if you use separate tunnels for separate files then
it's harder for an attacker to link them, which makes it harder to use
them in a predecessor attack. So the initiator should choose tunnels
intelligently - eg give each client its own tunnel and each large
splitfile its own tunnel.

> Also, you have a very small anonymity set: if the tunnel is on average 5 hops 
> long, there is a 20% chance that the node that sent you the request is the 
> originator. This is unacceptable, especially if you can correlate the 20%'s 
> because of linked but non-identical tunnels.

True, but the same applies to premix routing: even if there are 100
nodes in the cell, if you premix for 5 hops there's a 20% chance the
previous hop is the initiator.

> Finally, are there any vulnerabilities in changing paths?

Yes - churn will force initiators to build new tunnels, speeding up the
predecessor attack.

> Indeed, random hops seem to be the way forward. But if you get the request 
> during the random hop phase, you can attack the originator, although it will 
> take much more time than without random hops.

Yup, there's no way to prevent predecessor attacks as far as I can tell,
but we can slow them down to one sample per tunnel instead of one sample
per request.

> The idea was to pick two random nodes from within the cell, and route through 
> them - choosing a new tunnel for every request.

Why choose a new tunnel for every request? If an attacker inside the
cell can somehow link messages leaving the cell with messages passing
through his node, he can gather one predecessor attack sample per
intercepted message.

> The one big weakness is that cells would have to be relatively small 
> to keep global data available. The complication (IMHO solvable) is bogus 
> topology attacks.

And bogus public key attacks (the nodes beyond my neighbour might really
exist, but my neighbour might MITM their public keys in order to link
traffic passing through his node with traffic exiting the cell). When
you say solvable, what do you have in mind?

Cheers,
Michael
_______________________________________________
Devl mailing list
Devl@freenetproject.org
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to