' The calculation of the routing table has changed several times, two of them were major changes in the protocol. After the initial Paper the first big change was called the "Next Generation Routing" [7] and the last big step was the introduction of a small world topology. [1] This newest attempt was the creation of a p2p network which relies on personal contacts of people.'
Not true. We always relied on a small world topology: The network is only navigable if it is a small world network. However, the original Freenet concept was purely opennet, and therefore relied to a very large degree on "destination sampling" (connect to the data source when you get a successful request). We understand this rather better now than we did thanks to Oskar's recent work. With regards to random routing for a few steps ... unfortunately it doesn't solve the problem (it's been proposed lots of times of course): - You can only do it for a few hops before getting into real routing. Therefore your anonymity set is only those nodes which could have random routed to you. And it can be a fairly uneven set. - Much worse: If two requests can be correlated by e.g. both being part of the same splitfile, both being post inserts from the same frost ID etc ... then you can do *nasty* statistical attacks based on the proportion of that known quantity that are routed through the attacker's node. Re section 4.2: - Are the "1" occurrences leaf nodes ? - What do the "2" and "3"'s look like topologically speaking? What exactly sucks about the tree? It would be helpful to understand this so we can advise people not to abuse darknet by setting up such structures (e.g. mirroring external authority structures). Clearly if you get a request from below you in the tree, you can identify that the node is within that subtree - is that the totality of the dangers of a tree topology? Theorem 7: Cool! On the circle, if the source is just below the left attacker, the left attacker will get requests which get very close to the exact opposite of the request sender's own location. And you have the opposite with the right hand attacker. The more blocks, the closer the requests will get to the exact opposite point of the sender on the ring, and the more accurately you can identify the source... Basically the operation is this (assuming pure greedy routing and no overload etc): We have a request for location T. Our location is L. We want to find S, the location of the source node. We can reasonably conclude that S is between T' (exact opposite of T) and L (our location), within the shortest arc linking the two points. If there are enough blocks, enough different T's, the point at which we stop getting requests tells us where the source is on the circle. However: - Routing may not be purely greedy, because of e.g. backoff. - The topology may not be close enough to a ring for this to work anyway. Of course there's a question as to whether the network will work at all in that case. - Routing may be deliberately obscured by e.g. a few random hops from time to time. - Routing will not always stop when it reaches the closest node to the target. Probe requests do, but real requests and inserts have an HTL limit, currently continuing for 10 hops after the last improvement in the closeness to the target. - If the source is a long way away, we will only receive a small fraction of the requests it sends. How much does this limit accuracy? If you're too far away you may not get any requests, or not enough to connect them together. - Finding the target's rough location doesn't instantly find the target. An attacker would probably try to narrow down the search by connecting to nodes closer to the location in question. - It doesn't work on popular files which multiple requestors may be fetching simultaneously. It would be fascinating to do a more accurate attack simulation! How much information can be gained about a requestor, and to what degree is this constrained by the above factors? (Introducing them one at a time, of course...) Another attack you can do, if you are close to the target, is take into account the exact local topology and use the proportion of requests coming to your node to identify which node it is. "Beware of high degree" is an interesting message. I'm not quite sure how you support it. Generally we've assumed that reasonably high degree is a good thing - certainly it will *significantly* reduce the number of hops needed to find data, and it's quite helpful in getting small-world-like networks... (Too few connections and you probably won't have the occasional long range one). Are you saying high average degree is a problem, or that individual nodes with degree far above the average (aka ubernodes) are a problem? As far as dependant vs independant messages go ... we have a few options: - Bundle all dependant messages into huge files and transfer them all at once in a single request. This isn't very practical: transferring a 1GB file with no multi-sourcing is going to take roughly forever. Having variable block sizes up to some large limit might help a bit, but would suck for various network/practical/code reasons, as it did on 0.5, and it wouldn't solve the problem, only make correlation attacks a bit harder. - Bundle dependant requests together, and route them as a blob, keeping them bundled for a number of random hops. This has performance issues, relies on tunnels which may break if any node goes offline, doesn't work well with long lived requests ... - Premix routing. Establish an explicit anonymity set of most of the nodes within some number of hops, and use the darknet to work out which nodes are "real" versus which are bogus Sybil's, or try to plug in a network-wide mixnet layer like I2P for opennet. - Just live with it: you can identify your neighbours' traffic. This is plainly unacceptable. On Tuesday 18 September 2007 08:31, you wrote: > Hello everyone > > I announced a half year ago that I write a master thesis over possible sibyl > attacks on freenet. I don't want to spam the devl list because the info of the > paper is already known, however not in these clear detail. So I post it here on > the technical list, since the information of the paper won't help much in > developing. > > The paper gives some theoretical background of how safe you might or might not > be in freenet, however the network topology is very very simplified throughout > the paper to make it possible to analyze it theoretically. > > For those who won't believe that darknet and trusted peers are a necessity the > paper will open your eyes. Freenet 0.5 and Opennet are wide open to attacks > described in the paper. A small step for freenet a big step for me, I finally > have some spare time :) > > Anyone interested can read the paper here, its quite mathematical, but I hope > easy to read to any Undergraduate CS Student. > > http://download.apophis.ch/paper/MA.pdf > > cheers > Thomas Bruderer aka. Apophis -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available URL: <https://emu.freenetproject.org/pipermail/tech/attachments/20070921/a8533312/attachment.pgp>