BitTorrent protocol encryption

Last updated

Protocol encryption (PE), message stream encryption (MSE) or protocol header encrypt (PHE) [lower-alpha 1] are related features of some peer-to-peer file-sharing clients, including BitTorrent clients. They attempt to enhance privacy and confidentiality. In addition, they attempt to make traffic harder to identify by third parties including internet service providers (ISPs). However, encryption will not protect one from DMCA notices from sharing not legal content, as one is still uploading material and the monitoring firms can merely connect to the swarm.

Contents

MSE/PE is implemented in BitComet, BitTornado, Deluge, Flashget, KTorrent, libtorrent (used by various BitTorrent clients, including qBittorrent), Mainline, μTorrent, qBittorrent, rTorrent, Transmission, Tixati and Vuze. PHE was implemented in old versions of BitComet. Similar protocol obfuscation is supported in up-to-date versions of some other (non-BitTorrent) systems including eMule. [1]

Purpose

As of January 2005, BitTorrent traffic made up more than a third of total residential internet traffic, [2] although this dropped to less than 20% as of 2009. Some ISPs deal with this traffic by increasing their capacity whilst others use specialised systems to slow peer-to-peer traffic to cut costs. Obfuscation and encryption make traffic harder to detect and therefore harder to throttle. These systems were designed initially to provide anonymity or confidentiality, but became required in countries where Internet Service Providers were granted the power to throttle BitTorrent users and even ban those they believed were guilty of illegal file sharing.

History

Early approach

Protocol header encryption (PHE) was conceived by RnySmile and first implemented in BitComet version 0.60 on 8 September 2005. Some software like IPP2P claims BitComet traffic is detectable even with PHE. [3] PHE is detectable because only part of the stream is encrypted. Since there are no open specifications to this protocol implementation, the only possibility to support it in other clients would have been via reverse engineering.

Development of MSE/PE

In late January 2006 the developers of Vuze (then known as Azureus) decided to design and simultaneously implement a new, open protocol obfuscation method, called message stream encryption (MSE). It was included in Azureus CVS snapshot 2307-B29 on 19 January 2006. [4]

This first draft was heavily criticized since it lacked several key features. After negotiations between different BitTorrent developers, a new proposal was written and then implemented into the Azureus and μTorrent betas within days. In μTorrent, the new protocol was called protocol encryption (PE).

MSE/PE in BitTorrent client versions

Operation

The BitComet PHE method used in versions 0.60 to 0.62 is neither published, nor is it compatible with MSE/PE.

MSE/PE uses key exchange combined with the infohash of the torrent to establish an RC4 encryption key. The key exchange helps to minimize the risk of passive listeners, and the infohash helps avoid man-in-the-middle attacks. RC4 is chosen for its speed. The first kibibyte (1024 bytes) of the output is discarded to prevent the Fluhrer, Mantin and Shamir attack.

The specification allows the users to choose between encrypting the headers only or the full connection. Encrypting the full connection provides more obfuscation but uses more CPU time.

To ensure compatibility with other clients that don't support this specification, users may also choose whether unencrypted incoming or outgoing connections are still allowed.

Supported clients propagate the fact that they have MSE/PE enabled through PEX and DHT.

Security

The estimated strength of the encryption corresponds to about 60–80 bits for common symmetrical ciphers. [21] Cryptographically, this effective key length is quite low, but appropriate in that the protocol was not designed as a secure transport protocol but rather as a fast and efficient obfuscation method. AES was proposed as the encryption method, but not adopted because it consumed too much CPU time. The required Diffie–Hellman keys to achieve a security equal to AES would have been much bigger or require elliptic curve cryptography, making the handshake more expensive in terms of used CPU time.

Effectiveness

Analysis of the BitTorrent protocol encryption (a.k.a. MSE) has shown that statistical measurements of packet sizes and packet directions of the first 100 packets in a TCP session can be used to identify the obfuscated protocol with over 96% accuracy. [22]

Criticism

Bram Cohen, the inventor of BitTorrent, opposed adding encryption to the BitTorrent protocol. Cohen stated he was worried that encryption could create incompatibility between clients. He also stressed the point that the majority of ISPs don't block the torrent protocol. In 2006 Cohen wrote "I rather suspect that some developer has gotten rate limited by his ISP, and is more interested in trying to hack around his ISP's limitations than in the performance of the internet as a whole". [23] Many BitTorrent community users responded strongly against Cohen's accusations. [24] Cohen later added encrypted connections to his Mainline client [25] with the ability to receive but not originate them.[ citation needed ] Notably, when μTorrent was purchased by BitTorrent, Inc. and then became the next mainline release, the ability to originate encrypted connections was retained, but it became turned off by default. In an interview in 2007, Cohen stated "The so-called 'encryption' of BitTorrent traffic isn't really encryption, it's obfuscation. It provides no anonymity whatsoever, and only temporarily evades traffic shaping." [26]

Notes

  1. Usually referred to as the more proper protocol header encryption.

Related Research Articles

BitTorrent, also referred to as simply torrent, is a communication protocol for peer-to-peer file sharing (P2P), which enables users to distribute data and electronic files over the Internet in a decentralized manner. The protocol is developed and maintained by Rainberry, Inc., and was first released in 2001.

<span class="mw-page-title-main">BitComet</span> BitTorrent, FTP and HTTP client

BitComet is a cross-protocol BitTorrent, HTTP and FTP client written in C++ for Microsoft Windows and available in 52 different languages. Its first public release was version 0.28. The current BitComet logo has been used since version 0.50.

In file sharing, super-seeding is an algorithm developed by John Hoffman for the BitTorrent communications protocol that helps downloaders become uploaders more quickly, but it introduces the danger of total seeding failure if there is only one downloader.

BitTorrent is a proprietary adware BitTorrent client developed by Bram Cohen and Rainberry, Inc. used for uploading and downloading files via the BitTorrent protocol. BitTorrent was the first client written for the protocol. It is often nicknamed Mainline by developers denoting its official origins. Since version 6.0 the BitTorrent client has been a rebranded version of μTorrent. As a result, it is no longer open source. It is currently available for Microsoft Windows, Mac, Linux, iOS and Android. There are currently two versions of the software, "BitTorrent Classic" which inherits the historical version numbering, and "BitTorrent Web", which uses its own version numbering.

A BitTorrent tracker is a special type of server that assists in the communication between peers using the BitTorrent protocol.

rTorrent BitTorrent library and text-based client

rTorrent is a text-based BitTorrent client written in C++, based on the ncurses and libTorrent libraries for Unix, whose author's goal is "a focus on high performance and good code".

<span class="mw-page-title-main">FrostWire</span> Free and open-source BitTorrent client

FrostWire is a free and open-source BitTorrent client first released in September 2004, as a fork of LimeWire. It was initially very similar to LimeWire in appearance and functionality, but over time developers added more features, including support for the BitTorrent protocol. In version 5, support for the Gnutella network was dropped entirely, and FrostWire became a BitTorrent-only client.

The UDP tracker protocol is a high-performance low-overhead BitTorrent tracker protocol. It uses the stateless User Datagram Protocol (UDP) for data transmission instead of the HTTP protocol regular trackers use. The data is in a custom binary format instead of the standard bencode algorithm BitTorrent uses for most communication.

Peer exchange or PEX is a communications protocol that augments the BitTorrent file sharing protocol. It allows a group of users that are collaborating to share a given file to do so more swiftly and efficiently.

<span class="mw-page-title-main">Deluge (software)</span> BitTorrent client

Deluge BitTorrent Client is a free and open-source, cross-platform BitTorrent client written in Python. Deluge uses a front and back end architecture where libtorrent, a software library written in C++ which provides the application's networking logic, is connected to one of various front ends including a text console, the web interface and a graphical desktop interface using GTK through the project's own Python bindings.

<span class="mw-page-title-main">Vuze</span> BitTorrent client

Vuze is a BitTorrent client used to transfer files via the BitTorrent protocol. Vuze is written in Java, and uses the Azureus Engine. In addition to downloading data linked to .torrent files, Azureus allows users to view, publish and share original DVD and HD quality video content. Content is presented through channels and categories containing TV shows, music videos, movies, video games, series and others.

The following is a general comparison of BitTorrent clients, which are computer programs designed for peer-to-peer file sharing using the BitTorrent protocol.

<span class="mw-page-title-main">Vuze, Inc.</span> American media-services provider

Vuze, Inc. is an American media-services provider founded in 2006 by some of the core developers of the open source BitTorrent client Azureus. Based in San Mateo, California, Vuze provides on-demand content watchable on a computer monitor or a connected TV. It bills itself as "the company behind Azureus".

libtorrent

libtorrent is an open-source implementation of the BitTorrent protocol. It is written in and has its main library interface in C++. Its most notable features are support for Mainline DHT, IPv6, HTTP seeds and μTorrent's peer exchange. libtorrent uses Boost, specifically Boost.Asio to gain its platform independence. It is known to build on Windows and most Unix-like operating systems.

Micro Transport Protocol is an open User Datagram Protocol-based (UDP-based) variant of the BitTorrent peer-to-peer file sharing protocol intended to mitigate poor latency and other congestion control problems found in conventional BitTorrent over Transmission Control Protocol (TCP), while providing reliable, ordered delivery.

The Local Peer Discovery protocol, specified as BEP-14, is an extension to the BitTorrent file-distribution system. It is designed to support the discovery of local BitTorrent peers, aiming to minimize the traffic through the Internet service provider's (ISP) channel and maximize use of higher-bandwidth local area network (LAN).

Mainline DHT is the name given to the Kademlia-based distributed hash table (DHT) used by BitTorrent clients to find peers via the BitTorrent protocol. The idea of using a DHT for distributed tracking in BitTorrent was first implemented in Azureus 2.3.0.0 in May 2005, from which it gained significant popularity. Unrelated but around the same time, BitTorrent, Inc. released a similar DHT into their client called Mainline DHT, and thus popularized the use of distributed tracking in the BitTorrent protocol. Measurement showed that by 2013, the concurrent number of users of Mainline DHT is from 16 million to 28 million, with intra-day changes of at least 10 million.

Traffic classification is an automated process which categorises computer network traffic according to various parameters into a number of traffic classes. Each resulting traffic class can be treated differently in order to differentiate the service implied for the data generator or consumer.

μTorrent Proprietary adware BitTorrent client

μTorrent, or uTorrent, is a proprietary adware BitTorrent client owned and developed by Rainberry, Inc. The "μ" in its name comes from the SI prefix "micro-", referring to the program's small memory footprint: the program was designed to use minimal computer resources while offering functionality comparable to larger BitTorrent clients such as Vuze or BitComet. μTorrent became controversial in 2015 when many users unknowingly accepted a default option during installation which also installed a cryptocurrency miner.

<span class="mw-page-title-main">WebTorrent</span> Peer-to-peer web-based torrent client

WebTorrent is a peer-to-peer (P2P) streaming torrent client written in JavaScript, from the same author, Feross Aboukhadijeh, of YouTube Instant, and the team at WebTorrent and on GitHub, for use in web browsers, as well as a WebTorrent Desktop stand alone version able to bridge WebTorrent and BitTorrent serverless networks.

References

  1. "eMule protocol obfuscation (encryption)". emule-project.net. 2006-09-16. Archived from the original on 2009-09-25. Retrieved 2010-03-11.
  2. "The Bittorrent Effect". Wired. 2007-05-30. Archived from the original on 2006-03-26. Retrieved 2017-03-05.
  3. "News". IPP2P.org. 2006-01-04. Archived from the original on 2013-05-20. Retrieved 2006-01-29.
  4. "[Azureus-commitlog] CVS Snapshot Azureus2307-B29.jar has been released !". Sourceforge.net. 2006-01-19. Archived from the original on 2019-09-24. Retrieved 2013-04-08.
  5. "aria2c(1) — aria2 1.34.0 documentation". aria2.github.io. Retrieved 2019-05-29.
  6. "BitComet Client Release Notes". Bitcomet.com. 2006-03-07. Archived from the original on 2010-12-17. Retrieved 2006-03-07.
  7. "BitTornado T-0.3.18". Degreez.net forum. 2007-01-05. Archived from the original on 2017-03-25. Retrieved 2007-01-06.
  8. "Version Notes". BitTorrent.com. 2006-05-02. Archived from the original on 2006-06-13.
  9. "Changelog: Deluge 0.5.1 (11 June 2007)". Deluge-torrent.org. 2007-06-11. Archived from the original on 2008-04-01.
  10. SVN server. KDE.org. 2006-04-29.Subversion client required.
  11. "Encryption has been added !". KTorrent.pwsp.net forum. 2006-04-29. Archived from the original on 2007-06-05.
  12. Norberg, Arvid. "www.libtorrent.org/reference-Settings.html". www.libtorrent.org. Archived from the original on 2017-02-17. Retrieved 2017-02-16.
  13. "libtorrent/ChangeLog at master · arvidn/libtorrent · GitHub". github.com. Archived from the original on 2017-05-10. Retrieved 2017-02-16.
  14. "Gmane -- Mail To News And Back Again". permalink.gmane.org. Archived from the original on 2017-02-17. Retrieved 2017-02-16.
  15. "[Libtorrent-devel] LibTorrent 0.11.0 and rTorrent 0.7.0 released". Rakshasa.no mail archive. 2006-12-13. Archived from the original on 2007-05-02. Retrieved 2007-06-10.
  16. "Transmission 0.90 Released!". Transmission.m0k.org forum. 2007-10-24. Archived from the original on 2007-10-27.
  17. "[Azureus-commitlog] CVS Snapshot Azureus2307-B33.jar has been released !". Sourceforge.net. 2006-01-25. Archived from the original on 2019-09-24. Retrieved 2013-04-08.
  18. "Azureus : Java BitTorrent Client - Changelog". Azureus.sourceforge.net. Archived from the original on 2006-03-20. Retrieved 2006-03-20.
  19. "μTorrent 1.4.2 beta 435". uTorrent Announcements. 2006-01-29. Archived from the original on 2006-05-14.
  20. "μTorrent 1.5 released" Archived 2013-05-29 at the Wayback Machine . uTorrent Announcements. 2006-03-07.
  21. "RFC 3526 chapter 8". IETF.org. Archived from the original on 2017-01-18. Retrieved 2007-08-26.
  22. Hjelmvik, Erik; John, Wolfgang (2010-07-27). "Breaking and Improving Protocol Obfuscation" (PDF). Technical Report. Department of Computer Science and Engineering, Chalmers University of Technology. ISSN   1652-926X. Archived (PDF) from the original on 2020-11-11. Retrieved 2010-08-17.
  23. Cohen, Bram (2006-01-29). "Obfuscating BitTorrent". Bram Cohen blog. Archived from the original on 2006-02-07.
  24. "Debate over Protocol Encryption". uTorrent.com forum. 2006-02-04. Archived from the original on 2007-10-22.
  25. "BitTorrent Mainline Version History". BitTorrent.com. 2006-10-15. Archived from the original on 2007-02-25.
  26. "Interview with Bram Cohen, the inventor of BitTorrent" Archived 2013-07-15 at the Wayback Machine . TorrentFreak. 2007-01-17. Retrieved 2013-04-07.