TBB design doc: Fix charset and section breakage.
Mike Perry

Mike Perry commited on 2013-02-25 22:35:57
Zeige 1 geänderte Dateien mit 169 Einfügungen und 169 Löschungen.

... ...
@@ -1,6 +1,6 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3
-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>The Design and Implementation of the Tor Browser [DRAFT]</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"/></head><body><div class="article" title="The Design and Implementation of the Tor Browser [DRAFT]"><div class="titlepage"><div><div><h2 class="title"><a id="design"/>The Design and Implementation of the Tor Browser [DRAFT]</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Mike</span> <span class="surname">Perry</span></h3><div class="affiliation"><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:mikeperry#torproject org">mikeperry#torproject org</a>&gt;</code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Erinn</span> <span class="surname">Clark</span></h3><div class="affiliation"><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:erinn#torproject org">erinn#torproject org</a>&gt;</code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Steven</span> <span class="surname">Murdoch</span></h3><div class="affiliation"><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:sjmurdoch#torproject org">sjmurdoch#torproject org</a>&gt;</code></p></div></div></div></div><div><p class="pubdate">Feb 23 2013</p></div></div><hr/></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#idp3348944">1. Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="#components">1.1. Browser Component Overview</a></span></dt></dl></dd><dt><span class="sect1"><a href="#DesignRequirements">2. Design Requirements and Philosophy</a></span></dt><dd><dl><dt><span class="sect2"><a href="#security">2.1. Security Requirements</a></span></dt><dt><span class="sect2"><a href="#privacy">2.2. Privacy Requirements</a></span></dt><dt><span class="sect2"><a href="#philosophy">2.3. Philosophy</a></span></dt></dl></dd><dt><span class="sect1"><a href="#adversary">3. Adversary Model</a></span></dt><dd><dl><dt><span class="sect2"><a href="#adversarygoals">3.1. Adversary Goals</a></span></dt><dt><span class="sect2"><a href="#adversarypositioning">3.2. Adversary Capabilities - Positioning</a></span></dt><dt><span class="sect2"><a href="#attacks">3.3. Adversary Capabilities - Attacks</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Implementation">4. Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="#proxy-obedience">4.1. Proxy Obedience</a></span></dt><dt><span class="sect2"><a href="#state-separation">4.2. State Separation</a></span></dt><dt><span class="sect2"><a href="#disk-avoidance">4.3. Disk Avoidance</a></span></dt><dt><span class="sect2"><a href="#app-data-isolation">4.4. Application Data Isolation</a></span></dt><dt><span class="sect2"><a href="#identifier-linkability">4.5. Cross-Origin Identifier Unlinkability</a></span></dt><dt><span class="sect2"><a href="#fingerprinting-linkability">4.6. Cross-Origin Fingerprinting Unlinkability</a></span></dt><dt><span class="sect2"><a href="#new-identity">4.7. Long-Term Unlinkability via "New Identity" button</a></span></dt><dt><span class="sect2"><a href="#firefox-patches">4.8. Description of Firefox Patches</a></span></dt></dl></dd><dt><span class="appendix"><a href="#Transparency">A. Towards Transparency in Navigation Tracking</a></span></dt></dl></div><div class="sect1" title="1. Introduction"><div class="titlepage"><div><div><h2 class="title"><a id="idp3348944"/>1. Introduction</h2></div></div></div><p>
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"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The Design and Implementation of the Tor Browser [DRAFT]</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /></head><body><div class="article" title="The Design and Implementation of the Tor Browser [DRAFT]"><div class="titlepage"><div><div><h2 class="title"><a id="design"></a>The Design and Implementation of the Tor Browser [DRAFT]</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Mike</span> <span class="surname">Perry</span></h3><div class="affiliation"><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:mikeperry#torproject org">mikeperry#torproject org</a>&gt;</code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Erinn</span> <span class="surname">Clark</span></h3><div class="affiliation"><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:erinn#torproject org">erinn#torproject org</a>&gt;</code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Steven</span> <span class="surname">Murdoch</span></h3><div class="affiliation"><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:sjmurdoch#torproject org">sjmurdoch#torproject org</a>&gt;</code></p></div></div></div></div><div><p class="pubdate">Feb 23 2013</p></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#idp1435840">1. Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="#components">1.1. Browser Component Overview</a></span></dt></dl></dd><dt><span class="sect1"><a href="#DesignRequirements">2. Design Requirements and Philosophy</a></span></dt><dd><dl><dt><span class="sect2"><a href="#security">2.1. Security Requirements</a></span></dt><dt><span class="sect2"><a href="#privacy">2.2. Privacy Requirements</a></span></dt><dt><span class="sect2"><a href="#philosophy">2.3. Philosophy</a></span></dt></dl></dd><dt><span class="sect1"><a href="#adversary">3. Adversary Model</a></span></dt><dd><dl><dt><span class="sect2"><a href="#adversarygoals">3.1. Adversary Goals</a></span></dt><dt><span class="sect2"><a href="#adversarypositioning">3.2. Adversary Capabilities - Positioning</a></span></dt><dt><span class="sect2"><a href="#attacks">3.3. Adversary Capabilities - Attacks</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Implementation">4. Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="#proxy-obedience">4.1. Proxy Obedience</a></span></dt><dt><span class="sect2"><a href="#state-separation">4.2. State Separation</a></span></dt><dt><span class="sect2"><a href="#disk-avoidance">4.3. Disk Avoidance</a></span></dt><dt><span class="sect2"><a href="#app-data-isolation">4.4. Application Data Isolation</a></span></dt><dt><span class="sect2"><a href="#identifier-linkability">4.5. Cross-Origin Identifier Unlinkability</a></span></dt><dt><span class="sect2"><a href="#fingerprinting-linkability">4.6. Cross-Origin Fingerprinting Unlinkability</a></span></dt><dt><span class="sect2"><a href="#new-identity">4.7. Long-Term Unlinkability via "New Identity" button</a></span></dt><dt><span class="sect2"><a href="#firefox-patches">4.8. Description of Firefox Patches</a></span></dt></dl></dd><dt><span class="appendix"><a href="#Transparency">A. Towards Transparency in Navigation Tracking</a></span></dt><dd><dl><dt><span class="sect1"><a href="#deprecate">A.1. Deprecation Wishlist</a></span></dt><dt><span class="sect1"><a href="#idp5757152">A.2. Promising Standards</a></span></dt></dl></dd></dl></div><div class="sect1" title="1. Introduction"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="idp1435840"></a>1. Introduction</h2></div></div></div><p>
4 4
 
5 5
 This document describes the <a class="link" href="#adversary" title="3. Adversary Model">adversary model</a>,
6 6
 <a class="link" href="#DesignRequirements" title="2. Design Requirements and Philosophy">design requirements</a>, and <a class="link" href="#Implementation" title="4. Implementation">implementation</a>  of the Tor Browser. It is current as of Tor Browser 2.3.25-4
... ...
@@ -13,27 +13,27 @@ describe a reference implementation of a Private Browsing Mode that defends
13 13
 against active network adversaries, in addition to the passive forensic local
14 14
 adversary currently addressed by the major browsers.
15 15
 
16
-  </p><div class="sect2" title="1.1. Browser Component Overview"><div class="titlepage"><div><div><h3 class="title"><a id="components"/>1.1. Browser Component Overview</h3></div></div></div><p>
16
+  </p><div class="sect2" title="1.1. Browser Component Overview"><div class="titlepage"><div><div><h3 class="title"><a id="components"></a>1.1. Browser Component Overview</h3></div></div></div><p>
17 17
 
18
-The Tor Browser is based on <a class="ulink" href="https://www.mozilla.org/en-US/firefox/organizations/">Mozilla's Extended
18
+The Tor Browser is based on <a class="ulink" href="https://www.mozilla.org/en-US/firefox/organizations/" target="_top">Mozilla's Extended
19 19
 Support Release (ESR) Firefox branch</a>. We have a <a class="link" href="#firefox-patches" title="4.8. Description of Firefox Patches">series of patches</a> against this browser to
20 20
 enhance privacy and security. Browser behavior is additionally augmented
21
-through the <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/tree/master">Torbutton
21
+through the <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/tree/master" target="_top">Torbutton
22 22
 extension</a>, though we are in the process of moving this
23
-functionality into direct Firefox patches. We also <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/HEAD:/build-scripts/config/pound_tor.js">change
23
+functionality into direct Firefox patches. We also <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/HEAD:/build-scripts/config/pound_tor.js" target="_top">change
24 24
 a number of Firefox preferences</a> from their defaults.
25 25
 
26 26
    </p><p>
27 27
 
28 28
 To help protect against potential Tor Exit Node eavesdroppers, we include
29
-<a class="ulink" href="https://www.eff.org/https-everywhere">HTTPS-Everywhere</a>. To
29
+<a class="ulink" href="https://www.eff.org/https-everywhere" target="_top">HTTPS-Everywhere</a>. To
30 30
 provide users with optional defense-in-depth against Javascript and other
31
-potential exploit vectors, we also include <a class="ulink" href="http://noscript.net/">NoScript</a>. To protect against
32
-PDF-based Tor proxy bypass and to improve usability, we include the <a class="ulink" href="https://addons.mozilla.org/en-us/firefox/addon/pdfjs/">PDF.JS</a>
33
-extension. We also modify <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/HEAD:/build-scripts/config/extension-overrides.js">several
31
+potential exploit vectors, we also include <a class="ulink" href="http://noscript.net/" target="_top">NoScript</a>. To protect against
32
+PDF-based Tor proxy bypass and to improve usability, we include the <a class="ulink" href="https://addons.mozilla.org/en-us/firefox/addon/pdfjs/" target="_top">PDF.JS</a>
33
+extension. We also modify <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/HEAD:/build-scripts/config/extension-overrides.js" target="_top">several
34 34
 extension preferences</a> from their defaults.
35 35
 
36
-   </p></div></div><div class="sect1" title="2. Design Requirements and Philosophy"><div class="titlepage"><div><div><h2 class="title"><a id="DesignRequirements"/>2. Design Requirements and Philosophy</h2></div></div></div><p>
36
+   </p></div></div><div class="sect1" title="2. Design Requirements and Philosophy"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="DesignRequirements"></a>2. Design Requirements and Philosophy</h2></div></div></div><p>
37 37
 
38 38
 The Tor Browser Design Requirements are meant to describe the properties of a
39 39
 Private Browsing Mode that defends against both network and local forensic
... ...
@@ -57,9 +57,9 @@ browser distribution.
57 57
       The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
58 58
       NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and
59 59
       "OPTIONAL" in this document are to be interpreted as described in
60
-      <a class="ulink" href="https://www.ietf.org/rfc/rfc2119.txt">RFC 2119</a>.
60
+      <a class="ulink" href="https://www.ietf.org/rfc/rfc2119.txt" target="_top">RFC 2119</a>.
61 61
 
62
-  </p><div class="sect2" title="2.1. Security Requirements"><div class="titlepage"><div><div><h3 class="title"><a id="security"/>2.1. Security Requirements</h3></div></div></div><p>
62
+  </p><div class="sect2" title="2.1. Security Requirements"><div class="titlepage"><div><div><h3 class="title"><a id="security"></a>2.1. Security Requirements</h3></div></div></div><p>
63 63
 
64 64
 The security requirements are primarily concerned with ensuring the safe use
65 65
 of Tor. Violations in these properties typically result in serious risk for
... ...
@@ -67,7 +67,7 @@ the user in terms of immediate deanonymization and/or observability. With
67 67
 respect to browser support, security requirements are the minimum properties
68 68
 in order for Tor to support the use of a particular browser.
69 69
 
70
-   </p><div class="orderedlist"><ol class="orderedlist"><li class="listitem"><a class="link" href="#proxy-obedience" title="4.1. Proxy Obedience"><span class="command"><strong>Proxy
70
+   </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><a class="link" href="#proxy-obedience" title="4.1. Proxy Obedience"><span class="command"><strong>Proxy
71 71
 Obedience</strong></span></a><p>The browser
72 72
 MUST NOT bypass Tor proxy settings for any content.</p></li><li class="listitem"><a class="link" href="#state-separation" title="4.2. State Separation"><span class="command"><strong>State
73 73
 Separation</strong></span></a><p>The browser MUST NOT provide any stored state to the content window
... ...
@@ -96,7 +96,7 @@ to permissions issues with access to swap, implementations MAY choose to leave
96 96
 it out of scope, and/or leave it to the Operating System/platform to implement
97 97
 ephemeral-keyed encrypted swap.
98 98
 
99
-</p></li></ol></div></div><div class="sect2" title="2.2. Privacy Requirements"><div class="titlepage"><div><div><h3 class="title"><a id="privacy"/>2.2. Privacy Requirements</h3></div></div></div><p>
99
+</p></li></ol></div></div><div class="sect2" title="2.2. Privacy Requirements"><div class="titlepage"><div><div><h3 class="title"><a id="privacy"></a>2.2. Privacy Requirements</h3></div></div></div><p>
100 100
 
101 101
 The privacy requirements are primarily concerned with reducing linkability:
102 102
 the ability for a user's activity on one site to be linked with their activity
... ...
@@ -113,7 +113,7 @@ second-level DNS name.  For example, for mail.google.com, the origin would be
113 113
 google.com. Implementations MAY, at their option, restrict the url bar origin
114 114
 to be the entire fully qualified domain name.
115 115
 
116
-   </p><div class="orderedlist"><ol class="orderedlist"><li class="listitem"><a class="link" href="#identifier-linkability" title="4.5. Cross-Origin Identifier Unlinkability"><span class="command"><strong>Cross-Origin
116
+   </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><a class="link" href="#identifier-linkability" title="4.5. Cross-Origin Identifier Unlinkability"><span class="command"><strong>Cross-Origin
117 117
 Identifier Unlinkability</strong></span></a><p>
118 118
 
119 119
 User activity on one url bar origin MUST NOT be linkable to their activity in
... ...
@@ -140,12 +140,12 @@ authentication tokens and browser state and obtain a fresh identity.
140 140
 Additionally, the browser SHOULD clear linkable state by default automatically
141 141
 upon browser restart, except at user option.
142 142
 
143
-  </p></li></ol></div></div><div class="sect2" title="2.3. Philosophy"><div class="titlepage"><div><div><h3 class="title"><a id="philosophy"/>2.3. Philosophy</h3></div></div></div><p>
143
+  </p></li></ol></div></div><div class="sect2" title="2.3. Philosophy"><div class="titlepage"><div><div><h3 class="title"><a id="philosophy"></a>2.3. Philosophy</h3></div></div></div><p>
144 144
 
145 145
 In addition to the above design requirements, the technology decisions about
146 146
 Tor Browser are also guided by some philosophical positions about technology.
147 147
 
148
-   </p><div class="orderedlist"><ol class="orderedlist"><li class="listitem"><span class="command"><strong>Preserve existing user model</strong></span><p>
148
+   </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><span class="command"><strong>Preserve existing user model</strong></span><p>
149 149
 
150 150
 The existing way that the user expects to use a browser must be preserved. If
151 151
 the user has to maintain a different mental model of how the sites they are
... ...
@@ -156,7 +156,7 @@ result. Worse, they may just stop using the browser, assuming it is broken.
156 156
 
157 157
       </p><p>
158 158
 
159
-User model breakage was one of the <a class="ulink" href="https://blog.torproject.org/blog/toggle-or-not-toggle-end-torbutton">failures
159
+User model breakage was one of the <a class="ulink" href="https://blog.torproject.org/blog/toggle-or-not-toggle-end-torbutton" target="_top">failures
160 160
 of Torbutton</a>: Even if users managed to install everything properly,
161 161
 the toggle model was too hard for the average user to understand, especially
162 162
 in the face of accumulating tabs from multiple states crossed with the current
... ...
@@ -188,16 +188,16 @@ to reduce cross-origin fingerprinting linkability.
188 188
 
189 189
        </p></li><li class="listitem"><span class="command"><strong>Minimize Global Privacy Options</strong></span><p>
190 190
 
191
-<a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3100">Another
191
+<a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3100" target="_top">Another
192 192
 failure of Torbutton</a> was the options panel. Each option
193 193
 that detectably alters browser behavior can be used as a fingerprinting tool.
194
-Similarly, all extensions <a class="ulink" href="http://blog.chromium.org/2010/06/extensions-in-incognito.html">SHOULD be
194
+Similarly, all extensions <a class="ulink" href="http://blog.chromium.org/2010/06/extensions-in-incognito.html" target="_top">SHOULD be
195 195
 disabled in the mode</a> except as an opt-in basis. We SHOULD NOT load
196 196
 system-wide and/or Operating System provided addons or plugins.
197 197
 
198 198
      </p><p>
199 199
 Instead of global browser privacy options, privacy decisions SHOULD be made
200
-<a class="ulink" href="https://wiki.mozilla.org/Privacy/Features/Site-based_data_management_UI">per
200
+<a class="ulink" href="https://wiki.mozilla.org/Privacy/Features/Site-based_data_management_UI" target="_top">per
201 201
 url bar origin</a> to eliminate the possibility of linkability
202 202
 between domains. For example, when a plugin object (or a Javascript access of
203 203
 window.plugins) is present in a page, the user should be given the choice of
... ...
@@ -209,9 +209,9 @@ If the user has indicated they wish to record local history storage, these
209 209
 permissions can be written to disk. Otherwise, they MUST remain memory-only. 
210 210
      </p></li><li class="listitem"><span class="command"><strong>No filters</strong></span><p>
211 211
 
212
-Site-specific or filter-based addons such as <a class="ulink" href="https://addons.mozilla.org/en-US/firefox/addon/adblock-plus/">AdBlock
213
-Plus</a>, <a class="ulink" href="http://requestpolicy.com/">Request Policy</a>,
214
-<a class="ulink" href="http://www.ghostery.com/about">Ghostery</a>, <a class="ulink" href="http://priv3.icsi.berkeley.edu/">Priv3</a>, and <a class="ulink" href="http://sharemenot.cs.washington.edu/">Sharemenot</a> are to be
212
+Site-specific or filter-based addons such as <a class="ulink" href="https://addons.mozilla.org/en-US/firefox/addon/adblock-plus/" target="_top">AdBlock
213
+Plus</a>, <a class="ulink" href="http://requestpolicy.com/" target="_top">Request Policy</a>,
214
+<a class="ulink" href="http://www.ghostery.com/about" target="_top">Ghostery</a>, <a class="ulink" href="http://priv3.icsi.berkeley.edu/" target="_top">Priv3</a>, and <a class="ulink" href="http://sharemenot.cs.washington.edu/" target="_top">Sharemenot</a> are to be
215 215
 avoided. We believe that these addons do not add any real privacy to a proper
216 216
 <a class="link" href="#Implementation" title="4. Implementation">implementation</a> of the above <a class="link" href="#privacy" title="2.2. Privacy Requirements">privacy requirements</a>, and that development efforts
217 217
 should be focused on general solutions that prevent tracking by all
... ...
@@ -238,13 +238,13 @@ We believe that if we do not stay current with the support of new web
238 238
 technologies, we cannot hope to substantially influence or be involved in
239 239
 their proper deployment or privacy realization. However, we will likely disable
240 240
 high-risk features pending analysis, audit, and mitigation.
241
-      </p></li></ol></div></div></div><div class="sect1" title="3. Adversary Model"><div class="titlepage"><div><div><h2 class="title"><a id="adversary"/>3. Adversary Model</h2></div></div></div><p>
241
+      </p></li></ol></div></div></div><div class="sect1" title="3. Adversary Model"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="adversary"></a>3. Adversary Model</h2></div></div></div><p>
242 242
 
243 243
 A Tor web browser adversary has a number of goals, capabilities, and attack
244 244
 types that can be used to illustrate the design requirements for the
245 245
 Tor Browser. Let's start with the goals.
246 246
 
247
-   </p><div class="sect2" title="3.1. Adversary Goals"><div class="titlepage"><div><div><h3 class="title"><a id="adversarygoals"/>3.1. Adversary Goals</h3></div></div></div><div class="orderedlist"><ol class="orderedlist"><li class="listitem"><span class="command"><strong>Bypassing proxy settings</strong></span><p>The adversary's primary goal is direct compromise and bypass of 
247
+   </p><div class="sect2" title="3.1. Adversary Goals"><div class="titlepage"><div><div><h3 class="title"><a id="adversarygoals"></a>3.1. Adversary Goals</h3></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><span class="command"><strong>Bypassing proxy settings</strong></span><p>The adversary's primary goal is direct compromise and bypass of 
248 248
 Tor, causing the user to directly connect to an IP of the adversary's
249 249
 choosing.</p></li><li class="listitem"><span class="command"><strong>Correlation of Tor vs Non-Tor Activity</strong></span><p>If direct proxy bypass is not possible, the adversary will likely
250 250
 happily settle for the ability to correlate something a user did via Tor with
... ...
@@ -283,10 +283,10 @@ In some cases, the adversary may opt for a heavy-handed approach, such as
283 283
 seizing the computers of all Tor users in an area (especially after narrowing
284 284
 the field by the above two pieces of information). History records and cache
285 285
 data are the primary goals here.
286
-     </p></li></ol></div></div><div class="sect2" title="3.2. Adversary Capabilities - Positioning"><div class="titlepage"><div><div><h3 class="title"><a id="adversarypositioning"/>3.2. Adversary Capabilities - Positioning</h3></div></div></div><p>
286
+     </p></li></ol></div></div><div class="sect2" title="3.2. Adversary Capabilities - Positioning"><div class="titlepage"><div><div><h3 class="title"><a id="adversarypositioning"></a>3.2. Adversary Capabilities - Positioning</h3></div></div></div><p>
287 287
 The adversary can position themselves at a number of different locations in
288 288
 order to execute their attacks.
289
-    </p><div class="orderedlist"><ol class="orderedlist"><li class="listitem"><span class="command"><strong>Exit Node or Upstream Router</strong></span><p>
289
+    </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><span class="command"><strong>Exit Node or Upstream Router</strong></span><p>
290 290
 The adversary can run exit nodes, or alternatively, they may control routers
291 291
 upstream of exit nodes. Both of these scenarios have been observed in the
292 292
 wild.
... ...
@@ -306,7 +306,7 @@ Users in Internet cafes, for example, face such a threat. In addition, in
306 306
 countries where simply using tools like Tor is illegal, users may face
307 307
 confiscation of their computer equipment for excessive Tor usage or just
308 308
 general suspicion.
309
-     </p></li></ol></div></div><div class="sect2" title="3.3. Adversary Capabilities - Attacks"><div class="titlepage"><div><div><h3 class="title"><a id="attacks"/>3.3. Adversary Capabilities - Attacks</h3></div></div></div><p>
309
+     </p></li></ol></div></div><div class="sect2" title="3.3. Adversary Capabilities - Attacks"><div class="titlepage"><div><div><h3 class="title"><a id="attacks"></a>3.3. Adversary Capabilities - Attacks</h3></div></div></div><p>
310 310
 
311 311
 The adversary can perform the following attacks from a number of different 
312 312
 positions to accomplish various aspects of their goals. It should be noted
... ...
@@ -316,7 +316,7 @@ CSS elements, and plugins. Others are performed by ad servers seeking to
316 316
 correlate users' activity across different IP addresses, and still others are
317 317
 performed by malicious agents on the Tor network and at national firewalls.
318 318
 
319
-    </p><div class="orderedlist"><ol class="orderedlist"><li class="listitem"><span class="command"><strong>Read and insert identifiers</strong></span><p>
319
+    </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><span class="command"><strong>Read and insert identifiers</strong></span><p>
320 320
 
321 321
 The browser contains multiple facilities for storing identifiers that the
322 322
 adversary creates for the purposes of tracking users. These identifiers are
... ...
@@ -329,7 +329,7 @@ even TLS Session IDs.
329 329
 An adversary in a position to perform MITM content alteration can inject
330 330
 document content elements to both read and inject cookies for arbitrary
331 331
 domains. In fact, even many "SSL secured" websites are vulnerable to this sort of
332
-<a class="ulink" href="http://seclists.org/bugtraq/2007/Aug/0070.html">active
332
+<a class="ulink" href="http://seclists.org/bugtraq/2007/Aug/0070.html" target="_top">active
333 333
 sidejacking</a>. In addition, the ad networks of course perform tracking
334 334
 with cookies as well.
335 335
 
... ...
@@ -337,7 +337,7 @@ with cookies as well.
337 337
 
338 338
 These types of attacks are attempts at subverting our <a class="link" href="#identifier-linkability" title="4.5. Cross-Origin Identifier Unlinkability">Cross-Origin Identifier Unlinkability</a> and <a class="link" href="#new-identity" title="4.7. Long-Term Unlinkability via &quot;New Identity&quot; button">Long-Term Unlikability</a> design requirements.
339 339
 
340
-     </p></li><li class="listitem"><a id="fingerprinting"/><span class="command"><strong>Fingerprint users based on browser
340
+     </p></li><li class="listitem"><a id="fingerprinting"></a><span class="command"><strong>Fingerprint users based on browser
341 341
 attributes</strong></span><p>
342 342
 
343 343
 There is an absurd amount of information available to websites via attributes
... ...
@@ -356,10 +356,10 @@ to linkability between visits.
356 356
 
357 357
 </p><p>
358 358
 
359
-The <a class="ulink" href="https://panopticlick.eff.org/about.php">Panopticlick study
360
-done</a> by the EFF uses the <a class="ulink" href="https://en.wikipedia.org/wiki/Entropy_%28information_theory%29">Shannon
359
+The <a class="ulink" href="https://panopticlick.eff.org/about.php" target="_top">Panopticlick study
360
+done</a> by the EFF uses the <a class="ulink" href="https://en.wikipedia.org/wiki/Entropy_%28information_theory%29" target="_top">Shannon
361 361
 entropy</a> - the number of identifying bits of information encoded in
362
-browser properties - as this metric. Their <a class="ulink" href="https://wiki.mozilla.org/Fingerprinting#Data">result data</a> is
362
+browser properties - as this metric. Their <a class="ulink" href="https://wiki.mozilla.org/Fingerprinting#Data" target="_top">result data</a> is
363 363
 definitely useful, and the metric is probably the appropriate one for
364 364
 determining how identifying a particular browser property is. However, some
365 365
 quirks of their study means that they do not extract as much information as
... ...
@@ -375,7 +375,7 @@ final.
375 375
 Despite the uncertainty, all fingerprinting attacks leverage the following
376 376
 attack vectors:
377 377
 
378
-     </p><div class="orderedlist"><ol class="orderedlist"><li class="listitem"><span class="command"><strong>Observing Request Behavior</strong></span><p>
378
+     </p><div class="orderedlist"><ol class="orderedlist" type="a"><li class="listitem"><span class="command"><strong>Observing Request Behavior</strong></span><p>
379 379
 
380 380
 Properties of the user's request behavior comprise the bulk of low-hanging
381 381
 fingerprinting targets. These include: User agent, Accept-* headers, pipeline
... ...
@@ -390,11 +390,11 @@ objects such as window.screen and window.navigator to extract information
390 390
 about the useragent. 
391 391
 
392 392
 Also, Javascript can be used to query the user's timezone via the
393
-<code class="function">Date()</code> object, <a class="ulink" href="https://www.khronos.org/registry/webgl/specs/1.0/#5.13">WebGL</a> can
393
+<code class="function">Date()</code> object, <a class="ulink" href="https://www.khronos.org/registry/webgl/specs/1.0/#5.13" target="_top">WebGL</a> can
394 394
 reveal information about the video card in use, and high precision timing
395
-information can be used to <a class="ulink" href="http://w2spconf.com/2011/papers/jspriv.pdf">fingerprint the CPU and
395
+information can be used to <a class="ulink" href="http://w2spconf.com/2011/papers/jspriv.pdf" target="_top">fingerprint the CPU and
396 396
 interpreter speed</a>. In the future, new JavaScript features such as
397
-<a class="ulink" href="http://w3c-test.org/webperf/specs/ResourceTiming/">Resource
397
+<a class="ulink" href="http://w3c-test.org/webperf/specs/ResourceTiming/" target="_top">Resource
398 398
 Timing</a> may leak an unknown amount of network timing related
399 399
 information.
400 400
 
... ...
@@ -408,7 +408,7 @@ fingerprintability. Additionally, plugins are capable of extracting font lists,
408 408
 interface addresses, and other machine information that is beyond what the
409 409
 browser would normally provide to content. In addition, plugins can be used to
410 410
 store unique identifiers that are more difficult to clear than standard
411
-cookies.  <a class="ulink" href="http://epic.org/privacy/cookies/flash.html">Flash-based
411
+cookies.  <a class="ulink" href="http://epic.org/privacy/cookies/flash.html" target="_top">Flash-based
412 412
 cookies</a> fall into this category, but there are likely numerous other
413 413
 examples. Beyond fingerprinting, plugins are also abysmal at obeying the proxy
414 414
 settings of the browser. 
... ...
@@ -416,7 +416,7 @@ settings of the browser.
416 416
 
417 417
      </p></li><li class="listitem"><span class="command"><strong>Inserting CSS</strong></span><p>
418 418
 
419
-<a class="ulink" href="https://developer.mozilla.org/En/CSS/Media_queries">CSS media
419
+<a class="ulink" href="https://developer.mozilla.org/En/CSS/Media_queries" target="_top">CSS media
420 420
 queries</a> can be inserted to gather information about the desktop size,
421 421
 widget size, display type, DPI, user agent type, and other information that
422 422
 was formerly available only to Javascript.
... ...
@@ -429,11 +429,11 @@ browser vulnerabilities, plugin vulnerabilities, or OS vulnerabilities to
429 429
 install malware and surveillance software. An adversary with physical access
430 430
 can perform similar actions. Regrettably, this last attack capability is
431 431
 outside of the browser's ability to defend against, but it is worth mentioning
432
-for completeness. In fact, <a class="ulink" href="http://tails.boum.org/contribute/design/">The Tails system</a> can
432
+for completeness. In fact, <a class="ulink" href="http://tails.boum.org/contribute/design/" target="_top">The Tails system</a> can
433 433
 provide some defense against this adversary, and it does include the Tor
434 434
 Browser.
435 435
 
436
-     </p></li></ol></div></div></div><div class="sect1" title="4. Implementation"><div class="titlepage"><div><div><h2 class="title"><a id="Implementation"/>4. Implementation</h2></div></div></div><p>
436
+     </p></li></ol></div></div></div><div class="sect1" title="4. Implementation"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Implementation"></a>4. Implementation</h2></div></div></div><p>
437 437
 
438 438
 The Implementation section is divided into subsections, each of which
439 439
 corresponds to a <a class="link" href="#DesignRequirements" title="2. Design Requirements and Philosophy">Design Requirement</a>.
... ...
@@ -446,15 +446,15 @@ In some cases, the implementation meets the design requirements in a non-ideal
446 446
 way (for example, by disabling features). In rare cases, there may be no
447 447
 implementation at all. Both of these cases are denoted by differentiating
448 448
 between the <span class="command"><strong>Design Goal</strong></span> and the <span class="command"><strong>Implementation
449
-Status</strong></span> for each property. Corresponding bugs in the <a class="ulink" href="https://trac.torproject.org/projects/tor/report">Tor bug tracker</a>
449
+Status</strong></span> for each property. Corresponding bugs in the <a class="ulink" href="https://trac.torproject.org/projects/tor/report" target="_top">Tor bug tracker</a>
450 450
 are typically linked for these cases.
451 451
 
452
-  </p><div class="sect2" title="4.1. Proxy Obedience"><div class="titlepage"><div><div><h3 class="title"><a id="proxy-obedience"/>4.1. Proxy Obedience</h3></div></div></div><p>
452
+  </p><div class="sect2" title="4.1. Proxy Obedience"><div class="titlepage"><div><div><h3 class="title"><a id="proxy-obedience"></a>4.1. Proxy Obedience</h3></div></div></div><p>
453 453
 
454 454
 Proxy obedience is assured through the following:
455
-   </p><div class="orderedlist"><ol class="orderedlist"><li class="listitem">Firefox proxy settings, patches, and build flags
455
+   </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">Firefox proxy settings, patches, and build flags
456 456
  <p>
457
-Our <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/HEAD:/build-scripts/config/pound_tor.js">Firefox
457
+Our <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/HEAD:/build-scripts/config/pound_tor.js" target="_top">Firefox
458 458
 preferences file</a> sets the Firefox proxy settings to use Tor directly as a
459 459
 SOCKS proxy. It sets <span class="command"><strong>network.proxy.socks_remote_dns</strong></span>,
460 460
 <span class="command"><strong>network.proxy.socks_version</strong></span>,
... ...
@@ -462,10 +462,10 @@ SOCKS proxy. It sets <span class="command"><strong>network.proxy.socks_remote_dn
462 462
 <span class="command"><strong>network.dns.disablePrefetch</strong></span>.
463 463
  </p><p>
464 464
 
465
-We also patch Firefox in order to <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch">prevent
465
+We also patch Firefox in order to <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch" target="_top">prevent
466 466
 a DNS leak due to a WebSocket rate-limiting check</a>. As stated in the
467 467
 patch, we believe the direct DNS resolution performed by this check is in
468
-violation of the W3C standard, but <a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=751465">this DNS proxy leak
468
+violation of the W3C standard, but <a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=751465" target="_top">this DNS proxy leak
469 469
 remains present in stock Firefox releases</a>.
470 470
 
471 471
  </p><p>
... ...
@@ -491,11 +491,11 @@ as smb urls and other custom protocol handlers are all blocked.
491 491
  </p><p>
492 492
 
493 493
 Numerous other third parties have also reviewed and tested the proxy settings
494
-and have provided test cases based on their work. See in particular <a class="ulink" href="http://decloak.net/">decloak.net</a>. 
494
+and have provided test cases based on their work. See in particular <a class="ulink" href="http://decloak.net/" target="_top">decloak.net</a>. 
495 495
 
496 496
  </p></li><li class="listitem">Disabling plugins
497 497
 
498
- <p>Plugins have the ability to make arbitrary OS system calls and  <a class="ulink" href="http://decloak.net/">bypass proxy settings</a>. This includes
498
+ <p>Plugins have the ability to make arbitrary OS system calls and  <a class="ulink" href="http://decloak.net/" target="_top">bypass proxy settings</a>. This includes
499 499
 the ability to make UDP sockets and send arbitrary data independent of the
500 500
 browser proxy settings.
501 501
  </p><p>
... ...
@@ -510,7 +510,7 @@ restricted from automatic load through Firefox's click-to-play preference
510 510
  </p><p>
511 511
 In addition, to reduce any unproxied activity by arbitrary plugins at load
512 512
 time, and to reduce the fingerprintability of the installed plugin list, we
513
-also patch the Firefox source code to <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch">prevent the load of any plugins except
513
+also patch the Firefox source code to <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch" target="_top">prevent the load of any plugins except
514 514
 for Flash and Gnash</a>.
515 515
 
516 516
  </p></li><li class="listitem">External App Blocking
... ...
@@ -518,7 +518,7 @@ for Flash and Gnash</a>.
518 518
 External apps, if launched automatically, can be induced to load files that
519 519
 perform network activity. In order to prevent this, Torbutton installs a
520 520
 component to 
521
-<a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/external-app-blocker.js">
521
+<a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/external-app-blocker.js" target="_top">
522 522
 provide the user with a popup</a> whenever the browser attempts to
523 523
 launch a helper app. 
524 524
 
... ...
@@ -526,30 +526,30 @@ Additionally, due to an issue with Ubuntu Unity, url-based drag and drop is
526 526
 filtered by this component. Unity was pre-fetching URLs without using the
527 527
 browser's proxy settings during a drag action, even if the drop was ultimately
528 528
 canceled by the user. A similar issue was discovered on Mac OS.
529
-  </p></li></ol></div></div><div class="sect2" title="4.2. State Separation"><div class="titlepage"><div><div><h3 class="title"><a id="state-separation"/>4.2. State Separation</h3></div></div></div><p>
529
+  </p></li></ol></div></div><div class="sect2" title="4.2. State Separation"><div class="titlepage"><div><div><h3 class="title"><a id="state-separation"></a>4.2. State Separation</h3></div></div></div><p>
530 530
 Tor Browser State is separated from existing browser state through use of a
531 531
 custom Firefox profile. Furthermore, plugins are disabled, which prevents
532 532
 Flash cookies from leaking from a pre-existing Flash directory.
533
-   </p></div><div class="sect2" title="4.3. Disk Avoidance"><div class="titlepage"><div><div><h3 class="title"><a id="disk-avoidance"/>4.3. Disk Avoidance</h3></div></div></div><div class="sect3" title="Design Goal:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5523344"/>Design Goal:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote">
533
+   </p></div><div class="sect2" title="4.3. Disk Avoidance"><div class="titlepage"><div><div><h3 class="title"><a id="disk-avoidance"></a>4.3. Disk Avoidance</h3></div></div></div><div class="sect3" title="Design Goal:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5528304"></a>Design Goal:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote">
534 534
 
535 535
 The User Agent MUST (at user option) prevent all disk records of browser activity.
536 536
 The user should be able to optionally enable URL history and other history
537 537
 features if they so desire. 
538 538
 
539
-    </blockquote></div></div><div class="sect3" title="Implementation Status:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5524704"/>Implementation Status:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote">
539
+    </blockquote></div></div><div class="sect3" title="Implementation Status:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5529664"></a>Implementation Status:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote">
540 540
 
541 541
 We achieve this goal through several mechanisms. First, we set the Firefox
542 542
 Private Browsing preference
543 543
 <span class="command"><strong>browser.privatebrowsing.autostart</strong></span>. In addition, four Firefox patches are needed to prevent disk writes, even if
544 544
 Private Browsing Mode is enabled. We need to
545 545
 
546
-<a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch">prevent
546
+<a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch" target="_top">prevent
547 547
 the permissions manager from recording HTTPS STS state</a>,
548
-<a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch">prevent
548
+<a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch" target="_top">prevent
549 549
 intermediate SSL certificates from being recorded</a>,
550
-<a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch">prevent
550
+<a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch" target="_top">prevent
551 551
 download history from being recorded</a>, and
552
-<a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch">prevent
552
+<a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch" target="_top">prevent
553 553
 the content preferences service from recording site zoom</a>.
554 554
 
555 555
 For more details on these patches, <a class="link" href="#firefox-patches" title="4.8. Description of Firefox Patches">see the
... ...
@@ -558,7 +558,7 @@ Firefox Patches section</a>.
558 558
     </blockquote></div><div class="blockquote"><blockquote class="blockquote">
559 559
 
560 560
 As an additional defense-in-depth measure, we set the following preferences:
561
-<span class="command"><strong/></span>,
561
+<span class="command"><strong></strong></span>,
562 562
 <span class="command"><strong>browser.cache.disk.enable</strong></span>,
563 563
 <span class="command"><strong>browser.cache.offline.enable</strong></span>,
564 564
 <span class="command"><strong>dom.indexedDB.enabled</strong></span>,
... ...
@@ -574,11 +574,11 @@ auditing work to ensure that yet.
574 574
 
575 575
     </blockquote></div><div class="blockquote"><blockquote class="blockquote">
576 576
 
577
-Torbutton also <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob/HEAD:/src/components/tbSessionStore.js">contains
577
+Torbutton also <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob/HEAD:/src/components/tbSessionStore.js" target="_top">contains
578 578
 code</a> to prevent the Firefox session store from writing to disk.
579 579
     </blockquote></div><div class="blockquote"><blockquote class="blockquote">
580 580
 
581
-For more details on disk leak bugs and enhancements, see the <a class="ulink" href="https://trac.torproject.org/projects/tor/query?keywords=~tbb-disk-leak&amp;status=!closed">tbb-disk-leak tag in our bugtracker</a></blockquote></div></div></div><div class="sect2" title="4.4. Application Data Isolation"><div class="titlepage"><div><div><h3 class="title"><a id="app-data-isolation"/>4.4. Application Data Isolation</h3></div></div></div><p>
581
+For more details on disk leak bugs and enhancements, see the <a class="ulink" href="https://trac.torproject.org/projects/tor/query?keywords=~tbb-disk-leak&amp;status=!closed" target="_top">tbb-disk-leak tag in our bugtracker</a></blockquote></div></div></div><div class="sect2" title="4.4. Application Data Isolation"><div class="titlepage"><div><div><h3 class="title"><a id="app-data-isolation"></a>4.4. Application Data Isolation</h3></div></div></div><p>
582 582
 
583 583
 Tor Browser Bundle MUST NOT cause any information to be written outside of the
584 584
 bundle directory. This is to ensure that the user is able to completely and
... ...
@@ -592,7 +592,7 @@ To ensure TBB directory isolation, we set
592 592
 <span class="command"><strong>browser.shell.checkDefaultBrowser</strong></span>, and
593 593
 <span class="command"><strong>browser.download.manager.addToRecentDocs</strong></span>. We also set the
594 594
 $HOME environment variable to be the TBB extraction directory.
595
-   </p></div><div class="sect2" title="4.5. Cross-Origin Identifier Unlinkability"><div class="titlepage"><div><div><h3 class="title"><a id="identifier-linkability"/>4.5. Cross-Origin Identifier Unlinkability</h3></div></div></div><p>
595
+   </p></div><div class="sect2" title="4.5. Cross-Origin Identifier Unlinkability"><div class="titlepage"><div><div><h3 class="title"><a id="identifier-linkability"></a>4.5. Cross-Origin Identifier Unlinkability</h3></div></div></div><p>
596 596
 
597 597
 The Tor Browser MUST prevent a user's activity on one site from being linked
598 598
 to their activity on another site. When this goal cannot yet be met with an
... ...
@@ -616,7 +616,7 @@ the url bar origin for which browser state exists, possibly with a
616 616
 context-menu option to drill down into specific types of state or permissions.
617 617
 An example of this simplification can be seen in Figure 1.
618 618
 
619
-   </p><div class="figure"><a id="idp5548704"/><p class="title"><b>Figure 1. Improving the Privacy UI</b></p><div class="figure-contents"><div class="mediaobject" style="text-align: center"><img src="NewCookieManager.png" style="text-align: middle" alt="Improving the Privacy UI"/></div><div class="caption"><p/>
619
+   </p><div class="figure"><a id="idp5553664"></a><p class="title"><b>Figure 1. Improving the Privacy UI</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="NewCookieManager.png" align="middle" alt="Improving the Privacy UI" /></div><div class="caption"><p></p>
620 620
 
621 621
 This example UI is a mock-up of how isolating identifiers to the URL bar
622 622
 origin can simplify the privacy UI for all data - not just cookies. Once
... ...
@@ -624,11 +624,11 @@ browser identifiers and site permissions operate on a url bar basis, the same
624 624
 privacy window can represent browsing history, DOM Storage, HTTP Auth, search
625 625
 form history, login values, and so on within a context menu for each site.
626 626
 
627
-</div></div></div><br class="figure-break"/><div class="orderedlist"><ol class="orderedlist"><li class="listitem">Cookies
627
+</div></div></div><br class="figure-break" /><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">Cookies
628 628
      <p><span class="command"><strong>Design Goal:</strong></span>
629 629
 
630 630
 All cookies MUST be double-keyed to the url bar origin and third-party
631
-origin. There exists a <a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=565965">Mozilla bug</a>
631
+origin. There exists a <a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=565965" target="_top">Mozilla bug</a>
632 632
 that contains a prototype patch, but it lacks UI, and does not apply to modern
633 633
 Firefoxes.
634 634
 
... ...
@@ -644,17 +644,17 @@ unlinkability trumps that desire.
644 644
      <p>
645 645
 
646 646
 Cache is isolated to the url bar origin by using a technique pioneered by
647
-Colin Jackson et al, via their work on <a class="ulink" href="http://www.safecache.com/">SafeCache</a>. The technique re-uses the
648
-<a class="ulink" href="https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsICachingChannel">nsICachingChannel.cacheKey</a>
647
+Colin Jackson et al, via their work on <a class="ulink" href="http://www.safecache.com/" target="_top">SafeCache</a>. The technique re-uses the
648
+<a class="ulink" href="https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsICachingChannel" target="_top">nsICachingChannel.cacheKey</a>
649 649
 attribute that Firefox uses internally to prevent improper caching and reuse
650 650
 of HTTP POST data.  
651 651
 
652 652
      </p><p>
653 653
 
654
-However, to <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3666">increase the
655
-security of the isolation</a> and to <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3754">solve conflicts
654
+However, to <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3666" target="_top">increase the
655
+security of the isolation</a> and to <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3754" target="_top">solve conflicts
656 656
 with OCSP relying the cacheKey property for reuse of POST requests</a>, we
657
-had to <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch">patch
657
+had to <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch" target="_top">patch
658 658
 Firefox to provide a cacheDomain cache attribute</a>. We use the fully
659 659
 qualified url bar domain as input to this field.
660 660
 
... ...
@@ -669,9 +669,9 @@ opposed to relying solely on the referer property.
669 669
 
670 670
      </p><p>
671 671
 
672
-Therefore, <a class="ulink" href="http://crypto.stanford.edu/sameorigin/safecachetest.html">the original
672
+Therefore, <a class="ulink" href="http://crypto.stanford.edu/sameorigin/safecachetest.html" target="_top">the original
673 673
 Stanford test cases</a> are expected to fail. Functionality can still be
674
-verified by navigating to <a class="ulink" href="about:cache">about:cache</a> and
674
+verified by navigating to <a class="ulink" href="about:cache" target="_top">about:cache</a> and
675 675
 viewing the key used for each cache entry. Each third party element should
676 676
 have an additional "domain=string" property prepended, which will list the
677 677
 FQDN that was used to source the third party element.
... ...
@@ -679,22 +679,22 @@ FQDN that was used to source the third party element.
679 679
      </p><p>
680 680
 
681 681
 Additionally, because the image cache is a separate entity from the content
682
-cache, we had to patch Firefox to also <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0024-Isolate-the-Image-Cache-per-url-bar-domain.patch">isolate
682
+cache, we had to patch Firefox to also <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0024-Isolate-the-Image-Cache-per-url-bar-domain.patch" target="_top">isolate
683 683
 this cache per url bar domain</a>.
684 684
 
685 685
      </p></li><li class="listitem">HTTP Auth
686 686
      <p>
687 687
 
688 688
 HTTP authentication tokens are removed for third party elements using the
689
-<a class="ulink" href="https://developer.mozilla.org/en/Setting_HTTP_request_headers#Observers">http-on-modify-request
690
-observer</a> to remove the Authorization headers to prevent <a class="ulink" href="http://jeremiahgrossman.blogspot.com/2007/04/tracking-users-without-cookies.html">silent
689
+<a class="ulink" href="https://developer.mozilla.org/en/Setting_HTTP_request_headers#Observers" target="_top">http-on-modify-request
690
+observer</a> to remove the Authorization headers to prevent <a class="ulink" href="http://jeremiahgrossman.blogspot.com/2007/04/tracking-users-without-cookies.html" target="_top">silent
691 691
 linkability between domains</a>. 
692 692
      </p></li><li class="listitem">DOM Storage
693 693
      <p>
694 694
 
695 695
 DOM storage for third party domains MUST be isolated to the url bar origin,
696 696
 to prevent linkability between sites. This functionality is provided through a
697
-<a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0026-Isolate-DOM-storage-to-first-party-URI.patch">patch
697
+<a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0026-Isolate-DOM-storage-to-first-party-URI.patch" target="_top">patch
698 698
 to Firefox</a>.
699 699
 
700 700
      </p></li><li class="listitem">Flash cookies
... ...
@@ -702,12 +702,12 @@ to Firefox</a>.
702 702
 
703 703
 Users should be able to click-to-play flash objects from trusted sites. To
704 704
 make this behavior unlinkable, we wish to include a settings file for all platforms that disables flash
705
-cookies using the <a class="ulink" href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html">Flash
705
+cookies using the <a class="ulink" href="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager03.html" target="_top">Flash
706 706
 settings manager</a>.
707 707
 
708 708
      </p><p><span class="command"><strong>Implementation Status:</strong></span>
709 709
 
710
-We are currently <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3974">having
710
+We are currently <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3974" target="_top">having
711 711
 difficulties</a> causing Flash player to use this settings
712 712
 file on Windows, so Flash remains difficult to enable.
713 713
 
... ...
@@ -723,10 +723,10 @@ origin MUST NOT be reused for that same third party in another url bar origin.
723 723
 We currently clear SSL Session IDs upon <a class="link" href="#new-identity" title="4.7. Long-Term Unlinkability via &quot;New Identity&quot; button">New
724 724
 Identity</a>, we disable TLS Session Tickets via the Firefox Pref
725 725
 <span class="command"><strong>security.enable_tls_session_tickets</strong></span>. We disable SSL Session
726
-IDs via a <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch">patch
726
+IDs via a <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch" target="_top">patch
727 727
 to Firefox</a>. To compensate for the increased round trip latency from disabling
728 728
 these performance optimizations, we also enable
729
-<a class="ulink" href="https://tools.ietf.org/html/draft-bmoeller-tls-falsestart-00">TLS
729
+<a class="ulink" href="https://tools.ietf.org/html/draft-bmoeller-tls-falsestart-00" target="_top">TLS
730 730
 False Start</a> via the Firefox Pref 
731 731
 <span class="command"><strong>security.ssl.enable_false_start</strong></span>.
732 732
     </p><p>
... ...
@@ -761,16 +761,16 @@ federated login systems) SHOULD still allow identifiers to persist.
761 761
     </p><p><span class="command"><strong>Implementation status:</strong></span>
762 762
 
763 763
 There are numerous ways for the user to be redirected, and the Firefox API
764
-support to detect each of them is poor. We have a <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3600">trac bug
764
+support to detect each of them is poor. We have a <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3600" target="_top">trac bug
765 765
 open</a> to implement what we can.
766 766
 
767 767
     </p></li><li class="listitem">window.name
768 768
      <p>
769 769
 
770
-<a class="ulink" href="https://developer.mozilla.org/En/DOM/Window.name">window.name</a> is
770
+<a class="ulink" href="https://developer.mozilla.org/En/DOM/Window.name" target="_top">window.name</a> is
771 771
 a magical DOM property that for some reason is allowed to retain a persistent value
772 772
 for the lifespan of a browser tab. It is possible to utilize this property for
773
-<a class="ulink" href="http://www.thomasfrank.se/sessionvars.html">identifier
773
+<a class="ulink" href="http://www.thomasfrank.se/sessionvars.html" target="_top">identifier
774 774
 storage</a>.
775 775
 
776 776
      </p><p>
... ...
@@ -788,7 +788,7 @@ https/http schemes, the property is cleared.
788 788
 We disable the password saving functionality in the browser as part of our
789 789
 <a class="link" href="#disk-avoidance" title="4.3. Disk Avoidance">Disk Avoidance</a> requirement. However,
790 790
 since users may decide to re-enable disk history records and password saving,
791
-we also set the <a class="ulink" href="http://kb.mozillazine.org/Signon.autofillForms">signon.autofillForms</a>
791
+we also set the <a class="ulink" href="http://kb.mozillazine.org/Signon.autofillForms" target="_top">signon.autofillForms</a>
792 792
 preference to false to prevent saved values from immediately populating
793 793
 fields upon page load. Since Javascript can read these values as soon as they
794 794
 appear, setting this preference prevents automatic linkability from stored passwords.
... ...
@@ -796,7 +796,7 @@ appear, setting this preference prevents automatic linkability from stored passw
796 796
      </p></li><li class="listitem">HSTS supercookies
797 797
       <p>
798 798
 
799
-An extreme (but not impossible) attack to mount is the creation of <a class="ulink" href="http://www.leviathansecurity.com/blog/archives/12-The-Double-Edged-Sword-of-HSTS-Persistence-and-Privacy.html">HSTS
799
+An extreme (but not impossible) attack to mount is the creation of <a class="ulink" href="http://www.leviathansecurity.com/blog/archives/12-The-Double-Edged-Sword-of-HSTS-Persistence-and-Privacy.html" target="_top">HSTS
800 800
 supercookies</a>. Since HSTS effectively stores one bit of information per domain
801 801
 name, an adversary in possession of numerous domains can use them to construct
802 802
 cookies based on stored HSTS state.
... ...
@@ -823,17 +823,17 @@ observers from linking concurrent browsing activity.
823 823
      </p><p><span class="command"><strong>Implementation Status:</strong></span>
824 824
 
825 825
 The Tor feature that supports this ability only exists in the 0.2.3.x-alpha
826
-series. <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3455">Ticket
826
+series. <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3455" target="_top">Ticket
827 827
 #3455</a> is the Torbutton ticket to make use of the new Tor
828 828
 functionality.
829 829
 
830 830
      </p></li></ol></div><p>
831
-For more details on identifier linkability bugs and enhancements, see the <a class="ulink" href="https://trac.torproject.org/projects/tor/query?keywords=~tbb-linkability&amp;status=!closed">tbb-linkability tag in our bugtracker</a>
832
-  </p></div><div class="sect2" title="4.6. Cross-Origin Fingerprinting Unlinkability"><div class="titlepage"><div><div><h3 class="title"><a id="fingerprinting-linkability"/>4.6. Cross-Origin Fingerprinting Unlinkability</h3></div></div></div><p>
831
+For more details on identifier linkability bugs and enhancements, see the <a class="ulink" href="https://trac.torproject.org/projects/tor/query?keywords=~tbb-linkability&amp;status=!closed" target="_top">tbb-linkability tag in our bugtracker</a>
832
+  </p></div><div class="sect2" title="4.6. Cross-Origin Fingerprinting Unlinkability"><div class="titlepage"><div><div><h3 class="title"><a id="fingerprinting-linkability"></a>4.6. Cross-Origin Fingerprinting Unlinkability</h3></div></div></div><p>
833 833
 
834 834
 In order to properly address the fingerprinting adversary on a technical
835 835
 level, we need a metric to measure linkability of the various browser
836
-properties beyond any stored origin-related state. <a class="ulink" href="https://panopticlick.eff.org/about.php">The Panopticlick Project</a>
836
+properties beyond any stored origin-related state. <a class="ulink" href="https://panopticlick.eff.org/about.php" target="_top">The Panopticlick Project</a>
837 837
 by the EFF provides us with a prototype of such a metric. The researchers
838 838
 conducted a survey of volunteers who were asked to visit an experiment page
839 839
 that harvested many of the above components. They then computed the Shannon
... ...
@@ -858,11 +858,11 @@ on browser data spanning a number of widely deployed browsers over a number of
858 858
 years, any fingerprinting defenses attempted by browsers today are very likely
859 859
 to cause Panopticlick to report an <span class="emphasis"><em>increase</em></span> in
860 860
 fingerprintability and entropy, because those defenses will stand out in sharp
861
-contrast to historical data. We have been <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/6119">working to convince
861
+contrast to historical data. We have been <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/6119" target="_top">working to convince
862 862
 the EFF</a> that it is worthwhile to release the source code to
863 863
 Panopticlick to allow us to run our own version for this reason.
864 864
 
865
-   </p><div class="sect3" title="Fingerprinting defenses in the Tor Browser"><div class="titlepage"><div><div><h4 class="title"><a id="fingerprinting-defenses"/>Fingerprinting defenses in the Tor Browser</h4></div></div></div><div class="orderedlist"><ol class="orderedlist"><li class="listitem">Plugins
865
+   </p><div class="sect3" title="Fingerprinting defenses in the Tor Browser"><div class="titlepage"><div><div><h4 class="title"><a id="fingerprinting-defenses"></a>Fingerprinting defenses in the Tor Browser</h4></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">Plugins
866 866
      <p>
867 867
 
868 868
 Plugins add to fingerprinting risk via two main vectors: their mere presence in
... ...
@@ -874,7 +874,7 @@ All plugins that have not been specifically audited or sandboxed MUST be
874 874
 disabled. To reduce linkability potential, even sandboxed plugins should not
875 875
 be allowed to load objects until the user has clicked through a click-to-play
876 876
 barrier.  Additionally, version information should be reduced or obfuscated
877
-until the plugin object is loaded. For flash, we wish to <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3974">provide a
877
+until the plugin object is loaded. For flash, we wish to <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3974" target="_top">provide a
878 878
 settings.sol file</a> to disable Flash cookies, and to restrict P2P
879 879
 features that are likely to bypass proxy settings.
880 880
 
... ...
@@ -884,7 +884,7 @@ Currently, we entirely disable all plugins in Tor Browser. However, as a
884 884
 compromise due to the popularity of Flash, we allow users to re-enable Flash,
885 885
 and flash objects are blocked behind a click-to-play barrier that is available
886 886
 only after the user has specifically enabled plugins. Flash is the only plugin
887
-available, the rest are <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch">entirely
887
+available, the rest are <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch" target="_top">entirely
888 888
 blocked from loading by a Firefox patch</a>. We also set the Firefox
889 889
 preference <span class="command"><strong>plugin.expose_full_path</strong></span> to false, to avoid
890 890
 leaking plugin installation information.
... ...
@@ -892,11 +892,11 @@ leaking plugin installation information.
892 892
      </p></li><li class="listitem">HTML5 Canvas Image Extraction
893 893
      <p>
894 894
 
895
-The <a class="ulink" href="https://developer.mozilla.org/en-US/docs/HTML/Canvas">HTML5
895
+The <a class="ulink" href="https://developer.mozilla.org/en-US/docs/HTML/Canvas" target="_top">HTML5
896 896
 Canvas</a> is a feature that has been added to major browsers after the
897 897
 EFF developed their Panopticlick study. After plugins and plugin-provided
898 898
 information, we believe that the HTML5 Canvas is the single largest
899
-fingerprinting threat browsers face today. <a class="ulink" href="http://www.w2spconf.com/2012/papers/w2sp12-final4.pdf">Initial
899
+fingerprinting threat browsers face today. <a class="ulink" href="http://www.w2spconf.com/2012/papers/w2sp12-final4.pdf" target="_top">Initial
900 900
 studies</a> show that the Canvas can provide an easy-access fingerprinting
901 901
 target: The adversary simply renders WebGL, font, and named color data to a
902 902
 Canvas element, extracts the image buffer, and computes a hash of that image
... ...
@@ -907,7 +907,7 @@ image can be used almost identically to a tracking cookie by the web server.
907 907
 
908 908
      </p><p>
909 909
 
910
-To reduce the threat from this vector, we have patched Firefox to <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0020-Add-canvas-image-extraction-prompt.patch">prompt
910
+To reduce the threat from this vector, we have patched Firefox to <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0020-Add-canvas-image-extraction-prompt.patch" target="_top">prompt
911 911
 before returning valid image data</a> to the Canvas APIs. If the user
912 912
 hasn't previously allowed the site in the URL bar to access Canvas image data,
913 913
 pure white image data is returned to the Javascript APIs.
... ...
@@ -921,7 +921,7 @@ fingerprinting.
921 921
 
922 922
      </p><p>
923 923
 
924
-Because of the large amount of potential fingerprinting vectors and the <a class="ulink" href="http://www.contextis.com/resources/blog/webgl/">previously unexposed
924
+Because of the large amount of potential fingerprinting vectors and the <a class="ulink" href="http://www.contextis.com/resources/blog/webgl/" target="_top">previously unexposed
925 925
 vulnerability surface</a>, we deploy a similar strategy against WebGL as
926 926
 for plugins. First, WebGL Canvases have click-to-play placeholders (provided
927 927
 by NoScript), and do not run until authorized by the user. Second, we
... ...
@@ -947,7 +947,7 @@ still be available.
947 947
 The sure-fire way to address font linkability is to ship the browser with a
948 948
 font for every language, typeface, and style in use in the world, and to only
949 949
 use those fonts at the exclusion of system fonts.  However, this set may be
950
-impractically large. It is possible that a smaller <a class="ulink" href="https://secure.wikimedia.org/wikipedia/en/wiki/Unicode_typeface#List_of_Unicode_fonts">common
950
+impractically large. It is possible that a smaller <a class="ulink" href="https://secure.wikimedia.org/wikipedia/en/wiki/Unicode_typeface#List_of_Unicode_fonts" target="_top">common
951 951
 subset</a> may be found that provides total coverage. However, we believe
952 952
 that with strong url bar origin identifier isolation, a simpler approach can reduce the
953 953
 number of bits available to the adversary while avoiding the rendering and
... ...
@@ -957,7 +957,7 @@ language issues of supporting a global font set.
957 957
 
958 958
 We disable plugins, which prevents font enumeration. Additionally, we limit
959 959
 both the number of font queries from CSS, as well as the total number of 
960
-fonts that can be used in a document <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch">with
960
+fonts that can be used in a document <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch" target="_top">with
961 961
 a Firefox patch</a>. We create two prefs,
962 962
 <span class="command"><strong>browser.display.max_font_attempts</strong></span> and
963 963
 <span class="command"><strong>browser.display.max_font_count</strong></span> for this purpose. Once these
... ...
@@ -967,7 +967,7 @@ still working to determine optimal values for these prefs.
967 967
 
968 968
      </p><p>
969 969
 
970
-To improve rendering, we exempt remote <a class="ulink" href="https://developer.mozilla.org/en-US/docs/CSS/@font-face">@font-face
970
+To improve rendering, we exempt remote <a class="ulink" href="https://developer.mozilla.org/en-US/docs/CSS/@font-face" target="_top">@font-face
971 971
 fonts</a> from these counts, and if a font-family CSS rule lists a remote
972 972
 font (in any order), we use that font instead of any of the named local fonts.
973 973
 
... ...
@@ -992,13 +992,13 @@ desktop resolution.
992 992
 
993 993
      </p><p><span class="command"><strong>Implementation Status:</strong></span>
994 994
 
995
-We have implemented the above strategy using a window observer to <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob/HEAD:/src/chrome/content/torbutton.js#l2004">resize
995
+We have implemented the above strategy using a window observer to <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob/HEAD:/src/chrome/content/torbutton.js#l2004" target="_top">resize
996 996
 new windows based on desktop resolution</a>. Additionally, we patch
997
-Firefox to use the client content window size <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0022-Do-not-expose-physical-screen-info.-via-window-and-w.patch">for
998
-window.screen</a> and <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch">for
999
-CSS Media Queries</a>. Similarly, we <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0021-Return-client-window-coordinates-for-mouse-event-scr.patch">patch
997
+Firefox to use the client content window size <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0022-Do-not-expose-physical-screen-info.-via-window-and-w.patch" target="_top">for
998
+window.screen</a> and <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch" target="_top">for
999
+CSS Media Queries</a>. Similarly, we <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0021-Return-client-window-coordinates-for-mouse-event-scr.patch" target="_top">patch
1000 1000
 DOM events to return content window relative points</a>. We also patch
1001
-Firefox to <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0023-Do-not-expose-system-colors-to-CSS-or-canvas.patch">report
1001
+Firefox to <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0023-Do-not-expose-system-colors-to-CSS-or-canvas.patch" target="_top">report
1002 1002
 a fixed set of system colors to content window CSS</a>.
1003 1003
 
1004 1004
      </p></li><li class="listitem">User Agent and HTTP Headers
... ...
@@ -1014,8 +1014,8 @@ these headers should remain identical across the population even when updated.
1014 1014
 Firefox provides several options for controlling the browser user agent string
1015 1015
 which we leverage. We also set similar prefs for controlling the
1016 1016
 Accept-Language and Accept-Charset headers, which we spoof to English by default. Additionally, we
1017
-<a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0001-Block-Components.interfaces-from-content.patch">remove
1018
-content script access</a> to Components.interfaces, which <a class="ulink" href="http://pseudo-flaw.net/tor/torbutton/fingerprint-firefox.html">can be
1017
+<a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0001-Block-Components.interfaces-from-content.patch" target="_top">remove
1018
+content script access</a> to Components.interfaces, which <a class="ulink" href="http://pseudo-flaw.net/tor/torbutton/fingerprint-firefox.html" target="_top">can be
1019 1019
 used</a> to fingerprint OS, platform, and Firefox minor version.  </p></li><li class="listitem">Timezone and clock offset
1020 1020
      <p><span class="command"><strong>Design Goal:</strong></span>
1021 1021
 
... ...
@@ -1030,26 +1030,26 @@ values used in Tor Browser to something reasonably accurate.
1030 1030
      </p><p><span class="command"><strong>Implementation Status:</strong></span>
1031 1031
 
1032 1032
 We set the timezone using the TZ environment variable, which is supported on
1033
-all platforms. Additionally, we plan to <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3652">obtain a clock
1033
+all platforms. Additionally, we plan to <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3652" target="_top">obtain a clock
1034 1034
 offset from Tor</a>, but this won't be available until Tor 0.2.3.x is in
1035 1035
 use.
1036 1036
 
1037 1037
      </p></li><li class="listitem">Javascript performance fingerprinting
1038 1038
      <p>
1039 1039
 
1040
-<a class="ulink" href="http://w2spconf.com/2011/papers/jspriv.pdf">Javascript performance
1040
+<a class="ulink" href="http://w2spconf.com/2011/papers/jspriv.pdf" target="_top">Javascript performance
1041 1041
 fingerprinting</a> is the act of profiling the performance
1042 1042
 of various Javascript functions for the purpose of fingerprinting the
1043 1043
 Javascript engine and the CPU.
1044 1044
 
1045 1045
      </p><p><span class="command"><strong>Design Goal:</strong></span>
1046 1046
 
1047
-We have <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3059">several potential
1047
+We have <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3059" target="_top">several potential
1048 1048
 mitigation approaches</a> to reduce the accuracy of performance
1049 1049
 fingerprinting without risking too much damage to functionality. Our current
1050 1050
 favorite is to reduce the resolution of the Event.timeStamp and the Javascript
1051 1051
 Date() object, while also introducing jitter. Our goal is to increase the
1052
-amount of time it takes to mount a successful attack. <a class="ulink" href="http://w2spconf.com/2011/papers/jspriv.pdf">Mowery et al</a> found that
1052
+amount of time it takes to mount a successful attack. <a class="ulink" href="http://w2spconf.com/2011/papers/jspriv.pdf" target="_top">Mowery et al</a> found that
1053 1053
 even with the default precision in most browsers, they required up to 120
1054 1054
 seconds of amortization and repeated trials to get stable results from their
1055 1055
 feature set. We intend to work with the research community to establish the
... ...
@@ -1059,7 +1059,7 @@ optimum trade-off between quantization+jitter and amortization time.
1059 1059
      </p><p><span class="command"><strong>Implementation Status:</strong></span>
1060 1060
 
1061 1061
 Currently, the only mitigation against performance fingerprinting is to
1062
-disable <a class="ulink" href="http://www.w3.org/TR/navigation-timing/">Navigation
1062
+disable <a class="ulink" href="http://www.w3.org/TR/navigation-timing/" target="_top">Navigation
1063 1063
 Timing</a> through the Firefox preference
1064 1064
 <span class="command"><strong>dom.enable_performance</strong></span>.
1065 1065
 
... ...
@@ -1067,8 +1067,8 @@ Timing</a> through the Firefox preference
1067 1067
      <p>
1068 1068
 
1069 1069
 At least two HTML5 features have different implementation status across the
1070
-major OS vendors: the <a class="ulink" href="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.battery">Battery
1071
-API</a> and the <a class="ulink" href="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.connection">Network
1070
+major OS vendors: the <a class="ulink" href="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.battery" target="_top">Battery
1071
+API</a> and the <a class="ulink" href="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.connection" target="_top">Network
1072 1072
 Connection API</a>. We disable these APIs
1073 1073
 through the Firefox preferences <span class="command"><strong>dom.battery.enabled</strong></span> and
1074 1074
 <span class="command"><strong>dom.network.enabled</strong></span>. 
... ...
@@ -1087,23 +1087,23 @@ fingerprinting: timestamp quantization and jitter.
1087 1087
      </p><p><span class="command"><strong>Implementation Status:</strong></span>
1088 1088
 We have no implementation as of yet.
1089 1089
      </p></li></ol></div></div><p>
1090
-For more details on identifier linkability bugs and enhancements, see the <a class="ulink" href="https://trac.torproject.org/projects/tor/query?keywords=~tbb-fingerprinting&amp;status=!closed">tbb-fingerprinting tag in our bugtracker</a>
1091
-  </p></div><div class="sect2" title="4.7. Long-Term Unlinkability via &quot;New Identity&quot; button"><div class="titlepage"><div><div><h3 class="title"><a id="new-identity"/>4.7. Long-Term Unlinkability via "New Identity" button</h3></div></div></div><p>
1090
+For more details on identifier linkability bugs and enhancements, see the <a class="ulink" href="https://trac.torproject.org/projects/tor/query?keywords=~tbb-fingerprinting&amp;status=!closed" target="_top">tbb-fingerprinting tag in our bugtracker</a>
1091
+  </p></div><div class="sect2" title="4.7. Long-Term Unlinkability via &quot;New Identity&quot; button"><div class="titlepage"><div><div><h3 class="title"><a id="new-identity"></a>4.7. Long-Term Unlinkability via "New Identity" button</h3></div></div></div><p>
1092 1092
 
1093 1093
 In order to avoid long-term linkability, we provide a "New Identity" context
1094 1094
 menu option in Torbutton. This context menu option is active if Torbutton can
1095 1095
 read the environment variables $TOR_CONTROL_PASSWD and $TOR_CONTROL_PORT.
1096 1096
 
1097
-   </p><div class="sect3" title="Design Goal:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5665856"/>Design Goal:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote">
1097
+   </p><div class="sect3" title="Design Goal:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5670816"></a>Design Goal:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote">
1098 1098
 
1099 1099
 All linkable identifiers and browser state MUST be cleared by this feature.
1100 1100
 
1101
-    </blockquote></div></div><div class="sect3" title="Implementation Status:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5667104"/>Implementation Status:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"><p>
1101
+    </blockquote></div></div><div class="sect3" title="Implementation Status:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5672064"></a>Implementation Status:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"><p>
1102 1102
 
1103 1103
 First, Torbutton disables Javascript in all open tabs and windows by using
1104
-both the <a class="ulink" href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIDocShell#Attributes">browser.docShell.allowJavascript</a>
1105
-attribute as well as <a class="ulink" href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIDOMWindowUtils#suppressEventHandling%28%29">nsIDOMWindowUtil.suppressEventHandling()</a>.
1106
-We then stop all page activity for each tab using <a class="ulink" href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIWebNavigation#stop%28%29">browser.webNavigation.stop(nsIWebNavigation.STOP_ALL)</a>.
1104
+both the <a class="ulink" href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIDocShell#Attributes" target="_top">browser.docShell.allowJavascript</a>
1105
+attribute as well as <a class="ulink" href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIDOMWindowUtils#suppressEventHandling%28%29" target="_top">nsIDOMWindowUtil.suppressEventHandling()</a>.
1106
+We then stop all page activity for each tab using <a class="ulink" href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIWebNavigation#stop%28%29" target="_top">browser.webNavigation.stop(nsIWebNavigation.STOP_ALL)</a>.
1107 1107
 We then clear the site-specific Zoom by temporarily disabling the preference
1108 1108
 <span class="command"><strong>browser.zoom.siteSpecific</strong></span>, and clear the GeoIP wiki token
1109 1109
 URL and the last opened URL prefs (if they exist). Each tab is then closed.
... ...
@@ -1127,29 +1127,29 @@ closed.
1127 1127
      </p></blockquote></div><div class="blockquote"><blockquote class="blockquote">
1128 1128
 If the user chose to "protect" any cookies by using the Torbutton Cookie
1129 1129
 Protections UI, those cookies are not cleared as part of the above.
1130
-    </blockquote></div></div></div><div class="sect2" title="4.8. Description of Firefox Patches"><div class="titlepage"><div><div><h3 class="title"><a id="firefox-patches"/>4.8. Description of Firefox Patches</h3></div></div></div><p>
1130
+    </blockquote></div></div></div><div class="sect2" title="4.8. Description of Firefox Patches"><div class="titlepage"><div><div><h3 class="title"><a id="firefox-patches"></a>4.8. Description of Firefox Patches</h3></div></div></div><p>
1131 1131
 
1132
-The set of patches we have against Firefox can be found in the <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/tree/maint-2.4:/src/current-patches/firefox">current-patches directory of the torbrowser git repository</a>. They are:
1132
+The set of patches we have against Firefox can be found in the <a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/tree/maint-2.4:/src/current-patches/firefox" target="_top">current-patches directory of the torbrowser git repository</a>. They are:
1133 1133
 
1134
-   </p><div class="orderedlist"><ol class="orderedlist"><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0001-Block-Components.interfaces-from-content.patch">Block
1134
+   </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0001-Block-Components.interfaces-from-content.patch" target="_top">Block
1135 1135
 Components.interfaces</a><p>
1136 1136
 
1137 1137
 In order to reduce fingerprinting, we block access to this interface from
1138 1138
 content script. Components.interfaces can be used for fingerprinting the
1139 1139
 platform, OS, and Firebox version, but not much else.
1140 1140
 
1141
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch">Make
1141
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch" target="_top">Make
1142 1142
 Permissions Manager memory only</a><p>
1143 1143
 
1144 1144
 This patch exposes a pref 'permissions.memory_only' that properly isolates the
1145 1145
 permissions manager to memory, which is responsible for all user specified
1146
-site permissions, as well as stored <a class="ulink" href="https://secure.wikimedia.org/wikipedia/en/wiki/HTTP_Strict_Transport_Security">HSTS</a>
1146
+site permissions, as well as stored <a class="ulink" href="https://secure.wikimedia.org/wikipedia/en/wiki/HTTP_Strict_Transport_Security" target="_top">HSTS</a>
1147 1147
 policy from visited sites.
1148 1148
 
1149 1149
 The pref does successfully clear the permissions manager memory if toggled. It
1150 1150
 does not need to be set in prefs.js, and can be handled by Torbutton.
1151 1151
 
1152
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch">Make
1152
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch" target="_top">Make
1153 1153
 Intermediate Cert Store memory-only</a><p>
1154 1154
 
1155 1155
 The intermediate certificate store records the intermediate SSL certificates
... ...
@@ -1164,28 +1164,28 @@ As an additional design goal, we would like to later alter this patch to allow t
1164 1164
 information to be cleared from memory. The implementation does not currently
1165 1165
 allow this.
1166 1166
 
1167
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch">Add
1167
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch" target="_top">Add
1168 1168
 a string-based cacheKey property for domain isolation</a><p>
1169 1169
 
1170
-To <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3666">increase the
1171
-security of cache isolation</a> and to <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3754">solve strange and
1170
+To <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3666" target="_top">increase the
1171
+security of cache isolation</a> and to <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3754" target="_top">solve strange and
1172 1172
 unknown conflicts with OCSP</a>, we had to patch
1173 1173
 Firefox to provide a cacheDomain cache attribute. We use the url bar
1174 1174
 FQDN as input to this field.
1175 1175
 
1176
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch">Block
1176
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch" target="_top">Block
1177 1177
 all plugins except flash</a><p>
1178
-We cannot use the <a class="ulink" href="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/@mozilla.org/extensions/blocklist%3B1">
1178
+We cannot use the <a class="ulink" href="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/@mozilla.org/extensions/blocklist%3B1" target="_top">
1179 1179
 @mozilla.org/extensions/blocklist;1</a> service, because we
1180 1180
 actually want to stop plugins from ever entering the browser's process space
1181 1181
 and/or executing code (for example, AV plugins that collect statistics/analyze
1182 1182
 URLs, magical toolbars that phone home or "help" the user, Skype buttons that
1183 1183
 ruin our day, and censorship filters). Hence we rolled our own.
1184
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch">Make content-prefs service memory only</a><p>
1184
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch" target="_top">Make content-prefs service memory only</a><p>
1185 1185
 This patch prevents random URLs from being inserted into content-prefs.sqlite in
1186 1186
 the profile directory as content prefs change (includes site-zoom and perhaps
1187 1187
 other site prefs?).
1188
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch">Make Tor Browser exit when not launched from Vidalia</a><p>
1188
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch" target="_top">Make Tor Browser exit when not launched from Vidalia</a><p>
1189 1189
 
1190 1190
 It turns out that on Windows 7 and later systems, the Taskbar attempts to
1191 1191
 automatically learn the most frequent apps used by the user, and it recognizes
... ...
@@ -1195,118 +1195,118 @@ Browser will automatically find their default Firefox profile, and properly
1195 1195
 connect directly without using Tor. This patch is a simple hack to cause Tor
1196 1196
 Browser to immediately exit in this case.
1197 1197
 
1198
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch">Disable SSL Session ID tracking</a><p>
1198
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch" target="_top">Disable SSL Session ID tracking</a><p>
1199 1199
 
1200 1200
 This patch is a simple 1-line hack to prevent SSL connections from caching
1201 1201
 (and then later transmitting) their Session IDs. There was no preference to
1202 1202
 govern this behavior, so we had to hack it by altering the SSL new connection
1203 1203
 defaults.
1204 1204
 
1205
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch">Provide an observer event to close persistent connections</a><p>
1205
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch" target="_top">Provide an observer event to close persistent connections</a><p>
1206 1206
 
1207 1207
 This patch creates an observer event in the HTTP connection manager to close
1208 1208
 all keep-alive connections that still happen to be open. This event is emitted
1209 1209
 by the <a class="link" href="#new-identity" title="4.7. Long-Term Unlinkability via &quot;New Identity&quot; button">New Identity</a> button.
1210 1210
 
1211
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch">Limit Device and System Specific Media Queries</a><p>
1211
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch" target="_top">Limit Device and System Specific Media Queries</a><p>
1212 1212
 
1213
-<a class="ulink" href="https://developer.mozilla.org/en-US/docs/CSS/Media_queries">CSS
1213
+<a class="ulink" href="https://developer.mozilla.org/en-US/docs/CSS/Media_queries" target="_top">CSS
1214 1214
 Media Queries</a> have a fingerprinting capability approaching that of
1215 1215
 Javascript. This patch causes such Media Queries to evaluate as if the device
1216 1216
 resolution was equal to the content window resolution.
1217 1217
 
1218
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch">Limit the number of fonts per document</a><p>
1218
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch" target="_top">Limit the number of fonts per document</a><p>
1219 1219
 
1220
-Font availability can be <a class="ulink" href="http://flippingtypical.com/">queried by
1220
+Font availability can be <a class="ulink" href="http://flippingtypical.com/" target="_top">queried by
1221 1221
 CSS and Javascript</a> and is a fingerprinting vector. This patch limits
1222 1222
 the number of times CSS and Javascript can cause font-family rules to
1223 1223
 evaluate. Remote @font-face fonts are exempt from the limits imposed by this
1224 1224
 patch, and remote fonts are given priority over local fonts whenever both
1225 1225
 appear in the same font-family rule.
1226 1226
 
1227
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch">Rebrand Firefox to Tor Browser</a><p>
1227
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch" target="_top">Rebrand Firefox to Tor Browser</a><p>
1228 1228
 
1229 1229
 This patch updates our branding in compliance with Mozilla's trademark policy.
1230 1230
 
1231
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch">Make Download Manager Memory Only</a><p>
1231
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch" target="_top">Make Download Manager Memory Only</a><p>
1232 1232
 
1233 1233
 This patch prevents disk leaks from the download manager. The original
1234 1234
 behavior is to write the download history to disk and then delete it, even if
1235 1235
 you disable download history from your Firefox preferences.
1236 1236
 
1237
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch">Add DDG and StartPage to Omnibox</a><p>
1237
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch" target="_top">Add DDG and StartPage to Omnibox</a><p>
1238 1238
 
1239 1239
 This patch adds DuckDuckGo and StartPage to the Search Box, and sets our
1240 1240
 default search engine to StartPage. We deployed this patch due to excessive
1241 1241
 Captchas and complete 403 bans from Google.
1242 1242
 
1243
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch">Make nsICacheService.EvictEntries() Synchronous</a><p>
1243
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch" target="_top">Make nsICacheService.EvictEntries() Synchronous</a><p>
1244 1244
 
1245 1245
 This patch eliminates a race condition with "New Identity". Without it,
1246 1246
 cache-based Evercookies survive for up to a minute after clearing the cache
1247 1247
 on some platforms.
1248 1248
 
1249
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch">Prevent WebSockets DNS Leak</a><p>
1249
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch" target="_top">Prevent WebSockets DNS Leak</a><p>
1250 1250
 
1251 1251
 This patch prevents a DNS leak when using WebSockets. It also prevents other
1252 1252
 similar types of DNS leaks.
1253 1253
 
1254
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch">Randomize HTTP pipeline order and depth</a><p>
1254
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch" target="_top">Randomize HTTP pipeline order and depth</a><p>
1255 1255
 As an 
1256
-<a class="ulink" href="https://blog.torproject.org/blog/experimental-defense-website-traffic-fingerprinting">experimental
1256
+<a class="ulink" href="https://blog.torproject.org/blog/experimental-defense-website-traffic-fingerprinting" target="_top">experimental
1257 1257
 defense against Website Traffic Fingerprinting</a>, we patch the standard
1258 1258
 HTTP pipelining code to randomize the number of requests in a
1259 1259
 pipeline, as well as their order.
1260
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0018-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch">Adapt Steve Michaud's Mac crashfix patch</a><p>
1260
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0018-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch" target="_top">Adapt Steve Michaud's Mac crashfix patch</a><p>
1261 1261
 
1262 1262
 This patch allows us to block Drag and Drop without causing crashes on Mac OS.
1263 1263
 We need to block Drag and Drop because Mac OS and Ubuntu both immediately load
1264 1264
 any URLs they find in your drag buffer before you even drop them (without
1265 1265
 using your browser's proxy settings, of course).
1266 1266
 
1267
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0019-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch">Add mozIThirdPartyUtil.getFirstPartyURI() API</a><p>
1267
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0019-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch" target="_top">Add mozIThirdPartyUtil.getFirstPartyURI() API</a><p>
1268 1268
 
1269 1269
 This patch provides an API that allows us to more easily isolate identifiers
1270 1270
 to the URL bar domain.
1271 1271
 
1272
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0020-Add-canvas-image-extraction-prompt.patch">Add canvas image extraction prompt</a><p>
1272
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0020-Add-canvas-image-extraction-prompt.patch" target="_top">Add canvas image extraction prompt</a><p>
1273 1273
 
1274 1274
 This patch prompts the user before returning canvas image data. Canvas image
1275 1275
 data can be used to create an extremely stable, high-entropy fingerprint based
1276 1276
 on the unique rendering behavior of video cards, OpenGL behavior,
1277 1277
 system fonts, and supporting library versions.
1278 1278
 
1279
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0021-Return-client-window-coordinates-for-mouse-event-scr.patch">Return client window coordinates for mouse events</a><p>
1279
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0021-Return-client-window-coordinates-for-mouse-event-scr.patch" target="_top">Return client window coordinates for mouse events</a><p>
1280 1280
 
1281 1281
 This patch causes mouse events to return coordinates relative to the content
1282 1282
 window instead of the desktop.
1283 1283
 
1284
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0022-Do-not-expose-physical-screen-info.-via-window-and-w.patch">Do not expose physical screen info to window.screen</a><p>
1284
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0022-Do-not-expose-physical-screen-info.-via-window-and-w.patch" target="_top">Do not expose physical screen info to window.screen</a><p>
1285 1285
 
1286 1286
 This patch causes window.screen to return the display resolution size of the
1287 1287
 content window instead of the desktop resolution size.
1288 1288
 
1289
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0023-Do-not-expose-system-colors-to-CSS-or-canvas.patch">Do not expose system colors to CSS or canvas</a><p>
1289
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0023-Do-not-expose-system-colors-to-CSS-or-canvas.patch" target="_top">Do not expose system colors to CSS or canvas</a><p>
1290 1290
 
1291 1291
 This patch prevents CSS and Javascript from discovering your desktop color
1292 1292
 scheme and/or theme.
1293 1293
 
1294
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0024-Isolate-the-Image-Cache-per-url-bar-domain.patch">Isolate the Image Cache per url bar domain</a><p>
1294
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0024-Isolate-the-Image-Cache-per-url-bar-domain.patch" target="_top">Isolate the Image Cache per url bar domain</a><p>
1295 1295
 
1296 1296
 This patch prevents cached images from being used to store third party tracking
1297 1297
 identifiers.
1298 1298
 
1299
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0025-nsIHTTPChannel.redirectTo-API.patch">nsIHTTPChannel.redirectTo() API</a><p>
1299
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0025-nsIHTTPChannel.redirectTo-API.patch" target="_top">nsIHTTPChannel.redirectTo() API</a><p>
1300 1300
 
1301 1301
 This patch provides HTTPS-Everywhere with an API to perform redirections more
1302 1302
 securely and without addon conflicts.
1303 1303
 
1304
-     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0026-Isolate-DOM-storage-to-first-party-URI.patch">Isolate DOM Storage to first party URI</a><p>
1304
+     </p></li><li class="listitem"><a class="ulink" href="https://gitweb.torproject.org/torbrowser.git/blob/maint-2.4:/src/current-patches/firefox/0026-Isolate-DOM-storage-to-first-party-URI.patch" target="_top">Isolate DOM Storage to first party URI</a><p>
1305 1305
 
1306 1306
 This patch prevents DOM Storage from being used to store third party tracking
1307 1307
 identifiers.
1308 1308
 
1309
-     </p></li></ol></div></div></div><div class="appendix" title="A. Towards Transparency in Navigation Tracking"><h2 class="title"><a id="Transparency"/>A. Towards Transparency in Navigation Tracking</h2><p>
1309
+     </p></li></ol></div></div></div><div class="appendix" title="A. Towards Transparency in Navigation Tracking"><h2 class="title" style="clear: both"><a id="Transparency"></a>A. Towards Transparency in Navigation Tracking</h2><p>
1310 1310
 
1311 1311
 The <a class="link" href="#privacy" title="2.2. Privacy Requirements">privacy properties</a> of Tor Browser are based
1312 1312
 upon the assumption that link-click navigation indicates user consent to
... ...
@@ -1338,7 +1338,7 @@ also describe auditable alternatives and promising web draft standards that woul
1338 1338
 preserve this functionality while still providing transparency when tracking is
1339 1339
 occurring. 
1340 1340
 
1341
-</p><div class="sect2" title="A.1. Deprecation Wishlist"><div class="titlepage"><div><div><h3 class="title"><a id="deprecate"/>A.1. Deprecation Wishlist</h3></div></div></div><div class="orderedlist"><ol class="orderedlist"><li class="listitem">The Referer Header
1341
+</p><div class="sect1" title="A.1. Deprecation Wishlist"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="deprecate"></a>A.1. Deprecation Wishlist</h2></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">The Referer Header
1342 1342
   <p>
1343 1343
 
1344 1344
 We haven't disabled or restricted the referer ourselves because of the
... ...
@@ -1353,7 +1353,7 @@ Google's +1 buttons are the best example of this activity.
1353 1353
 
1354 1354
 Because of the availability of these other explicit vectors, we believe the
1355 1355
 main risk of the referer header is through inadvertent and/or covert data
1356
-leakage.  In fact, <a class="ulink" href="http://www2.research.att.com/~bala/papers/wosn09.pdf">a great deal of
1356
+leakage.  In fact, <a class="ulink" href="http://www2.research.att.com/~bala/papers/wosn09.pdf" target="_top">a great deal of
1357 1357
 personal data</a> is inadvertently leaked to third parties through the
1358 1358
 source URL parameters. 
1359 1359
 
... ...
@@ -1366,15 +1366,15 @@ HTML tag. With an explicit property, it would then be possible for the user
1366 1366
 agent to inform the user if they are about to click on a link that will
1367 1367
 transmit referer information (perhaps through something as subtle as a
1368 1368
 different color for the destination URL). This same UI notification can also
1369
-be used for links with the <a class="ulink" href="https://developer.mozilla.org/en-US/docs/HTML/Element/a#Attributes">"ping"</a>
1369
+be used for links with the <a class="ulink" href="https://developer.mozilla.org/en-US/docs/HTML/Element/a#Attributes" target="_top">"ping"</a>
1370 1370
 attribute.
1371 1371
 
1372 1372
   </p></li><li class="listitem">window.name
1373 1373
    <p>
1374
-<a class="ulink" href="https://developer.mozilla.org/En/DOM/Window.name">window.name</a> is
1374
+<a class="ulink" href="https://developer.mozilla.org/En/DOM/Window.name" target="_top">window.name</a> is
1375 1375
 a DOM property that for some reason is allowed to retain a persistent value
1376 1376
 for the lifespan of a browser tab. It is possible to utilize this property for
1377
-<a class="ulink" href="http://www.thomasfrank.se/sessionvars.html">identifier
1377
+<a class="ulink" href="http://www.thomasfrank.se/sessionvars.html" target="_top">identifier
1378 1378
 storage</a> during click navigation. This is sometimes used for additional
1379 1379
 XSRF protection and federated login.
1380 1380
    </p><p>
... ...
@@ -1397,18 +1397,18 @@ cause Tor Browser to fail to navigate properly on these sites.
1397 1397
    </p><p>
1398 1398
 
1399 1399
 Automated cross-origin redirects are one form of this behavior that is
1400
-possible for us to <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3600">address
1400
+possible for us to <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/3600" target="_top">address
1401 1401
 ourselves</a>, as they are comparatively rare and can be handled with site
1402 1402
 permissions.
1403 1403
 
1404
-   </p></li></ol></div></div><div class="sect2" title="A.2. Promising Standards"><div class="titlepage"><div><div><h3 class="title"><a id="idp5752304"/>A.2. Promising Standards</h3></div></div></div><div class="orderedlist"><ol class="orderedlist"><li class="listitem"><a class="ulink" href="http://web-send.org">Web-Send Introducer</a><p>
1404
+   </p></li></ol></div></div><div class="sect1" title="A.2. Promising Standards"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="idp5757152"></a>A.2. Promising Standards</h2></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><a class="ulink" href="http://web-send.org" target="_top">Web-Send Introducer</a><p>
1405 1405
 
1406 1406
 Web-Send is a browser-based link sharing and federated login widget that is
1407 1407
 designed to operate without relying on third-party tracking or abusing other
1408
-cross-origin link-click side channels. It has a compelling list of <a class="ulink" href="http://web-send.org/features.html">privacy and security features</a>,
1408
+cross-origin link-click side channels. It has a compelling list of <a class="ulink" href="http://web-send.org/features.html" target="_top">privacy and security features</a>,
1409 1409
 especially if used as a "Like button" replacement.
1410 1410
 
1411
-   </p></li><li class="listitem"><a class="ulink" href="https://developer.mozilla.org/en-US/docs/Persona">Mozilla Persona</a><p>
1411
+   </p></li><li class="listitem"><a class="ulink" href="https://developer.mozilla.org/en-US/docs/Persona" target="_top">Mozilla Persona</a><p>
1412 1412
 
1413 1413
 Mozilla's Persona is designed to provide decentralized, cryptographically
1414 1414
 authenticated federated login in a way that does not expose the user to third
1415 1415