Sunday 26 July 2009

How to build an anonymous peer-to-peer network

In BitTorrent the ip address of the host sharing data with you is available through the TCP protocol which is used for the data transfer. This may reveal the identity of the owner of the host. If privacy is desired there must be a way to make the source ip address unavailable.

Here is a design sketch for a data transfer protocol where the ip address of the data sender is not revealed.

The the frames of the TCP protocol, which is used for transferring data in BitTorrent, carry the ip addresses of the source and the destination of the data. The source ip address is needed for the control part of the protocol to send back acknowledgements. If this back path is eliminated it should be possible to not have to provide the ip address of the source.

UDP protocol, on the other hand, allows to send datagrams with an arbitrary source ip address. Thus, the sender of the data can hide its true ip address by altering the source ip address of the datagram.

The control part of such data transfer protocol should go through Tor network. Tor network provides anonymity but has very limited bandwidth and thus can not be used for the actual data transfer. This is where UDP can be used.

First, the host joins a tracker through Tor network.

The host then finds seeders through the tracker. Using Tor, the host requests seeders to send data to its real ip address. The seeders receive the request and send data using UDP. Which allows to hide the true ip address of the source.

This may work quite well I think. Comments are more then welcome.

No comments:

Post a Comment