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"><<a class="email" href="mailto:mikeperry#torproject org">mikeperry#torproject org</a>></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"><<a class="email" href="mailto:erinn#torproject org">erinn#torproject org</a>></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"><<a class="email" href="mailto:sjmurdoch#torproject org">sjmurdoch#torproject org</a>></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"><<a class="email" href="mailto:mikeperry#torproject org">mikeperry#torproject org</a>></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"><<a class="email" href="mailto:erinn#torproject org">erinn#torproject org</a>></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"><<a class="email" href="mailto:sjmurdoch#torproject org">sjmurdoch#torproject org</a>></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 "New Identity" 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&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&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 "New Identity" 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&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&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&status=!closed">tbb-fingerprinting tag in our bugtracker</a> |
|
1091 |
- </p></div><div class="sect2" title="4.7. Long-Term Unlinkability via "New Identity" 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&status=!closed" target="_top">tbb-fingerprinting tag in our bugtracker</a> |
|
1091 |
+ </p></div><div class="sect2" title="4.7. Long-Term Unlinkability via "New Identity" 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 "New Identity" 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 |