Update website with new torbutton design docs+data.
Mike Perry

Mike Perry commited on 2010-06-28 15:06:50
Zeige 4 geänderte Dateien mit 166 Einfügungen und 125 Löschungen.

... ...
@@ -11,7 +11,7 @@
11 11
      <address><email>mikeperry.fscked/org</email></address>
12 12
     </affiliation>
13 13
    </author>
14
-   <pubdate>Apr 10 2010</pubdate>
14
+   <pubdate>Jun 28 2010</pubdate>
15 15
  </articleinfo>
16 16
 
17 17
 <sect1>
... ...
@@ -1981,7 +1981,7 @@ Google Captcha</title>
1981 1981
 
1982 1982
 <para>
1983 1983
 
1984
-Google's earch engine has rate limiting features that cause it to
1984
+Google's search engine has rate limiting features that cause it to
1985 1985
 <ulink
1986 1986
 url="http://googleonlinesecurity.blogspot.com/2007/07/reason-behind-were-sorry-message.html">present
1987 1987
 captchas</ulink> and sometimes even outright ban IPs that issue large numbers
... ...
@@ -2065,13 +2065,16 @@ is currently not exposed via the preferences UI.
2065 2065
 
2066 2066
 Torbutton has to work around a number of Firefox bugs that impact its
2067 2067
 security. Most of these are mentioned elsewhere in this document, but they
2068
-have also been gathered here for reference. Several of these have fixes in
2069
-Firefox3.0/trunk, but are listed because they still have not been backported
2070
-to FF2.0. In order of decreasing severity, they are:
2068
+have also been gathered here for reference. In order of decreasing severity,
2069
+they are:
2071 2070
 
2072 2071
    </para>
2073 2072
    <orderedlist>
2074 2073
 
2074
+<!--
2075
+
2076
+XXX: We should just consider this one fixed. FF3.0 is pretty much at EOL.
2077
+
2075 2078
    <listitem><ulink
2076 2079
 url="https://bugzilla.mozilla.org/show_bug.cgi?id=392274">Bug 392274 - Timezone
2077 2080
 config/chrome API</ulink>
... ...
@@ -2094,27 +2097,51 @@ fulfill its <link linkend="location">Location Neutrality</link> requirement.
2094 2097
 
2095 2098
    </para>
2096 2099
    </listitem>
2097
-<!--
2098
-FIXME: This one is fixed, but we need to make use of the new API in FF3.5
2100
+-->
2101
+    <listitem><ulink
2102
+url="https://bugzilla.mozilla.org/show_bug.cgi?id=429070">Bug 429070 - exposing
2103
+Components.interfaces to untrusted content leaks information about installed
2104
+extensions</ulink>
2105
+     <para>
2106
+<ulink url="http://pseudo-flaw.net/">Gregory Fleischer</ulink> demonstrated at Defcon 17 that these interfaces can
2107
+also be used to <ulink
2108
+url="http://pseudo-flaw.net/tor/torbutton/fingerprint-firefox.html">fingerprint
2109
+Firefox down the to the minor version</ulink>. Note that his test has not been
2110
+updated since 3.5.3, hence it reports 3.5.3 for more recent Firefoxes. This
2111
+bug interferes with Torbutton's ability to satisfy its <link
2112
+linkend="setpreservation">Anonymity Set Preservation</link> requirement.
2113
+     </para>
2114
+    </listitem>
2099 2115
 
2100 2116
    <listitem><ulink
2101
-url="https://bugzilla.mozilla.org/show_bug.cgi?id=436250">Bug 436250 - Livemarks can't be
2102
-disabled at runtime</ulink>
2117
+url="https://bugzilla.mozilla.org/show_bug.cgi?id=280661">Bug 280661 - SOCKS proxy server
2118
+connection timeout hard-coded</ulink>
2103 2119
     <para>
2104 2120
 
2105
-The RSS Feed based "Livemarks"/"Live Bookmarks" update frequency is controlled
2106
-by the pref <command>browser.bookmarks.livemark_refresh_seconds</command>.
2107
-However, changing this preference does not cancel any pending timers, which
2108
-means that at least one livemarks pref fetch will happen over Tor, and once
2109
-this pref is set to disable livemarks for Tor, changing it back will never
2110
-cause the service to start back up again. The
2111
-leakage of Livemarks interferes with Torbutton's ability to fulfill
2112
-the <link linkend="isolation">Network Isolation</link> requirement.
2121
+This bug prevents us from using the Firefox SOCKS layer directly, and
2122
+currently requires us to ship an auxiliary HTTP proxy called <ulink
2123
+url="http://www.pps.jussieu.fr/~jch/software/polipo/">Polipo</ulink>. If this
2124
+patch were landed, we would no longer need to ship Polipo, which has a number
2125
+of privacy and security issues of its own (in addition to being unmaintained).
2113 2126
 
2114 2127
     </para>
2115 2128
    </listitem>
2116
--->
2129
+   <listitem><ulink
2130
+url="https://bugzilla.mozilla.org/show_bug.cgi?id=418986">Bug 418986 - window.screen
2131
+provides a large amount of identifiable information</ulink>
2132
+   <para>
2133
+
2134
+As <link linkend="fingerprinting">mentioned above</link>, a large amount of
2135
+information is available from <ulink
2136
+url="http://developer.mozilla.org/en/docs/DOM:window.screen">window.screen</ulink>.
2137
+Currently, there is no way to obscure this information without Javascript
2138
+hooking. This bug is a feature request to provide some other method to change
2139
+these values. This bug interferes with Torbutton's ability to fulfill its
2140
+<link linkend="setpreservation">Anonymity Set Preservation</link>
2141
+requirement.
2117 2142
 
2143
+   </para>
2144
+   </listitem>
2118 2145
    <listitem><ulink
2119 2146
 url="https://bugzilla.mozilla.org/show_bug.cgi?id=435159">Bug 435159 -
2120 2147
 nsNSSCertificateDB::DeleteCertificate has race conditions</ulink>
... ...
@@ -2134,6 +2161,26 @@ feature.
2134 2161
       </para>
2135 2162
      </listitem>
2136 2163
 
2164
+     <listitem><ulink
2165
+url="https://bugzilla.mozilla.org/show_bug.cgi?id=575230">Bug 575230 - Provide option to
2166
+reduce precision of Date()</ulink>
2167
+      <para>
2168
+
2169
+Currently it is possible to <ulink
2170
+url="http://arstechnica.com/tech-policy/news/2010/02/firm-uses-typing-cadence-to-finger-unauthorized-users.ars">fingerprint
2171
+users based on their typing cadence</ulink> using the high precision timer
2172
+available to javascript. Using this same precision, it is possible to compute
2173
+an identifier based upon the clock drift of the client from some nominal
2174
+source. The latter is not much of a concern for Tor users, as the variable
2175
+delay to load and run a page is measured on the order of seconds, but the high
2176
+precision timer can still be used to fingerprint aspects of a browser's
2177
+javascript engine and processor, and apparently also a user's typing cadence.
2178
+This bug hinders Torbutton's ability to satisfy its <link
2179
+linkend="setpreservation">Anonymity Set Preservation</link> requirement.
2180
+
2181
+      </para>
2182
+     </listitem>
2183
+
2137 2184
      <listitem><ulink
2138 2185
 url="https://bugzilla.mozilla.org/show_bug.cgi?id=409737">Bug 409737 -
2139 2186
 javascript.enabled and docShell.allowJavascript do not disable all event
... ...
@@ -2350,20 +2399,6 @@ livemarks fetches.
2350 2399
     </para>
2351 2400
     </listitem>
2352 2401
 -->
2353
-   <listitem><ulink
2354
-url="https://bugzilla.mozilla.org/show_bug.cgi?id=418986">Bug 418986 - window.screen
2355
-provides a large amount of identifiable information</ulink>
2356
-   <para>
2357
-
2358
-As <link linkend="fingerprinting">mentioned above</link>, a large amount of
2359
-information is available from <ulink
2360
-url="http://developer.mozilla.org/en/docs/DOM:window.screen">window.screen</ulink>.
2361
-Currently, there is no way to obscure this information without Javascript
2362
-hooking. This bug is a feature request to provide some other method to change
2363
-these values.
2364
-
2365
-   </para>
2366
-   </listitem>
2367 2402
  
2368 2403
      <listitem><ulink
2369 2404
 url="https://bugzilla.mozilla.org/show_bug.cgi?id=309524">Bug 309524</ulink>
... ...
@@ -2399,6 +2434,10 @@ Williams.
2399 2434
 
2400 2435
      </para>
2401 2436
      </listitem>
2437
+<!--
2438
+
2439
+XXX: This is likely fixed with nsICrypto.logout()
2440
+
2402 2441
      <listitem><ulink
2403 2442
 url="https://bugzilla.mozilla.org/show_bug.cgi?id=448747">Bug 448747 -
2404 2443
 Provide Mechanism to clear TLS Session IDs</ulink>
... ...
@@ -2414,6 +2453,7 @@ thing.
2414 2453
 
2415 2454
      </para>
2416 2455
      </listitem>
2456
+-->
2417 2457
 
2418 2458
    <listitem><ulink
2419 2459
 url="https://bugzilla.mozilla.org/show_bug.cgi?id=419598">Bug 419598 - 'var
... ...
@@ -1,7 +1,7 @@
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 10 2010</p></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2945584">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="#id2976187">2. Components</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2969623">2.1. Hooked Components</a></span></dt><dt><span class="sect2"><a href="#id2952263">2.2. New Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2962049">3. Chrome</a></span></dt><dd><dl><dt><span class="sect2"><a href="#browseroverlay">3.1. Browser Overlay - torbutton.xul</a></span></dt><dt><span class="sect2"><a href="#id2941767">3.2. Preferences Window - preferences.xul</a></span></dt><dt><span class="sect2"><a href="#id2976170">3.3. Other Windows</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2977751">4. Toggle Code Path</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2944154">4.1. Button Click</a></span></dt><dt><span class="sect2"><a href="#id2978704">4.2. Proxy Update</a></span></dt><dt><span class="sect2"><a href="#id2945348">4.3. Settings Update</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2966553">5. Description of Options</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2948284">5.1. Test Settings</a></span></dt><dt><span class="sect2"><a href="#plugins">5.2. Disable plugins on Tor Usage (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2965289">5.3. Isolate Dynamic Content to Tor State (crucial)</a></span></dt><dt><span class="sect2"><a href="#jshooks">5.4. Hook Dangerous Javascript</a></span></dt><dt><span class="sect2"><a href="#id2964952">5.5. Resize windows to multiples of 50px during Tor usage (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2977086">5.6. Disable Updates During Tor</a></span></dt><dt><span class="sect2"><a href="#id2937206">5.7. Redirect Torbutton Updates Via Tor (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2937250">5.8. Disable Search Suggestions during Tor (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2937289">5.9. Disable livemarks updates during Tor usage (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2937361">5.10. Block Tor/Non-Tor access to network from file:// urls (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2937433">5.11. Close all Tor/Non-Tor tabs and windows on toggle (optional)</a></span></dt><dt><span class="sect2"><a href="#id2937514">5.12. Isolate Access to History navigation to Tor state (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2937598">5.13. History Access Settings</a></span></dt><dt><span class="sect2"><a href="#id2937711">5.14. Clear History During Tor Toggle (optional)</a></span></dt><dt><span class="sect2"><a href="#id2979251">5.15. Block Password+Form saving during Tor/Non-Tor</a></span></dt><dt><span class="sect2"><a href="#id2979312">5.16. Block Tor disk cache and clear all cache on Tor Toggle</a></span></dt><dt><span class="sect2"><a href="#id2979362">5.17. Block disk and memory cache during Tor</a></span></dt><dt><span class="sect2"><a href="#id2979414">5.18. Clear Cookies on Tor Toggle</a></span></dt><dt><span class="sect2"><a href="#id2979465">5.19. Store Non-Tor cookies in a protected jar</a></span></dt><dt><span class="sect2"><a href="#id2979522">5.20. Store both Non-Tor and Tor cookies in a protected jar (dangerous)</a></span></dt><dt><span class="sect2"><a href="#id2979560">5.21. Manage My Own Cookies (dangerous)</a></span></dt><dt><span class="sect2"><a href="#id2979576">5.22. Disable DOM Storage during Tor usage (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2979679">5.23. Clear HTTP Auth on Tor Toggle (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2979717">5.24. Clear cookies on Tor/Non-Tor shutdown</a></span></dt><dt><span class="sect2"><a href="#id2979772">5.25. Reload cookie jar/clear cookies on Firefox crash</a></span></dt><dt><span class="sect2"><a href="#id2979847">5.26. On crash recovery or session restored startup, restore via: Tor, Non-Tor</a></span></dt><dt><span class="sect2"><a href="#id2979919">5.27. On normal startup, set state to: Tor, Non-Tor, Shutdown State</a></span></dt><dt><span class="sect2"><a href="#id2979978">5.28. Prevent session store from saving Non-Tor/Tor-loaded tabs</a></span></dt><dt><span class="sect2"><a href="#id2980042">5.29. Set user agent during Tor usage (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2980217">5.30. Spoof US English Browser</a></span></dt><dt><span class="sect2"><a href="#id2980310">5.31. Don't send referrer during Tor Usage</a></span></dt><dt><span class="sect2"><a href="#id2980350">5.32. Strip platform and language off of Google Search Box queries</a></span></dt><dt><span class="sect2"><a href="#id2980391">5.33. Automatically use an alternate search engine when presented with a
4
-Google Captcha</a></span></dt><dt><span class="sect2"><a href="#id2980471">5.34. Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)</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="#id2981478">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="id2945584"></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">Jun 28 2010</p></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2910402">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="#id2907285">2. Components</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2927418">2.1. Hooked Components</a></span></dt><dt><span class="sect2"><a href="#id2922900">2.2. New Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2907191">3. Chrome</a></span></dt><dd><dl><dt><span class="sect2"><a href="#browseroverlay">3.1. Browser Overlay - torbutton.xul</a></span></dt><dt><span class="sect2"><a href="#id2922887">3.2. Preferences Window - preferences.xul</a></span></dt><dt><span class="sect2"><a href="#id2922834">3.3. Other Windows</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2917336">4. Toggle Code Path</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2934128">4.1. Button Click</a></span></dt><dt><span class="sect2"><a href="#id2915503">4.2. Proxy Update</a></span></dt><dt><span class="sect2"><a href="#id2931338">4.3. Settings Update</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2898010">5. Description of Options</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2910532">5.1. Test Settings</a></span></dt><dt><span class="sect2"><a href="#plugins">5.2. Disable plugins on Tor Usage (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2917719">5.3. Isolate Dynamic Content to Tor State (crucial)</a></span></dt><dt><span class="sect2"><a href="#jshooks">5.4. Hook Dangerous Javascript</a></span></dt><dt><span class="sect2"><a href="#id2897638">5.5. Resize windows to multiples of 50px during Tor usage (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2924640">5.6. Disable Updates During Tor</a></span></dt><dt><span class="sect2"><a href="#id2892217">5.7. Redirect Torbutton Updates Via Tor (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2892261">5.8. Disable Search Suggestions during Tor (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2892300">5.9. Disable livemarks updates during Tor usage (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2892371">5.10. Block Tor/Non-Tor access to network from file:// urls (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2892443">5.11. Close all Tor/Non-Tor tabs and windows on toggle (optional)</a></span></dt><dt><span class="sect2"><a href="#id2892524">5.12. Isolate Access to History navigation to Tor state (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2892609">5.13. History Access Settings</a></span></dt><dt><span class="sect2"><a href="#id2892721">5.14. Clear History During Tor Toggle (optional)</a></span></dt><dt><span class="sect2"><a href="#id2934267">5.15. Block Password+Form saving during Tor/Non-Tor</a></span></dt><dt><span class="sect2"><a href="#id2934328">5.16. Block Tor disk cache and clear all cache on Tor Toggle</a></span></dt><dt><span class="sect2"><a href="#id2934378">5.17. Block disk and memory cache during Tor</a></span></dt><dt><span class="sect2"><a href="#id2934430">5.18. Clear Cookies on Tor Toggle</a></span></dt><dt><span class="sect2"><a href="#id2934481">5.19. Store Non-Tor cookies in a protected jar</a></span></dt><dt><span class="sect2"><a href="#id2934538">5.20. Store both Non-Tor and Tor cookies in a protected jar (dangerous)</a></span></dt><dt><span class="sect2"><a href="#id2934577">5.21. Manage My Own Cookies (dangerous)</a></span></dt><dt><span class="sect2"><a href="#id2934592">5.22. Disable DOM Storage during Tor usage (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2934696">5.23. Clear HTTP Auth on Tor Toggle (recommended)</a></span></dt><dt><span class="sect2"><a href="#id2934733">5.24. Clear cookies on Tor/Non-Tor shutdown</a></span></dt><dt><span class="sect2"><a href="#id2934788">5.25. Reload cookie jar/clear cookies on Firefox crash</a></span></dt><dt><span class="sect2"><a href="#id2934863">5.26. On crash recovery or session restored startup, restore via: Tor, Non-Tor</a></span></dt><dt><span class="sect2"><a href="#id2934935">5.27. On normal startup, set state to: Tor, Non-Tor, Shutdown State</a></span></dt><dt><span class="sect2"><a href="#id2934994">5.28. Prevent session store from saving Non-Tor/Tor-loaded tabs</a></span></dt><dt><span class="sect2"><a href="#id2935059">5.29. Set user agent during Tor usage (crucial)</a></span></dt><dt><span class="sect2"><a href="#id2935233">5.30. Spoof US English Browser</a></span></dt><dt><span class="sect2"><a href="#id2935326">5.31. Don't send referrer during Tor Usage</a></span></dt><dt><span class="sect2"><a href="#id2935366">5.32. Strip platform and language off of Google Search Box queries</a></span></dt><dt><span class="sect2"><a href="#id2935407">5.33. Automatically use an alternate search engine when presented with a
4
+Google Captcha</a></span></dt><dt><span class="sect2"><a href="#id2935487">5.34. Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)</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="#id2936532">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="id2910402"></a>1. Introduction</h2></div></div></div><p>
5 5
 
6 6
 This document describes the goals, operation, and testing procedures of the
7 7
 Torbutton Firefox extension. It is current as of Torbutton 1.2.5.
... ...
@@ -232,13 +232,13 @@ obsolete and deprecated interfaces and has proved to be less than
232 232
 stable.</p><p>'Chrome' is a combination of XML and Javascript used to describe a window.
233 233
 Extensions are allowed to create 'overlays' that are 'bound' to existing XML
234 234
 window definitions, or they can create their own windows. The DTD for this XML
235
-is called <a class="ulink" href="http://developer.mozilla.org/en/docs/XUL_Reference" target="_top">XUL</a>.</p></div></div><div class="sect1" title="2. Components"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2976187"></a>2. Components</h2></div></div></div><p>
235
+is called <a class="ulink" href="http://developer.mozilla.org/en/docs/XUL_Reference" target="_top">XUL</a>.</p></div></div><div class="sect1" title="2. Components"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2907285"></a>2. Components</h2></div></div></div><p>
236 236
 
237 237
 Torbutton installs components for two purposes: hooking existing components to
238 238
 reimplement their interfaces; and creating new components that provide
239 239
 services to other pieces of the extension.
240 240
 
241
-  </p><div class="sect2" title="2.1. Hooked Components"><div class="titlepage"><div><div><h3 class="title"><a id="id2969623"></a>2.1. Hooked Components</h3></div></div></div><p>Torbutton makes extensive use of Contract ID hooking, and implements some
241
+  </p><div class="sect2" title="2.1. Hooked Components"><div class="titlepage"><div><div><h3 class="title"><a id="id2927418"></a>2.1. Hooked Components</h3></div></div></div><p>Torbutton makes extensive use of Contract ID hooking, and implements some
242 242
 of its own standalone components as well.  Let's discuss the hooked components
243 243
 first.</p><div class="sect3" title="@mozilla.org/browser/sessionstore;1 - components/nsSessionStore36.js"><div class="titlepage"><div><div><h4 class="title"><a id="sessionstore"></a><a class="ulink" href="http://developer.mozilla.org/en/docs/nsISessionStore" target="_top">@mozilla.org/browser/sessionstore;1</a> -
244 244
 <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/nsSessionStore36.js" target="_top">components/nsSessionStore36.js</a></h4></div></div></div><p>These components address the <a class="link" href="#disk">Disk Avoidance</a>
... ...
@@ -267,7 +267,7 @@ do not obey proxy settings, they can be manipulated to automatically connect
267 267
 back to arbitrary servers outside of Tor with no user intervention. Fixing
268 268
 this issue helps to satisfy Torbutton's <a class="link" href="#proxy">Proxy
269 269
 Obedience</a> Requirement.
270
- </p></div><div class="sect3" title="@mozilla.org/browser/sessionstartup;1 - components/crash-observer.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2962061"></a><a class="ulink" href="http://lxr.mozilla.org/seamonkey/source/browser/components/sessionstore/src/nsSessionStartup.js" target="_top">@mozilla.org/browser/sessionstartup;1</a> -
270
+ </p></div><div class="sect3" title="@mozilla.org/browser/sessionstartup;1 - components/crash-observer.js"><div class="titlepage"><div><div><h4 class="title"><a id="id2924906"></a><a class="ulink" href="http://lxr.mozilla.org/seamonkey/source/browser/components/sessionstore/src/nsSessionStartup.js" target="_top">@mozilla.org/browser/sessionstartup;1</a> -
271 271
     <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/crash-observer.js" target="_top">components/crash-observer.js</a></h4></div></div></div><p>This component wraps the Firefox Session Startup component that is in
272 272
 charge of <a class="ulink" href="http://developer.mozilla.org/en/docs/Session_store_API" target="_top">restoring saved
273 273
 sessions</a>. The wrapper's only job is to intercept the
... ...
@@ -281,7 +281,7 @@ includes setting the Tor state to the one the user selected for crash recovery
281 281
 in the preferences window (<span class="command"><strong>extensions.torbutton.restore_tor</strong></span>), and
282 282
 restoring cookies for the corresponding cookie jar, if it exists.</p><p>By performing this notification, this component assists in the 
283 283
 <a class="link" href="#proxy">Proxy Obedience</a>, and <a class="link" href="#isolation">Network Isolation</a> requirements.
284
-</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="id2970544"></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>
284
+</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="id2921641"></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>
285 285
 - <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/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
286 286
 CSS and Javascript-based methods of history disclosure. The global-history
287 287
 component is what is used by Firefox to determine if a link was visited or not
... ...
@@ -306,9 +306,9 @@ firing in the event the browser starts in Tor mode.
306 306
 This component helps satisfy the <a class="link" href="#isolation">Network
307 307
 Isolation</a> and <a class="link" href="#setpreservation">Anonymity Set
308 308
 Preservation</a> requirements.
309
-</p></div></div><div class="sect2" title="2.2. New Components"><div class="titlepage"><div><div><h3 class="title"><a id="id2952263"></a>2.2. New Components</h3></div></div></div><p>Torbutton creates four new components that are used throughout the
309
+</p></div></div><div class="sect2" title="2.2. New Components"><div class="titlepage"><div><div><h3 class="title"><a id="id2922900"></a>2.2. New Components</h3></div></div></div><p>Torbutton creates four new components that are used throughout the
310 310
 extension. These components do not hook any interfaces, nor are they used
311
-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="id2952530"></a><a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/cookie-jar-selector.js" target="_top">@torproject.org/cookie-jar-selector;2
311
+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="id2909775"></a><a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/cookie-jar-selector.js" target="_top">@torproject.org/cookie-jar-selector;2
312 312
 - 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
313 313
 Jackson</a>) is used by the Torbutton chrome to switch between
314 314
 Tor and Non-Tor cookies. Its operations are simple: sync cookies to disk, then
... ...
@@ -317,7 +317,7 @@ move the current cookies.txt file to the appropriate backup location
317 317
 into place.</p><p>
318 318
 This component helps to address the <a class="link" href="#state">State
319 319
 Isolation</a> requirement of Torbutton.
320
-</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="id2965661"></a><a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/torbutton-logger.js" target="_top">@torproject.org/torbutton-logger;1
320
+</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="id2906606"></a><a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/torbutton-logger.js" target="_top">@torproject.org/torbutton-logger;1
321 321
 - components/torbutton-logger.js</a></h4></div></div></div><p>The torbutton logger component allows on-the-fly redirection of torbutton
322 322
 logging messages to either Firefox stderr
323 323
 (<span class="command"><strong>extensions.torbutton.logmethod=0</strong></span>), the Javascript error console
... ...
@@ -369,7 +369,7 @@ reason are not passed to the Firefox content policy itself (see Firefox Bugs
369 369
 </p><p>
370 370
 
371 371
 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
372
-Torbutton.</p></div></div></div><div class="sect1" title="3. Chrome"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2962049"></a>3. Chrome</h2></div></div></div><p>The chrome is where all the torbutton graphical elements and windows are
372
+Torbutton.</p></div></div></div><div class="sect1" title="3. Chrome"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2907191"></a>3. Chrome</h2></div></div></div><p>The chrome is where all the torbutton graphical elements and windows are
373 373
 located. 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
374 374
 files attached. The scope of these Javascript files is their containing
375 375
 window.</p><div class="sect2" title="3.1. Browser Overlay - torbutton.xul"><div class="titlepage"><div><div><h3 class="title"><a id="browseroverlay"></a>3.1. Browser Overlay - <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/chrome/content/torbutton.xul" target="_top">torbutton.xul</a></h3></div></div></div><p>The browser overlay, torbutton.xul, defines the toolbar button, the status
... ...
@@ -496,9 +496,9 @@ enabled. This helps Torbutton fulfill its <a class="link" href="#disk">Disk
496 496
 Avoidance</a> and <a class="link" href="#state">State Separation</a>
497 497
 requirements.
498 498
 
499
-   </p></li></ol></div></div><div class="sect2" title="3.2. Preferences Window - preferences.xul"><div class="titlepage"><div><div><h3 class="title"><a id="id2941767"></a>3.2. Preferences Window - <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/chrome/content/preferences.xul" target="_top">preferences.xul</a></h3></div></div></div><p>The preferences window of course lays out the Torbutton preferences, with
500
-handlers located in <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/chrome/content/preferences.js" target="_top">chrome/content/preferences.js</a>.</p></div><div class="sect2" title="3.3. Other Windows"><div class="titlepage"><div><div><h3 class="title"><a id="id2976170"></a>3.3. Other Windows</h3></div></div></div><p>There are additional windows that describe popups for right clicking on
501
-the status bar, the toolbutton, and the about page.</p></div></div><div class="sect1" title="4. Toggle Code Path"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2977751"></a>4. Toggle Code Path</h2></div></div></div><p>
499
+   </p></li></ol></div></div><div class="sect2" title="3.2. Preferences Window - preferences.xul"><div class="titlepage"><div><div><h3 class="title"><a id="id2922887"></a>3.2. Preferences Window - <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/chrome/content/preferences.xul" target="_top">preferences.xul</a></h3></div></div></div><p>The preferences window of course lays out the Torbutton preferences, with
500
+handlers located in <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/chrome/content/preferences.js" target="_top">chrome/content/preferences.js</a>.</p></div><div class="sect2" title="3.3. Other Windows"><div class="titlepage"><div><div><h3 class="title"><a id="id2922834"></a>3.3. Other Windows</h3></div></div></div><p>There are additional windows that describe popups for right clicking on
501
+the status bar, the toolbutton, and the about page.</p></div></div><div class="sect1" title="4. Toggle Code Path"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2917336"></a>4. Toggle Code Path</h2></div></div></div><p>
502 502
 
503 503
 The act of toggling is connected to <code class="function">torbutton_toggle()</code>
504 504
 via the <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/chrome/content/torbutton.xul" target="_top">torbutton.xul</a>
... ...
@@ -519,7 +519,7 @@ conditions and leakage, especially with <a class="ulink" href="https://bugzilla.
519 519
 409737</a> unfixed. The content policy does not allow any network activity
520 520
 whatsoever during this three stage transition.
521 521
 
522
- </p><div class="sect2" title="4.1. Button Click"><div class="titlepage"><div><div><h3 class="title"><a id="id2944154"></a>4.1. Button Click</h3></div></div></div><p>
522
+ </p><div class="sect2" title="4.1. Button Click"><div class="titlepage"><div><div><h3 class="title"><a id="id2934128"></a>4.1. Button Click</h3></div></div></div><p>
523 523
 
524 524
 This is the first step in the toggling process. When the user clicks the
525 525
 toggle button or the toolbar, <code class="function">torbutton_toggle()</code> is
... ...
@@ -532,7 +532,7 @@ observer</a>
532 532
 <span class="command"><strong>torbutton_unique_pref_observer</strong></span> to perform the rest of the
533 533
 toggle.
534 534
 
535
-  </p></div><div class="sect2" title="4.2. Proxy Update"><div class="titlepage"><div><div><h3 class="title"><a id="id2978704"></a>4.2. Proxy Update</h3></div></div></div><p>
535
+  </p></div><div class="sect2" title="4.2. Proxy Update"><div class="titlepage"><div><div><h3 class="title"><a id="id2915503"></a>4.2. Proxy Update</h3></div></div></div><p>
536 536
 
537 537
 When Torbutton receives any proxy change notifications via its
538 538
 <span class="command"><strong>torbutton_unique_pref_observer</strong></span>, it calls
... ...
@@ -547,7 +547,7 @@ value. This is decoupled from the button click functionalty via the pref
547 547
 observer so that other addons (such as SwitchProxy) can switch the proxy
548 548
 settings between multiple proxies.
549 549
 
550
-  </p></div><div class="sect2" title="4.3. Settings Update"><div class="titlepage"><div><div><h3 class="title"><a id="id2945348"></a>4.3. Settings Update</h3></div></div></div><p>
550
+  </p></div><div class="sect2" title="4.3. Settings Update"><div class="titlepage"><div><div><h3 class="title"><a id="id2931338"></a>4.3. Settings Update</h3></div></div></div><p>
551 551
 
552 552
 The next stage is also handled by
553 553
 <code class="function">torbutton_update_status()</code>. This function sets scores of
... ...
@@ -558,10 +558,10 @@ end of its work, it sets
558 558
 <span class="command"><strong>extensions.torbutton.settings_applied</strong></span>, which signifies the
559 559
 completion of the toggle operation to the <a class="link" href="#contentpolicy" title="@torproject.org/cssblocker;1 - components/cssblocker.js">content policy</a>.
560 560
 
561
-  </p></div></div><div class="sect1" title="5. Description of Options"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2966553"></a>5. Description of Options</h2></div></div></div><p>This section provides a detailed description of Torbutton's options. Each
561
+  </p></div></div><div class="sect1" title="5. Description of Options"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2898010"></a>5. Description of Options</h2></div></div></div><p>This section provides a detailed description of Torbutton's options. Each
562 562
 option is presented as the string from the preferences window, a summary, the
563 563
 preferences it touches, and the effect this has on the components, chrome, and
564
-browser properties.</p><div class="sect2" title="5.1. Test Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2948284"></a>5.1. Test Settings</h3></div></div></div><p>
564
+browser properties.</p><div class="sect2" title="5.1. Test Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2910532"></a>5.1. Test Settings</h3></div></div></div><p>
565 565
 This button under the Proxy Settings tab provides a way to verify that the 
566 566
 proxy settings are correct, and actually do route through the Tor network. It
567 567
 performs this check by issuing an <a class="ulink" href="http://developer.mozilla.org/en/docs/XMLHttpRequest" target="_top">XMLHTTPRequest</a>
... ...
@@ -620,7 +620,7 @@ all this and the plugin managed to find some way to load.
620 620
 Since most plugins completely ignore browser proxy settings, the actions
621 621
 performed by this setting are crucial to satisfying the <a class="link" href="#proxy">Proxy Obedience</a> requirement.
622 622
 
623
- </p></div><div class="sect2" title="5.3. Isolate Dynamic Content to Tor State (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2965289"></a>5.3. Isolate Dynamic Content to Tor State (crucial)</h3></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://git.torproject.org/checkout/torbutton/master/src/components/cssblocker.js" target="_top">@torproject.org/cssblocker;1</a> content policy
623
+ </p></div><div class="sect2" title="5.3. Isolate Dynamic Content to Tor State (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2917719"></a>5.3. Isolate Dynamic Content to Tor State (crucial)</h3></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://git.torproject.org/checkout/torbutton/master/src/components/cssblocker.js" target="_top">@torproject.org/cssblocker;1</a> content policy
624 624
 mentioned above, and causes it to block content load attempts in pages an
625 625
 opposite Tor state from the current state. Freshly loaded <a class="ulink" href="https://developer.mozilla.org/en/XUL/tabbrowser" target="_top">browser
626 626
 tabs</a> are tagged
... ...
@@ -672,7 +672,7 @@ We are still looking for a workaround as of Torbutton 1.2.5.
672 672
 
673 673
 
674 674
 
675
-</p></div><div class="sect2" title="5.5. Resize windows to multiples of 50px during Tor usage (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2964952"></a>5.5. Resize windows to multiples of 50px during Tor usage (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.resize_windows</strong></span></p><p>
675
+</p></div><div class="sect2" title="5.5. Resize windows to multiples of 50px during Tor usage (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2897638"></a>5.5. Resize windows to multiples of 50px during Tor usage (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.resize_windows</strong></span></p><p>
676 676
 
677 677
 This option drastically cuts down on the number of distinct anonymity sets
678 678
 that divide the Tor web userbase. Without this setting, the dimensions for a
... ...
@@ -707,7 +707,7 @@ infer toolbar size/presence by the distance to the nearest 50 pixel roundoff).
707 707
 
708 708
 </p><p>
709 709
 This setting helps to meet the <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirements.
710
-</p></div><div class="sect2" title="5.6. Disable Updates During Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2977086"></a>5.6. Disable Updates During Tor</h3></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
710
+</p></div><div class="sect2" title="5.6. Disable Updates During Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2924640"></a>5.6. Disable Updates During Tor</h3></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
711 711
 update settings</a> during Tor
712 712
   usage: <span class="command"><strong>extensions.update.enabled</strong></span>,
713 713
 <span class="command"><strong>app.update.enabled</strong></span>,
... ...
@@ -717,7 +717,7 @@ update settings</a> during Tor
717 717
   checking for search plugin updates while Tor is enabled.
718 718
   </p><p>
719 719
 This setting satisfies the <a class="link" href="#updates">Update Safety</a> requirement.
720
-</p></div><div class="sect2" title="5.7. Redirect Torbutton Updates Via Tor (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937206"></a>5.7. Redirect Torbutton Updates Via Tor (recommended)</h3></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
720
+</p></div><div class="sect2" title="5.7. Redirect Torbutton Updates Via Tor (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892217"></a>5.7. Redirect Torbutton Updates Via Tor (recommended)</h3></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
721 721
 
722 722
 <a class="ulink" href="https://developer.mozilla.org/en/nsIProtocolProxyFilter" target="_top">nsIProtocolProxyFilter</a>
723 723
 in order to redirect all version update checks and Torbutton update downloads
... ...
@@ -726,7 +726,7 @@ concerns about data retention done by <a class="ulink" href="https://www.addons.
726 726
 help censored users meet the <a class="link" href="#undiscoverability">Tor
727 727
 Undiscoverability</a> requirement.
728 728
 
729
-  </p></div><div class="sect2" title="5.8. Disable Search Suggestions during Tor (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937250"></a>5.8. Disable Search Suggestions during Tor (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.no_search</strong></span></p><p>
729
+  </p></div><div class="sect2" title="5.8. Disable Search Suggestions during Tor (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892261"></a>5.8. Disable Search Suggestions during Tor (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.no_search</strong></span></p><p>
730 730
 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>
731 731
 during Tor usage.
732 732
 This governs if you get Google search suggestions during Tor
... ...
@@ -737,7 +737,7 @@ this is recommended to be disabled.
737 737
 While this setting doesn't satisfy any Torbutton requirements, the fact that
738 738
 cookies are transmitted for partially typed queries does not seem desirable
739 739
 for Tor usage.
740
-</p></div><div class="sect2" title="5.9. Disable livemarks updates during Tor usage (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937289"></a>5.9. Disable livemarks updates during Tor usage (recommended)</h3></div></div></div><p>Option:
740
+</p></div><div class="sect2" title="5.9. Disable livemarks updates during Tor usage (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892300"></a>5.9. Disable livemarks updates during Tor usage (recommended)</h3></div></div></div><p>Option:
741 741
    </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>
742 742
   </p><p>
743 743
 This option causes Torbutton to prevent Firefox from loading <a class="ulink" href="http://www.mozilla.com/firefox/livebookmarks.html" target="_top">Livemarks</a> during
... ...
@@ -751,7 +751,7 @@ service</a> when Tor is enabled.
751 751
 This helps satisfy the <a class="link" href="#isolation">Network
752 752
 Isolation</a> and <a class="link" href="#setpreservation">Anonymity Set
753 753
 Preservation</a> requirements.
754
-</p></div><div class="sect2" title="5.10. Block Tor/Non-Tor access to network from file:// urls (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937361"></a>5.10. Block Tor/Non-Tor access to network from file:// urls (recommended)</h3></div></div></div><p>Options:
754
+</p></div><div class="sect2" title="5.10. Block Tor/Non-Tor access to network from file:// urls (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892371"></a>5.10. Block Tor/Non-Tor access to network from file:// urls (recommended)</h3></div></div></div><p>Options:
755 755
    </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>
756 756
   </p><p>
757 757
 
... ...
@@ -771,7 +771,7 @@ Isolation</a> requirement, by preventing file urls from executing network
771 771
 operations in opposite Tor states. Also, allowing pages to submit arbitrary
772 772
 files to arbitrary sites just generally seems like a bad idea.
773 773
 
774
-</p></div><div class="sect2" title="5.11. Close all Tor/Non-Tor tabs and windows on toggle (optional)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937433"></a>5.11. Close all Tor/Non-Tor tabs and windows on toggle (optional)</h3></div></div></div><p>Options:
774
+</p></div><div class="sect2" title="5.11. Close all Tor/Non-Tor tabs and windows on toggle (optional)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892443"></a>5.11. Close all Tor/Non-Tor tabs and windows on toggle (optional)</h3></div></div></div><p>Options:
775 775
    </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>
776 776
   </p><p>
777 777
 
... ...
@@ -795,7 +795,7 @@ out longer than necessary.
795 795
 While this setting doesn't satisfy any Torbutton requirements, the fact that
796 796
 cookies are transmitted for partially typed queries does not seem desirable
797 797
 for Tor usage.
798
-</p></div><div class="sect2" title="5.12. Isolate Access to History navigation to Tor state (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937514"></a>5.12. Isolate Access to History navigation to Tor state (crucial)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.block_js_history</strong></span></p><p>
798
+</p></div><div class="sect2" title="5.12. Isolate Access to History navigation to Tor state (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892524"></a>5.12. Isolate Access to History navigation to Tor state (crucial)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.block_js_history</strong></span></p><p>
799 799
 This setting determines if Torbutton installs an <a class="ulink" href="http://www.oxymoronical.com/experiments/apidocs/interface/nsISHistoryListener" target="_top">nsISHistoryListener</a>
800 800
 attached to the <a class="ulink" href="http://www.oxymoronical.com/experiments/apidocs/interface/nsISHistory" target="_top">sessionHistory</a> of 
801 801
 of each browser's <a class="ulink" href="https://developer.mozilla.org/en/XUL%3aProperty%3awebNavigation" target="_top">webNavigatator</a>.
... ...
@@ -823,7 +823,7 @@ This setting helps to fulfill Torbutton's <a class="link" href="#state">State
823 823
 Separation</a> and (until Bug 409737 is fixed) <a class="link" href="#isolation">Network Isolation</a>
824 824
 requirements.
825 825
 
826
-   </p></div><div class="sect2" title="5.13. History Access Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2937598"></a>5.13. History Access Settings</h3></div></div></div><p>Options:
826
+   </p></div><div class="sect2" title="5.13. History Access Settings"><div class="titlepage"><div><div><h3 class="title"><a id="id2892609"></a>5.13. History Access Settings</h3></div></div></div><p>Options:
827 827
   </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>
828 828
   </p><p>These four settings govern the behavior of the <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/ignore-history.js" target="_top">components/ignore-history.js</a>
829 829
 history blocker component mentioned above. By hooking the browser's view of
... ...
@@ -838,12 +838,12 @@ Database</a> and the older Firefox 2 mechanisms.
838 838
 
839 839
 </p><p>
840 840
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
841
-</p></div><div class="sect2" title="5.14. Clear History During Tor Toggle (optional)"><div class="titlepage"><div><div><h3 class="title"><a id="id2937711"></a>5.14. Clear History During Tor Toggle (optional)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_history</strong></span></p><p>This setting governs if Torbutton calls
841
+</p></div><div class="sect2" title="5.14. Clear History During Tor Toggle (optional)"><div class="titlepage"><div><div><h3 class="title"><a id="id2892721"></a>5.14. Clear History During Tor Toggle (optional)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_history</strong></span></p><p>This setting governs if Torbutton calls
842 842
 <a class="ulink" href="https://developer.mozilla.org/en/nsIBrowserHistory#removeAllPages.28.29" target="_top">nsIBrowserHistory.removeAllPages</a>
843 843
 and <a class="ulink" href="http://www.oxymoronical.com/experiments/apidocs/interface/nsISHistory" target="_top">nsISHistory.PurgeHistory</a>
844 844
 for each tab on Tor toggle.</p><p>
845 845
 This setting is an optional way to help satisfy the <a class="link" href="#state">State Separation</a> requirement.
846
-</p></div><div class="sect2" title="5.15. Block Password+Form saving during Tor/Non-Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2979251"></a>5.15. Block Password+Form saving during Tor/Non-Tor</h3></div></div></div><p>Options:
846
+</p></div><div class="sect2" title="5.15. Block Password+Form saving during Tor/Non-Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2934267"></a>5.15. Block Password+Form saving during Tor/Non-Tor</h3></div></div></div><p>Options:
847 847
   </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>
848 848
   </p><p>These settings govern if Torbutton disables
849 849
 <span class="command"><strong>browser.formfill.enable</strong></span>
... ...
@@ -852,19 +852,19 @@ Since form fields can be read at any time by Javascript, this setting is a lot
852 852
 more important than it seems.
853 853
 </p><p>
854 854
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
855
-</p></div><div class="sect2" title="5.16. Block Tor disk cache and clear all cache on Tor Toggle"><div class="titlepage"><div><div><h3 class="title"><a id="id2979312"></a>5.16. Block Tor disk cache and clear all cache on Tor Toggle</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_cache</strong></span>
855
+</p></div><div class="sect2" title="5.16. Block Tor disk cache and clear all cache on Tor Toggle"><div class="titlepage"><div><div><h3 class="title"><a id="id2934328"></a>5.16. Block Tor disk cache and clear all cache on Tor Toggle</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_cache</strong></span>
856 856
   </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>
857 857
 on Tor toggle to remove all entries from the cache. In addition, this setting
858 858
 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.
859 859
 </p><p>
860 860
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
861
-</p></div><div class="sect2" title="5.17. Block disk and memory cache during Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2979362"></a>5.17. Block disk and memory cache during Tor</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.block_cache</strong></span></p><p>This setting
861
+</p></div><div class="sect2" title="5.17. Block disk and memory cache during Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2934378"></a>5.17. Block disk and memory cache during Tor</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.block_cache</strong></span></p><p>This setting
862 862
 causes Torbutton to set <a class="ulink" href="http://kb.mozillazine.org/Browser.cache.memory.enable" target="_top">browser.cache.memory.enable</a>,
863 863
 <a class="ulink" href="http://kb.mozillazine.org/Browser.cache.disk.enable" target="_top">browser.cache.disk.enable</a> and
864 864
 <a class="ulink" href="http://kb.mozillazine.org/Network.http.use-cache" target="_top">network.http.use-cache</a> to false during tor usage.
865 865
 </p><p>
866 866
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
867
-</p></div><div class="sect2" title="5.18. Clear Cookies on Tor Toggle"><div class="titlepage"><div><div><h3 class="title"><a id="id2979414"></a>5.18. Clear Cookies on Tor Toggle</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_cookies</strong></span>
867
+</p></div><div class="sect2" title="5.18. Clear Cookies on Tor Toggle"><div class="titlepage"><div><div><h3 class="title"><a id="id2934430"></a>5.18. Clear Cookies on Tor Toggle</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_cookies</strong></span>
868 868
   </p><p>
869 869
 
870 870
 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
... ...
@@ -874,7 +874,7 @@ which prevents them from being written to disk.
874 874
 
875 875
 </p><p>
876 876
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
877
-</p></div><div class="sect2" title="5.19. Store Non-Tor cookies in a protected jar"><div class="titlepage"><div><div><h3 class="title"><a id="id2979465"></a>5.19. Store Non-Tor cookies in a protected jar</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.cookie_jars</strong></span>
877
+</p></div><div class="sect2" title="5.19. Store Non-Tor cookies in a protected jar"><div class="titlepage"><div><div><h3 class="title"><a id="id2934481"></a>5.19. Store Non-Tor cookies in a protected jar</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.cookie_jars</strong></span>
878 878
   </p><p>
879 879
 
880 880
 This setting causes Torbutton to use <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/cookie-jar-selector.js" target="_top">@torproject.org/cookie-jar-selector;2</a> to store
... ...
@@ -887,15 +887,15 @@ which prevents them from being written to disk.
887 887
 
888 888
 </p><p>
889 889
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> and <a class="link" href="#disk">Disk Avoidance</a> requirements.
890
-</p></div><div class="sect2" title="5.20. Store both Non-Tor and Tor cookies in a protected jar (dangerous)"><div class="titlepage"><div><div><h3 class="title"><a id="id2979522"></a>5.20. Store both Non-Tor and Tor cookies in a protected jar (dangerous)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.dual_cookie_jars</strong></span>
890
+</p></div><div class="sect2" title="5.20. Store both Non-Tor and Tor cookies in a protected jar (dangerous)"><div class="titlepage"><div><div><h3 class="title"><a id="id2934538"></a>5.20. Store both Non-Tor and Tor cookies in a protected jar (dangerous)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.dual_cookie_jars</strong></span>
891 891
   </p><p>
892 892
 
893 893
 This setting causes Torbutton to use <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/cookie-jar-selector.js" target="_top">@torproject.org/cookie-jar-selector;2</a> to store
894 894
 both Tor and Non-Tor cookies into protected jars.
895 895
 </p><p>
896 896
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement.
897
-</p></div><div class="sect2" title="5.21. Manage My Own Cookies (dangerous)"><div class="titlepage"><div><div><h3 class="title"><a id="id2979560"></a>5.21. Manage My Own Cookies (dangerous)</h3></div></div></div><p>Options: None</p><p>This setting disables all Torbutton cookie handling by setting the above
898
-cookie prefs all to false.</p></div><div class="sect2" title="5.22. Disable DOM Storage during Tor usage (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2979576"></a>5.22. Disable DOM Storage during Tor usage (crucial)</h3></div></div></div><div class="sect2" title="5.22.1. Do not write Tor/Non-Tor cookies to disk"><div class="titlepage"><div><div><h3 class="title"><a id="id2979578"></a>5.22.1. Do not write Tor/Non-Tor cookies to disk</h3></div></div></div><p>Options:
897
+</p></div><div class="sect2" title="5.21. Manage My Own Cookies (dangerous)"><div class="titlepage"><div><div><h3 class="title"><a id="id2934577"></a>5.21. Manage My Own Cookies (dangerous)</h3></div></div></div><p>Options: None</p><p>This setting disables all Torbutton cookie handling by setting the above
898
+cookie prefs all to false.</p></div><div class="sect2" title="5.22. Disable DOM Storage during Tor usage (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2934592"></a>5.22. Disable DOM Storage during Tor usage (crucial)</h3></div></div></div><div class="sect2" title="5.22.1. Do not write Tor/Non-Tor cookies to disk"><div class="titlepage"><div><div><h3 class="title"><a id="id2934594"></a>5.22.1. Do not write Tor/Non-Tor cookies to disk</h3></div></div></div><p>Options:
899 899
   </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>
900 900
   </p><p>
901 901
 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>
... ...
@@ -915,13 +915,13 @@ usage to prevent
915 915
 <a class="ulink" href="http://developer.mozilla.org/en/docs/DOM:Storage" target="_top">DOM Storage</a> from
916 916
   being used to store persistent information across Tor states.</p><p>
917 917
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement.
918
-</p></div><div class="sect2" title="5.23. Clear HTTP Auth on Tor Toggle (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2979679"></a>5.23. Clear HTTP Auth on Tor Toggle (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_http_auth</strong></span>
918
+</p></div><div class="sect2" title="5.23. Clear HTTP Auth on Tor Toggle (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2934696"></a>5.23. Clear HTTP Auth on Tor Toggle (recommended)</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.clear_http_auth</strong></span>
919 919
   </p><p>
920 920
 This setting causes Torbutton to call <a class="ulink" href="http://www.oxymoronical.com/experiments/apidocs/interface/nsIHttpAuthManager" target="_top">nsIHttpAuthManager.clearAll()</a>
921 921
 every time Tor is toggled.
922 922
 </p><p>
923 923
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement.
924
-</p></div><div class="sect2" title="5.24. Clear cookies on Tor/Non-Tor shutdown"><div class="titlepage"><div><div><h3 class="title"><a id="id2979717"></a>5.24. Clear cookies on Tor/Non-Tor shutdown</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.shutdown_method</strong></span>
924
+</p></div><div class="sect2" title="5.24. Clear cookies on Tor/Non-Tor shutdown"><div class="titlepage"><div><div><h3 class="title"><a id="id2934733"></a>5.24. Clear cookies on Tor/Non-Tor shutdown</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.shutdown_method</strong></span>
925 925
   </p><p> This option variable can actually take 3 values: 0, 1, and 2. 0 means no
926 926
 cookie clearing, 1 means clear only during Tor-enabled shutdown, and 2 means
927 927
 clear for both Tor and Non-Tor shutdown. When set to 1 or 2, Torbutton listens
... ...
@@ -929,7 +929,7 @@ for the <a class="ulink" href="http://developer.mozilla.org/en/docs/Observer_Not
929 929
 <code class="function">https://git.torproject.org/checkout/torbutton/master/src/components/crash-observer.js</code> and use <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/cookie-jar-selector.js" target="_top">@torproject.org/cookie-jar-selector;2</a>
930 930
 to clear out all cookies and all cookie jars upon shutdown.  </p><p>
931 931
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement.
932
-</p></div><div class="sect2" title="5.25. Reload cookie jar/clear cookies on Firefox crash"><div class="titlepage"><div><div><h3 class="title"><a id="id2979772"></a>5.25. Reload cookie jar/clear cookies on Firefox crash</h3></div></div></div><p>Options:
932
+</p></div><div class="sect2" title="5.25. Reload cookie jar/clear cookies on Firefox crash"><div class="titlepage"><div><div><h3 class="title"><a id="id2934788"></a>5.25. Reload cookie jar/clear cookies on Firefox crash</h3></div></div></div><p>Options:
933 933
   </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.reload_crashed_jar</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.crashed</strong></span></td></tr></table><p>
934 934
   </p><p>This is no longer a user visible option, and is enabled by default. In
935 935
 the event of a crash, the Torbutton <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/crash-observer.js" target="_top">components/crash-observer.js</a> 
... ...
@@ -941,7 +941,7 @@ the chrome that listens for this update), and Torbutton will load the
941 941
   component.</p><p>
942 942
 This setting helps to satisfy the <a class="link" href="#state">State Separation</a> requirement in the event of Firefox
943 943
 crashes.
944
-</p></div><div class="sect2" title="5.26. On crash recovery or session restored startup, restore via: Tor, Non-Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2979847"></a>5.26. On crash recovery or session restored startup, restore via: Tor, Non-Tor</h3></div></div></div><p>Options:
944
+</p></div><div class="sect2" title="5.26. On crash recovery or session restored startup, restore via: Tor, Non-Tor"><div class="titlepage"><div><div><h3 class="title"><a id="id2934863"></a>5.26. On crash recovery or session restored startup, restore via: Tor, Non-Tor</h3></div></div></div><p>Options:
945 945
   </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.restore_tor</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.crashed</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.normal_exit</strong></span></td></tr></table><p>
946 946
   </p><p>This option works with the Torbutton <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/crash-observer.js" target="_top">crash-observer.js</a> 
947 947
   to set the Tor state after a crash is detected (via the 
... ...
@@ -957,7 +957,7 @@ setting helps to satisfy the <a class="link" href="#state">State Separation</a>
957 957
 requirement in the event of Firefox crashes by ensuring all cookies,
958 958
 settings and saved sessions are reloaded from a fixed Tor state.
959 959
  
960
-</p></div><div class="sect2" title="5.27. On normal startup, set state to: Tor, Non-Tor, Shutdown State"><div class="titlepage"><div><div><h3 class="title"><a id="id2979919"></a>5.27. On normal startup, set state to: Tor, Non-Tor, Shutdown State</h3></div></div></div><p>Options:
960
+</p></div><div class="sect2" title="5.27. On normal startup, set state to: Tor, Non-Tor, Shutdown State"><div class="titlepage"><div><div><h3 class="title"><a id="id2934935"></a>5.27. On normal startup, set state to: Tor, Non-Tor, Shutdown State</h3></div></div></div><p>Options:
961 961
   </p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.startup_state</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.noncrashed</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.normal_exit</strong></span></td></tr></table><p>
962 962
   </p><p>This option also works with the Torbutton <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/crash-observer.js" target="_top">crash-observer.js</a> 
963 963
   to set the Tor state after a normal startup is detected (via the 
... ...
@@ -967,7 +967,7 @@ false positives
967 967
 extensions.torbutton.normal_exit in torbutton_uninstall_observer() during
968 968
 Firefox exit and checks this value as well during startup.
969 969
   
970
-</p></div><div class="sect2" title="5.28. Prevent session store from saving Non-Tor/Tor-loaded tabs"><div class="titlepage"><div><div><h3 class="title"><a id="id2979978"></a>5.28. Prevent session store from saving Non-Tor/Tor-loaded tabs</h3></div></div></div><p>Options: 
970
+</p></div><div class="sect2" title="5.28. Prevent session store from saving Non-Tor/Tor-loaded tabs"><div class="titlepage"><div><div><h3 class="title"><a id="id2934994"></a>5.28. Prevent session store from saving Non-Tor/Tor-loaded tabs</h3></div></div></div><p>Options: 
971 971
   </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>
972 972
   </p><p>If these options are enabled, the <a class="ulink" href="https://git.torproject.org/checkout/torbutton/master/src/components/nsSessionStore3.js" target="_top">replacement nsSessionStore.js</a>
973 973
   component checks the <span class="command"><strong>__tb_tor_fetched</strong></span> tag of tabs before writing them
... ...
@@ -977,7 +977,7 @@ This setting helps to satisfy the <a class="link" href="#disk">Disk Avoidance</a
977 977
 requirement, and also helps to satisfy the <a class="link" href="#state">State Separation</a> requirement in the event of Firefox
978 978
 crashes.
979 979
 
980
-</p></div><div class="sect2" title="5.29. Set user agent during Tor usage (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2980042"></a>5.29. Set user agent during Tor usage (crucial)</h3></div></div></div><p>Options:
980
+</p></div><div class="sect2" title="5.29. Set user agent during Tor usage (crucial)"><div class="titlepage"><div><div><h3 class="title"><a id="id2935059"></a>5.29. Set user agent during Tor usage (crucial)</h3></div></div></div><p>Options:
981 981
    </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>
982 982
    </p><p>On face, user agent switching appears to be straight-forward in Firefox.
983 983
 It provides several options for controlling the browser user agent string:
... ...
@@ -1001,7 +1001,7 @@ certain resource:// files</a>. These cases are handled by Torbutton's
1001 1001
 
1002 1002
 </p><p>
1003 1003
 This setting helps to satisfy the <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
1004
-</p></div><div class="sect2" title="5.30. Spoof US English Browser"><div class="titlepage"><div><div><h3 class="title"><a id="id2980217"></a>5.30. Spoof US English Browser</h3></div></div></div><p>Options:
1004
+</p></div><div class="sect2" title="5.30. Spoof US English Browser"><div class="titlepage"><div><div><h3 class="title"><a id="id2935233"></a>5.30. Spoof US English Browser</h3></div></div></div><p>Options:
1005 1005
 </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>
1006 1006
 </p><p> This option causes Torbutton to set
1007 1007
 <span class="command"><strong>general.useragent.locale</strong></span>
... ...
@@ -1012,13 +1012,13 @@ This setting helps to satisfy the <a class="link" href="#setpreservation">Anonym
1012 1012
 well as hooking <span class="command"><strong>navigator.language</strong></span> via its <a class="link" href="#jshooks" title="5.4. Hook Dangerous Javascript">javascript hooks</a>.
1013 1013
  </p><p>
1014 1014
 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.
1015
-</p></div><div class="sect2" title="5.31. Don't send referrer during Tor Usage"><div class="titlepage"><div><div><h3 class="title"><a id="id2980310"></a>5.31. Don't send referrer during Tor Usage</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.disable_referer</strong></span>
1015
+</p></div><div class="sect2" title="5.31. Don't send referrer during Tor Usage"><div class="titlepage"><div><div><h3 class="title"><a id="id2935326"></a>5.31. Don't send referrer during Tor Usage</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.disable_referer</strong></span>
1016 1016
 </p><p> 
1017 1017
 This option causes Torbutton to set <a class="ulink" href="http://kb.mozillazine.org/Network.http.sendSecureXSiteReferrer" target="_top">network.http.sendSecureXSiteReferrer</a> and
1018 1018
 <a class="ulink" href="http://kb.mozillazine.org/Network.http.sendRefererHeader" target="_top">network.http.sendRefererHeader</a> during Tor usage.</p><p>
1019 1019
 This setting also does not directly satisfy any Torbutton requirement, but
1020 1020
 some may desire to mask their referrer for general privacy concerns.
1021
-</p></div><div class="sect2" title="5.32. Strip platform and language off of Google Search Box queries"><div class="titlepage"><div><div><h3 class="title"><a id="id2980350"></a>5.32. Strip platform and language off of Google Search Box queries</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.fix_google_srch</strong></span>
1021
+</p></div><div class="sect2" title="5.32. Strip platform and language off of Google Search Box queries"><div class="titlepage"><div><div><h3 class="title"><a id="id2935366"></a>5.32. Strip platform and language off of Google Search Box queries</h3></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.fix_google_srch</strong></span>
1022 1022
 </p><p> 
1023 1023
 
1024 1024
 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>
... ...
@@ -1028,12 +1028,12 @@ platform information. This setting strips off that info while Tor is enabled.
1028 1028
 
1029 1029
 </p><p>
1030 1030
 This setting helps Torbutton to fulfill its <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
1031
-</p></div><div class="sect2" title="5.33. Automatically use an alternate search engine when presented with a Google Captcha"><div class="titlepage"><div><div><h3 class="title"><a id="id2980391"></a>5.33. Automatically use an alternate search engine when presented with a
1031
+</p></div><div class="sect2" title="5.33. Automatically use an alternate search engine when presented with a Google Captcha"><div class="titlepage"><div><div><h3 class="title"><a id="id2935407"></a>5.33. Automatically use an alternate search engine when presented with a
1032 1032
 Google Captcha</h3></div></div></div><p>Options:
1033 1033
 </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>
1034 1034
 </p><p>
1035 1035
 
1036
-Google's earch engine has rate limiting features that cause it to
1036
+Google's search engine has rate limiting features that cause it to
1037 1037
 <a class="ulink" href="http://googleonlinesecurity.blogspot.com/2007/07/reason-behind-were-sorry-message.html" target="_top">present
1038 1038
 captchas</a> and sometimes even outright ban IPs that issue large numbers
1039 1039
 of search queries, especially if a lot of these queries appear to be searching
... ...
@@ -1053,7 +1053,7 @@ options are ixquick.com, bing.com, yahoo.com and scroogle.org. These are
1053 1053
 encoded in the preferences
1054 1054
 <span class="command"><strong>extensions.torbutton.redir_url.[1-4]</strong></span>.
1055 1055
 
1056
-</p></div><div class="sect2" title="5.34. Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2980471"></a>5.34. Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)</h3></div></div></div><p>Options:
1056
+</p></div><div class="sect2" title="5.34. Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)"><div class="titlepage"><div><div><h3 class="title"><a id="id2935487"></a>5.34. Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)</h3></div></div></div><p>Options:
1057 1057
 </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>
1058 1058
 </p><p>
1059 1059
 
... ...
@@ -1084,26 +1084,35 @@ is currently not exposed via the preferences UI.
1084 1084
 
1085 1085
 Torbutton has to work around a number of Firefox bugs that impact its
1086 1086
 security. Most of these are mentioned elsewhere in this document, but they
1087
-have also been gathered here for reference. Several of these have fixes in
1088
-Firefox3.0/trunk, but are listed because they still have not been backported
1089
-to FF2.0. In order of decreasing severity, they are:
1090
-
1091
-   </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=392274" target="_top">Bug 392274 - Timezone
1092
-config/chrome API</a><p>
1093
-
1094
-The lack of a config or API to configure the timezone requires Torbutton to
1095
-<a class="link" href="#jshooks" title="5.4. Hook Dangerous Javascript">insert client content window javascript</a> to hook
1096
-the Date object. Additionally, a way to <a class="ulink" href="http://pseudo-flaw.net/tor/torbutton/unmask-date.html" target="_top">remove the Date
1097
-hooks</a> was discovered by Greg Fleischer. Worse, on Firefox 3,
1098
-javascript sandboxing prevents most of the javascript hooks from being
1099
-installed, including the Date hooks. On Windows and Linux, you can set the TZ
1100
-environment variable to "UTC" as a workaround. Firefox will obey this
1101
-environment variable for your Timezone on those platforms, but on Windows this
1102
-does not take effect until browser restart. A fix for this has landed in
1103
-Firefox 3.5, but still has not been backported to Firefox 3.0. The lack of an
1104
-easy way to reliably spoof the timezone interferes with Torbutton's ability to
1105
-fulfill its <a class="link" href="#location">Location Neutrality</a> requirement.
1087
+have also been gathered here for reference. In order of decreasing severity,
1088
+they are:
1089
+
1090
+   </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
1091
+Components.interfaces to untrusted content leaks information about installed
1092
+extensions</a><p>
1093
+<a class="ulink" href="http://pseudo-flaw.net/" target="_top">Gregory Fleischer</a> demonstrated at Defcon 17 that these interfaces can
1094
+also be used to <a class="ulink" href="http://pseudo-flaw.net/tor/torbutton/fingerprint-firefox.html" target="_top">fingerprint
1095
+Firefox down the to the minor version</a>. Note that his test has not been
1096
+updated since 3.5.3, hence it reports 3.5.3 for more recent Firefoxes. This
1097
+bug interferes with Torbutton's ability to satisfy its <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
1098
+     </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=280661" target="_top">Bug 280661 - SOCKS proxy server
1099
+connection timeout hard-coded</a><p>
1100
+
1101
+This bug prevents us from using the Firefox SOCKS layer directly, and
1102
+currently requires us to ship an auxiliary HTTP proxy called <a class="ulink" href="http://www.pps.jussieu.fr/~jch/software/polipo/" target="_top">Polipo</a>. If this
1103
+patch were landed, we would no longer need to ship Polipo, which has a number
1104
+of privacy and security issues of its own (in addition to being unmaintained).
1106 1105
 
1106
+    </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=418986" target="_top">Bug 418986 - window.screen
1107
+provides a large amount of identifiable information</a><p>
1108
+
1109
+As <a class="link" href="#fingerprinting">mentioned above</a>, a large amount of
1110
+information is available from <a class="ulink" href="http://developer.mozilla.org/en/docs/DOM:window.screen" target="_top">window.screen</a>.
1111
+Currently, there is no way to obscure this information without Javascript
1112
+hooking. This bug is a feature request to provide some other method to change
1113
+these values. This bug interferes with Torbutton's ability to fulfill its
1114
+<a class="link" href="#setpreservation">Anonymity Set Preservation</a>
1115
+requirement.
1107 1116
 
1108 1117
    </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=435159" target="_top">Bug 435159 -
1109 1118
 nsNSSCertificateDB::DeleteCertificate has race conditions</a><p>
... ...
@@ -1119,6 +1128,19 @@ this functionality is considered a Torbutton security bug because cert
1119 1128
 isolation is considered a <a class="link" href="#state">State Separation</a>
1120 1129
 feature.
1121 1130
 
1131
+      </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
1132
+reduce precision of Date()</a><p>
1133
+
1134
+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
1135
+users based on their typing cadence</a> using the high precision timer
1136
+available to javascript. Using this same precision, it is possible to compute
1137
+an identifier based upon the clock drift of the client from some nominal
1138
+source. The latter is not much of a concern for Tor users, as the variable
1139
+delay to load and run a page is measured on the order of seconds, but the high
1140
+precision timer can still be used to fingerprint aspects of a browser's
1141
+javascript engine and processor, and apparently also a user's typing cadence.
1142
+This bug hinders Torbutton's ability to satisfy its <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
1143
+
1122 1144
       </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=409737" target="_top">Bug 409737 -
1123 1145
 javascript.enabled and docShell.allowJavascript do not disable all event
1124 1146
 handlers</a><p>
... ...
@@ -1217,15 +1239,6 @@ when it arrives in the <span class="command"><strong>torbutton_http_observer</st
1217 1239
 blocking full page plugin loads. This seems to work just fine, but is a bit
1218 1240
 dirty.
1219 1241
 
1220
-    </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=418986" target="_top">Bug 418986 - window.screen
1221
-provides a large amount of identifiable information</a><p>
1222
-
1223
-As <a class="link" href="#fingerprinting">mentioned above</a>, a large amount of
1224
-information is available from <a class="ulink" href="http://developer.mozilla.org/en/docs/DOM:window.screen" target="_top">window.screen</a>.
1225
-Currently, there is no way to obscure this information without Javascript
1226
-hooking. This bug is a feature request to provide some other method to change
1227
-these values.
1228
-
1229 1242
     </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=309524" target="_top">Bug 309524</a>
1230 1243
 and <a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=380556" target="_top">Bug
1231 1244
 380556</a> - nsIContentPolicy::shouldProcess is not called.
... ...
@@ -1252,16 +1265,6 @@ requirement and reveal a user's original IP address. Torbutton's code to
1252 1265
 perform this workaround has been subverted at least once already by Kyle
1253 1266
 Williams.
1254 1267
 
1255
-     </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=448747" target="_top">Bug 448747 -
1256
-Provide Mechanism to clear TLS Session IDs</a><p>
1257
-
1258
-As <a class="link" href="#browseroverlay" title="3.1. Browser Overlay - torbutton.xul">mentioned above</a>, Torbutton currently
1259
-toggles <span class="command"><strong>security.enable_ssl2</strong></span> to clear the SSL
1260
-Session ID cache via the pref observer at <a class="ulink" href="http://mxr.mozilla.org/security/source/security/manager/ssl/src/nsNSSComponent.cpp#2134" target="_top">nsNSSComponent.cpp
1261
-line 2134</a>. This is an arcane and potentially fragile fix. It would be
1262
-better if there were a more standard interface for accomplishing the same
1263
-thing.
1264
-
1265 1268
      </p></li><li class="listitem"><a class="ulink" href="https://bugzilla.mozilla.org/show_bug.cgi?id=419598" target="_top">Bug 419598 - 'var
1266 1269
 Date' is deletable</a><p>
1267 1270
 
... ...
@@ -1390,13 +1393,13 @@ or complete, but it is automated and could be turned into something useful
1390 1393
 with a bit of work.
1391 1394
 
1392 1395
        </p></li></ol></div><p>
1393
-    </p></div><div class="sect2" title="7.2. Multi-state testing"><div class="titlepage"><div><div><h3 class="title"><a id="id2981478"></a>7.2. Multi-state testing</h3></div></div></div><p>
1396
+    </p></div><div class="sect2" title="7.2. Multi-state testing"><div class="titlepage"><div><div><h3 class="title"><a id="id2936532"></a>7.2. Multi-state testing</h3></div></div></div><p>
1394 1397
 
1395 1398
 The tests in this section are geared towards a page that would instruct the
1396 1399
 user to toggle their Tor state after the fetch and perform some operations:
1397 1400
 mouseovers, stray clicks, and potentially reloads.
1398 1401
 
1399
-   </p><div class="sect3" title="Cookies and Cache Correlation"><div class="titlepage"><div><div><h4 class="title"><a id="id2981490"></a>Cookies and Cache Correlation</h4></div></div></div><p>
1402
+   </p><div class="sect3" title="Cookies and Cache Correlation"><div class="titlepage"><div><div><h4 class="title"><a id="id2936545"></a>Cookies and Cache Correlation</h4></div></div></div><p>
1400 1403
 The most obvious test is to set a cookie, ask the user to toggle tor, and then
1401 1404
 have them reload the page. The cookie should no longer be set if they are
1402 1405
 using the default Torbutton settings. In addition, it is possible to leverage
... ...
@@ -1404,11 +1407,11 @@ the cache to <a class="ulink" href="http://crypto.stanford.edu/sameorigin/safeca
1404 1407
 identifiers</a>. The default settings of Torbutton should also protect
1405 1408
 against these from persisting across Tor Toggle.
1406 1409
 
1407
-    </p></div><div class="sect3" title="Javascript timers and event handlers"><div class="titlepage"><div><div><h4 class="title"><a id="id2981513"></a>Javascript timers and event handlers</h4></div></div></div><p>
1410
+    </p></div><div class="sect3" title="Javascript timers and event handlers"><div class="titlepage"><div><div><h4 class="title"><a id="id2936567"></a>Javascript timers and event handlers</h4></div></div></div><p>
1408 1411
 
1409 1412
 Javascript can set timers and register event handlers in the hopes of fetching
1410 1413
 URLs after the user has toggled Torbutton. 
1411
-    </p></div><div class="sect3" title="CSS Popups and non-script Dynamic Content"><div class="titlepage"><div><div><h4 class="title"><a id="id2981526"></a>CSS Popups and non-script Dynamic Content</h4></div></div></div><p>
1414
+    </p></div><div class="sect3" title="CSS Popups and non-script Dynamic Content"><div class="titlepage"><div><div><h4 class="title"><a id="id2936580"></a>CSS Popups and non-script Dynamic Content</h4></div></div></div><p>
1412 1415
 
1413 1416
 Even if Javascript is disabled, CSS is still able to 
1414 1417
 <a class="ulink" href="http://www.tjkdesign.com/articles/css%20pop%20ups/" target="_top">create popup-like
... ...
@@ -1433,7 +1436,7 @@ these attacks, playing with them, and reporting what you find (and potentially
1433 1436
 submitting the test cases back to be run in the standard batch of Torbutton
1434 1437
 tests.
1435 1438
 
1436
-   </p><div class="sect3" title="Some suggested vectors to investigate"><div class="titlepage"><div><div><h4 class="title"><a id="id2981580"></a>Some suggested vectors to investigate</h4></div></div></div><p>
1439
+   </p><div class="sect3" title="Some suggested vectors to investigate"><div class="titlepage"><div><div><h4 class="title"><a id="id2936635"></a>Some suggested vectors to investigate</h4></div></div></div><p>
1437 1440
     </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
1438 1441
 be verified to actually be ineffective after Tor has been toggled.</li><li class="listitem">Other ways to cause Javascript to be executed after
1439 1442
 <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
1440 1443