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 of 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 the 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 (as described in the 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, the node 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 engage in file sharing by directly connecting to the node. In the seed swarm, intruders are treated as normal nodes and have the same rights and privileges as other nodes.
Currently, BitTorrent has four ways for a node to 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 Tracker, any mechanism that publishes or exchanges node information will undermine the access control of the tracker. This means that if an intruder obtains or guesses the IP and port of a node already in a PT seed, exchanging node information with the intruder will provide them with a complete list of nodes.
When a node switches between different trackers, it disconnects from the old tracker to prevent becoming a bridge between a private tracker and a public tracker. This mitigates the impact of attackers modifying the announce-list in the metadata file and redistributing the metadata file through public tracker websites.