TBB design doc: More review updates.
Mike Perry

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">&lt;<a class="email" href="mailto:mikeperry#torproject org">mikeperry#torproject org</a>&gt;</code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Erinn</span> <span class="surname">Clark</span></h3><div class="affiliation"><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:erinn#torproject org">erinn#torproject org</a>&gt;</code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Steven</span> <span class="surname">Murdoch</span></h3><div class="affiliation"><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:sjmurdoch#torproject org">sjmurdoch#torproject org</a>&gt;</code></p></div></div></div></div><div><p class="pubdate">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">&lt;<a class="email" href="mailto:mikeperry#torproject org">mikeperry#torproject org</a>&gt;</code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Erinn</span> <span class="surname">Clark</span></h3><div class="affiliation"><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:erinn#torproject org">erinn#torproject org</a>&gt;</code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Steven</span> <span class="surname">Murdoch</span></h3><div class="affiliation"><div class="address"><p><code class="email">&lt;<a class="email" href="mailto:sjmurdoch#torproject org">sjmurdoch#torproject org</a>&gt;</code></p></div></div></div></div><div><p class="pubdate">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