Overview#
Private tracker is a mechanism that restricts access to the seeds it tracks. Its purpose is to facilitate resource sharing and often records statistical information about registered users and restricts access to certain or all seeds for users who have not uploaded enough.
When generating a metadata file, users can indicate that a seed is a PT seed by including the key-value pair "private=1" in the "info" dictionary of the seed's metadata file (as specified in the BitTorrent protocol specification).
When a BitTorrent client obtains a metadata file that contains the key-value pair "private=1", it must only report to the private tracker and establish connections only with the nodes returned by the private tracker.
When multiple trackers appear in the "announce-list" of a PT seed's metadata file (see Multiple Tracker Metadata Extension), each node can only use one tracker at a time and switch to another tracker only when the current tracker fails. When switching trackers, nodes must disconnect from all current nodes and only establish connections with the nodes provided by the new tracker.
Principle#
Private trackers do not disclose node information, so intruders cannot directly contact other nodes. However, once an intruder obtains the IP address and port of a node, they can share files by connecting directly to the node. In the seed swarm, intruders are treated as normal nodes and have the same rights and privileges as other nodes.
Currently, there are four ways in which a node can learn about other nodes in the seed swarm:
- Trackers [1],
- Distribute Hash Table (DHT) [2],
- Peer Exchange (PEX) [3],
- Local Service Discovery (LSD) [5].
Except for private trackers, any mechanism that publishes or exchanges node information will break the access control of the tracker. This means that if an intruder obtains or guesses the IP and port of a node already present in a PT seed, exchanging node information with the intruder will provide the intruder with a complete list of nodes.
When a node switches between different trackers, it disconnects from the old tracker to prevent itself from becoming a bridge between a private tracker and a public tracker. This partially mitigates the impact of attackers modifying the announce-list in the metadata file and redistributing the metadata file through public tracker websites.