Hi Peter, Thanks for your questions, I'm interested in the robustness/censorship-resistance issue myself so I'm happy to have a go at answering them, but take my information with a grain of salt because I'm not very familiar with the code.
> So, do I understand correctly then that if my Freenet node > sends out a packet to my ISP (to be forwarded on to your Freenet node) > that packet will feature: - Encrypted content about which my ISP can know > virtually nothing (unless it has the relevant private key); - A UDP > protocol header That is, until the packet content is decrypted, there is > nothing in the header to indicate that the packet is a "Freenet packet". Right, the handshaking packets are obfuscated so they can only be recognised as Freenet packets if you know the node identifiers of both the nodes involved in the handshake, and all subsequent packets are encrypted (except the UDP header). > So it's like having a Freenet packet hidden behind encryption within the > content part of the packet? (Although I guess the encrypted Freenet > packet would have to be broken up across a number of packets). Or am I > completely off the mark? No, that's right, large messages are broken up across multiple packets and small messages are coalesced (multiple messages per packet). Each packet also contains a random amount of padding to make traffic analysis harder. > And where is the initial handshake done? I would have thought that a > handshake only becomes possible once the packet content is decrypted. The handshaking packets are obfuscated rather than encrypted - I don't know the details but there's a bit more information on the wiki: http://wiki.freenetproject.org/FreenetZeroPointSevenSecurity > That is, my ISP and your ISP look at the header of the packet I send and > then send it through to the Freenet port on your machine, believing it to > be something other than it is. I mean, isn't it only when your Freenet > node decrypts the packet content that it is able to see the Freenet > protocol? Right, the ISPs just look at the UDP header and forward the packet, they don't need to examine the payload or recognise the application-layer protocol (although of course they might try to do so in the case of a national firewall for example). > Your comment about malicious opennet nodes finding darknet friends to use > as entry points into darknets is interesting. I would assume that once > one darknet node is found in such a manner, the IP addresses of all nodes > on the relevant darknet could then be discovered. That is, if my opennet > node has a darknet friend, doesn't this mean that I have effectively > amalgamated the relevant darknet into the opennet? If so, this "darknet > friend" business seems like a dangerous idea. Or am I missing something > here? Darknet is more secure than opennet for a couple of reasons. First, only an ISP or someone with equivalent eavesdropping ability (eg a government agency) can compile a list of darknet nodes by recursively following each node's connections; on the other hand anyone who runs an opennet node can compile a list of opennet nodes. Second, once you know the address and port of an opennet node you can connect to it, which makes certain other attacks (denial of service, traffic analysis) easier. Learning the address and port of a darknet node doesn't give you the ability to connect to it, you must convince its owner to trust you first. > Oh, and finally, do I understand correctly that a denial of service > attack on Freenet would actually cause the Freenet webpage being attacked > to become more - rather than less - available?! That is, a barrage of > requests for the webpage would in fact proliferate it across the network? Yup, a barrage of requests for an existing file would be a very poor DoS attack against Freenet, requesting nonexistent files would be more effective. Cheers, Michael
