BitTorrent protocol encryption
From Wikipedia, the free encyclopedia
Protocol encryption (PE), Message stream encryption (MSE), or Protocol header encrypt (PHE)[1] are features of some BitTorrent clients that attempt to make BitTorrent traffic hard to throttle. MSE/PE is implemented in Azureus, µTorrent, BitComet, KTorrent and Mainline. PHE was implemented in old versions of BitComet.
Contents |
[edit] Purpose
BitTorrent traffic makes up a large portion of total Internet traffic. Some ISPs deal with it by increasing their capacity while other ISPs use specialised systems to throttle, or slow down BitTorrent traffic. Encryption makes BitTorrent traffic harder to detect and therefore harder to throttle. It is not designed to provide anonymity.
[edit] History
[edit] 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. [2] 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.
[edit] Development of MSE/PE
In late January 2006 the Azureus developers 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. [3]
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. The developers were ludde, uau, The 8472, Parg and Nolar. In µTorrent, the new protocol was called protocol encryption (PE).
Azureus supports the final spec since 25 January 2006 (CVS snapshot 2307-B33) [4] and µTorrent followed 4 days later with beta 1.4.1 build 407. [5]
[edit] MSE/PE in stable version of clients
Azureus version 2.4.0.0 was released 10 February 2006, and was the first stable version of a client to support MSE/PE. However, glitches in Azureus' implementation resulted in improperly encrypted pieces that failed hash checking. The glitches were rectified as of version 2.4.0.2. [6]
BitComet version 0.63 was released 7 March, 2006. It removed the old protocol header encryption and implemented the new PE to be compatible with Azureus and µTorrent. [7] Later that day µTorrent version 1.5 (build 436) was released; it was the first stable version of µTorrent with PE.
KTorrent implemented PE in SVN version 535386 [8] on April 29, 2006. [9]
Mainline supports MSE/PE since version 4.9.2-beta on May 2, 2006. [10]
BitTornado may include MSE/PE in a later version. [11]
[edit] Operation
The BitComet PHE method used in versions 0.60 to 0.62 is not published. Thus it is incompatible with MSE/PE.
MSE/PE uses a D-H key exchange combined with the infohash of the torrent to establish the key, then it uses RC4 to encrypt the data. The D-H 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 kilobyte of the RC4 output is discarded to prevent a particular 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. However, only Azureus and µTorrent beta 1.4.1 build 413 or older lets the user choose. All other clients default to full encryption.
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.
All supported clients will enable encryption automatically if they receive an encrypted incoming connection even if outgoing encryption is disabled.
Supported clients propagate the fact that they have MSE/PE enabled through PEX and DHT. Other clients will then connect to them with encryption even if outgoing encryption is disabled.
[edit] Security
The estimated strength of the encryption corresponds to about 60–80 bits for common symmetrical ciphers (see RFC 3526 chapter 8). This is quite low for today's standards but one has to keep in mind that this protocol wasn't designed as a secure transport protocol but as a fast and efficient obfuscation method. AES was proposed as the encryption method but not adopted because it consumed too much CPU time and the required D-H 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.
[edit] Effectiveness
Many ISPs are now using more sophisticated measures (such as Deep packet inspection) to detect BitTorrent traffic. This means that even encrypted BitTorrent traffic is now throttled. However, for those using primitive methods to identify and throttle BitTorrent, the current solution remains extremely effective.
[edit] Criticism
Bram Cohen, the inventor of BitTorrent, initially commented with disfavour on the ongoing development to add encryption to the BitTorrent protocol. [12] Encrypted BitTorrent users were quick to disagree with his reasoning on many counts. [13] Cohen later added encryption to his BitTorrent client Mainline [14].
[edit] BBC claims
A BBC Newsnight episode [15] claimed using encrypted BitTorrent will help terrorists and paedophiles because it is generating more encrypted traffic, making the internet harder to spy on. Many BitTorrent users were outraged and complained. [16] BBC stood by its claim about paedophiles and terrorists, but it did admit that such references are often used by others as a way to sell copy, and that traditional media like television are under threat from new media like BitTorrent. BBC apologised for another remark in the same report that said that peer to peer file sharing was "theft" (a criminal offence in the UK) whereas it is more normally considered copyright infringement (a civil offence.)[17]
[edit] Notes and references
- ^ It is usually referred to as the more correct protocol header encryption instead.
- ^ IPP2P homepage - News (2006-01-04).
- ^ CVS Snapshot Azureus2307-B29.jar has been released ! (2006-01-19).
- ^ CVS Snapshot Azureus2307-B33.jar has been released ! (2006-01-25).
- ^ µTorrent 1.4.2 beta 435 (2006-01-29).
- ^ Azureus : Java BitTorrent Client - Changelog.
- ^ BitComet Client Release Notes (2006-03-07).
- ^ The SVN server is at svn://anonsvn.kde.org/home/kde/trunk/extragear/network/ktorrent
- ^ Encryption has been added ! (2006-04-29).
- ^ Version Notes. BitTorrent (2006-05-02).
- ^ BitTornado T-0.3.15 (2006-03-04).
- ^ Cohen, Bram (2006-01-29). Obfuscating BitTorrent.
- ^ Debate over Protocol Encryption.
- ^ BitTorrent Mainline Version History (2006-10-15).
- ^ BBC Newsnight Bittorent clip 2006 02 26 (AVI) (2006-02-27).
- ^ Feedback - February 2006 (2). BBC NEWS.
- ^ Livingstone, Adam (2006-02-28). A bit of BitTorrent bother. BBC NEWS.
[edit] External links
- Description on the official Azureus wiki
- ISPs that shape BitTorrent on the official Azureus wiki
- "BitTorrent End to End Encryption and Bandwidth Throttling - Part I" (Interview with µTorrent developers by Slyck News)
- "BitTorrent End to End Encryption and Bandwidth Throttling - Part II" -(Interview with Azureus developers)
- "BitTorrent and End to End Encryption" -(Slashdot)