Mike Perry commited on 2013-03-09 01:25:48
Zeige 1 geänderte Dateien mit 71 Einfügungen und 63 Löschungen.
... | ... |
@@ -1,10 +1,10 @@ |
1 | 1 |
<?xml version="1.0" encoding="UTF-8"?> |
2 | 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.76.1" /></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">March 8 2013</p></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="sect1"><a href="#idp4695088">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="#adversary-goals">3.1. Adversary Goals</a></span></dt><dt><span class="sect2"><a href="#adversary-positioning">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="#other-security">4.8. Other Security Measures</a></span></dt><dt><span class="sect2"><a href="#firefox-patches">4.9. 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="#idp5836112">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="idp4695088"></a>1. Introduction</h2></div></div></div><p> |
|
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.76.1" /></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">March 8 2013</p></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="sect1"><a href="#idp2931312">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="#adversary-goals">3.1. Adversary Goals</a></span></dt><dt><span class="sect2"><a href="#adversary-positioning">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="#other-security">4.8. Other Security Measures</a></span></dt><dt><span class="sect2"><a href="#firefox-patches">4.9. 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="#idp5839584">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="idp2931312"></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 |
-<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 |
|
7 |
-and Torbutton 1.5.0. |
|
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 |
|
7 |
+2.3.25-5 and Torbutton 1.5.1. |
|
8 | 8 |
|
9 | 9 |
</p><p> |
10 | 10 |
|
... | ... |
@@ -259,13 +259,6 @@ be enough for some authorities.</p></li><li class="listitem"><span class="comman |
259 | 259 |
The adversary may also be interested in history disclosure: the ability to |
260 | 260 |
query a user's history to see if they have issued certain censored search |
261 | 261 |
queries, or visited censored sites. |
262 |
- </p></li><li class="listitem"><span class="command"><strong>Location information</strong></span><p> |
|
263 |
- |
|
264 |
-Location information such as timezone and locality can be useful for the |
|
265 |
-adversary to determine if a user is in fact originating from one of the |
|
266 |
-regions they are attempting to control, or to zero-in on the geographical |
|
267 |
-location of a particular dissident or whistleblower. |
|
268 |
- |
|
269 | 262 |
</p></li><li class="listitem"><span class="command"><strong>Correlate activity across multiple sites</strong></span><p> |
270 | 263 |
|
271 | 264 |
The primary goal of the advertising networks is to know that the user who |
... | ... |
@@ -276,11 +269,12 @@ attempt to perform this correlation without the user's explicit consent. |
276 | 269 |
</p></li><li class="listitem"><span class="command"><strong>Fingerprinting/anonymity set reduction</strong></span><p> |
277 | 270 |
|
278 | 271 |
Fingerprinting (more generally: "anonymity set reduction") is used to attempt |
279 |
-to zero in on a particular individual without the use of tracking identifiers. |
|
280 |
-If the dissident or whistleblower is using a rare build of Firefox for an |
|
281 |
-obscure operating system, this can be very useful information for tracking |
|
282 |
-them down, or at least <a class="link" href="#fingerprinting">tracking their |
|
283 |
-activities</a>. |
|
272 |
+to gather identifying information on a particular individual without the use |
|
273 |
+of tracking identifiers. If the dissident or whistleblower's timezone is |
|
274 |
+available, and they are using a rare build of Firefox for an obscure operating |
|
275 |
+system, and they have a specific display resolution only used on one type of |
|
276 |
+laptop, this can be very useful information for tracking them down, or at |
|
277 |
+least <a class="link" href="#fingerprinting">tracking their activities</a>. |
|
284 | 278 |
|
285 | 279 |
</p></li><li class="listitem"><span class="command"><strong>History records and other on-disk |
286 | 280 |
information</strong></span><p> |
... | ... |
@@ -435,18 +429,20 @@ was formerly available only to Javascript. |
435 | 429 |
</p></li></ol></div></li><li class="listitem"><a id="website-traffic-fingerprinting"></a><span class="command"><strong>Website traffic fingerprinting</strong></span><p> |
436 | 430 |
|
437 | 431 |
Website traffic fingerprinting is an attempt by the adversary to recognize the |
438 |
-encrypted traffic patterns of specific websites. The most comprehensive |
|
439 |
-study of the statistical properties of this attack against Tor was done by |
|
440 |
-<a class="ulink" href="http://lorre.uni.lu/~andriy/papers/acmccs-wpes11-fingerprinting.pdf" target="_top">Panchenko |
|
432 |
+encrypted traffic patterns of specific websites. In the case of Tor, this |
|
433 |
+attack would take place between the user and the Guard node, or at the Guard |
|
434 |
+node itself. |
|
435 |
+ </p><p> The most comprehensive study of the statistical properties of this |
|
436 |
+attack against Tor was done by <a class="ulink" href="http://lorre.uni.lu/~andriy/papers/acmccs-wpes11-fingerprinting.pdf" target="_top">Panchenko |
|
441 | 437 |
et al</a>. Unfortunately, the publication bias in academia has encouraged |
442 | 438 |
the production of a number of follow-on attack papers claiming "improved" |
443 |
-success rates, which are enabled primarily by taking a number of shortcuts |
|
444 |
-(such as classifying only very small numbers of websites, neglecting to |
|
445 |
-publish ROC curves or at least false positive rates, and/or omitting the |
|
446 |
-effects of dataset size on their results). Despite these subsequent |
|
447 |
-"improvements" (which in some cases amusingly claim to completely invalidate |
|
448 |
-any attempt at defense), we are skeptical of the efficacy of this attack in a |
|
449 |
-real world scenario, <span class="emphasis"><em>especially</em></span> in the face of any |
|
439 |
+success rates, in some cases even claiming to completely invalidate any |
|
440 |
+attempt at defense. These "improvements" are actually enabled primarily by |
|
441 |
+taking a number of shortcuts (such as classifying only very small numbers of |
|
442 |
+web pages, neglecting to publish ROC curves or at least false positive rates, |
|
443 |
+and/or omitting the effects of dataset size on their results). Despite these |
|
444 |
+subsequent "improvements", we are skeptical of the efficacy of this attack in |
|
445 |
+a real world scenario, <span class="emphasis"><em>especially</em></span> in the face of any |
|
450 | 446 |
defenses. |
451 | 447 |
|
452 | 448 |
</p><p> |
... | ... |
@@ -459,7 +455,7 @@ rate goes up. This error is called the <a class="ulink" href="http://www.cs.wash |
459 | 455 |
in your hypothesis space</a>. In fact, even for unbiased hypothesis |
460 | 456 |
spaces, the number of training examples required to achieve a reasonable error |
461 | 457 |
bound is <a class="ulink" href="https://en.wikipedia.org/wiki/Probably_approximately_correct_learning#Equivalence" target="_top">a |
462 |
-function of the number of categories</a> you need to classify. |
|
458 |
+function of the complexity of the categories</a> you need to classify. |
|
463 | 459 |
|
464 | 460 |
</p><p> |
465 | 461 |
|
... | ... |
@@ -467,20 +463,24 @@ function of the number of categories</a> you need to classify. |
467 | 463 |
In the case of this attack, the key factors that increase the classification |
468 | 464 |
complexity (and thus hinder a real world adversary who attempts this attack) |
469 | 465 |
are large numbers of dynamically generated pages, partially cached content, |
470 |
-and non-web activity in the "Open World" scenario of the entire Tor network. |
|
471 |
-This large level of classification complexity is further confounded by a noisy |
|
472 |
-and low resolution featureset, one which is also realtively easy for the |
|
473 |
-defender to manipulate at low cost. |
|
466 |
+and also the non-web activity of entire Tor network. This yields an effective |
|
467 |
+number of "web pages" many orders of magnitude larger than even <a class="ulink" href="http://lorre.uni.lu/~andriy/papers/acmccs-wpes11-fingerprinting.pdf" target="_top">Panchenko's |
|
468 |
+"Open World" scenario</a>, which suffered continous near-constant decline |
|
469 |
+in the true positive rate as the "Open World" size grew (see figure 4). This |
|
470 |
+large level of classification complexity is further confounded by a noisy and |
|
471 |
+low resolution featureset - one which is also realtively easy for the defender |
|
472 |
+to manipulate at low cost. |
|
474 | 473 |
|
475 | 474 |
</p><p> |
476 | 475 |
|
477 | 476 |
In fact, the ocean of Tor Internet activity (at least, when compared to a lab |
478 |
-setting) makes it a certainty that an adversary attempting to classify a large |
|
479 |
-number of sites with poor feature resolution will ultimately be overwhelmed by |
|
480 |
-false positives. This problem is known in the IDS literature as the <a class="ulink" href="http://www.raid-symposium.org/raid99/PAPERS/Axelsson.pdf" target="_top">Base Rate |
|
477 |
+setting) makes it a certainty that an adversary attempting examine large |
|
478 |
+amounts of Tor traffic will ultimately be overwhelmed by false positives (even |
|
479 |
+after making heavy tradeoffs on the ROC curve to minimize false positives to |
|
480 |
+below 0.01%). This problem is known in the IDS literature as the <a class="ulink" href="http://www.raid-symposium.org/raid99/PAPERS/Axelsson.pdf" target="_top">Base Rate |
|
481 | 481 |
Fallacy</a>, and it is the primary reason that anomaly and activity |
482 | 482 |
classification-based IDS and antivirus systems have failed to materialize in |
483 |
-the marketplace. |
|
483 |
+the marketplace (despite early success in academic literature). |
|
484 | 484 |
|
485 | 485 |
</p><p> |
486 | 486 |
|
... | ... |
@@ -500,7 +500,9 @@ can perform similar actions. Regrettably, this last attack capability is |
500 | 500 |
outside of the browser's ability to defend against, but it is worth mentioning |
501 | 501 |
for completeness. In fact, <a class="ulink" href="http://tails.boum.org/contribute/design/" target="_top">The Tails system</a> can |
502 | 502 |
provide some defense against this adversary, and it does include the Tor |
503 |
-Browser. |
|
503 |
+Browser. We do however aim to defend against an adersary that has passive |
|
504 |
+forensic access the disk after browsing activity takes place, as part of our |
|
505 |
+<a class="link" href="#disk-avoidance" title="4.3. Disk Avoidance">Disk Avoidance</a> defenses. |
|
504 | 506 |
|
505 | 507 |
</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> |
506 | 508 |
|
... | ... |
@@ -606,13 +608,13 @@ events from Torbutton before the OS downloads the URLs the events contained. |
606 | 608 |
Tor Browser State is separated from existing browser state through use of a |
607 | 609 |
custom Firefox profile. Furthermore, plugins are disabled, which prevents |
608 | 610 |
Flash cookies from leaking from a pre-existing Flash directory. |
609 |
- </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="idp5577776"></a>Design Goal:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"> |
|
611 |
+ </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="idp5584448"></a>Design Goal:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"> |
|
610 | 612 |
|
611 | 613 |
The User Agent MUST (at user option) prevent all disk records of browser activity. |
612 | 614 |
The user should be able to optionally enable URL history and other history |
613 | 615 |
features if they so desire. |
614 | 616 |
|
615 |
- </blockquote></div></div><div class="sect3" title="Implementation Status:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5579136"></a>Implementation Status:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"> |
|
617 |
+ </blockquote></div></div><div class="sect3" title="Implementation Status:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5585808"></a>Implementation Status:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"> |
|
616 | 618 |
|
617 | 619 |
We achieve this goal through several mechanisms. First, we set the Firefox |
618 | 620 |
Private Browsing preference |
... | ... |
@@ -692,7 +694,7 @@ the url bar origin for which browser state exists, possibly with a |
692 | 694 |
context-menu option to drill down into specific types of state or permissions. |
693 | 695 |
An example of this simplification can be seen in Figure 1. |
694 | 696 |
|
695 |
- </p><div class="figure"><a id="idp5603216"></a><p class="title"><strong>Figure 1. Improving the Privacy UI</strong></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> |
|
697 |
+ </p><div class="figure"><a id="idp5609888"></a><p class="title"><strong>Figure 1. Improving the Privacy UI</strong></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> |
|
696 | 698 |
|
697 | 699 |
This example UI is a mock-up of how isolating identifiers to the URL bar |
698 | 700 |
origin can simplify the privacy UI for all data - not just cookies. Once |
... | ... |
@@ -732,7 +734,8 @@ security of the isolation</a> and to <a class="ulink" href="https://trac.torproj |
732 | 734 |
with OCSP relying the cacheKey property for reuse of POST requests</a>, we |
733 | 735 |
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 |
734 | 736 |
Firefox to provide a cacheDomain cache attribute</a>. We use the fully |
735 |
-qualified url bar domain as input to this field. |
|
737 |
+qualified url bar domain as input to this field, to avoid the complexities |
|
738 |
+of heuristically determining the second-level DNS name. |
|
736 | 739 |
|
737 | 740 |
</p><p> |
738 | 741 |
|
... | ... |
@@ -741,7 +744,7 @@ isolation scheme than the Stanford implementation. First, we decoupled the |
741 | 744 |
cache isolation from the third party cookie attribute. Second, we use several |
742 | 745 |
mechanisms to attempt to determine the actual location attribute of the |
743 | 746 |
top-level window (to obtain the url bar FQDN) used to load the page, as |
744 |
-opposed to relying solely on the referer property. |
|
747 |
+opposed to relying solely on the Referer property. |
|
745 | 748 |
|
746 | 749 |
</p><p> |
747 | 750 |
|
... | ... |
@@ -853,7 +856,7 @@ storage</a>. |
853 | 856 |
|
854 | 857 |
In order to eliminate non-consensual linkability but still allow for sites |
855 | 858 |
that utilize this property to function, we reset the window.name property of |
856 |
-tabs in Torbutton every time we encounter a blank referer. This behavior |
|
859 |
+tabs in Torbutton every time we encounter a blank Referer. This behavior |
|
857 | 860 |
allows window.name to persist for the duration of a click-driven navigation |
858 | 861 |
session, but as soon as the user enters a new URL or navigates between |
859 | 862 |
https/http schemes, the property is cleared. |
... | ... |
@@ -892,7 +895,7 @@ Identity</strong></span> invocations. |
892 | 895 |
</p></li><li class="listitem">Exit node usage |
893 | 896 |
<p><span class="command"><strong>Design Goal:</strong></span> |
894 | 897 |
|
895 |
-Every distinct navigation session (as defined by a non-blank referer header) |
|
898 |
+Every distinct navigation session (as defined by a non-blank Referer header) |
|
896 | 899 |
MUST exit through a fresh Tor circuit in Tor Browser to prevent exit node |
897 | 900 |
observers from linking concurrent browsing activity. |
898 | 901 |
|
... | ... |
@@ -1178,27 +1181,30 @@ In order to avoid long-term linkability, we provide a "New Identity" context |
1178 | 1181 |
menu option in Torbutton. This context menu option is active if Torbutton can |
1179 | 1182 |
read the environment variables $TOR_CONTROL_PASSWD and $TOR_CONTROL_PORT. |
1180 | 1183 |
|
1181 |
- </p><div class="sect3" title="Design Goal:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5721200"></a>Design Goal:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"> |
|
1184 |
+ </p><div class="sect3" title="Design Goal:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5727952"></a>Design Goal:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"> |
|
1182 | 1185 |
|
1183 | 1186 |
All linkable identifiers and browser state MUST be cleared by this feature. |
1184 | 1187 |
|
1185 |
- </blockquote></div></div><div class="sect3" title="Implementation Status:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5722448"></a>Implementation Status:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"><p> |
|
1188 |
+ </blockquote></div></div><div class="sect3" title="Implementation Status:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5729200"></a>Implementation Status:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"><p> |
|
1186 | 1189 |
|
1187 | 1190 |
First, Torbutton disables Javascript in all open tabs and windows by using |
1188 | 1191 |
both the <a class="ulink" href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIDocShell#Attributes" target="_top">browser.docShell.allowJavascript</a> |
1189 | 1192 |
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>. |
1190 | 1193 |
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>. |
1191 | 1194 |
We then clear the site-specific Zoom by temporarily disabling the preference |
1192 |
-<span class="command"><strong>browser.zoom.siteSpecific</strong></span>, and clear the GeoIP wiki token |
|
1193 |
-URL and the last opened URL prefs (if they exist). Each tab is then closed. |
|
1195 |
+<span class="command"><strong>browser.zoom.siteSpecific</strong></span>, and clear the GeoIP wifi token URL |
|
1196 |
+<span class="command"><strong>geo.wifi.access_token</strong></span> and the last opened URL prefs (if |
|
1197 |
+they exist). Each tab is then closed. |
|
1194 | 1198 |
|
1195 | 1199 |
</p><p> |
1196 | 1200 |
|
1197 |
-After closing all tabs, we then clear the following state: searchbox and |
|
1198 |
-findbox text, HTTP auth, SSL state, OCSP state, site-specific content |
|
1199 |
-preferences (including HSTS state), content and image cache, Cookies, DOM |
|
1200 |
-storage, safe browsing key, and the Google wifi geolocation token (if it |
|
1201 |
-exists). |
|
1201 |
+After closing all tabs, we then emit "<a class="ulink" href="https://developer.mozilla.org/en-US/docs/Supporting_private_browsing_mode#Private_browsing_notifications" target="_top">browser:purge-session-history</a>" |
|
1202 |
+(which instructs addons and various Firefox components to clear their session |
|
1203 |
+state), and then manually clear the following state: searchbox and findbox |
|
1204 |
+text, HTTP auth, SSL state, OCSP state, site-specific content preferences |
|
1205 |
+(including HSTS state), content and image cache, offline cache, Cookies, DOM |
|
1206 |
+storage, DOM local storage, the safe browsing key, and the Google wifi geolocation |
|
1207 |
+token (if it exists). |
|
1202 | 1208 |
|
1203 | 1209 |
</p><p> |
1204 | 1210 |
|
... | ... |
@@ -1207,7 +1213,7 @@ connections and then send the NEWNYM signal to the Tor control port to cause a |
1207 | 1213 |
new circuit to be created. |
1208 | 1214 |
</p><p> |
1209 | 1215 |
Finally, a fresh browser window is opened, and the current browser window is |
1210 |
-closed. |
|
1216 |
+closed (this does not spawn a new Firefox process, only a new window). |
|
1211 | 1217 |
</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"> |
1212 | 1218 |
If the user chose to "protect" any cookies by using the Torbutton Cookie |
1213 | 1219 |
Protections UI, those cookies are not cleared as part of the above. |
... | ... |
@@ -1223,9 +1229,9 @@ privacy and security issues. |
1223 | 1229 |
Fingerprinting</a> is a statistical attack to attempt to recognize specific |
1224 | 1230 |
encrypted website activity. |
1225 | 1231 |
|
1226 |
- </p><div class="sect3" title="Design Goal:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5734960"></a>Design Goal:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"><p> |
|
1232 |
+ </p><div class="sect3" title="Design Goal:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5743360"></a>Design Goal:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"><p> |
|
1227 | 1233 |
|
1228 |
-We want to deploy a mechanism that reduces the accuracy of features available |
|
1234 |
+We want to deploy a mechanism that reduces the accuracy of <a class="ulink" href="https://en.wikipedia.org/wiki/Feature_selection" target="_top">useful features</a> available |
|
1229 | 1235 |
for classification. This mechanism would either impact the true and false |
1230 | 1236 |
positive accuracy rates, <span class="emphasis"><em>or</em></span> reduce the number of webpages |
1231 | 1237 |
that could be classified at a given accuracy rate. |
... | ... |
@@ -1242,9 +1248,9 @@ category, we have <a class="ulink" href="http://freehaven.net/anonbib/cache/ShWa |
1242 | 1248 |
Padding</a> and <a class="ulink" href="http://www.cs.sunysb.edu/~xcai/fp.pdf" target="_top"> |
1243 | 1249 |
Congestion-Sensitive BUFLO</a>. It may be also possible to <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/7028" target="_top">tune such |
1244 | 1250 |
defenses</a> such that they only use existing spare Guard bandwidth capacity in the Tor |
1245 |
-network. |
|
1251 |
+network, making them also effectively no-overhead. |
|
1246 | 1252 |
|
1247 |
- </p></blockquote></div></div><div class="sect3" title="Implementation Status:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5741184"></a>Implementation Status:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"><p> |
|
1253 |
+ </p></blockquote></div></div><div class="sect3" title="Implementation Status:"><div class="titlepage"><div><div><h4 class="title"><a id="idp5750176"></a>Implementation Status:</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"><p> |
|
1248 | 1254 |
Currently, we patch Firefox to <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 |
1249 | 1255 |
pipeline order and depth</a>. Unfortunately, pipelining is very fragile. |
1250 | 1256 |
Many sites do not support it, and even sites that advertise support for |
... | ... |
@@ -1385,7 +1391,9 @@ CSS and Javascript</a> and is a fingerprinting vector. This patch limits |
1385 | 1391 |
the number of times CSS and Javascript can cause font-family rules to |
1386 | 1392 |
evaluate. Remote @font-face fonts are exempt from the limits imposed by this |
1387 | 1393 |
patch, and remote fonts are given priority over local fonts whenever both |
1388 |
-appear in the same font-family rule. |
|
1394 |
+appear in the same font-family rule. We do this by explicitly altering the |
|
1395 |
+nsRuleNode rule represenation itself to remove the local font families before |
|
1396 |
+the rule hits the font renderer. |
|
1389 | 1397 |
|
1390 | 1398 |
</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> |
1391 | 1399 |
|
... | ... |
@@ -1515,18 +1523,18 @@ occurring. |
1515 | 1523 |
</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 |
1516 | 1524 |
<p> |
1517 | 1525 |
|
1518 |
-We haven't disabled or restricted the referer ourselves because of the |
|
1519 |
-non-trivial number of sites that rely on the referer header to "authenticate" |
|
1526 |
+We haven't disabled or restricted the Referer ourselves because of the |
|
1527 |
+non-trivial number of sites that rely on the Referer header to "authenticate" |
|
1520 | 1528 |
image requests and deep-link navigation on their sites. Furthermore, there |
1521 | 1529 |
seems to be no real privacy benefit to taking this action by itself in a |
1522 |
-vacuum, because many sites have begun encoding referer URL information into |
|
1530 |
+vacuum, because many sites have begun encoding Referer URL information into |
|
1523 | 1531 |
GET parameters when they need it to cross http to https scheme transitions. |
1524 | 1532 |
Google's +1 buttons are the best example of this activity. |
1525 | 1533 |
|
1526 | 1534 |
</p><p> |
1527 | 1535 |
|
1528 | 1536 |
Because of the availability of these other explicit vectors, we believe the |
1529 |
-main risk of the referer header is through inadvertent and/or covert data |
|
1537 |
+main risk of the Referer header is through inadvertent and/or covert data |
|
1530 | 1538 |
leakage. In fact, <a class="ulink" href="http://www2.research.att.com/~bala/papers/wosn09.pdf" target="_top">a great deal of |
1531 | 1539 |
personal data</a> is inadvertently leaked to third parties through the |
1532 | 1540 |
source URL parameters. |
... | ... |
@@ -1537,7 +1545,7 @@ We believe the Referer header should be made explicit. If a site wishes to |
1537 | 1545 |
transmit its URL to third party content elements during load or during |
1538 | 1546 |
link-click, it should have to specify this as a property of the associated HTML |
1539 | 1547 |
tag. With an explicit property, it would then be possible for the user agent to |
1540 |
-inform the user if they are about to click on a link that will transmit referer |
|
1548 |
+inform the user if they are about to click on a link that will transmit Referer |
|
1541 | 1549 |
information (perhaps through something as subtle as a different color in the |
1542 | 1550 |
lower toolbar for the destination URL). This same UI notification can also be |
1543 | 1551 |
used for links with the <a class="ulink" href="https://developer.mozilla.org/en-US/docs/HTML/Element/a#Attributes" target="_top">"ping"</a> |
... | ... |
@@ -1575,7 +1583,7 @@ possible for us to <a class="ulink" href="https://trac.torproject.org/projects/t |
1575 | 1583 |
ourselves</a>, as they are comparatively rare and can be handled with site |
1576 | 1584 |
permissions. |
1577 | 1585 |
|
1578 |
- </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="idp5836112"></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> |
|
1586 |
+ </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="idp5839584"></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> |
|
1579 | 1587 |
|
1580 | 1588 |
Web-Send is a browser-based link sharing and federated login widget that is |
1581 | 1589 |
designed to operate without relying on third-party tracking or abusing other |
1582 | 1590 |