Update design doc to reflect the planned shift from the Toggle Model to Tor Browser.
Mike Perry

Mike Perry commited on 2011-04-11 06:55:29
Zeige 3 geänderte Dateien mit 139 Einfügungen und 148 Löschungen.

... ...
@@ -17,6 +17,12 @@
17 17
   - Fingerprinting issues:
18 18
     - New screen attributes
19 19
       - https://developer.mozilla.org/en/DOM/window.mozInnerScreenX, Y
20
+    - High Res Animation Timers:
21
+      - https://developer.mozilla.org/en/DOM/window.mozAnimationStartTime
22
+      - https://developer.mozilla.org/en/DOM/Animations_using_MozBeforePaint
23
+        - 50-60hz max.. Can we leverage this?
24
+    - timeStamps on keystroke events
25
+      - https://developer.mozilla.org/en/DOM/event.timeStamp
20 26
     - Bounding rectangles -> window sizes?
21 27
       - Maybe not display sizes, but seems possible to fingerprint rendered
22 28
         content size.. ugh.
... ...
@@ -11,7 +11,7 @@
11 11
      <address><email>mikeperry.fscked/org</email></address>
12 12
     </affiliation>
13 13
    </author>
14
-   <pubdate>Apr 4 2011</pubdate>
14
+   <pubdate>Apr 10 2011</pubdate>
15 15
  </articleinfo>
16 16
 
17 17
 <sect1>
... ...
@@ -338,12 +338,20 @@ MUST NOT bypass Tor proxy settings for any content.</para></listitem>
338 338
  another Tor state.</para></listitem>
339 339
  <listitem id="isolation"><command>Network Isolation</command>
340 340
  <para>Pages MUST NOT perform any network activity in a Tor state different
341
- from the state they were originally loaded in.</para></listitem>
341
+ from the state they were originally loaded in.</para>
342
+ <para>Note that this requirement is
343
+being de-emphasized due to the coming shift to supporting only the Tor Browser
344
+Bundles, which do not support a Toggle operation.</para></listitem>
342 345
  <listitem id="undiscoverability"><command>Tor Undiscoverability</command><para>With
343 346
 the advent of bridge support in Tor 0.2.0.x, there are now a class of Tor
344 347
 users whose network fingerprint does not obviously betray the fact that they
345 348
 are using Tor. This should extend to the browser as well - Torbutton MUST NOT 
346
-reveal its presence while Tor is disabled.</para></listitem>
349
+reveal its presence while Tor is disabled.
350
+</para>
351
+ <para>Note that this requirement is
352
+being de-emphasized due to the coming shift to supporting only the Tor Browser
353
+Bundles, which do not support a Toggle operation.</para>
354
+</listitem>
347 355
  <listitem id="disk"><command>Disk Avoidance</command><para>The browser SHOULD NOT write any Tor-related state to disk, or store it
348 356
  in memory beyond the duration of one Tor toggle.</para></listitem>
349 357
  <listitem id="location"><command>Location Neutrality</command><para>The browser SHOULD NOT leak location-specific information, such as
... ...
@@ -1336,6 +1344,7 @@ url="http://pseudo-flaw.net/tor/torbutton/unmask-components-lookupmethod.html">C
1336 1344
 We are still looking for a workaround as of Torbutton 1.3.2.
1337 1345
 
1338 1346
 <!-- FIXME: Don't forget to update this -->
1347
+<!-- XXX: Date() issue now fixed by TZ variable! -->
1339 1348
 
1340 1349
 </para>
1341 1350
 </sect3>
... ...
@@ -2162,9 +2171,34 @@ is currently not exposed via the preferences UI.
2162 2171
 <sect1 id="FirefoxBugs">
2163 2172
   <title>Relevant Firefox Bugs</title>
2164 2173
   <para>
2165
-
2174
+Future releases of Torbutton are going to be designed around supporting only
2175
+<ulink url="https://www.torproject.org/projects/torbrowser.html.en">Tor
2176
+Browser Bundle</ulink>, which greatly simplifies the number and nature of Firefox
2177
+bugs we must fix. This allows us to abandon the complexities of <link
2178
+linkend="state">State
2179
+Separation</link> and <link linkend="isolation">Network Isolation</link> requirements
2180
+associated with the Toggle Model.
2166 2181
   </para>
2167
-  <sect2 id="FirefoxSecurity">
2182
+  <sect2 id="TorBrowserBugs">
2183
+   <title>Tor Browser Bugs</title>
2184
+   <para>
2185
+The list of Firefox patches we must create to improve privacy on the
2186
+Tor Browser Bundle are collected in the Tor Bug Tracker under <ulink
2187
+url="https://trac.torproject.org/projects/tor/ticket/2871">ticket
2188
+#2871</ulink>. These bugs are also applicable to the Toggle Model, and
2189
+should be considered higher priority than all Toggle Model specific bugs
2190
+below.
2191
+   </para>
2192
+  </sect2>
2193
+  <sect2 id="ToggleModelBugs">
2194
+   <title>Toggle Model Bugs</title>
2195
+   <para>
2196
+In addition to the Tor Browser bugs, the Torbutton Toggle Model suffers from
2197
+additional bugs specific to the need to isolate state across the toggle.
2198
+Toggle model bugs are considered a lower priority than the bugs against the
2199
+Tor Browser model.
2200
+   </para>
2201
+  <sect3 id="FirefoxSecurity">
2168 2202
    <title>Bugs impacting security</title>
2169 2203
    <para>
2170 2204
 
... ...
@@ -2175,6 +2209,8 @@ they are:
2175 2209
 
2176 2210
    </para>
2177 2211
    <orderedlist>
2212
+<!--
2213
+Duplicated in toggle model.
2178 2214
     <listitem><ulink
2179 2215
 url="https://bugzilla.mozilla.org/show_bug.cgi?id=429070">Bug 429070 - exposing
2180 2216
 Components.interfaces to untrusted content leaks information about installed
... ...
@@ -2189,7 +2225,6 @@ bug interferes with Torbutton's ability to satisfy its <link
2189 2225
 linkend="setpreservation">Anonymity Set Preservation</link> requirement.
2190 2226
      </para>
2191 2227
     </listitem>
2192
-<!--
2193 2228
    <listitem><ulink
2194 2229
 url="https://bugzilla.mozilla.org/show_bug.cgi?id=280661">Bug 280661 - SOCKS proxy server
2195 2230
 connection timeout hard-coded</ulink>
... ...
@@ -2203,7 +2238,6 @@ of privacy and security issues of its own (in addition to being unmaintained).
2203 2238
 
2204 2239
     </para>
2205 2240
    </listitem>
2206
--->
2207 2241
    <listitem><ulink
2208 2242
 url="https://bugzilla.mozilla.org/show_bug.cgi?id=418986">Bug 418986 - window.screen
2209 2243
 provides a large amount of identifiable information</ulink>
... ...
@@ -2225,6 +2259,7 @@ Preservation</link> requirement.
2225 2259
 
2226 2260
    </para>
2227 2261
    </listitem>
2262
+-->
2228 2263
    <listitem><ulink
2229 2264
 url="https://bugzilla.mozilla.org/show_bug.cgi?id=435159">Bug 435159 -
2230 2265
 nsNSSCertificateDB::DeleteCertificate has race conditions</ulink>
... ...
@@ -2266,6 +2301,8 @@ providing users with notification *after* their authentication tokens have
2266 2301
 already been compromised. This obviously needs to be fixed.
2267 2302
      </para>
2268 2303
      </listitem>
2304
+<!--
2305
+This is under the Tor Browser model.
2269 2306
      <listitem><ulink
2270 2307
 url="https://bugzilla.mozilla.org/show_bug.cgi?id=575230">Bug 575230 - Provide option to
2271 2308
 reduce precision of Date()</ulink>
... ...
@@ -2285,6 +2322,7 @@ linkend="setpreservation">Anonymity Set Preservation</link> requirement.
2285 2322
 
2286 2323
       </para>
2287 2324
      </listitem>
2325
+-->
2288 2326
     <listitem><ulink
2289 2327
 url="https://bugzilla.mozilla.org/show_bug.cgi?id=122752">Bug 122752 - SOCKS
2290 2328
 Username/Password Support</ulink>
... ...
@@ -2335,9 +2373,9 @@ requirement on Firefox 3.
2335 2373
      </para>
2336 2374
      </listitem>
2337 2375
     </orderedlist>
2338
-  </sect2>
2376
+  </sect3>
2339 2377
 <!-- XXX: Need to create a bug for DOM storage APIs at some point -->
2340
-  <sect2 id="FirefoxWishlist">
2378
+  <sect3 id="FirefoxWishlist">
2341 2379
    <title>Bugs blocking functionality</title>
2342 2380
    <para>
2343 2381
 The following bugs impact Torbutton and similar extensions' functionality.
... ...
@@ -2472,8 +2510,8 @@ subset of the <link linkend="requirements">requirements</link> is of course fine
2472 2510
 
2473 2511
 
2474 2512
   </orderedlist>
2475
-  </sect2>
2476
-  <sect2 id="FirefoxMiscBugs">
2513
+  </sect3>
2514
+  <sect3 id="FirefoxMiscBugs">
2477 2515
    <title>Low Priority Bugs</title>
2478 2516
    <para>
2479 2517
 The following bugs have an effect upon Torbutton, but are superseded by more
... ...
@@ -2576,6 +2614,8 @@ Williams.
2576 2614
 
2577 2615
      </para>
2578 2616
      </listitem>
2617
+<!--
2618
+Actually, ECMAScript 5 handles this correctly now.
2579 2619
    <listitem><ulink
2580 2620
 url="https://bugzilla.mozilla.org/show_bug.cgi?id=419598">Bug 419598 - 'var
2581 2621
 Date' is deletable</ulink>
... ...
@@ -2623,8 +2663,9 @@ the Date object though.
2623 2663
 
2624 2664
      </para>
2625 2665
     </listitem>
2626
-
2666
+-->
2627 2667
   </orderedlist>
2668
+  </sect3>
2628 2669
  </sect2>
2629 2670
 </sect1>
2630 2671
 
... ...
@@ -1,6 +1,6 @@
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>Torbutton Design Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /></head><body><div class="article" title="Torbutton Design Documentation"><div class="titlepage"><div><div><h2 class="title"><a id="design"></a>Torbutton Design Documentation</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.fscked/org">mikeperry.fscked/org</a>&gt;</code></p></div></div></div></div><div><p class="pubdate">Apr 4 2011</p></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2657298">1. Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="#adversary">1.1. Adversary Model</a></span></dt><dt><span class="sect2"><a href="#requirements">1.2. Torbutton Requirements</a></span></dt><dt><span class="sect2"><a href="#layout">1.3. Extension Layout</a></span></dt></dl></dd><dt><span class="sect1"><a href="#components">2. Components</a></span></dt><dd><dl><dt><span class="sect2"><a href="#hookedxpcom">2.1. Hooked Components</a></span></dt><dt><span class="sect2"><a href="#id2682565">2.2. New Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2661538">3. Chrome</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2683477">3.1. XUL Windows and Overlays</a></span></dt><dt><span class="sect2"><a href="#id2679782">3.2. Major Chrome Observers</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2682210">4. Toggle Code Path</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2678571">4.1. Button Click</a></span></dt><dt><span class="sect2"><a href="#id2677555">4.2. Proxy Update</a></span></dt><dt><span class="sect2"><a href="#id2671739">4.3. Settings Update</a></span></dt><dt><span class="sect2"><a href="#preferences">4.4. Firefox preferences touched during Toggle</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2684076">5. Description of Options</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2686457">5.1. Proxy Settings</a></span></dt><dt><span class="sect2"><a href="#id2685583">5.2. Dynamic Content Settings</a></span></dt><dt><span class="sect2"><a href="#id2695607">5.3. History and Forms Settings</a></span></dt><dt><span class="sect2"><a href="#id2695921">5.4. Cache Settings</a></span></dt><dt><span class="sect2"><a href="#id2696030">5.5. Cookie and Auth Settings</a></span></dt><dt><span class="sect2"><a href="#id2696343">5.6. Startup Settings</a></span></dt><dt><span class="sect2"><a href="#id2696457">5.7. Shutdown Settings</a></span></dt><dt><span class="sect2"><a href="#id2696517">5.8. Header Settings</a></span></dt></dl></dd><dt><span class="sect1"><a href="#FirefoxBugs">6. Relevant Firefox Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#FirefoxSecurity">6.1. Bugs impacting security</a></span></dt><dt><span class="sect2"><a href="#FirefoxWishlist">6.2. Bugs blocking functionality</a></span></dt><dt><span class="sect2"><a href="#FirefoxMiscBugs">6.3. Low Priority Bugs</a></span></dt></dl></dd><dt><span class="sect1"><a href="#TestPlan">7. Testing</a></span></dt><dd><dl><dt><span class="sect2"><a href="#SingleStateTesting">7.1. Single state testing</a></span></dt><dt><span class="sect2"><a href="#id2698010">7.2. Multi-state testing</a></span></dt><dt><span class="sect2"><a href="#HackTorbutton">7.3. Active testing (aka How to Hack Torbutton)</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="id2657298"></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>Torbutton Design Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /></head><body><div class="article" title="Torbutton Design Documentation"><div class="titlepage"><div><div><h2 class="title"><a id="design"></a>Torbutton Design Documentation</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.fscked/org">mikeperry.fscked/org</a>&gt;</code></p></div></div></div></div><div><p class="pubdate">Apr 10 2011</p></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2666923">1. Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="#adversary">1.1. Adversary Model</a></span></dt><dt><span class="sect2"><a href="#requirements">1.2. Torbutton Requirements</a></span></dt><dt><span class="sect2"><a href="#layout">1.3. Extension Layout</a></span></dt></dl></dd><dt><span class="sect1"><a href="#components">2. Components</a></span></dt><dd><dl><dt><span class="sect2"><a href="#hookedxpcom">2.1. Hooked Components</a></span></dt><dt><span class="sect2"><a href="#id2690319">2.2. New Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2681735">3. Chrome</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2702019">3.1. XUL Windows and Overlays</a></span></dt><dt><span class="sect2"><a href="#id2694797">3.2. Major Chrome Observers</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2696524">4. Toggle Code Path</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2699452">4.1. Button Click</a></span></dt><dt><span class="sect2"><a href="#id2697978">4.2. Proxy Update</a></span></dt><dt><span class="sect2"><a href="#id2697015">4.3. Settings Update</a></span></dt><dt><span class="sect2"><a href="#preferences">4.4. Firefox preferences touched during Toggle</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2702702">5. Description of Options</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2704948">5.1. Proxy Settings</a></span></dt><dt><span class="sect2"><a href="#id2686645">5.2. Dynamic Content Settings</a></span></dt><dt><span class="sect2"><a href="#id2705261">5.3. History and Forms Settings</a></span></dt><dt><span class="sect2"><a href="#id2705577">5.4. Cache Settings</a></span></dt><dt><span class="sect2"><a href="#id2705686">5.5. Cookie and Auth Settings</a></span></dt><dt><span class="sect2"><a href="#id2705999">5.6. Startup Settings</a></span></dt><dt><span class="sect2"><a href="#id2706113">5.7. Shutdown Settings</a></span></dt><dt><span class="sect2"><a href="#id2706173">5.8. Header Settings</a></span></dt></dl></dd><dt><span class="sect1"><a href="#FirefoxBugs">6. Relevant Firefox Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="#TorBrowserBugs">6.1. Tor Browser Bugs</a></span></dt><dt><span class="sect2"><a href="#ToggleModelBugs">6.2. Toggle Model Bugs</a></span></dt></dl></dd><dt><span class="sect1"><a href="#TestPlan">7. Testing</a></span></dt><dd><dl><dt><span class="sect2"><a href="#SingleStateTesting">7.1. Single state testing</a></span></dt><dt><span class="sect2"><a href="#id2707624">7.2. Multi-state testing</a></span></dt><dt><span class="sect2"><a href="#HackTorbutton">7.3. Active testing (aka How to Hack Torbutton)</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="id2666923"></a>1. Introduction</h2></div></div></div><p>
4 4
 
5 5
 This document describes the goals, operation, and testing procedures of the
6 6
 Torbutton Firefox extension. It is current as of Torbutton 1.3.2.
... ...
@@ -195,11 +195,16 @@ From the above Adversary Model, a number of requirements become clear.
195 195
 MUST NOT bypass Tor proxy settings for any content.</p></li><li class="listitem"><a id="state"></a><span class="command"><strong>State Separation</strong></span><p>Browser state (cookies, cache, history, 'DOM storage'), accumulated in
196 196
  one Tor state MUST NOT be accessible via the network in
197 197
  another Tor state.</p></li><li class="listitem"><a id="isolation"></a><span class="command"><strong>Network Isolation</strong></span><p>Pages MUST NOT perform any network activity in a Tor state different
198
- from the state they were originally loaded in.</p></li><li class="listitem"><a id="undiscoverability"></a><span class="command"><strong>Tor Undiscoverability</strong></span><p>With
198
+ from the state they were originally loaded in.</p><p>Note that this requirement is
199
+being de-emphasized due to the coming shift to supporting only the Tor Browser
200
+Bundles, which do not support a Toggle operation.</p></li><li class="listitem"><a id="undiscoverability"></a><span class="command"><strong>Tor Undiscoverability</strong></span><p>With
199 201
 the advent of bridge support in Tor 0.2.0.x, there are now a class of Tor
200 202
 users whose network fingerprint does not obviously betray the fact that they
201 203
 are using Tor. This should extend to the browser as well - Torbutton MUST NOT 
202
-reveal its presence while Tor is disabled.</p></li><li class="listitem"><a id="disk"></a><span class="command"><strong>Disk Avoidance</strong></span><p>The browser SHOULD NOT write any Tor-related state to disk, or store it
204
+reveal its presence while Tor is disabled.
205
+</p><p>Note that this requirement is
206
+being de-emphasized due to the coming shift to supporting only the Tor Browser
207
+Bundles, which do not support a Toggle operation.</p></li><li class="listitem"><a id="disk"></a><span class="command"><strong>Disk Avoidance</strong></span><p>The browser SHOULD NOT write any Tor-related state to disk, or store it
203 208
  in memory beyond the duration of one Tor toggle.</p></li><li class="listitem"><a id="location"></a><span class="command"><strong>Location Neutrality</strong></span><p>The browser SHOULD NOT leak location-specific information, such as
204 209
  timezone or locale via Tor.</p></li><li class="listitem"><a id="setpreservation"></a><span class="command"><strong>Anonymity Set
205 210
 Preservation</strong></span><p>The browser SHOULD NOT leak any other anonymity
... ...
@@ -250,7 +255,7 @@ do not obey proxy settings, they can be manipulated to automatically connect
250 255
 back to arbitrary servers outside of Tor with no user intervention. Fixing
251 256
 this issue helps to satisfy Torbutton's <a class="link" href="#proxy">Proxy
252 257
 Obedience</a> Requirement.
253
- </p></div><div class="sect3" title="@mozilla.org/browser/global-history;2 - components/ignore-history.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2669566"></a><a class="ulink" href="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/browser/global-history;2" target="_top">@mozilla.org/browser/global-history;2</a>
258
+ </p></div><div class="sect3" title="@mozilla.org/browser/global-history;2 - components/ignore-history.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2696239"></a><a class="ulink" href="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/browser/global-history;2" target="_top">@mozilla.org/browser/global-history;2</a>
254 259
 - <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/ignore-history.js" target="_top">components/ignore-history.js</a></h4></div></div></div><p>This component was contributed by <a class="ulink" href="http://www.collinjackson.com/" target="_top">Collin Jackson</a> as a method for defeating
255 260
 CSS and Javascript-based methods of history disclosure. The global-history
256 261
 component is what is used by Firefox to determine if a link was visited or not
... ...
@@ -278,7 +283,7 @@ firing in the event the browser starts in Tor mode.
278 283
 This component helps satisfy the <a class="link" href="#isolation">Network
279 284
 Isolation</a> and <a class="link" href="#setpreservation">Anonymity Set
280 285
 Preservation</a> requirements.
281
-</p></div></div><div class="sect2" title="2.2. New Components"><div class="titlepage"><div><div><h3 class="title"><a id="id2682565"></a>2.2. New Components</h3></div></div></div><p>Torbutton creates four new components that are used throughout the
286
+</p></div></div><div class="sect2" title="2.2. New Components"><div class="titlepage"><div><div><h3 class="title"><a id="id2690319"></a>2.2. New Components</h3></div></div></div><p>Torbutton creates four new components that are used throughout the
282 287
 extension. These components do not hook any interfaces, nor are they used
283 288
 anywhere besides Torbutton itself.</p><div class="sect3" title="@torproject.org/cookie-jar-selector;2 - components/cookie-jar-selector.js"><div class="titlepage"><div><div><h4 class="title"><a id="cookiejar"></a><a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/cookie-jar-selector.js" target="_top">@torproject.org/cookie-jar-selector;2
284 289
 - components/cookie-jar-selector.js</a></h4></div></div></div><p>The cookie jar selector (also based on code from <a class="ulink" href="http://www.collinjackson.com/" target="_top">Collin
... ...
@@ -290,7 +295,7 @@ state from the XML store.
290 295
 </p><p>
291 296
 This component helps to address the <a class="link" href="#state">State
292 297
 Isolation</a> requirement of Torbutton.
293
-</p></div><div class="sect3" title="@torproject.org/torbutton-logger;1 - components/torbutton-logger.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2694914"></a><a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/torbutton-logger.js" target="_top">@torproject.org/torbutton-logger;1
298
+</p></div><div class="sect3" title="@torproject.org/torbutton-logger;1 - components/torbutton-logger.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2683534"></a><a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/torbutton-logger.js" target="_top">@torproject.org/torbutton-logger;1
294 299
 - components/torbutton-logger.js</a></h4></div></div></div><p>The torbutton logger component allows on-the-fly redirection of torbutton
295 300
 logging messages to either Firefox stderr
296 301
 (<span class="command"><strong>extensions.torbutton.logmethod=0</strong></span>), the Javascript error console
... ...
@@ -371,17 +376,17 @@ reason are not passed to the Firefox content policy itself (see Firefox Bugs
371 376
 </p><p>
372 377
 
373 378
 This helps to fulfill both the <a class="link" href="#setpreservation">Anonymity Set Preservation</a> and the <a class="link" href="#undiscoverability">Tor Undiscoverability</a> requirements of
374
-Torbutton.</p></div></div></div><div class="sect1" title="3. Chrome"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2661538"></a>3. Chrome</h2></div></div></div><p>The chrome is where all the torbutton graphical elements and windows are
375
-located. </p><div class="sect2" title="3.1. XUL Windows and Overlays"><div class="titlepage"><div><div><h3 class="title"><a id="id2683477"></a>3.1. XUL Windows and Overlays</h3></div></div></div><p>
379
+Torbutton.</p></div></div></div><div class="sect1" title="3. Chrome"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2681735"></a>3. Chrome</h2></div></div></div><p>The chrome is where all the torbutton graphical elements and windows are
380
+located. </p><div class="sect2" title="3.1. XUL Windows and Overlays"><div class="titlepage"><div><div><h3 class="title"><a id="id2702019"></a>3.1. XUL Windows and Overlays</h3></div></div></div><p>
376 381
 Each window is described as an <a class="ulink" href="http://developer.mozilla.org/en/docs/XUL_Reference" target="_top">XML file</a>, with zero or more Javascript
377 382
 files attached. The scope of these Javascript files is their containing
378 383
 window. XUL files that add new elements and script to existing Firefox windows
379 384
 are called overlays.</p><div class="sect3" title="Browser Overlay - torbutton.xul"><div class="titlepage"><div><div><h4 class="title"><a id="browseroverlay"></a>Browser Overlay - <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/torbutton.xul" target="_top">torbutton.xul</a></h4></div></div></div><p>The browser overlay, torbutton.xul, defines the toolbar button, the status
380 385
 bar, and events for toggling the button. The overlay code is in <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/torbutton.js" target="_top">chrome/content/torbutton.js</a>.
381 386
 It contains event handlers for preference update, shutdown, upgrade, and
382
-location change events.</p></div><div class="sect3" title="Preferences Window - preferences.xul"><div class="titlepage"><div><div><h4 class="title"><a id="id2672297"></a>Preferences Window - <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/preferences.xul" target="_top">preferences.xul</a></h4></div></div></div><p>The preferences window of course lays out the Torbutton preferences, with
383
-handlers located in <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/preferences.js" target="_top">chrome/content/preferences.js</a>.</p></div><div class="sect3" title="Other Windows"><div class="titlepage"><div><div><h4 class="title"><a id="id2689726"></a>Other Windows</h4></div></div></div><p>There are additional windows that describe popups for right clicking on
384
-the status bar, the toolbutton, and the about page.</p></div></div><div class="sect2" title="3.2. Major Chrome Observers"><div class="titlepage"><div><div><h3 class="title"><a id="id2679782"></a>3.2. Major Chrome Observers</h3></div></div></div><p>
387
+location change events.</p></div><div class="sect3" title="Preferences Window - preferences.xul"><div class="titlepage"><div><div><h4 class="title"><a id="id2704559"></a>Preferences Window - <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/preferences.xul" target="_top">preferences.xul</a></h4></div></div></div><p>The preferences window of course lays out the Torbutton preferences, with
388
+handlers located in <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/preferences.js" target="_top">chrome/content/preferences.js</a>.</p></div><div class="sect3" title="Other Windows"><div class="titlepage"><div><div><h4 class="title"><a id="id2669673"></a>Other Windows</h4></div></div></div><p>There are additional windows that describe popups for right clicking on
389
+the status bar, the toolbutton, and the about page.</p></div></div><div class="sect2" title="3.2. Major Chrome Observers"><div class="titlepage"><div><div><h3 class="title"><a id="id2694797"></a>3.2. Major Chrome Observers</h3></div></div></div><p>
385 390
 In addition to the <a class="link" href="#components" title="2. Components">components described
386 391
 above</a>, Torbutton also instantiates several observers in the browser
387 392
 overlay window. These mostly grew due to scoping convenience, and many should
... ...
@@ -435,7 +440,7 @@ state tags, plugin permissions, and install the Javascript hooks to hook the
435 440
 <a class="ulink" href="https://developer.mozilla.org/en/DOM/window.screen" target="_top">window.screen</a>
436 441
 object to obfuscate browser and desktop resolution information.
437 442
 
438
-</p></li></ol></div></div></div><div class="sect1" title="4. Toggle Code Path"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2682210"></a>4. Toggle Code Path</h2></div></div></div><p>
443
+</p></li></ol></div></div></div><div class="sect1" title="4. Toggle Code Path"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2696524"></a>4. Toggle Code Path</h2></div></div></div><p>
439 444
 
440 445
 The act of toggling is connected to <code class="function">torbutton_toggle()</code>
441 446
 via the <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/torbutton.xul" target="_top">torbutton.xul</a>
... ...
@@ -456,7 +461,7 @@ conditions and leakage, especially with <a class="ulink" href="https://bugzilla.
456 461
 409737</a> unfixed. The content policy does not allow any network activity
457 462
 whatsoever during this three stage transition.
458 463
 
459
- </p><div class="sect2" title="4.1. Button Click"><div class="titlepage"><div><div><h3 class="title"><a id="id2678571"></a>4.1. Button Click</h3></div></div></div><p>
464
+ </p><div class="sect2" title="4.1. Button Click"><div class="titlepage"><div><div><h3 class="title"><a id="id2699452"></a>4.1. Button Click</h3></div></div></div><p>
460 465
 
461 466
 This is the first step in the toggling process. When the user clicks the
462 467
 toggle button or the toolbar, <code class="function">torbutton_toggle()</code> is
... ...
@@ -469,7 +474,7 @@ observer</a>
469 474
 <span class="command"><strong>torbutton_unique_pref_observer</strong></span> to perform the rest of the
470 475
 toggle.
471 476
 
472
-  </p></div><div class="sect2" title="4.2. Proxy Update"><div class="titlepage"><div><div><h3 class="title"><a id="id2677555"></a>4.2. Proxy Update</h3></div></div></div><p>
477
+  </p></div><div class="sect2" title="4.2. Proxy Update"><div class="titlepage"><div><div><h3 class="title"><a id="id2697978"></a>4.2. Proxy Update</h3></div></div></div><p>
473 478
 
474 479
 When Torbutton receives any proxy change notifications via its
475 480
 <span class="command"><strong>torbutton_unique_pref_observer</strong></span>, it calls
... ...
@@ -484,7 +489,7 @@ value. This is decoupled from the button click functionality via the pref
484 489
 observer so that other addons (such as SwitchProxy) can switch the proxy
485 490
 settings between multiple proxies.
486 491
 
487
-  </p></div><div class="sect2" title="4.3. Settings Update"><div class="titlepage"><div><div><h3 class="title"><a id="id2671739"></a>4.3. Settings Update</h3></div></div></div><p>
492
+  </p></div><div class="sect2" title="4.3. Settings Update"><div class="titlepage"><div><div><h3 class="title"><a id="id2697015"></a>4.3. Settings Update</h3></div></div></div><p>
488 493
 
489 494
 The next stage is also handled by
490 495
 <code class="function">torbutton_update_status()</code>. This function sets scores of
... ...
@@ -611,10 +616,10 @@ enabled. This helps Torbutton fulfill its <a class="link" href="#disk">Disk
611 616
 Avoidance</a> and <a class="link" href="#state">State Separation</a>
612 617
 requirements.
613 618
 
614
-   </p></li></ol></div></div></div><div class="sect1" title="5. Description of Options"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2684076"></a>5. Description of Options</h2></div></div></div><p>This section provides a detailed description of Torbutton's options. Each
619
+   </p></li></ol></div></div></div><div class="sect1" title="5. Description of Options"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2702702"></a>5. Description of Options</h2></div></div></div><p>This section provides a detailed description of Torbutton's options. Each
615 620
 option is presented as the string from the preferences window, a summary, the
616 621
 preferences it touches, and the effect this has on the components, chrome, and
617
-browser properties.</p><div class="sect2" title="5.1. Proxy Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2686457"></a>5.1. Proxy Settings</h3></div></div></div><div class="sect3" title="Test Settings"><div class="titlepage"><div><div><h4 class="title"><a id="id2688146"></a>Test Settings</h4></div></div></div><p>
622
+browser properties.</p><div class="sect2" title="5.1. Proxy Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2704948"></a>5.1. Proxy Settings</h3></div></div></div><div class="sect3" title="Test Settings"><div class="titlepage"><div><div><h4 class="title"><a id="id2683681"></a>Test Settings</h4></div></div></div><p>
618 623
 This button under the Proxy Settings tab provides a way to verify that the 
619 624
 proxy settings are correct, and actually do route through the Tor network. It
620 625
 performs this check by issuing an <a class="ulink" href="http://developer.mozilla.org/en/docs/XMLHttpRequest" target="_top">XMLHTTPRequest</a>
... ...
@@ -629,7 +634,7 @@ Presenting the results to the user is handled by the <a class="ulink" href="http
629 634
 window</a>
630 635
 callback <code class="function">torbutton_prefs_test_settings()</code> in <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/preferences.js" target="_top">preferences.js</a>.  
631 636
 
632
-  </p></div></div><div class="sect2" title="5.2. Dynamic Content Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2685583"></a>5.2. Dynamic Content Settings</h3></div></div></div><div class="sect3" title="Disable plugins on Tor Usage (crucial)"><div class="titlepage"><div><div><h4 class="title"><a id="plugins"></a>Disable plugins on Tor Usage (crucial)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.no_tor_plugins</strong></span></p><p>Java and plugins <a class="ulink" href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/class-use/NetworkInterface.html" target="_top">can query</a> the <a class="ulink" href="http://www.rgagnon.com/javadetails/java-0095.html" target="_top">local IP
637
+  </p></div></div><div class="sect2" title="5.2. Dynamic Content Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2686645"></a>5.2. Dynamic Content Settings</h3></div></div></div><div class="sect3" title="Disable plugins on Tor Usage (crucial)"><div class="titlepage"><div><div><h4 class="title"><a id="plugins"></a>Disable plugins on Tor Usage (crucial)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.no_tor_plugins</strong></span></p><p>Java and plugins <a class="ulink" href="http://java.sun.com/j2se/1.5.0/docs/api/java/net/class-use/NetworkInterface.html" target="_top">can query</a> the <a class="ulink" href="http://www.rgagnon.com/javadetails/java-0095.html" target="_top">local IP
633 638
 address</a> and report it back to the
634 639
 remote site. They can also <a class="ulink" href="http://decloak.net" target="_top">bypass proxy settings</a> and directly connect to a
635 640
 remote site without Tor. Every browser plugin we have tested with Firefox has
... ...
@@ -673,7 +678,7 @@ all this and the plugin managed to find some way to load.
673 678
 Since most plugins completely ignore browser proxy settings, the actions
674 679
 performed by this setting are crucial to satisfying the <a class="link" href="#proxy">Proxy Obedience</a> requirement.
675 680
 
676
- </p></div><div class="sect3" title="Isolate Dynamic Content to Tor State (crucial)"><div class="titlepage"><div><div><h4 class="title"><a id="id2684833"></a>Isolate Dynamic Content to Tor State (crucial)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.isolate_content</strong></span></p><p>Enabling this preference is what enables the <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/cssblocker.js" target="_top">@torproject.org/cssblocker;1</a> content policy
681
+ </p></div><div class="sect3" title="Isolate Dynamic Content to Tor State (crucial)"><div class="titlepage"><div><div><h4 class="title"><a id="id2688604"></a>Isolate Dynamic Content to Tor State (crucial)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.isolate_content</strong></span></p><p>Enabling this preference is what enables the <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/cssblocker.js" target="_top">@torproject.org/cssblocker;1</a> content policy
677 682
 mentioned above, and causes it to block content load attempts in pages an
678 683
 opposite Tor state from the current state. Freshly loaded <a class="ulink" href="https://developer.mozilla.org/en/XUL/tabbrowser" target="_top">browser
679 684
 tabs</a> are tagged
... ...
@@ -725,7 +730,8 @@ We are still looking for a workaround as of Torbutton 1.3.2.
725 730
 
726 731
 
727 732
 
728
-</p></div><div class="sect3" title="Resize windows to multiples of 50px during Tor usage (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2653668"></a>Resize windows to multiples of 50px during Tor usage (recommended)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.resize_windows</strong></span></p><p>
733
+
734
+</p></div><div class="sect3" title="Resize windows to multiples of 50px during Tor usage (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2663307"></a>Resize windows to multiples of 50px during Tor usage (recommended)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.resize_windows</strong></span></p><p>
729 735
 
730 736
 This option drastically cuts down on the number of distinct anonymity sets
731 737
 that divide the Tor web userbase. Without this setting, the dimensions for a
... ...
@@ -760,7 +766,7 @@ infer toolbar size/presence by the distance to the nearest 50 pixel roundoff).
760 766
 
761 767
 </p><p>
762 768
 This setting helps to meet the <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirements.
763
-</p></div><div class="sect3" title="Disable Search Suggestions during Tor (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2653753"></a>Disable Search Suggestions during Tor (recommended)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.no_search</strong></span></p><p>
769
+</p></div><div class="sect3" title="Disable Search Suggestions during Tor (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2663391"></a>Disable Search Suggestions during Tor (recommended)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.no_search</strong></span></p><p>
764 770
 This setting causes Torbutton to disable <a class="ulink" href="http://kb.mozillazine.org/Browser.search.suggest.enabled" target="_top"><span class="command"><strong>browser.search.suggest.enabled</strong></span></a>
765 771
 during Tor usage.
766 772
 This governs if you get Google search suggestions during Tor
... ...
@@ -771,7 +777,7 @@ this is recommended to be disabled.
771 777
 While this setting doesn't satisfy any Torbutton requirements, the fact that
772 778
 cookies are transmitted for partially typed queries does not seem desirable
773 779
 for Tor usage.
774
-</p></div><div class="sect3" title="Disable Updates During Tor"><div class="titlepage"><div><div><h4 class="title"><a id="id2653792"></a>Disable Updates During Tor</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.no_updates</strong></span></p><p>This setting causes Torbutton to disable the four <a class="ulink" href="http://wiki.mozilla.org/Update:Users/Checking_For_Updates#Preference_Controls_and_State" target="_top">Firefox
780
+</p></div><div class="sect3" title="Disable Updates During Tor"><div class="titlepage"><div><div><h4 class="title"><a id="id2663430"></a>Disable Updates During Tor</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.no_updates</strong></span></p><p>This setting causes Torbutton to disable the four <a class="ulink" href="http://wiki.mozilla.org/Update:Users/Checking_For_Updates#Preference_Controls_and_State" target="_top">Firefox
775 781
 update settings</a> during Tor
776 782
   usage: <span class="command"><strong>extensions.update.enabled</strong></span>,
777 783
 <span class="command"><strong>app.update.enabled</strong></span>,
... ...
@@ -781,7 +787,7 @@ update settings</a> during Tor
781 787
   checking for search plugin updates while Tor is enabled.
782 788
   </p><p>
783 789
 This setting satisfies the <a class="link" href="#updates">Update Safety</a> requirement.
784
-</p></div><div class="sect3" title="Redirect Torbutton Updates Via Tor (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2653854"></a>Redirect Torbutton Updates Via Tor (recommended)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.update_torbutton_via_tor</strong></span></p><p>This setting causes Torbutton to install an
790
+</p></div><div class="sect3" title="Redirect Torbutton Updates Via Tor (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2663492"></a>Redirect Torbutton Updates Via Tor (recommended)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.update_torbutton_via_tor</strong></span></p><p>This setting causes Torbutton to install an
785 791
 
786 792
 <a class="ulink" href="https://developer.mozilla.org/en/nsIProtocolProxyFilter" target="_top">nsIProtocolProxyFilter</a>
787 793
 in order to redirect all version update checks and Torbutton update downloads
... ...
@@ -790,7 +796,7 @@ concerns about data retention done by <a class="ulink" href="https://www.addons.
790 796
 help censored users meet the <a class="link" href="#undiscoverability">Tor
791 797
 Undiscoverability</a> requirement.
792 798
 
793
-  </p></div><div class="sect3" title="Disable livemarks updates during Tor usage (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2653898"></a>Disable livemarks updates during Tor usage (recommended)</h4></div></div></div><p>Option:
799
+  </p></div><div class="sect3" title="Disable livemarks updates during Tor usage (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2663536"></a>Disable livemarks updates during Tor usage (recommended)</h4></div></div></div><p>Option:
794 800
    </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.disable_livemarks</strong></span></td></tr></table><p>
795 801
   </p><p>
796 802
 
... ...
@@ -805,7 +811,7 @@ service</a> when Tor is enabled.
805 811
 This helps satisfy the <a class="link" href="#isolation">Network
806 812
 Isolation</a> and <a class="link" href="#setpreservation">Anonymity Set
807 813
 Preservation</a> requirements.
808
-</p></div><div class="sect3" title="Block Tor/Non-Tor access to network from file:// urls (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2653969"></a>Block Tor/Non-Tor access to network from file:// urls (recommended)</h4></div></div></div><p>Options:
814
+</p></div><div class="sect3" title="Block Tor/Non-Tor access to network from file:// urls (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2663607"></a>Block Tor/Non-Tor access to network from file:// urls (recommended)</h4></div></div></div><p>Options:
809 815
    </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.block_tor_file_net</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.block_nontor_file_net</strong></span></td></tr></table><p>
810 816
   </p><p>
811 817
 
... ...
@@ -825,7 +831,7 @@ Isolation</a> requirement, by preventing file urls from executing network
825 831
 operations in opposite Tor states. Also, allowing pages to submit arbitrary
826 832
 files to arbitrary sites just generally seems like a bad idea.
827 833
 
828
-</p></div><div class="sect3" title="Close all Tor/Non-Tor tabs and windows on toggle (optional)"><div class="titlepage"><div><div><h4 class="title"><a id="id2654041"></a>Close all Tor/Non-Tor tabs and windows on toggle (optional)</h4></div></div></div><p>Options:
834
+</p></div><div class="sect3" title="Close all Tor/Non-Tor tabs and windows on toggle (optional)"><div class="titlepage"><div><div><h4 class="title"><a id="id2663679"></a>Close all Tor/Non-Tor tabs and windows on toggle (optional)</h4></div></div></div><p>Options:
829 835
    </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.close_nontor</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.close_tor</strong></span></td></tr></table><p>
830 836
   </p><p>
831 837
 
... ...
@@ -849,7 +855,7 @@ out longer than necessary.
849 855
 While this setting doesn't satisfy any Torbutton requirements, the fact that
850 856
 cookies are transmitted for partially typed queries does not seem desirable
851 857
 for Tor usage.
852
-</p></div></div><div class="sect2" title="5.3. History and Forms Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2695607"></a>5.3. History and Forms Settings</h3></div></div></div><div class="sect3" title="Isolate Access to History navigation to Tor state (crucial)"><div class="titlepage"><div><div><h4 class="title"><a id="id2695612"></a>Isolate Access to History navigation to Tor state (crucial)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.block_js_history</strong></span></p><p>
858
+</p></div></div><div class="sect2" title="5.3. History and Forms Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2705261"></a>5.3. History and Forms Settings</h3></div></div></div><div class="sect3" title="Isolate Access to History navigation to Tor state (crucial)"><div class="titlepage"><div><div><h4 class="title"><a id="id2705267"></a>Isolate Access to History navigation to Tor state (crucial)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.block_js_history</strong></span></p><p>
853 859
 This setting determines if Torbutton installs an <a class="ulink" href="http://www.oxymoronical.com/experiments/apidocs/interface/nsISHistoryListener" target="_top">nsISHistoryListener</a>
854 860
 attached to the <a class="ulink" href="http://www.oxymoronical.com/experiments/apidocs/interface/nsISHistory" target="_top">sessionHistory</a> of 
855 861
 of each browser's <a class="ulink" href="https://developer.mozilla.org/en/XUL%3aProperty%3awebNavigation" target="_top">webNavigatator</a>.
... ...
@@ -877,7 +883,7 @@ This setting helps to fulfill Torbutton's <a class="link" href="#state">State
877 883
 Separation</a> and (until Bug 409737 is fixed) <a class="link" href="#isolation">Network Isolation</a>
878 884
 requirements.
879 885
 
880
-   </p></div><div class="sect3" title="History Access Settings"><div class="titlepage"><div><div><h4 class="title"><a id="id2695690"></a>History Access Settings</h4></div></div></div><p>Options:
886
+   </p></div><div class="sect3" title="History Access Settings"><div class="titlepage"><div><div><h4 class="title"><a id="id2705344"></a>History Access Settings</h4></div></div></div><p>Options:
881 887
   </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.block_thread</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.block_nthread</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.block_thwrite</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.block_nthwrite</strong></span></td></tr></table><p>
882 888
   </p><p>On Firefox 3.x, these four settings govern the behavior of the <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/ignore-history.js" target="_top">components/ignore-history.js</a>
883 889
 history blocker component mentioned above. By hooking the browser's view of
... ...
@@ -898,12 +904,12 @@ above prefs. We then only need to link the write prefs to
898 904
 history store while set.
899 905
 </p><p>
900 906
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
901
-</p></div><div class="sect3" title="Clear History During Tor Toggle (optional)"><div class="titlepage"><div><div><h4 class="title"><a id="id2695816"></a>Clear History During Tor Toggle (optional)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_history</strong></span></p><p>This setting governs if Torbutton calls
907
+</p></div><div class="sect3" title="Clear History During Tor Toggle (optional)"><div class="titlepage"><div><div><h4 class="title"><a id="id2705472"></a>Clear History During Tor Toggle (optional)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_history</strong></span></p><p>This setting governs if Torbutton calls
902 908
 <a class="ulink" href="https://developer.mozilla.org/en/nsIBrowserHistory#removeAllPages.28.29" target="_top">nsIBrowserHistory.removeAllPages</a>
903 909
 and <a class="ulink" href="http://www.oxymoronical.com/experiments/apidocs/interface/nsISHistory" target="_top">nsISHistory.PurgeHistory</a>
904 910
 for each tab on Tor toggle.</p><p>
905 911
 This setting is an optional way to help satisfy the <a class="link" href="#state">State Separation</a> requirement.
906
-</p></div><div class="sect3" title="Block Password+Form saving during Tor/Non-Tor"><div class="titlepage"><div><div><h4 class="title"><a id="id2695859"></a>Block Password+Form saving during Tor/Non-Tor</h4></div></div></div><p>Options:
912
+</p></div><div class="sect3" title="Block Password+Form saving during Tor/Non-Tor"><div class="titlepage"><div><div><h4 class="title"><a id="id2705515"></a>Block Password+Form saving during Tor/Non-Tor</h4></div></div></div><p>Options:
907 913
   </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.block_tforms</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.block_ntforms</strong></span></td></tr></table><p>
908 914
   </p><p>These settings govern if Torbutton disables
909 915
 <span class="command"><strong>browser.formfill.enable</strong></span>
... ...
@@ -912,19 +918,19 @@ Since form fields can be read at any time by Javascript, this setting is a lot
912 918
 more important than it seems.
913 919
 </p><p>
914 920
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
915
-</p></div></div><div class="sect2" title="5.4. Cache Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2695921"></a>5.4. Cache Settings</h3></div></div></div><div class="sect3" title="Block Tor disk cache and clear all cache on Tor Toggle"><div class="titlepage"><div><div><h4 class="title"><a id="id2695926"></a>Block Tor disk cache and clear all cache on Tor Toggle</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_cache</strong></span>
921
+</p></div></div><div class="sect2" title="5.4. Cache Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2705577"></a>5.4. Cache Settings</h3></div></div></div><div class="sect3" title="Block Tor disk cache and clear all cache on Tor Toggle"><div class="titlepage"><div><div><h4 class="title"><a id="id2705582"></a>Block Tor disk cache and clear all cache on Tor Toggle</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_cache</strong></span>
916 922
   </p><p>This option causes Torbutton to call <a class="ulink" href="https://developer.mozilla.org/en/nsICacheService#evictEntries.28.29" target="_top">nsICacheService.evictEntries(0)</a>
917 923
 on Tor toggle to remove all entries from the cache. In addition, this setting
918 924
 causes Torbutton to set <a class="ulink" href="http://kb.mozillazine.org/Browser.cache.disk.enable" target="_top">browser.cache.disk.enable</a> to false.
919 925
 </p><p>
920 926
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
921
-</p></div><div class="sect3" title="Block disk and memory cache during Tor"><div class="titlepage"><div><div><h4 class="title"><a id="id2695976"></a>Block disk and memory cache during Tor</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.block_cache</strong></span></p><p>This setting
927
+</p></div><div class="sect3" title="Block disk and memory cache during Tor"><div class="titlepage"><div><div><h4 class="title"><a id="id2705632"></a>Block disk and memory cache during Tor</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.block_cache</strong></span></p><p>This setting
922 928
 causes Torbutton to set <a class="ulink" href="http://kb.mozillazine.org/Browser.cache.memory.enable" target="_top">browser.cache.memory.enable</a>,
923 929
 <a class="ulink" href="http://kb.mozillazine.org/Browser.cache.disk.enable" target="_top">browser.cache.disk.enable</a> and
924 930
 <a class="ulink" href="http://kb.mozillazine.org/Network.http.use-cache" target="_top">network.http.use-cache</a> to false during tor usage.
925 931
 </p><p>
926 932
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
927
-</p></div></div><div class="sect2" title="5.5. Cookie and Auth Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2696030"></a>5.5. Cookie and Auth Settings</h3></div></div></div><div class="sect3" title="Clear Cookies on Tor Toggle"><div class="titlepage"><div><div><h4 class="title"><a id="id2696035"></a>Clear Cookies on Tor Toggle</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_cookies</strong></span>
933
+</p></div></div><div class="sect2" title="5.5. Cookie and Auth Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2705686"></a>5.5. Cookie and Auth Settings</h3></div></div></div><div class="sect3" title="Clear Cookies on Tor Toggle"><div class="titlepage"><div><div><h4 class="title"><a id="id2705691"></a>Clear Cookies on Tor Toggle</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_cookies</strong></span>
928 934
   </p><p>
929 935
 
930 936
 This setting causes Torbutton to call <a class="ulink" href="https://developer.mozilla.org/en/nsICookieManager#removeAll.28.29" target="_top">nsICookieManager.removeAll()</a> on
... ...
@@ -934,7 +940,7 @@ which prevents them from being written to disk.
934 940
 
935 941
 </p><p>
936 942
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
937
-</p></div><div class="sect3" title="Store Non-Tor cookies in a protected jar"><div class="titlepage"><div><div><h4 class="title"><a id="id2696086"></a>Store Non-Tor cookies in a protected jar</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.cookie_jars</strong></span>
943
+</p></div><div class="sect3" title="Store Non-Tor cookies in a protected jar"><div class="titlepage"><div><div><h4 class="title"><a id="id2705742"></a>Store Non-Tor cookies in a protected jar</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.cookie_jars</strong></span>
938 944
   </p><p>
939 945
 
940 946
 This setting causes Torbutton to use <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/cookie-jar-selector.js" target="_top">@torproject.org/cookie-jar-selector;2</a> to store
... ...
@@ -947,15 +953,15 @@ which prevents them from being written to disk.
947 953
 
948 954
 </p><p>
949 955
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
950
-</p></div><div class="sect3" title="Store both Non-Tor and Tor cookies in a protected jar (dangerous)"><div class="titlepage"><div><div><h4 class="title"><a id="id2696143"></a>Store both Non-Tor and Tor cookies in a protected jar (dangerous)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.dual_cookie_jars</strong></span>
956
+</p></div><div class="sect3" title="Store both Non-Tor and Tor cookies in a protected jar (dangerous)"><div class="titlepage"><div><div><h4 class="title"><a id="id2705799"></a>Store both Non-Tor and Tor cookies in a protected jar (dangerous)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.dual_cookie_jars</strong></span>
951 957
   </p><p>
952 958
 
953 959
 This setting causes Torbutton to use <a class="ulink" href="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/cookie-jar-selector.js" target="_top">@torproject.org/cookie-jar-selector;2</a> to store
954 960
 both Tor and Non-Tor cookies into protected jars.
955 961
 </p><p>
956 962
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement.
957
-</p></div><div class="sect3" title="Manage My Own Cookies (dangerous)"><div class="titlepage"><div><div><h4 class="title"><a id="id2696185"></a>Manage My Own Cookies (dangerous)</h4></div></div></div><p>Options: None</p><p>This setting disables all Torbutton cookie handling by setting the above
958
-cookie prefs all to false.</p></div><div class="sect3" title="Disable DOM Storage during Tor usage (crucial)"><div class="titlepage"><div><div><h4 class="title"><a id="id2696201"></a>Disable DOM Storage during Tor usage (crucial)</h4></div></div></div><div class="sect3" title="Do not write Tor/Non-Tor cookies to disk"><div class="titlepage"><div><div><h4 class="title"><a id="id2696203"></a>Do not write Tor/Non-Tor cookies to disk</h4></div></div></div><p>Options:
963
+</p></div><div class="sect3" title="Manage My Own Cookies (dangerous)"><div class="titlepage"><div><div><h4 class="title"><a id="id2705841"></a>Manage My Own Cookies (dangerous)</h4></div></div></div><p>Options: None</p><p>This setting disables all Torbutton cookie handling by setting the above
964
+cookie prefs all to false.</p></div><div class="sect3" title="Disable DOM Storage during Tor usage (crucial)"><div class="titlepage"><div><div><h4 class="title"><a id="id2705856"></a>Disable DOM Storage during Tor usage (crucial)</h4></div></div></div><div class="sect3" title="Do not write Tor/Non-Tor cookies to disk"><div class="titlepage"><div><div><h4 class="title"><a id="id2705859"></a>Do not write Tor/Non-Tor cookies to disk</h4></div></div></div><p>Options:
959 965
   </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.tor_memory_jar</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.nontor_memory_jar</strong></span></td></tr></table><p>
960 966
   </p><p>
961 967
 These settings (contributed by arno) cause Torbutton to set <a class="ulink" href="http://kb.mozillazine.org/Network.cookie.lifetimePolicy" target="_top">network.cookie.lifetimePolicy</a>
... ...
@@ -975,13 +981,13 @@ usage to prevent
975 981
 <a class="ulink" href="http://developer.mozilla.org/en/docs/DOM:Storage" target="_top">DOM Storage</a> from
976 982
   being used to store persistent information across Tor states.</p><p>
977 983
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement.
978
-</p></div><div class="sect3" title="Clear HTTP Auth on Tor Toggle (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2696304"></a>Clear HTTP Auth on Tor Toggle (recommended)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_http_auth</strong></span>
984
+</p></div><div class="sect3" title="Clear HTTP Auth on Tor Toggle (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2705960"></a>Clear HTTP Auth on Tor Toggle (recommended)</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_http_auth</strong></span>
979 985
   </p><p>
980 986
 This setting causes Torbutton to call <a class="ulink" href="http://www.oxymoronical.com/experiments/apidocs/interface/nsIHttpAuthManager" target="_top">nsIHttpAuthManager.clearAll()</a>
981 987
 every time Tor is toggled.
982 988
 </p><p>
983 989
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement.
984
-</p></div></div><div class="sect2" title="5.6. Startup Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2696343"></a>5.6. Startup Settings</h3></div></div></div><div class="sect3" title="On Browser Startup, set Tor state to: Tor, Non-Tor"><div class="titlepage"><div><div><h4 class="title"><a id="id2696348"></a>On Browser Startup, set Tor state to: Tor, Non-Tor</h4></div></div></div><p>Options:
990
+</p></div></div><div class="sect2" title="5.6. Startup Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2705999"></a>5.6. Startup Settings</h3></div></div></div><div class="sect3" title="On Browser Startup, set Tor state to: Tor, Non-Tor"><div class="titlepage"><div><div><h4 class="title"><a id="id2706004"></a>On Browser Startup, set Tor state to: Tor, Non-Tor</h4></div></div></div><p>Options:
985 991
    <span class="command"><strong>extensions.torbutton.restore_tor</strong></span>
986 992
   </p><p>This option governs what Tor state tor is loaded in to.
987 993
 <code class="function">torbutton_set_initial_state()</code> covers the case where the
... ...
@@ -995,7 +1001,7 @@ setting helps to satisfy the <a class="link" href="#state">State Separation</a>
995 1001
 requirement in the event of Firefox crashes by ensuring all cookies,
996 1002
 settings and saved sessions are reloaded from a fixed Tor state.
997 1003
  
998
-</p></div><div class="sect3" title="Prevent session store from saving Non-Tor/Tor-loaded tabs"><div class="titlepage"><div><div><h4 class="title"><a id="id2696399"></a>Prevent session store from saving Non-Tor/Tor-loaded tabs</h4></div></div></div><p>Options: 
1004
+</p></div><div class="sect3" title="Prevent session store from saving Non-Tor/Tor-loaded tabs"><div class="titlepage"><div><div><h4 class="title"><a id="id2706055"></a>Prevent session store from saving Non-Tor/Tor-loaded tabs</h4></div></div></div><p>Options: 
999 1005
   </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.nonontor_sessionstore</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.notor_sessionstore</strong></span></td></tr></table><p>
1000 1006
   </p><p>If these options are enabled, the <a class="link" href="#tbsessionstore" title="@torproject.org/torbutton-ss-blocker;1">tbSessionStore.js</a> component uses the session
1001 1007
 store listeners to filter out the appropriate tabs before writing the session
... ...
@@ -1005,7 +1011,7 @@ This setting helps to satisfy the <a class="link" href="#disk">Disk Avoidance</a
1005 1011
 requirement, and also helps to satisfy the <a class="link" href="#state">State Separation</a> requirement in the event of Firefox
1006 1012
 crashes.
1007 1013
 
1008
-</p></div></div><div class="sect2" title="5.7. Shutdown Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2696457"></a>5.7. Shutdown Settings</h3></div></div></div><div class="sect3" title="Clear cookies on Tor/Non-Tor shutdown"><div class="titlepage"><div><div><h4 class="title"><a id="id2696463"></a>Clear cookies on Tor/Non-Tor shutdown</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.shutdown_method</strong></span>
1014
+</p></div></div><div class="sect2" title="5.7. Shutdown Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2706113"></a>5.7. Shutdown Settings</h3></div></div></div><div class="sect3" title="Clear cookies on Tor/Non-Tor shutdown"><div class="titlepage"><div><div><h4 class="title"><a id="id2706119"></a>Clear cookies on Tor/Non-Tor shutdown</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.shutdown_method</strong></span>
1009 1015
   </p><p> This option variable can actually take 3 values: 0, 1, and 2. 0 means no
1010 1016
 cookie clearing, 1 means clear only during Tor-enabled shutdown, and 2 means
1011 1017
 clear for both Tor and Non-Tor shutdown. When set to 1 or 2, Torbutton listens
... ...
@@ -1014,7 +1020,7 @@ for the <a class="ulink" href="http://developer.mozilla.org/en/docs/Observer_Not
1014 1020
 to clear out all cookies and all cookie jars upon shutdown.
1015 1021
 </p><p>
1016 1022
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement.
1017
-</p></div></div><div class="sect2" title="5.8. Header Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2696517"></a>5.8. Header Settings</h3></div></div></div><div class="sect3" title="Set user agent during Tor usage (crucial)"><div class="titlepage"><div><div><h4 class="title"><a id="id2696523"></a>Set user agent during Tor usage (crucial)</h4></div></div></div><p>Options:
1023
+</p></div></div><div class="sect2" title="5.8. Header Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2706173"></a>5.8. Header Settings</h3></div></div></div><div class="sect3" title="Set user agent during Tor usage (crucial)"><div class="titlepage"><div><div><h4 class="title"><a id="id2706179"></a>Set user agent during Tor usage (crucial)</h4></div></div></div><p>Options:
1018 1024
    </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.set_uagent</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.platform_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.oscpu_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.buildID_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.productsub_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.appname_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.appversion_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.useragent_override</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.useragent_vendor</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.useragent_vendorSub</strong></span></td></tr></table><p>
1019 1025
    </p><p>On face, user agent switching appears to be straight-forward in Firefox.
1020 1026
 It provides several options for controlling the browser user agent string:
... ...
@@ -1038,7 +1044,7 @@ certain resource:// files</a>. These cases are handled by Torbutton's
1038 1044
 
1039 1045
 </p><p>
1040 1046
 This setting helps to satisfy the <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
1041
-</p></div><div class="sect3" title="Spoof US English Browser"><div class="titlepage"><div><div><h4 class="title"><a id="id2696697"></a>Spoof US English Browser</h4></div></div></div><p>Options:
1047
+</p></div><div class="sect3" title="Spoof US English Browser"><div class="titlepage"><div><div><h4 class="title"><a id="id2706353"></a>Spoof US English Browser</h4></div></div></div><p>Options:
1042 1048
 </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.spoof_english</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.spoof_charset</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.spoof_language</strong></span></td></tr></table><p>
1043 1049
 </p><p> This option causes Torbutton to set
1044 1050
 <span class="command"><strong>general.useragent.locale</strong></span>
... ...
@@ -1049,7 +1055,7 @@ This setting helps to satisfy the <a class="link" href="#setpreservation">Anonym
1049 1055
 well as hooking <span class="command"><strong>navigator.language</strong></span> via its <a class="link" href="#jshooks" title="Hook Dangerous Javascript">javascript hooks</a>.
1050 1056
  </p><p>
1051 1057
 This setting helps to satisfy the <a class="link" href="#setpreservation">Anonymity Set Preservation</a> and <a class="link" href="#location">Location Neutrality</a> requirements.
1052
-</p></div><div class="sect3" title="Referer Spoofing Options"><div class="titlepage"><div><div><h4 class="title"><a id="id2696790"></a>Referer Spoofing Options</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.refererspoof</strong></span>
1058
+</p></div><div class="sect3" title="Referer Spoofing Options"><div class="titlepage"><div><div><h4 class="title"><a id="id2706446"></a>Referer Spoofing Options</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.refererspoof</strong></span>
1053 1059
 </p><p>
1054 1060
 This option variable has three values. If it is 0, "smart" referer spoofing is
1055 1061
 enabled. If it is 1, the referer behaves as normal. If it is 2, no referer is
... ...
@@ -1059,7 +1065,7 @@ sent. The default value is 1. The smart referer spoofing is implemented by the
1059 1065
 </p><p>
1060 1066
 This setting also does not directly satisfy any Torbutton requirement, but
1061 1067
 some may desire to mask their referer for general privacy concerns.
1062
-</p></div><div class="sect3" title="Strip platform and language off of Google Search Box queries"><div class="titlepage"><div><div><h4 class="title"><a id="id2696824"></a>Strip platform and language off of Google Search Box queries</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.fix_google_srch</strong></span>
1068
+</p></div><div class="sect3" title="Strip platform and language off of Google Search Box queries"><div class="titlepage"><div><div><h4 class="title"><a id="id2706480"></a>Strip platform and language off of Google Search Box queries</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.fix_google_srch</strong></span>
1063 1069
 </p><p> 
1064 1070
 
1065 1071
 This option causes Torbutton to use the <a class="ulink" href="https://wiki.mozilla.org/Search_Service:API" target="_top">@mozilla.org/browser/search-service;1</a>
... ...
@@ -1069,7 +1075,7 @@ platform information. This setting strips off that info while Tor is enabled.
1069 1075
 
1070 1076
 </p><p>
1071 1077
 This setting helps Torbutton to fulfill its <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
1072
-</p></div><div class="sect3" title="Automatically use an alternate search engine when presented with a Google Captcha"><div class="titlepage"><div><div><h4 class="title"><a id="id2696865"></a>Automatically use an alternate search engine when presented with a
1078
+</p></div><div class="sect3" title="Automatically use an alternate search engine when presented with a Google Captcha"><div class="titlepage"><div><div><h4 class="title"><a id="id2706521"></a>Automatically use an alternate search engine when presented with a
1073 1079
 Google Captcha</h4></div></div></div><p>Options:
1074 1080
 </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.asked_google_captcha</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.dodge_google_captcha</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.google_redir_url</strong></span></td></tr></table><p>
1075 1081
 </p><p>
... ...
@@ -1094,7 +1100,7 @@ options are duckduckgo.com, ixquick.com, bing.com, yahoo.com and scroogle.org. T
1094 1100
 encoded in the preferences
1095 1101
 <span class="command"><strong>extensions.torbutton.redir_url.[1-5]</strong></span>.
1096 1102
 
1097
-</p></div><div class="sect3" title="Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2696945"></a>Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)</h4></div></div></div><p>Options:
1103
+</p></div><div class="sect3" title="Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)"><div class="titlepage"><div><div><h4 class="title"><a id="id2706601"></a>Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)</h4></div></div></div><p>Options:
1098 1104
 </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.jar_certs</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.jar_ca_certs</strong></span></td></tr></table><p>
1099 1105
 </p><p>
1100 1106
 
... ...
@@ -1120,38 +1126,31 @@ Separation</a> requirement of Torbutton. Unfortunately, <a class="ulink" href="h
1120 1126
 is currently not exposed via the preferences UI.
1121 1127
 
1122 1128
 </p></div></div></div><div class="sect1" title="6. Relevant Firefox Bugs"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="FirefoxBugs"></a>6. Relevant Firefox Bugs</h2></div></div></div><p>
1123
-
1124
-  </p><div class="sect2" title="6.1. Bugs impacting security"><div class="titlepage"><div><div><h3 class="title"><a id="FirefoxSecurity"></a>6.1. Bugs impacting security</h3></div></div></div><p>
1129
+Future releases of Torbutton are going to be designed around supporting only
1130
+<a class="ulink" href="https://www.torproject.org/projects/torbrowser.html.en" target="_top">Tor
1131
+Browser Bundle</a>, which greatly simplifies the number and nature of Firefox
1132
+bugs we must fix. This allows us to abandon the complexities of <a class="link" href="#state">State
1133
+Separation</a> and <a class="link" href="#isolation">Network Isolation</a> requirements
1134
+associated with the Toggle Model.
1135
+  </p><div class="sect2" title="6.1. Tor Browser Bugs"><div class="titlepage"><div><div><h3 class="title"><a id="TorBrowserBugs"></a>6.1. Tor Browser Bugs</h3></div></div></div><p>
1136
+The list of Firefox patches we must create to improve privacy on the
1137
+Tor Browser Bundle are collected in the Tor Bug Tracker under <a class="ulink" href="https://trac.torproject.org/projects/tor/ticket/2871" target="_top">ticket
1138
+#2871</a>. These bugs are also applicable to the Toggle Model, and
1139
+should be considered higher priority than all Toggle Model specific bugs
1140
+below.
1141
+   </p></div><div class="sect2" title="6.2. Toggle Model Bugs"><div class="titlepage"><div><div><h3 class="title"><a id="ToggleModelBugs"></a>6.2. Toggle Model Bugs</h3></div></div></div><p>
1142
+In addition to the Tor Browser bugs, the Torbutton Toggle Model suffers from
1143
+additional bugs specific to the need to isolate state across the toggle.
1144
+Toggle model bugs are considered a lower priority than the bugs against the
1145
+Tor Browser model.
1146
+   </p><div class="sect3" title="Bugs impacting security"><div class="titlepage"><div><div><h4 class="title"><a id="FirefoxSecurity"></a>Bugs impacting security</h4></div></div></div><p>
1125 1147
 
1126 1148
 Torbutton has to work around a number of Firefox bugs that impact its
1127 1149
 security. Most of these are mentioned elsewhere in this document, but they
1128 1150
 have also been gathered here for reference. In order of decreasing severity,
1129 1151
 they are:
1130 1152
 
1131
-   </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=429070" target="_top">Bug 429070 - exposing
1132
-Components.interfaces to untrusted content leaks information about installed
1133
-extensions</a><p>
1134
-<a class="ulink" href="http://pseudo-flaw.net/" target="_top">Gregory Fleischer</a> demonstrated at Defcon 17 that these interfaces can
1135
-also be used to <a class="ulink" href="http://pseudo-flaw.net/tor/torbutton/fingerprint-firefox.html" target="_top">fingerprint
1136
-Firefox down the to the minor version</a>. Note that his test has not been
1137
-updated since 3.5.3, hence it reports 3.5.3 for more recent Firefoxes. This
1138
-bug interferes with Torbutton's ability to satisfy its <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
1139
-     </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=418986" target="_top">Bug 418986 - window.screen
1140
-provides a large amount of identifiable information</a><p>
1141
-
1142
-As <a class="link" href="#fingerprinting">mentioned above</a>, a large amount of
1143
-information is available from <a class="ulink" href="http://developer.mozilla.org/en/docs/DOM:window.screen" target="_top">window.screen</a>.
1144
-The most sensitive data to anonymity is actually that which is not used in
1145
-rendering - such as desktop resolution, and window decoration size.
1146
-Currently, there is no way to obscure this information without Javascript
1147
-hooking. In addition, many of this same desktop and window decoration
1148
-resolution information is available via <a class="ulink" href="https://developer.mozilla.org/En/CSS/Media_queries" target="_top">CSS Media
1149
-Queries</a>, so perhaps some more lower-level rendering controls or
1150
-preferences need to be provided. These issues interfere with Torbutton's
1151
-ability to fulfill its <a class="link" href="#setpreservation">Anonymity Set
1152
-Preservation</a> requirement.
1153
-
1154
-   </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=435159" target="_top">Bug 435159 -
1153
+   </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=435159" target="_top">Bug 435159 -
1155 1154
 nsNSSCertificateDB::DeleteCertificate has race conditions</a><p>
1156 1155
 
1157 1156
 In Torbutton 1.2.0rc1, code was added to attempt to isolate SSL certificates
... ...
@@ -1182,19 +1181,6 @@ for any Firefox addon to actually block authentication token submission over a
1182 1181
 TLS channel, so every addon to date (including Perspectives) is actually
1183 1182
 providing users with notification *after* their authentication tokens have
1184 1183
 already been compromised. This obviously needs to be fixed.
1185
-     </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=575230" target="_top">Bug 575230 - Provide option to
1186
-reduce precision of Date()</a><p>
1187
-
1188
-Currently it is possible to <a class="ulink" href="http://arstechnica.com/tech-policy/news/2010/02/firm-uses-typing-cadence-to-finger-unauthorized-users.ars" target="_top">fingerprint
1189
-users based on their typing cadence</a> using the high precision timer
1190
-available to javascript. Using this same precision, it is possible to compute
1191
-an identifier based upon the clock drift of the client from some nominal
1192
-source. The latter is not much of a concern for Tor users, as the variable
1193
-delay to load and run a page is measured on the order of seconds, but the high
1194
-precision timer can still be used to fingerprint aspects of a browser's
1195
-javascript engine and processor, and apparently also a user's typing cadence.
1196
-This bug hinders Torbutton's ability to satisfy its <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
1197
-
1198 1184
      </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=122752" target="_top">Bug 122752 - SOCKS
1199 1185
 Username/Password Support</a><p>
1200 1186
 We need <a class="ulink" href="https://developer.mozilla.org/en/nsIProxyInfo" target="_top">Firefox
... ...
@@ -1229,7 +1215,7 @@ to avoid fragmenting the anonymity set of users of foreign locales. This issue
1229 1215
 impedes Torbutton from fully meeting its <a class="link" href="#setpreservation">Anonymity Set Preservation</a>
1230 1216
 requirement on Firefox 3.
1231 1217
 
1232
-     </p></li></ol></div></div><div class="sect2" title="6.2. Bugs blocking functionality"><div class="titlepage"><div><div><h3 class="title"><a id="FirefoxWishlist"></a>6.2. Bugs blocking functionality</h3></div></div></div><p>
1218
+     </p></li></ol></div></div><div class="sect3" title="Bugs blocking functionality"><div class="titlepage"><div><div><h4 class="title"><a id="FirefoxWishlist"></a>Bugs blocking functionality</h4></div></div></div><p>
1233 1219
 The following bugs impact Torbutton and similar extensions' functionality.
1234 1220
    </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=629820" target="_top">Bug 629820 - nsIContentPolicy::shouldLoad not
1235 1221
 called for web request in Firefox Mobile</a><p>
... ...
@@ -1251,7 +1237,7 @@ While this doesn't have much of an effect on Torbutton, it does make writing
1251 1237
 extensions that would like to do per-tab settings and content filters (such as
1252 1238
 FoxyProxy) difficult to impossible to implement securely.
1253 1239
 
1254
-   </p></li></ol></div></div><div class="sect2" title="6.3. Low Priority Bugs"><div class="titlepage"><div><div><h3 class="title"><a id="FirefoxMiscBugs"></a>6.3. Low Priority Bugs</h3></div></div></div><p>
1240
+   </p></li></ol></div></div><div class="sect3" title="Low Priority Bugs"><div class="titlepage"><div><div><h4 class="title"><a id="FirefoxMiscBugs"></a>Low Priority Bugs</h4></div></div></div><p>
1255 1241
 The following bugs have an effect upon Torbutton, but are superseded by more
1256 1242
 practical and more easily fixable variant bugs above; or have stable, simple
1257 1243
 workarounds.
... ...
@@ -1302,49 +1288,7 @@ requirement and reveal a user's original IP address. Torbutton's code to
1302 1288
 perform this workaround has been subverted at least once already by Kyle
1303 1289
 Williams.
1304 1290
 
1305
-     </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=419598" target="_top">Bug 419598 - 'var
1306
-Date' is deletable</a><p>
1307
-
1308
-Based on Page 62 of the <a class="ulink" href="http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf" target="_top">ECMA-262
1309
-Javascript spec</a>, it seems like it should be possible to do something
1310
-like the following to prevent the Date object from being unmasked:
1311
-</p><pre class="screen">
1312
-with(window) {
1313
-    var Date = fakeDate;
1314
-    var otherVariable = 42;
1315
-}
1316
-
1317
-delete window.Date; // Should fail. Instead succeeds, revealing original Date.
1318
-delete window.otherVariable; // Fails, leaving window.otherVariable set to 42.
1319
-</pre><p>
1320
-
1321
-From the ECMA-262 spec:
1322
-
1323
-</p><div class="blockquote"><blockquote class="blockquote">
1324
-If the variable statement occurs inside a FunctionDeclaration, the variables
1325
-are defined with function-local scope in that function, as described in
1326
-s10.1.3. Otherwise, they are defined with global scope (that is, they are
1327
-created as members of the global object, as described in 10.1.3) using
1328
-property attributes { DontDelete }. Variables are created when the execution
1329
-scope is entered. A Block does not define a new execution scope. Only Program
1330
-and FunctionDeclaration produce a new scope. Variables are initialized to
1331
-undefined when created. A variable with an Initialiser is assigned the value
1332
-of its AssignmentExpression when the VariableStatement is executed, not when
1333
-the variable is created.
1334
-</blockquote></div><p>
1335
-
1336
-In fact, this is exactly how the with statement with a variable declaration
1337
-behaves <span class="emphasis"><em>for all other variables other than ones that shadow system
1338
-variables</em></span>. Some variables (such as
1339
-<span class="command"><strong>window.screen</strong></span>, and <span class="command"><strong>window.history</strong></span>) can't
1340
-even be shadowed in this way, and give an error about lacking a setter. If
1341
-such shadowing were possible, it would greatly simplify the Javascript hooking
1342
-code, which currently relies on undocumented semantics of
1343
-<span class="command"><strong>__proto__</strong></span> to copy the original values in the event of a
1344
-delete. This <span class="command"><strong>__proto__</strong></span> hack unfortunately does not work for
1345
-the Date object though.
1346
-
1347
-     </p></li></ol></div></div></div><div class="sect1" title="7. Testing"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="TestPlan"></a>7. Testing</h2></div></div></div><p>
1291
+     </p></li></ol></div></div></div></div><div class="sect1" title="7. Testing"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="TestPlan"></a>7. Testing</h2></div></div></div><p>
1348 1292
 
1349 1293
 The purpose of this section is to cover all the known ways that Tor browser
1350 1294
 security can be subverted from a penetration testing perspective. The hope
... ...
@@ -1430,13 +1374,13 @@ or complete, but it is automated and could be turned into something useful
1430 1374
 with a bit of work.
1431 1375
 
1432 1376
        </p></li></ol></div><p>
1433
-    </p></div><div class="sect2" title="7.2. Multi-state testing"><div class="titlepage"><div><div><h3 class="title"><a id="id2698010"></a>7.2. Multi-state testing</h3></div></div></div><p>
1377
+    </p></div><div class="sect2" title="7.2. Multi-state testing"><div class="titlepage"><div><div><h3 class="title"><a id="id2707624"></a>7.2. Multi-state testing</h3></div></div></div><p>
1434 1378
 
1435 1379
 The tests in this section are geared towards a page that would instruct the
1436 1380
 user to toggle their Tor state after the fetch and perform some operations:
1437 1381
 mouseovers, stray clicks, and potentially reloads.
1438 1382
 
1439
-   </p><div class="sect3" title="Cookies and Cache Correlation"><div class="titlepage"><div><div><h4 class="title"><a id="id2698022"></a>Cookies and Cache Correlation</h4></div></div></div><p>
1383
+   </p><div class="sect3" title="Cookies and Cache Correlation"><div class="titlepage"><div><div><h4 class="title"><a id="id2707636"></a>Cookies and Cache Correlation</h4></div></div></div><p>
1440 1384
 The most obvious test is to set a cookie, ask the user to toggle tor, and then
1441 1385
 have them reload the page. The cookie should no longer be set if they are
1442 1386
 using the default Torbutton settings. In addition, it is possible to leverage
... ...
@@ -1444,11 +1388,11 @@ the cache to <a class="ulink" href="http://crypto.stanford.edu/sameorigin/safeca
1444 1388
 identifiers</a>. The default settings of Torbutton should also protect
1445 1389
 against these from persisting across Tor Toggle.
1446 1390
 
1447
-    </p></div><div class="sect3" title="Javascript timers and event handlers"><div class="titlepage"><div><div><h4 class="title"><a id="id2698045"></a>Javascript timers and event handlers</h4></div></div></div><p>
1391
+    </p></div><div class="sect3" title="Javascript timers and event handlers"><div class="titlepage"><div><div><h4 class="title"><a id="id2707658"></a>Javascript timers and event handlers</h4></div></div></div><p>
1448 1392
 
1449 1393
 Javascript can set timers and register event handlers in the hopes of fetching
1450 1394
 URLs after the user has toggled Torbutton. 
1451
-    </p></div><div class="sect3" title="CSS Popups and non-script Dynamic Content"><div class="titlepage"><div><div><h4 class="title"><a id="id2698058"></a>CSS Popups and non-script Dynamic Content</h4></div></div></div><p>
1395
+    </p></div><div class="sect3" title="CSS Popups and non-script Dynamic Content"><div class="titlepage"><div><div><h4 class="title"><a id="id2707671"></a>CSS Popups and non-script Dynamic Content</h4></div></div></div><p>
1452 1396
 
1453 1397
 Even if Javascript is disabled, CSS is still able to 
1454 1398
 <a class="ulink" href="http://www.tjkdesign.com/articles/css%20pop%20ups/" target="_top">create popup-like
... ...
@@ -1473,7 +1417,7 @@ these attacks, playing with them, and reporting what you find (and potentially
1473 1417
 submitting the test cases back to be run in the standard batch of Torbutton
1474 1418
 tests.
1475 1419
 
1476
-   </p><div class="sect3" title="Some suggested vectors to investigate"><div class="titlepage"><div><div><h4 class="title"><a id="id2698112"></a>Some suggested vectors to investigate</h4></div></div></div><p>
1420
+   </p><div class="sect3" title="Some suggested vectors to investigate"><div class="titlepage"><div><div><h4 class="title"><a id="id2707726"></a>Some suggested vectors to investigate</h4></div></div></div><p>
1477 1421
     </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">Strange ways to register Javascript <a class="ulink" href="http://en.wikipedia.org/wiki/DOM_Events" target="_top">events</a> and <a class="ulink" href="http://www.devshed.com/c/a/JavaScript/Using-Timers-in-JavaScript/" target="_top">timeouts</a> should
1478 1422
 be verified to actually be ineffective after Tor has been toggled.</li><li class="listitem">Other ways to cause Javascript to be executed after
1479 1423
 <span class="command"><strong>javascript.enabled</strong></span> has been toggled off.</li><li class="listitem">Odd ways to attempt to load plugins. Kyle Williams has had
1480 1424