MPLEMENTATION
We developed three exploits that let selfish clients down-
load more than their fair share, even within the constraints
of protocol rules. The exploits focus on the peer interaction
protocol, rather than the peer-tracker protocol. In particular,
their design is based on selectively contacting other peers
and on lying about already downloaded pieces. In order to
verify their feasibility and performance implications, we im-
plemented these exploits by modifying an existing BitTor-
rent client. We chose the latest version (1.3.4) of Ctorrent [2]
for its simplicity and ease of extension, and ensured that our
changes did not interfere with regular protocol operation.
3.1 Downloading only from seeds
When a new peer joins a torrent, it receives a list of randomly
selected peers by the tracker. There is also the option of ask-
ing the tracker for a refreshed list at any time. Thus, a selfish
client can, upon connecting, repeatedly ask for new lists.
Since most trackers perform some form of load balancing, it
is reasonable to assume that after a short period of time, such
a client will have received the information for most of the
seeds in the torrent; these can be easily identified, because
they advertise having all pieces of the file. The selfish client
can then completely ignore the leechers, and only attempt
to connect and download pieces from the seeds. In addition,
it can still benefit from optimistic unchoking by accepting
pieces from other leechers, yet refuse to upload to them in
return. Since seeds are typically high-bandwidth clients, we
expect the selfish client to be able to sustain high download
rates; this is experimentally confirmed in Section 4. Thus,
a selfish client will sooner or later download the entire file,
without contributing any data to the system.
This behavior violates BitTorrent’s fairness model, ac-
cording to which free-riding leechers should achieve low
rates. It also has the potential of directly harming hon-
est clients. When a fast selfish peer purposefully targets
and downloads data from seeds, it occupies one of each
seed’s unchoking slots. Thus, other, low-bandwidth peers
who need pieces available only at the seeds may starve, un-
til either the selfish peer disconnects or the seed selects them
though an optimistic unchoke. The damage can be even more
significant if a Sybil attack [9] is employed, i.e. if the selfish
client impersonates multiple identities and maintains multi-
ple open connections to the same seed.
3.2 Downloading only from the fastest peers
This exploit attempts to maximize the download rate by
peering with the fastest peers in the torrent—those who can
reciprocate with high rates—without performing optimistic
unchokes. Finding the fastest peers is not in itself an exploit;
BitTorrent tries to do this anyway. However, BitTorrent pe-
riodically selects peers uniformly at random through opti-
mistic unchoking. Thus, every client will eventually be given
a chance to download from every other client, even if their
rates are mismatched. All peers, and especially slow peers,
benefit as a result; without optimistic unchoking, slower
peers might starve, since they would never communicate
with faster peers. Even without optimistic unchokes, the
selfish peer stills needs a mechanism to select fast peers to
interact with. The protocol dictates that every peer should
send out an advertisement when it has finished downloading
a new piece. Thus, by observing the frequency of advertise-
ments sent by different peers, a selfish client can roughly
infer their download rate. This estimated rate constitutes a
lower limit on their download capacity, from which the up-
load capacity can usually be inferred; our experiments val-
idate this estimation method on private torrents and find it
accurate enough to reliably guide the discovery of the fastest
peers. A selfish client then attempts to interact only with
these peers. A default BitTorrent client might eventually ar-
rive at the same selection; the selfish client attempts to avoid
wasting time and resources during convergence. Regarding
seeds, there is no way to estimate their capacity, since they
do not send out any advertisements, so the exploit opts to
always request pieces from seeds if possible.
We expect the benefit from employing this exploit to be
less when sharing large files, where the convergence pe-
riod is negligible compared to the entire download time. It
is worth noting that the selfish client is indeed contribut-
ing data to the system. What makes this deviation from the
rules an exploit is not the different method for estimating
the fastest peers, but rather the lack of optimistic unchokes:
the selfish peer is actively discriminating against slow peers
by refusing to interact with them under any circumstances.