root / dotorg / v3 / html / tracker_peer_obfuscation.html

Revision 10154, 5.6 kB (checked in by dave, 12 months ago)

Update copyright from 2006 to 2008.
Update four years of development to five.

Line 
1<?xml version="1.0" encoding="utf-8" ?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4<head>
5<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
7<title></title>
8<link rel="stylesheet" href="css/screen.css" type="text/css" />
9</head>
10<body>
11<div class="document">
12
13<div id="upper" class="clear">
14<div id="wrap">
15<div id="header">
16<h1><a href="./index.html">BitTorrent<span>.org</span></a></h1>
17</div>
18<div id="nav">
19<ul>
20<li><a href="./index.html">Home</a></li>
21<li><a href="./introduction.html">For Users</a></li>
22<li><span>For Developers</span></li>
23<!-- <li><a href="./blog">Blog</a></li> -->
24<li><a href="./donate.html">Donate!</a></li>
25</ul>
26</div> <!-- nav -->
27<!-- ### Begin Content ### -->
28<div id="second">
29
30
31
32<div class="section">
33<h1><a id="tracker-peer-obfuscation-extension" name="tracker-peer-obfuscation-extension">tracker peer obfuscation extension</a></h1>
34<p>This extension extends the tracker protocol to support simple obfuscation
35of the peers it returns, using the info hash as a shared secret between
36the peer and the tracker. The obfuscation does not provide any security
37against eavesdroppers that know the info-hash of the torrent, it does
38however make it a lot harder for an eavesdropper to listen on tracker
39traffic in general to pick up the responses.</p>
40<p>The goal is to prevent internet service providers and other network
41administrators to block or disrupt bittorrent traffic in general. It
42will leave the possibility to block or disrupt bittorrent traffic for
43a certain torrent (given the attacker knows the info-hash).</p>
44<p>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;,
45&quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are
46to be interpreted as described in IETF <a class="reference" href="http://tools.ietf.org/html/rfc2119">RFC 2119</a>.</p>
47<div class="section">
48<h2><a id="announce-parameter" name="announce-parameter">announce parameter</a></h2>
49<p>When using this extension, instead of passing the <tt class="docutils literal"><span class="pre">info_hash</span></tt> parameter
50to the tracker, an <tt class="docutils literal"><span class="pre">xor_ih</span></tt> is passed.</p>
51<p>The value of <tt class="docutils literal"><span class="pre">xor_ih</span></tt> MUST be the info-hash of the torrent, bit-wise XORed
52with the byte-wise reverse of itself.</p>
53<p>For example. If the info-hash is <tt class="docutils literal"><span class="pre">0102030405060708090a0b0c0d0e0f1011121314</span></tt>
54(hex encoded), the value passed as the <tt class="docutils literal"><span class="pre">xor_ih</span></tt> should be:
55<tt class="docutils literal"><span class="pre">0102030405060708091011121314</span></tt> XOR <tt class="docutils literal"><span class="pre">1413121110090807060504030201</span></tt>. The
56value MUST be url encoded, just like the <tt class="docutils literal"><span class="pre">info_hash</span></tt>.</p>
57<p>This extension does not change the semantics of any parameter.</p>
58</div>
59<div class="section">
60<h2><a id="announce-response" name="announce-response">announce response</a></h2>
61<p>If the tracker supports this extension, the response should be exactly the
62same as if the <tt class="docutils literal"><span class="pre">info_hash</span></tt> was passed, except that any field that contains
63peer information (such as <tt class="docutils literal"><span class="pre">peers</span></tt>, <tt class="docutils literal"><span class="pre">peers6</span></tt> or any other field defined
64by another extension) MUST be bit-wise XORed by the info-hash.</p>
65<p>In the case <tt class="docutils literal"><span class="pre">peers</span></tt> (or another filed containing peer info) is not a single
66string, only the strings which contain the addresses and ports MUST be XORed.</p>
67<p>The tracker response MUST remain a valid bencoded message.</p>
68</div>
69<div class="section">
70<h2><a id="backwards-compatibility" name="backwards-compatibility">backwards compatibility</a></h2>
71<p>A client that is configured to use this extension should always send the
72<tt class="docutils literal"><span class="pre">xor_ih</span></tt> to any new tracker first. If it fails, the standard <tt class="docutils literal"><span class="pre">info_hash</span></tt>
73parameter should be used instead. It is important to never send both
74parameters in the same request, since that would defeat the purpose with
75the shared secret (since the secret would be sent in plain text in the announce).</p>
76</div>
77<div class="section">
78<h2><a id="rationale" name="rationale">rationale</a></h2>
79<p>The reason to XOR the info-hash with itself is because the tracker then
80only needs one extra lookup table for XORed hashes. Instead of applying
81a scheme where a shared secret is exchanged. This will add no computational
82overhead on the tracker for the torrent lookup.</p>
83</div>
84<div class="section">
85<h2><a id="authors" name="authors">authors</a></h2>
86<div class="line-block">
87<div class="line"><a class="reference" href="mailto:greg&#37;&#52;&#48;bittorrent&#46;com">Greg Hazel</a></div>
88<div class="line"><a class="reference" href="mailto:dave&#37;&#52;&#48;bittorrent&#46;com">David Harrison</a></div>
89<div class="line"><a class="reference" href="mailto:arvid&#37;&#52;&#48;bittorrent&#46;com">Arvid Norberg</a></div>
90</div>
91</div>
92</div>
93
94</div>
95        <div id="footer">
96<hr/>
97<p>Copyright 2008 BitTorrent.org</p>
98</div>
99
100</div>
101</body>
102</html>
Note: See TracBrowser for help on using the browser.