| 1 | BEP: 27
|
|---|
| 2 | Title: Private Torrents
|
|---|
| 3 | Version: $Revision$
|
|---|
| 4 | Last-Modified: $Date$
|
|---|
| 5 | Author: David Harrison <dave@bittorrent.com>
|
|---|
| 6 | Status: Draft
|
|---|
| 7 | Type: Standards Track
|
|---|
| 8 | Content-Type: text/x-rst
|
|---|
| 9 | Created: 3-Aug-2008
|
|---|
| 10 | Post-History:
|
|---|
| 11 |
|
|---|
| 12 | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
|
|---|
| 13 | NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
|
|---|
| 14 | "OPTIONAL" in this document are to be interpreted as described in
|
|---|
| 15 | IETF RFC 2119 [#RFC-2119]_.
|
|---|
| 16 |
|
|---|
| 17 | A *private tracker* restricts access to the torrents it tracks. A
|
|---|
| 18 | torrent with restricted access is called a *private torrent*. All
|
|---|
| 19 | other torrents are *public torrents*. To promote sharing, private
|
|---|
| 20 | trackers often maintain statistics about registered users and restrict
|
|---|
| 21 | access to certain or all torrents for users that do not adequately
|
|---|
| 22 | upload.
|
|---|
| 23 |
|
|---|
| 24 | When generating a metainfo file, users denote a torrent as private by
|
|---|
| 25 | including the key-value pair "private=1" in the "info" dict of the
|
|---|
| 26 | torrent's metainfo file [#BEP-3]_.
|
|---|
| 27 |
|
|---|
| 28 | When a BitTorrent client obtains a metainfo file containing the
|
|---|
| 29 | "private=1" key-value pair, it MUST ONLY announce itself to the
|
|---|
| 30 | private tracker, and MUST ONLY initiate connections to peers returned
|
|---|
| 31 | from the private tracker.
|
|---|
| 32 |
|
|---|
| 33 | When multiple trackers appear in the *announce-list* in the metainfo
|
|---|
| 34 | file of a private torrent (see multitracker extension in [#BEP-12]_),
|
|---|
| 35 | each peer MUST use only one tracker at a time and only switch between
|
|---|
| 36 | trackers when the current tracker fails. When switching between
|
|---|
| 37 | trackers, the peer MUST disconnect from all current peers and
|
|---|
| 38 | connect only to those provided from the new tracker.
|
|---|
| 39 |
|
|---|
| 40 | Rationale
|
|---|
| 41 | =========
|
|---|
| 42 |
|
|---|
| 43 | Private trackers deny admission to private torrents by refusing to
|
|---|
| 44 | return peer lists. Once an intruder peer has obtained the IP address
|
|---|
| 45 | and port of a peer, regardless of the source, the intruder can
|
|---|
| 46 | initiate a connection to that peer and trade pieces with the peer.
|
|---|
| 47 | Once in the swarm, the intruder is granted equal treatment as all
|
|---|
| 48 | other peers.
|
|---|
| 49 |
|
|---|
| 50 | BitTorrent has currently four ways that a peer can learn of other
|
|---|
| 51 | peers 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 |
|
|---|
| 61 | Announcing or exchanging peer information via any of these mechanisms
|
|---|
| 62 | other than the private tracker subverts the tracker's access control.
|
|---|
| 63 |
|
|---|
| 64 | Even though PEX only provides peer information to other peers already
|
|---|
| 65 | in the swarm, if an intruder obtained or guessed the IP and port of a
|
|---|
| 66 | peer already in a private torrent then exchanging peer information
|
|---|
| 67 | with the intruder would provide the intruder with a full complement of
|
|---|
| 68 | peers.
|
|---|
| 69 |
|
|---|
| 70 | When a peer switches between trackers, the peer drops connections so
|
|---|
| 71 | that it cannot become an ongoing bridge between peers granted access
|
|---|
| 72 | from a private tracker and peers announcing to a public tracker. This
|
|---|
| 73 | partially mitigates the effect of an attacker modifying a metainfo
|
|---|
| 74 | file's *announce-list* and redistributing the metainfo file, e.g., via
|
|---|
| 75 | a public tracker web site.
|
|---|
| 76 |
|
|---|
| 77 |
|
|---|
| 78 | History
|
|---|
| 79 | =======
|
|---|
| 80 |
|
|---|
| 81 | Private torrents were first introduced in Azureus.
|
|---|
| 82 |
|
|---|
| 83 | References
|
|---|
| 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 |
|
|---|
| 102 | Copyright
|
|---|
| 103 | =========
|
|---|
| 104 |
|
|---|
| 105 | This 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 |
|
|---|