root/dotorg/trunk/html/beps/bep_0027.rst

Revision 11143, 3.9 KB (checked in by dave, 15 months ago)

clarify

Line 
1BEP: 27
2Title: Private Torrents
3Version: $Revision$
4Last-Modified: $Date$
5Author:  David Harrison <dave@bittorrent.com>
6Status:  Draft
7Type:    Standards Track
8Content-Type: text/x-rst
9Created: 3-Aug-2008
10Post-History:
11
12The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
13NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and
14"OPTIONAL" in this document are to be interpreted as described in
15IETF RFC 2119 [#RFC-2119]_.
16
17A *private tracker* restricts access to the torrents it tracks.  A
18torrent with restricted access is called a *private torrent*.  All
19other torrents are *public torrents*.  To promote sharing, private
20trackers often maintain statistics about registered users and restrict
21access to certain or all torrents for users that do not adequately
22upload.
23
24When generating a metainfo file, users denote a torrent as private by
25including the key-value pair "private=1" in the "info" dict of the
26torrent's metainfo file [#BEP-3]_.
27
28When a BitTorrent client obtains a metainfo file containing the
29"private=1" key-value pair, it MUST ONLY announce itself to the
30private tracker, and MUST ONLY initiate connections to peers returned
31from the private tracker.
32
33When multiple trackers appear in the *announce-list* in the metainfo
34file of a private torrent (see multitracker extension in [#BEP-12]_),
35each peer MUST use only one tracker at a time and only switch between
36trackers when the current tracker fails.  When switching between
37trackers, the peer MUST disconnect from all current peers and
38connect only to those provided from the new tracker.
39
40Rationale
41=========
42
43Private trackers deny admission to private torrents by refusing to
44return peer lists.  Once an intruder peer has obtained the IP address
45and port of a peer, regardless of the source, the intruder can
46initiate a connection to that peer and trade pieces with the peer.
47Once in the swarm, the intruder is granted equal treatment as all
48other peers.
49
50BitTorrent has currently four ways that a peer can learn of other
51peers in a swarm:
52
53* Trackers [#BEP-3]_,
54
55* Distribute Hash Table (DHT) [#BEP-5]_,
56
57* Peer EXchange (PEX) [#BEP-11]_,
58
59* Local Service Discovery (LSD) [#BEP-14]_.
60
61Announcing or exchanging peer information via any of these mechanisms
62other than the private tracker subverts the tracker's access control.
63
64Even though PEX only provides peer information to other peers already
65in the swarm, if an intruder obtained or guessed the IP and port of a
66peer already in a private torrent then exchanging peer information
67with the intruder would provide the intruder with a full complement of
68peers.
69
70When a peer switches between trackers, the peer drops connections so
71that it cannot become an ongoing bridge between peers granted access
72from a private tracker and peers announcing to a public tracker.  This
73partially mitigates the effect of an attacker modifying a metainfo
74file's *announce-list* and redistributing the metainfo file, e.g., via
75a public tracker web site.
76
77
78History
79=======
80
81Private torrents were first introduced in Azureus.
82
83References
84==========
85
86.. [#BEP-3] BEP_0003.  The BitTorrent Protocol Specification. Cohen.
87   http://www.bittorrent.org/beps/bep_0003.html
88
89.. [#BEP-5] BEP_0005.  The DHT Protocol. Loewenstern.
90   http://www.bittorrent.org/beps/bep_0005.html
91
92.. [#BEP-11] BEP_0011.  Peer EXchange (pending)
93
94.. [#BEP-12] BEP_0012.  Multitracker Metadata Extension. Hoffman.
95   http://www.bittorrent.org/beps/bep_0012.html
96
97.. [#BEP-14] BEP_0014.  Local Service Discovery. Harrison, Hazel.
98   http://www.bittorrent.org/beps/bep_0014.html
99
100.. [#RFC-2119] RFC-2119. http://www.ietf.org/rfc/rfc2119.txt
101
102Copyright
103=========
104
105This document has been placed in the public domain.
106
107
108
109..
110   Local Variables:
111   mode: indented-text
112   indent-tabs-mode: nil
113   sentence-end-double-space: t
114   fill-column: 70
115   coding: utf-8
116   End:
117
Note: See TracBrowser for help on using the browser.