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 |