On Thursday 04 November 2010 21:12:33 Robert Hailey wrote:
> 
> On 2010/11/04 (Nov), at 3:06 PM, Ian Clarke wrote:
> 
> > On Thu, Nov 4, 2010 at 2:09 PM, Robert Hailey <rob...@freenetproject.org 
> > > wrote:
> > As best I can see, then, there may be major problems with the  
> > current announcement and path folding implementations:
> > (1) announcements gather at non-destination points (in fact, shallow  
> > first),
> > (2) the RequestSender logic will always eat an incoming path folding  
> > request if we want a peer (often for very short paths),
> > (3) the RequestHandler logic will probabilistically drop an incoming  
> > path folding request (about once every HTL)
> > (4) if path folding request is dropped (or not wanted), an  
> > intermediate node might forward it's reference instead
> >
> > I think the behavior of 2, 3, & 4 are more likely to be making the  
> > peer-clumps, which (as you said) might not be a horrible thing. But  
> > I think all of these points go against the original intent of  
> > destination sampling.
> >
> > I think the behavior of 1 (this patch) is forming a specialized  
> > "backbone" of routability around the seed nodes.
> >
> > This looks interesting, is there a way we can test your hypotheses  
> > in a controlled way?
> >
> > Ian.
> 
> That is a great question.
> 
> We can test the low-level operability of the announcement change (to  
> make sure the patch doesn't break anything). We might also be able to  
> drum-up a histogram stat for announcement replies (if toad is  
> concerned for long links). 

That would be interesting yes. If there are way too few far off locations due 
to the nodes near the seednodes being overloaded that could be a problem, 
although I'd expect it to be corrected eventually, and IMHO it is far more 
important that we get the many short links than the few long links...

> I already suggested comparing routing stats   
> from seed & common nodes.

One important difference is most seednodes do very few local requests and so 
have a very low payload percentage. At least that's been my experience. :|
> 
> As for the rest, we can make a test-fix that causes behaviors 2 & 4 to  
> occur only 1/3rd the time and see if network health improves :)

#2: The originator may not even want the peer. Cutting this off will reduce 
path folding dramatically. It will also reduce anonymity.

#4: Replacing the empty ref 1/3rd of the time means it will be replaced after 
one or two hops. This will make the problem even worse, because the connection 
will be even shorter.
> 
> The trouble is... I think that announcement & path folding tend to  
> effect each other, so if we axe #4 (possibly the easiest and most  
> maleffective feature to disable) I would expect far fewer path folding  
> connections (i.e. proportionally more announcement connections) and  
> exacerbate #1.

Right, but we could probably compensate for a reduction in path folding by 
accepting it more often. See below.

Plus, while we might accept more announcements, we would not necessarily 
*create* more announcements, because we only announce when we have min(6, peer 
limit / 2) peers.
> 
> But in short, I wouldn't change anything till #1 is taken care of, it  
> is also the most benign-looking fix.

See my other email.
> 
> It should also be known that most of these have been put in place to  
> actually avoid "destination sampling", because then you know who sent  
> you the data (and you could freely connect to them) 

Or worse you could eliminate them as a censorship attack. But fortunately all 
the nodes along the path have already cached the data, so that's not as 
powerful as it seems.

> or know who   
> requested the data from you. 

Right, which is much worse.

Unfortunately this is another of Freenet's dirty little secrets: Even now, you 
can exploit this to find who is requesting relatively unpopular content. You 
need enough nodes to correlate the requests, of course. In practice, mobile 
attacker source tracing is cheaper (although if people insert as SSK and never 
reinsert it is limited to chat data and a few samples from correlatable files), 
and connecting to everyone and doing correlation attacks is more reliable. 
However, you probably only need hundreds of nodes (perhaps less) to break a 
very large opennet, provided the files are unpopular i.e. not widely cached.

Eliminating all path folding other than literal destination sampling - 
connecting the originator to the data source - is not justified by theory, 
since IIRC it was Oskar and Ian who originally proposed the random resets! And 
it would be really bad for security. There is an argument that if we can 
improve opennet's performance by moving from being hideously insecure to being 
hopelessly insecure we should do it to get more users who will eventually build 
a darknet - but IMHO it is wrong, users come to Freenet because they think it 
is secure.

> There might be some onion routing magic   
> that could save this, but I doubt it; 

Full onion routing is not likely to be feasible on Freenet. We could build 
something like I2P with a DHT so you can select random nodes, but it wouldn't 
work on darknet, so it's doubtful whether it's worth the effort; and it would 
of course introduce lots of new vulnerabilities based on peer selection, and 
we'd have to open connections just for tunnels; it would be very messy and 
probably not as effective as we might hope. Random rendezvous tunnels are 
however a reasonable approximation, giving an anonymity set close to the entire 
network for reasonable cost, and working even on darknet. Unfortunately, it 
will cost us quite a few hops - likely more than Tor's 3 for a vaguely 
comparable level of security, probably in the region of 5 - although it could 
be tunable. My inclination is to enable tunnels on NORMAL and MAXIMUM i.e. if 
you don't care about security (LOW), turn them off, but also if you are on 
darknet but aren't excessively paranoid (HIGH). We could also use them only for 
insert of keys we expect to be linkable, although that doesn't protect on 
opennet against an attacker connecting to every node, and doesn't protect 
requests at all.

> if you use opennet, you might   
> just have to rely on the fact that there are very few path-folding  
> requests (compared to requests at-large) [security through obscurity/ 
> rareness].

There is an opportunity for path folding after each successful CHK request. We 
deliberately throttle them by various alchemy in OpennetManager - we don't want 
to accept requests too often etc. So the argument that path folding is rare is 
dubious.
> 
> I don't have much time to presently offer, though :(

Attachment: signature.asc
Description: This is a digitally signed message part.

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

Reply via email to