ecaa2485a9bcf32e1a0bb56905b58a01432789fa
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml         1) <?xml version="1.0" encoding="ISO-8859-1"?>
torbutton/en/design/design.xml         2) <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
torbutton/en/design/design.xml         3)      "file:///usr/share/sgml/docbook/xml-dtd-4.4-1.0-30.1/docbookx.dtd">
torbutton/en/design/design.xml         4) 
torbutton/en/design/design.xml         5) <article id="design">
torbutton/en/design/design.xml         6)  <articleinfo>
torbutton/en/design/design.xml         7)   <title>Torbutton Design Documentation</title>
torbutton/en/design/design.xml         8)    <author>
torbutton/en/design/design.xml         9)     <firstname>Mike</firstname><surname>Perry</surname>
torbutton/en/design/design.xml        10)     <affiliation>
torbutton/en/design/design.xml        11)      <address><email>mikeperry.fscked/org</email></address>
torbutton/en/design/design.xml        12)     </affiliation>
torbutton/en/design/design.xml        13)    </author>
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml        14)    <pubdate>Apr 10 2011</pubdate>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml        15)  </articleinfo>
torbutton/en/design/design.xml        16) 
torbutton/en/design/design.xml        17) <sect1>
torbutton/en/design/design.xml        18)   <title>Introduction</title>
torbutton/en/design/design.xml        19)   <para>
torbutton/en/design/design.xml        20) 
torbutton/en/design/design.xml        21) This document describes the goals, operation, and testing procedures of the
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml        22) Torbutton Firefox extension. It is current as of Torbutton 1.3.2.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml        23) 
torbutton/en/design/design.xml        24)   </para>
torbutton/en/design/design.xml        25)   <sect2 id="adversary">
torbutton/en/design/design.xml        26)    <title>Adversary Model</title>
torbutton/en/design/design.xml        27)    <para>
torbutton/en/design/design.xml        28) 
torbutton/en/design/design.xml        29) A Tor web browser adversary has a number of goals, capabilities, and attack
torbutton/en/design/design.xml        30) types that can be used to guide us towards a set of requirements for the
torbutton/en/design/design.xml        31) Torbutton extension. Let's start with the goals.
torbutton/en/design/design.xml        32) 
torbutton/en/design/design.xml        33)    </para>
torbutton/en/design/design.xml        34)    <sect3 id="adversarygoals">
torbutton/en/design/design.xml        35)     <title>Adversary Goals</title>
torbutton/en/design/design.xml        36)     <orderedlist>
torbutton/en/design/design.xml        37) <!-- These aren't really commands.. But it's the closest I could find in an
torbutton/en/design/design.xml        38) acceptable style.. Don't really want to make my own stylesheet -->
torbutton/en/design/design.xml        39)      <listitem><command>Bypassing proxy settings</command>
torbutton/en/design/design.xml        40)      <para>The adversary's primary goal is direct compromise and bypass of 
torbutton/en/design/design.xml        41) Tor, causing the user to directly connect to an IP of the adversary's
torbutton/en/design/design.xml        42) choosing.</para>
torbutton/en/design/design.xml        43)      </listitem>
torbutton/en/design/design.xml        44)      <listitem><command>Correlation of Tor vs Non-Tor Activity</command>
torbutton/en/design/design.xml        45)      <para>If direct proxy bypass is not possible, the adversary will likely
torbutton/en/design/design.xml        46) happily settle for the ability to correlate something a user did via Tor with
torbutton/en/design/design.xml        47) their non-Tor activity. This can be done with cookies, cache identifiers,
torbutton/en/design/design.xml        48) javascript events, and even CSS. Sometimes the fact that a user uses Tor may
torbutton/en/design/design.xml        49) be enough for some authorities.</para>
torbutton/en/design/design.xml        50)      </listitem>
torbutton/en/design/design.xml        51)      <listitem><command>History disclosure</command>
torbutton/en/design/design.xml        52)      <para>
torbutton/en/design/design.xml        53) The adversary may also be interested in history disclosure: the ability to
torbutton/en/design/design.xml        54) query a user's history to see if they have issued certain censored search
torbutton/en/design/design.xml        55) queries, or visited censored sites.
torbutton/en/design/design.xml        56)      </para>
torbutton/en/design/design.xml        57)      </listitem>
torbutton/en/design/design.xml        58)      <listitem><command>Location information</command>
torbutton/en/design/design.xml        59)      <para>
torbutton/en/design/design.xml        60) 
torbutton/en/design/design.xml        61) Location information such as timezone and locality can be useful for the
torbutton/en/design/design.xml        62) adversary to determine if a user is in fact originating from one of the
torbutton/en/design/design.xml        63) regions they are attempting to control, or to zero-in on the geographical
torbutton/en/design/design.xml        64) location of a particular dissident or whistleblower.
torbutton/en/design/design.xml        65) 
torbutton/en/design/design.xml        66)      </para>
torbutton/en/design/design.xml        67)      </listitem>
torbutton/en/design/design.xml        68)      <listitem><command>Miscellaneous anonymity set reduction</command>
torbutton/en/design/design.xml        69)      <para>
torbutton/en/design/design.xml        70) 
torbutton/en/design/design.xml        71) Anonymity set reduction is also useful in attempting to zero in on a
torbutton/en/design/design.xml        72) particular individual. If the dissident or whistleblower is using a rare build
torbutton/en/design/design.xml        73) of Firefox for an obscure operating system, this can be very useful
torbutton/en/design/design.xml        74) information for tracking them down, or at least <link
torbutton/en/design/design.xml        75) linkend="fingerprinting">tracking their activities</link>.
torbutton/en/design/design.xml        76) 
torbutton/en/design/design.xml        77)      </para>
torbutton/en/design/design.xml        78)      </listitem>
torbutton/en/design/design.xml        79)      <listitem><command>History records and other on-disk
torbutton/en/design/design.xml        80) information</command>
torbutton/en/design/design.xml        81)      <para>
torbutton/en/design/design.xml        82) In some cases, the adversary may opt for a heavy-handed approach, such as
torbutton/en/design/design.xml        83) seizing the computers of all Tor users in an area (especially after narrowing
torbutton/en/design/design.xml        84) the field by the above two pieces of information). History records and cache
torbutton/en/design/design.xml        85) data are the primary goals here.
torbutton/en/design/design.xml        86)      </para>
torbutton/en/design/design.xml        87)      </listitem>
torbutton/en/design/design.xml        88)     </orderedlist>
torbutton/en/design/design.xml        89)    </sect3>
torbutton/en/design/design.xml        90) 
torbutton/en/design/design.xml        91)    <sect3 id="adversarypositioning">
torbutton/en/design/design.xml        92)     <title>Adversary Capabilities - Positioning</title>
torbutton/en/design/design.xml        93)     <para>
torbutton/en/design/design.xml        94) The adversary can position themselves at a number of different locations in
torbutton/en/design/design.xml        95) order to execute their attacks.
torbutton/en/design/design.xml        96)     </para>
torbutton/en/design/design.xml        97)     <orderedlist>
torbutton/en/design/design.xml        98)      <listitem><command>Exit Node or Upstream Router</command>
torbutton/en/design/design.xml        99)      <para>
torbutton/en/design/design.xml       100) The adversary can run exit nodes, or alternatively, they may control routers
torbutton/en/design/design.xml       101) upstream of exit nodes. Both of these scenarios have been observed in the
torbutton/en/design/design.xml       102) wild.
torbutton/en/design/design.xml       103)      </para>
torbutton/en/design/design.xml       104)      </listitem>
torbutton/en/design/design.xml       105)      <listitem><command>Adservers and/or Malicious Websites</command>
torbutton/en/design/design.xml       106)      <para>
torbutton/en/design/design.xml       107) The adversary can also run websites, or more likely, they can contract out
torbutton/en/design/design.xml       108) ad space from a number of different adservers and inject content that way. For
torbutton/en/design/design.xml       109) some users, the adversary may be the adservers themselves. It is not
torbutton/en/design/design.xml       110) inconceivable that adservers may try to subvert or reduce a user's anonymity 
torbutton/en/design/design.xml       111) through Tor for marketing purposes.
torbutton/en/design/design.xml       112)      </para>
torbutton/en/design/design.xml       113)      </listitem>
torbutton/en/design/design.xml       114)      <listitem><command>Local Network/ISP/Upstream Router</command>
torbutton/en/design/design.xml       115)      <para>
torbutton/en/design/design.xml       116) The adversary can also inject malicious content at the user's upstream router
torbutton/en/design/design.xml       117) when they have Tor disabled, in an attempt to correlate their Tor and Non-Tor
torbutton/en/design/design.xml       118) activity.
torbutton/en/design/design.xml       119)      </para>
torbutton/en/design/design.xml       120)      </listitem>
torbutton/en/design/design.xml       121)      <listitem><command>Physical Access</command>
torbutton/en/design/design.xml       122)      <para>
torbutton/en/design/design.xml       123) Some users face adversaries with intermittent or constant physical access.
torbutton/en/design/design.xml       124) Users in Internet cafes, for example, face such a threat. In addition, in
torbutton/en/design/design.xml       125) countries where simply using tools like Tor is illegal, users may face
torbutton/en/design/design.xml       126) confiscation of their computer equipment for excessive Tor usage or just
torbutton/en/design/design.xml       127) general suspicion.
torbutton/en/design/design.xml       128)      </para>
torbutton/en/design/design.xml       129)      </listitem>
torbutton/en/design/design.xml       130)     </orderedlist>
torbutton/en/design/design.xml       131)    </sect3>
torbutton/en/design/design.xml       132) 
torbutton/en/design/design.xml       133)    <sect3 id="attacks">
torbutton/en/design/design.xml       134)     <title>Adversary Capabilities - Attacks</title>
torbutton/en/design/design.xml       135)     <para>
torbutton/en/design/design.xml       136) 
torbutton/en/design/design.xml       137) The adversary can perform the following attacks from a number of different 
torbutton/en/design/design.xml       138) positions to accomplish various aspects of their goals. It should be noted
torbutton/en/design/design.xml       139) that many of these attacks (especially those involving IP address leakage) are
torbutton/en/design/design.xml       140) often performed by accident by websites that simply have Javascript, dynamic 
torbutton/en/design/design.xml       141) CSS elements, and plugins. Others are performed by adservers seeking to
torbutton/en/design/design.xml       142) correlate users' activity across different IP addresses, and still others are
torbutton/en/design/design.xml       143) performed by malicious agents on the Tor network and at national firewalls.
torbutton/en/design/design.xml       144) 
torbutton/en/design/design.xml       145)     </para>
torbutton/en/design/design.xml       146)     <orderedlist>
torbutton/en/design/design.xml       147)      <listitem><command>Inserting Javascript</command>
torbutton/en/design/design.xml       148)      <para>
torbutton/en/design/design.xml       149) If not properly disabled, Javascript event handlers and timers
torbutton/en/design/design.xml       150) can cause the browser to perform network activity after Tor has been disabled,
torbutton/en/design/design.xml       151) thus allowing the adversary to correlate Tor and Non-Tor activity and reveal
torbutton/en/design/design.xml       152) a user's non-Tor IP address. Javascript
torbutton/en/design/design.xml       153) also allows the adversary to execute <ulink
torbutton/en/design/design.xml       154) url="http://whattheinternetknowsaboutyou.com/">history disclosure attacks</ulink>:
torbutton/en/design/design.xml       155) to query the history via the different attributes of 'visited' links to search
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       156) for particular Google queries, sites, or even to <ulink
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       157) url="http://www.mikeonads.com/2008/07/13/using-your-browser-url-history-estimate-gender/">profile
torbutton/en/design/design.xml       158) users based on gender and other classifications</ulink>. Finally,
torbutton/en/design/design.xml       159) Javascript can be used to query the user's timezone via the
torbutton/en/design/design.xml       160) <function>Date()</function> object, and to reduce the anonymity set by querying
torbutton/en/design/design.xml       161) the <function>navigator</function> object for operating system, CPU, locale, 
torbutton/en/design/design.xml       162) and user agent information.
torbutton/en/design/design.xml       163)      </para>
torbutton/en/design/design.xml       164)      </listitem>
torbutton/en/design/design.xml       165) 
torbutton/en/design/design.xml       166)      <listitem><command>Inserting Plugins</command>
torbutton/en/design/design.xml       167)      <para>
torbutton/en/design/design.xml       168) 
torbutton/en/design/design.xml       169) Plugins are abysmal at obeying the proxy settings of the browser. Every plugin
torbutton/en/design/design.xml       170) capable of performing network activity that the author has
torbutton/en/design/design.xml       171) investigated is also capable of performing network activity independent of
torbutton/en/design/design.xml       172) browser proxy settings - and often independent of its own proxy settings.
torbutton/en/design/design.xml       173) Sites that have plugin content don't even have to be malicious to obtain a
torbutton/en/design/design.xml       174) user's
torbutton/en/design/design.xml       175) Non-Tor IP (it usually leaks by itself), though <ulink
torbutton/en/design/design.xml       176) url="http://decloak.net">plenty of active
torbutton/en/design/design.xml       177) exploits</ulink> are possible as well. In addition, plugins can be used to store unique identifiers that are more
torbutton/en/design/design.xml       178) difficult to clear than standard cookies. 
torbutton/en/design/design.xml       179) <ulink url="http://epic.org/privacy/cookies/flash.html">Flash-based
torbutton/en/design/design.xml       180) cookies</ulink> fall into this category, but there are likely numerous other
torbutton/en/design/design.xml       181) examples.
torbutton/en/design/design.xml       182) 
torbutton/en/design/design.xml       183)      </para>
torbutton/en/design/design.xml       184)      </listitem>
torbutton/en/design/design.xml       185)      <listitem><command>Inserting CSS</command>
torbutton/en/design/design.xml       186)      <para>
torbutton/en/design/design.xml       187) 
torbutton/en/design/design.xml       188) CSS can also be used to correlate Tor and Non-Tor activity and reveal a user's
torbutton/en/design/design.xml       189) Non-Tor IP address, via the usage of
torbutton/en/design/design.xml       190) <ulink url="http://www.tjkdesign.com/articles/css%20pop%20ups/">CSS
torbutton/en/design/design.xml       191) popups</ulink> - essentially CSS-based event handlers that fetch content via
torbutton/en/design/design.xml       192) CSS's onmouseover attribute. If these popups are allowed to perform network
torbutton/en/design/design.xml       193) activity in a different Tor state than they were loaded in, they can easily
torbutton/en/design/design.xml       194) correlate Tor and Non-Tor activity and reveal a user's IP address. In
torbutton/en/design/design.xml       195) addition, CSS can also be used without Javascript to perform <ulink
torbutton/en/design/design.xml       196) url="http://ha.ckers.org/weird/CSS-history.cgi">CSS-only history disclosure
torbutton/en/design/design.xml       197) attacks</ulink>.
torbutton/en/design/design.xml       198)      </para>
torbutton/en/design/design.xml       199)      </listitem>
torbutton/en/design/design.xml       200)      <listitem><command>Read and insert cookies</command>
torbutton/en/design/design.xml       201)      <para>
torbutton/en/design/design.xml       202) 
torbutton/en/design/design.xml       203) An adversary in a position to perform MITM content alteration can inject
torbutton/en/design/design.xml       204) document content elements to both read and inject cookies for
torbutton/en/design/design.xml       205) arbitrary domains. In fact, many "SSL secured" websites are vulnerable to this
torbutton/en/design/design.xml       206) sort of <ulink url="http://seclists.org/bugtraq/2007/Aug/0070.html">active
torbutton/en/design/design.xml       207) sidejacking</ulink>.
torbutton/en/design/design.xml       208) 
torbutton/en/design/design.xml       209)      </para>
torbutton/en/design/design.xml       210)      </listitem>
torbutton/en/design/design.xml       211)      <listitem><command>Create arbitrary cached content</command>
torbutton/en/design/design.xml       212)      <para>
torbutton/en/design/design.xml       213) 
torbutton/en/design/design.xml       214) Likewise, the browser cache can also be used to <ulink
torbutton/en/design/design.xml       215) url="http://crypto.stanford.edu/sameorigin/safecachetest.html">store unique
torbutton/en/design/design.xml       216) identifiers</ulink>. Since by default the cache has no same-origin policy,
torbutton/en/design/design.xml       217) these identifiers can be read by any domain, making them an ideal target for
torbutton/en/design/design.xml       218) adserver-class adversaries.
torbutton/en/design/design.xml       219) 
torbutton/en/design/design.xml       220)      </para>
torbutton/en/design/design.xml       221)      </listitem>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       222) 
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       223)      <listitem id="fingerprinting"><command>Fingerprint users based on browser
torbutton/en/design/design.xml       224) attributes</command>
torbutton/en/design/design.xml       225) <para>
torbutton/en/design/design.xml       226) 
torbutton/en/design/design.xml       227) There is an absurd amount of information available to websites via attributes
torbutton/en/design/design.xml       228) of the browser. This information can be used to reduce anonymity set, or even
torbutton/en/design/design.xml       229) <ulink url="http://mandark.fr/0x000000/articles/Total_Recall_On_Firefox..html">uniquely
torbutton/en/design/design.xml       230) fingerprint individual users</ulink>. </para>
torbutton/en/design/design.xml       231) <para>
torbutton/en/design/design.xml       232) For illustration, let's perform a
torbutton/en/design/design.xml       233) back-of-the-envelope calculation on the number of anonymity sets for just the
torbutton/en/design/design.xml       234) resolution information available in the <ulink
torbutton/en/design/design.xml       235) url="http://developer.mozilla.org/en/docs/DOM:window">window</ulink> and
torbutton/en/design/design.xml       236) <ulink
torbutton/en/design/design.xml       237) url="http://developer.mozilla.org/en/docs/DOM:window.screen">window.screen</ulink>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       238) objects.
torbutton/en/design/design.xml       239) 
torbutton/en/design/design.xml       240) 
torbutton/en/design/design.xml       241) 
torbutton/en/design/design.xml       242) Browser window resolution information provides something like
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       243) (1280-640)*(1024-480)=348160 different anonymity sets. Desktop resolution
torbutton/en/design/design.xml       244) information contributes about another factor of 5 (for about 5 resolutions in
torbutton/en/design/design.xml       245) typical use). In addition, the dimensions and position of the desktop taskbar
torbutton/en/design/design.xml       246) are available, which can reveal hints on OS information. This boosts the count
Sebastian Hahn People like spelling it OS X

Sebastian Hahn authored 9 years ago

docs/torbutton/en/design/design.xml  247) by a factor of 5 (for each of the major desktop taskbars - Windows, Mac
docs/torbutton/en/design/design.xml  248) OS X, KDE and Gnome, and None). Subtracting the browser content window
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       249) size from the browser outer window size provide yet more information.
torbutton/en/design/design.xml       250) Firefox toolbar presence gives about a factor of 8 (3 toolbars on/off give
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       251) 2<superscript>3</superscript>=8). Interface effects such as title bar font size
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       252) and window manager settings gives a factor of about 9 (say 3 common font sizes
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       253) for the title bar and 3 common sizes for browser GUI element fonts).
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       254) Multiply this all out, and you have (1280-640)*(1024-480)*5*5*8*9 ~=
torbutton/en/design/design.xml       255) 2<superscript>29</superscript>, or a 29 bit identifier based on resolution
torbutton/en/design/design.xml       256) information alone. </para>
torbutton/en/design/design.xml       257) 
torbutton/en/design/design.xml       258) <para>
torbutton/en/design/design.xml       259) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       260) Of course, this space is non-uniform in user density and prone to incremental
torbutton/en/design/design.xml       261) changes. The <ulink
torbutton/en/design/design.xml       262) url="https://wiki.mozilla.org/Fingerprinting#Data">Panopticlick study
torbutton/en/design/design.xml       263) done</ulink> by the EFF attempts to measure the actual entropy - the number of
torbutton/en/design/design.xml       264) identifying bits of information encoded in browser properties.  Their result
torbutton/en/design/design.xml       265) data is definitely useful, and the metric is probably the appropriate one for
torbutton/en/design/design.xml       266) determining how identifying a particular browser property is. However, some
torbutton/en/design/design.xml       267) quirks of their study means that they do not extract as much information as
torbutton/en/design/design.xml       268) they could from display information: they only use desktop resolution (which
torbutton/en/design/design.xml       269) Torbutton reports as the window resolution) and do not attempt to infer the
torbutton/en/design/design.xml       270) size of toolbars.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       271) 
torbutton/en/design/design.xml       272) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       273) <!--
torbutton/en/design/design.xml       274) FIXME: This is no longer true. Only certain addons are now discoverable, and
torbutton/en/design/design.xml       275) only if they want to be:
torbutton/en/design/design.xml       276) http://webdevwonders.com/detecting-firefox-add-ons/
torbutton/en/design/design.xml       277) https://developer.mozilla.org/en/Updating_web_applications_for_Firefox_3#section_7
torbutton/en/design/design.xml       278) 
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       279) <para>
torbutton/en/design/design.xml       280) 
torbutton/en/design/design.xml       281) To add insult to injury, <ulink
torbutton/en/design/design.xml       282) url="http://pseudo-flaw.net/content/tor/torbutton/">chrome URL disclosure
torbutton/en/design/design.xml       283) attacks</ulink> mean that each and every extension on <ulink
torbutton/en/design/design.xml       284) url="https://addons.mozilla.org">addons.mozilla.org</ulink> adds another bit
torbutton/en/design/design.xml       285) to that 2<superscript>29</superscript>. With hundreds of popular extensions
torbutton/en/design/design.xml       286) and thousands of extensions total, it is easy to see that this sort of
torbutton/en/design/design.xml       287) information is an impressively powerful identifier if used properly by a
torbutton/en/design/design.xml       288) competent and determined adversary such as an ad network.  Again, a
torbutton/en/design/design.xml       289) nearest-neighbor bit vector space approach here would also gracefully handle
torbutton/en/design/design.xml       290) incremental changes to installed extensions.
torbutton/en/design/design.xml       291) 
torbutton/en/design/design.xml       292) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       293) -->
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       294)      </listitem>
torbutton/en/design/design.xml       295)      <listitem><command>Remotely or locally exploit browser and/or
torbutton/en/design/design.xml       296) OS</command>
torbutton/en/design/design.xml       297)      <para>
torbutton/en/design/design.xml       298) Last, but definitely not least, the adversary can exploit either general 
torbutton/en/design/design.xml       299) browser vulnerabilities, plugin vulnerabilities, or OS vulnerabilities to
torbutton/en/design/design.xml       300) install malware and surveillance software. An adversary with physical access
torbutton/en/design/design.xml       301) can perform similar actions. Regrettably, this last attack capability is
torbutton/en/design/design.xml       302) outside of Torbutton's ability to defend against, but it is worth mentioning
torbutton/en/design/design.xml       303) for completeness.
torbutton/en/design/design.xml       304)      </para>
torbutton/en/design/design.xml       305)      </listitem>
torbutton/en/design/design.xml       306)     </orderedlist>
torbutton/en/design/design.xml       307)    </sect3>
torbutton/en/design/design.xml       308) 
torbutton/en/design/design.xml       309)   </sect2>
torbutton/en/design/design.xml       310) 
torbutton/en/design/design.xml       311)   <sect2 id="requirements">
torbutton/en/design/design.xml       312)    <title>Torbutton Requirements</title>
torbutton/en/design/design.xml       313) <note>
torbutton/en/design/design.xml       314) 
torbutton/en/design/design.xml       315) Since many settings satisfy multiple requirements, this design document is
torbutton/en/design/design.xml       316) organized primarily by Torbutton components and settings. However, if you are
torbutton/en/design/design.xml       317) the type that would rather read the document from the requirements
torbutton/en/design/design.xml       318) perspective, it is in fact possible to search for each of the following
torbutton/en/design/design.xml       319) requirement phrases in the text to find the relevant features that help meet
torbutton/en/design/design.xml       320) that requirement.
torbutton/en/design/design.xml       321) 
torbutton/en/design/design.xml       322) </note>
torbutton/en/design/design.xml       323)    <para>
torbutton/en/design/design.xml       324) 
torbutton/en/design/design.xml       325) From the above Adversary Model, a number of requirements become clear. 
torbutton/en/design/design.xml       326) 
torbutton/en/design/design.xml       327)    </para>
torbutton/en/design/design.xml       328) 
torbutton/en/design/design.xml       329) <orderedlist> 
torbutton/en/design/design.xml       330) <!-- These aren't really commands.. But it's the closest I could find in an
torbutton/en/design/design.xml       331) acceptable style.. Don't really want to make my own stylesheet -->
torbutton/en/design/design.xml       332)  <listitem id="proxy"><command>Proxy Obedience</command> 
torbutton/en/design/design.xml       333)  <para>The browser
torbutton/en/design/design.xml       334) MUST NOT bypass Tor proxy settings for any content.</para></listitem>
torbutton/en/design/design.xml       335)  <listitem id="state"><command>State Separation</command>
torbutton/en/design/design.xml       336)  <para>Browser state (cookies, cache, history, 'DOM storage'), accumulated in
torbutton/en/design/design.xml       337)  one Tor state MUST NOT be accessible via the network in
torbutton/en/design/design.xml       338)  another Tor state.</para></listitem>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       339)  <listitem id="isolation"><command>Network Isolation</command>
torbutton/en/design/design.xml       340)  <para>Pages MUST NOT perform any network activity in a Tor state different
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       341)  from the state they were originally loaded in.</para>
torbutton/en/design/design.xml       342)  <para>Note that this requirement is
torbutton/en/design/design.xml       343) being de-emphasized due to the coming shift to supporting only the Tor Browser
torbutton/en/design/design.xml       344) Bundles, which do not support a Toggle operation.</para></listitem>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       345)  <listitem id="undiscoverability"><command>Tor Undiscoverability</command><para>With
torbutton/en/design/design.xml       346) the advent of bridge support in Tor 0.2.0.x, there are now a class of Tor
torbutton/en/design/design.xml       347) users whose network fingerprint does not obviously betray the fact that they
torbutton/en/design/design.xml       348) are using Tor. This should extend to the browser as well - Torbutton MUST NOT 
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       349) reveal its presence while Tor is disabled.
torbutton/en/design/design.xml       350) </para>
torbutton/en/design/design.xml       351)  <para>Note that this requirement is
torbutton/en/design/design.xml       352) being de-emphasized due to the coming shift to supporting only the Tor Browser
torbutton/en/design/design.xml       353) Bundles, which do not support a Toggle operation.</para>
torbutton/en/design/design.xml       354) </listitem>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       355)  <listitem id="disk"><command>Disk Avoidance</command><para>The browser SHOULD NOT write any Tor-related state to disk, or store it
torbutton/en/design/design.xml       356)  in memory beyond the duration of one Tor toggle.</para></listitem>
torbutton/en/design/design.xml       357)  <listitem id="location"><command>Location Neutrality</command><para>The browser SHOULD NOT leak location-specific information, such as
torbutton/en/design/design.xml       358)  timezone or locale via Tor.</para></listitem>
torbutton/en/design/design.xml       359)  <listitem id="setpreservation"><command>Anonymity Set
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       360) Preservation</command><para>The browser SHOULD NOT leak any other anonymity
torbutton/en/design/design.xml       361) set reducing or fingerprinting information
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       362)  (such as user agent, extension presence, and resolution information)
torbutton/en/design/design.xml       363) automatically via Tor. The assessment of the attacks above should make it clear
torbutton/en/design/design.xml       364) that anonymity set reduction is a very powerful method of tracking and
torbutton/en/design/design.xml       365) eventually identifying anonymous users.
torbutton/en/design/design.xml       366) </para></listitem>
torbutton/en/design/design.xml       367)  <listitem id="updates"><command>Update Safety</command><para>The browser
torbutton/en/design/design.xml       368) SHOULD NOT perform unauthenticated updates or upgrades via Tor.</para></listitem>
torbutton/en/design/design.xml       369)  <listitem id="interoperate"><command>Interoperability</command><para>Torbutton SHOULD interoperate with third-party proxy switchers that
torbutton/en/design/design.xml       370)  enable the user to switch between a number of different proxies. It MUST
torbutton/en/design/design.xml       371)  provide full Tor protection in the event a third-party proxy switcher has
torbutton/en/design/design.xml       372)  enabled the Tor proxy settings.</para></listitem>
torbutton/en/design/design.xml       373) </orderedlist>
torbutton/en/design/design.xml       374)   </sect2>
torbutton/en/design/design.xml       375)   <sect2 id="layout">
torbutton/en/design/design.xml       376)    <title>Extension Layout</title>
torbutton/en/design/design.xml       377) 
torbutton/en/design/design.xml       378) <para>Firefox extensions consist of two main categories of code: 'Components' and
torbutton/en/design/design.xml       379) 'Chrome'. Components are a fancy name for classes that implement a given
torbutton/en/design/design.xml       380) interface or interfaces. In Firefox, components <ulink
torbutton/en/design/design.xml       381) url="https://developer.mozilla.org/en/XPCOM">can be
torbutton/en/design/design.xml       382) written</ulink> in C++,
torbutton/en/design/design.xml       383) Javascript, or a mixture of both. Components have two identifiers: their
torbutton/en/design/design.xml       384) '<ulink
torbutton/en/design/design.xml       385) url="http://www.mozilla.org/projects/xpcom/book/cxc/html/quicktour2.html#1005005">Contract
torbutton/en/design/design.xml       386) ID</ulink>' (a human readable path-like string), and their '<ulink
torbutton/en/design/design.xml       387) url="http://www.mozilla.org/projects/xpcom/book/cxc/html/quicktour2.html#1005329">Class
torbutton/en/design/design.xml       388) ID</ulink>' (a GUID hex-string). In addition, the interfaces they implement each have a hex
torbutton/en/design/design.xml       389) 'Interface ID'. It is possible to 'hook' system components - to reimplement
torbutton/en/design/design.xml       390) their interface members with your own wrappers - but only if the rest of the
torbutton/en/design/design.xml       391) browser refers to the component by its Contract ID. If the browser refers to
torbutton/en/design/design.xml       392) the component by Class ID, it bypasses your hooks in that use case.
torbutton/en/design/design.xml       393) Technically, it may be possible to hook Class IDs by unregistering the
torbutton/en/design/design.xml       394) original component, and then re-registering your own, but this relies on
torbutton/en/design/design.xml       395) obsolete and deprecated interfaces and has proved to be less than
torbutton/en/design/design.xml       396) stable.</para>
torbutton/en/design/design.xml       397) 
torbutton/en/design/design.xml       398) <para>'Chrome' is a combination of XML and Javascript used to describe a window.
torbutton/en/design/design.xml       399) Extensions are allowed to create 'overlays' that are 'bound' to existing XML
torbutton/en/design/design.xml       400) window definitions, or they can create their own windows. The DTD for this XML
torbutton/en/design/design.xml       401) is called <ulink
torbutton/en/design/design.xml       402) url="http://developer.mozilla.org/en/docs/XUL_Reference">XUL</ulink>.</para>
torbutton/en/design/design.xml       403)   </sect2>
torbutton/en/design/design.xml       404) </sect1>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       405) <sect1 id="components">
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       406)   <title>Components</title>
torbutton/en/design/design.xml       407)   <para>
torbutton/en/design/design.xml       408) 
torbutton/en/design/design.xml       409) Torbutton installs components for two purposes: hooking existing components to
torbutton/en/design/design.xml       410) reimplement their interfaces; and creating new components that provide
torbutton/en/design/design.xml       411) services to other pieces of the extension.
torbutton/en/design/design.xml       412) 
torbutton/en/design/design.xml       413)   </para>
torbutton/en/design/design.xml       414) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       415)   <sect2 id="hookedxpcom">
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       416)    <title>Hooked Components</title>
torbutton/en/design/design.xml       417) 
torbutton/en/design/design.xml       418) <para>Torbutton makes extensive use of Contract ID hooking, and implements some
torbutton/en/design/design.xml       419) of its own standalone components as well.  Let's discuss the hooked components
torbutton/en/design/design.xml       420) first.</para>
torbutton/en/design/design.xml       421) 
torbutton/en/design/design.xml       422) <sect3 id="appblocker">
torbutton/en/design/design.xml       423)  <title><ulink
torbutton/en/design/design.xml       424) url="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/uriloader/external-protocol-service%3B1">@mozilla.org/uriloader/external-protocol-service;1
torbutton/en/design/design.xml       425) </ulink>, <ulink
torbutton/en/design/design.xml       426) url="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/uriloader/external-helper-app-service%3B1">@mozilla.org/uriloader/external-helper-app-service;1</ulink>,
torbutton/en/design/design.xml       427) and <ulink url="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/mime%3B1">@mozilla.org/mime;1</ulink>
torbutton/en/design/design.xml       428) - <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       429)   url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/external-app-blocker.js">components/external-app-blocker.js</ulink></title>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       430)  <para>
torbutton/en/design/design.xml       431) Due to <link linkend="FirefoxBugs">Firefox Bug</link> <ulink
torbutton/en/design/design.xml       432) url="https://bugzilla.mozilla.org/show_bug.cgi?id=440892">440892</ulink> allowing Firefox 3.x to automatically launch some
torbutton/en/design/design.xml       433) applications without user intervention, Torbutton had to wrap the three
torbutton/en/design/design.xml       434) components involved in launching external applications to provide user
torbutton/en/design/design.xml       435) confirmation before doing so while Tor is enabled. Since external applications
torbutton/en/design/design.xml       436) do not obey proxy settings, they can be manipulated to automatically connect
torbutton/en/design/design.xml       437) back to arbitrary servers outside of Tor with no user intervention. Fixing
torbutton/en/design/design.xml       438) this issue helps to satisfy Torbutton's <link linkend="proxy">Proxy
torbutton/en/design/design.xml       439) Obedience</link> Requirement.
torbutton/en/design/design.xml       440)  </para>
torbutton/en/design/design.xml       441) </sect3>
torbutton/en/design/design.xml       442) <sect3>
torbutton/en/design/design.xml       443) <title><ulink url="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/browser/global-history;2">@mozilla.org/browser/global-history;2</ulink>
torbutton/en/design/design.xml       444) - <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       445)   url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/ignore-history.js">components/ignore-history.js</ulink></title>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       446) 
torbutton/en/design/design.xml       447) <para>This component was contributed by <ulink
torbutton/en/design/design.xml       448) url="http://www.collinjackson.com/">Collin Jackson</ulink> as a method for defeating
torbutton/en/design/design.xml       449) CSS and Javascript-based methods of history disclosure. The global-history
torbutton/en/design/design.xml       450) component is what is used by Firefox to determine if a link was visited or not
torbutton/en/design/design.xml       451) (to apply the appropriate style to the link). By hooking the <ulink
torbutton/en/design/design.xml       452) url="https://developer.mozilla.org/en/nsIGlobalHistory2#isVisited.28.29">isVisited</ulink>
torbutton/en/design/design.xml       453) and <ulink 
torbutton/en/design/design.xml       454) url="https://developer.mozilla.org/en/nsIGlobalHistory2#addURI.28.29">addURI</ulink>
torbutton/en/design/design.xml       455) methods, Torbutton is able to selectively prevent history items from being
torbutton/en/design/design.xml       456) added or being displayed as visited, depending on the Tor state and the user's
torbutton/en/design/design.xml       457) preferences.
torbutton/en/design/design.xml       458) </para>
torbutton/en/design/design.xml       459) <para>
torbutton/en/design/design.xml       460) This component helps satisfy the <link linkend="state">State Separation</link>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       461) and <link linkend="disk">Disk Avoidance</link> requirements of Torbutton. It
torbutton/en/design/design.xml       462) is only needed for Firefox 3.x. On Firefox 4, we omit this component in favor
torbutton/en/design/design.xml       463) of the <ulink
torbutton/en/design/design.xml       464) url="https://developer.mozilla.org/en/CSS/Privacy_and_the_%3avisited_selector">built-in
torbutton/en/design/design.xml       465) history protections</ulink>.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       466) </para>
torbutton/en/design/design.xml       467) </sect3>
torbutton/en/design/design.xml       468) <sect3 id="livemarks">
torbutton/en/design/design.xml       469) <title><ulink
torbutton/en/design/design.xml       470) url="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/browser/livemark-service;2">@mozilla.org/browser/livemark-service;2</ulink>
torbutton/en/design/design.xml       471) - <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       472)   url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/block-livemarks.js">components/block-livemarks.js</ulink></title>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       473) <para>
torbutton/en/design/design.xml       474) 
torbutton/en/design/design.xml       475) The <ulink
torbutton/en/design/design.xml       476) url="http://www.mozilla.com/en-US/firefox/livebookmarks.html">livemark</ulink> service
torbutton/en/design/design.xml       477) is started by a timer that runs 5 seconds after Firefox
torbutton/en/design/design.xml       478) startup. As a result, we cannot simply call the stopUpdateLivemarks() method to
torbutton/en/design/design.xml       479) disable it. We must wrap the component to prevent this start() call from
torbutton/en/design/design.xml       480) firing in the event the browser starts in Tor mode.
torbutton/en/design/design.xml       481) 
torbutton/en/design/design.xml       482) </para>
torbutton/en/design/design.xml       483) <para>
torbutton/en/design/design.xml       484) This component helps satisfy the <link linkend="isolation">Network
torbutton/en/design/design.xml       485) Isolation</link> and <link linkend="setpreservation">Anonymity Set
torbutton/en/design/design.xml       486) Preservation</link> requirements.
torbutton/en/design/design.xml       487) </para>
torbutton/en/design/design.xml       488) </sect3>
torbutton/en/design/design.xml       489) </sect2>
torbutton/en/design/design.xml       490) <sect2>
torbutton/en/design/design.xml       491) <title>New Components</title>
torbutton/en/design/design.xml       492) 
torbutton/en/design/design.xml       493) <para>Torbutton creates four new components that are used throughout the
torbutton/en/design/design.xml       494) extension. These components do not hook any interfaces, nor are they used
torbutton/en/design/design.xml       495) anywhere besides Torbutton itself.</para>
torbutton/en/design/design.xml       496) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       497) <sect3 id="cookiejar">
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       498) <title><ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       499) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/cookie-jar-selector.js">@torproject.org/cookie-jar-selector;2
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       500) - components/cookie-jar-selector.js</ulink></title>
torbutton/en/design/design.xml       501) 
torbutton/en/design/design.xml       502) <para>The cookie jar selector (also based on code from <ulink
torbutton/en/design/design.xml       503) url="http://www.collinjackson.com/">Collin
torbutton/en/design/design.xml       504) Jackson</ulink>) is used by the Torbutton chrome to switch between
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       505) Tor and Non-Tor cookies. It stores an XML representation of the current
torbutton/en/design/design.xml       506) cookie state in memory and/or on disk. When Tor is toggled, it syncs the
torbutton/en/design/design.xml       507) current cookies to this XML store, and then loads the cookies for the other
torbutton/en/design/design.xml       508) state from the XML store.
torbutton/en/design/design.xml       509) </para>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       510) 
torbutton/en/design/design.xml       511) <para>
torbutton/en/design/design.xml       512) This component helps to address the <link linkend="state">State
torbutton/en/design/design.xml       513) Isolation</link> requirement of Torbutton.
torbutton/en/design/design.xml       514) </para>
torbutton/en/design/design.xml       515) 
torbutton/en/design/design.xml       516) </sect3>
torbutton/en/design/design.xml       517) <sect3>
torbutton/en/design/design.xml       518) <title><ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       519) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/torbutton-logger.js">@torproject.org/torbutton-logger;1
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       520) - components/torbutton-logger.js</ulink></title>
torbutton/en/design/design.xml       521) 
torbutton/en/design/design.xml       522) <para>The torbutton logger component allows on-the-fly redirection of torbutton
torbutton/en/design/design.xml       523) logging messages to either Firefox stderr
torbutton/en/design/design.xml       524) (<command>extensions.torbutton.logmethod=0</command>), the Javascript error console
torbutton/en/design/design.xml       525) (<command>extensions.torbutton.logmethod=1</command>), or the DebugLogger extension (if
torbutton/en/design/design.xml       526) available - <command>extensions.torbutton.logmethod=2</command>). It also allows you to
torbutton/en/design/design.xml       527) change the loglevel on the fly by changing
torbutton/en/design/design.xml       528) <command>extensions.torbutton.loglevel</command> (1-5, 1 is most verbose).
torbutton/en/design/design.xml       529) </para>
torbutton/en/design/design.xml       530) </sect3>
torbutton/en/design/design.xml       531) <sect3 id="windowmapper">
torbutton/en/design/design.xml       532) 
torbutton/en/design/design.xml       533) <title><ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       534) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/window-mapper.js">@torproject.org/content-window-mapper;1
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       535) - components/window-mapper.js</ulink></title>
torbutton/en/design/design.xml       536) 
torbutton/en/design/design.xml       537) <para>Torbutton tags Firefox <ulink
torbutton/en/design/design.xml       538) url="https://developer.mozilla.org/en/XUL_Tutorial/Tabboxes">tabs</ulink> with a special variable that indicates the Tor
torbutton/en/design/design.xml       539) state the tab was most recently used under to fetch a page. The problem is
torbutton/en/design/design.xml       540) that for many Firefox events, it is not possible to determine the tab that is
torbutton/en/design/design.xml       541) actually receiving the event. The Torbutton window mapper allows the Torbutton
torbutton/en/design/design.xml       542) chrome and other components to look up a <ulink
torbutton/en/design/design.xml       543) url="https://developer.mozilla.org/en/XUL/tabbrowser">browser
torbutton/en/design/design.xml       544) tab</ulink> for a given <ulink
torbutton/en/design/design.xml       545) url="https://developer.mozilla.org/en/nsIDOMWindow">HTML content
torbutton/en/design/design.xml       546) window</ulink>. It does this by traversing all windows and all browsers, until it
torbutton/en/design/design.xml       547) finds the browser with the requested <ulink
torbutton/en/design/design.xml       548) url="https://developer.mozilla.org/en/XUL/tabbrowser#p-contentWindow">contentWindow</ulink> element. Since the content policy
torbutton/en/design/design.xml       549) and page loading in general can generate hundreds of these lookups, this
torbutton/en/design/design.xml       550) result is cached inside the component.
torbutton/en/design/design.xml       551) </para>
torbutton/en/design/design.xml       552) </sect3>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       553) <sect3 id="crashobserver">
torbutton/en/design/design.xml       554)  <title><ulink
torbutton/en/design/design.xml       555) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/crash-observer.js">@torproject.org/crash-observer;1</ulink></title>
torbutton/en/design/design.xml       556)   <para>
torbutton/en/design/design.xml       557) 
torbutton/en/design/design.xml       558) This component detects when Firefox crashes by altering Firefox prefs during
torbutton/en/design/design.xml       559) runtime and checking for the same values at startup. It <ulink
torbutton/en/design/design.xml       560) url="https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIPrefService#savePrefFile()">synchronizes
torbutton/en/design/design.xml       561) the preference service</ulink> to ensure the altered prefs are written to disk
torbutton/en/design/design.xml       562) immediately.
torbutton/en/design/design.xml       563) 
torbutton/en/design/design.xml       564)   </para>
torbutton/en/design/design.xml       565) </sect3>
torbutton/en/design/design.xml       566) <sect3 id="tbsessionstore">
torbutton/en/design/design.xml       567)  <title><ulink
torbutton/en/design/design.xml       568) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/tbSessionStore.js">@torproject.org/torbutton-ss-blocker;1</ulink></title>
torbutton/en/design/design.xml       569)   <para>
torbutton/en/design/design.xml       570) 
torbutton/en/design/design.xml       571) This component subscribes to the Firefox <ulink
torbutton/en/design/design.xml       572) url="https://developer.mozilla.org/en/Observer_Notifications#Session_Store">sessionstore-state-write</ulink>
torbutton/en/design/design.xml       573) observer event to filter out URLs from tabs loaded during Tor, to prevent them
torbutton/en/design/design.xml       574) from being written to disk. To do this, it checks the
torbutton/en/design/design.xml       575) <command>__tb_tor_fetched</command> tag of tab objects before writing them out. If
torbutton/en/design/design.xml       576) the tag is from a blocked Tor state, the tab is not written to disk.  This is
torbutton/en/design/design.xml       577) a rather expensive operation that involves potentially very large JSON
torbutton/en/design/design.xml       578) evaluations and object tree traversals, but it preferable to replacing the
torbutton/en/design/design.xml       579) Firefox session store with our own implementation, which is what was done in
torbutton/en/design/design.xml       580) years past.
torbutton/en/design/design.xml       581) 
torbutton/en/design/design.xml       582)   </para>
torbutton/en/design/design.xml       583) </sect3>
torbutton/en/design/design.xml       584) 
torbutton/en/design/design.xml       585) <sect3 id="refspoofer">
torbutton/en/design/design.xml       586)  <title><ulink
torbutton/en/design/design.xml       587) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/torRefSpoofer.js">@torproject.org/torRefSpoofer;1</ulink></title>
torbutton/en/design/design.xml       588)  <para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       589) This component handles optional referer spoofing for Torbutton. It implements a
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       590) form of "smart" referer spoofing using <ulink
torbutton/en/design/design.xml       591) url="https://developer.mozilla.org/en/Setting_HTTP_request_headers">http-on-modify-request</ulink>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       592) to modify the Referer header. The code sends the default browser referer
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       593) header only if the destination domain is a suffix of the source, or if the
torbutton/en/design/design.xml       594) source is a suffix of the destination. Otherwise, it sends no referer. This
torbutton/en/design/design.xml       595) strange suffix logic is used as a heuristic: some rare sites on the web block
torbutton/en/design/design.xml       596) requests without proper referer headers, and this logic is an attempt to cater
torbutton/en/design/design.xml       597) to them. Unfortunately, it may not be enough. For example, google.fr will not
torbutton/en/design/design.xml       598) send a referer to google.com using this logic. Hence, it is off by default.
torbutton/en/design/design.xml       599)  </para>
torbutton/en/design/design.xml       600) </sect3>
torbutton/en/design/design.xml       601) 
torbutton/en/design/design.xml       602) <!-- FIXME: tor-protocol, tors-protocol need documenting, but
torbutton/en/design/design.xml       603) they are disabled by default for now, so no reason to add the
torbutton/en/design/design.xml       604) clutter+confusion. -->
torbutton/en/design/design.xml       605) 
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       606) <sect3 id="contentpolicy">
torbutton/en/design/design.xml       607) <title><ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       608) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/cssblocker.js">@torproject.org/cssblocker;1
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       609) - components/cssblocker.js</ulink></title>
torbutton/en/design/design.xml       610) 
torbutton/en/design/design.xml       611) <para>This is a key component to Torbutton's security measures. When Tor is
torbutton/en/design/design.xml       612) toggled, Javascript is disabled, and pages are instructed to stop loading.
torbutton/en/design/design.xml       613) However, CSS is still able to perform network operations by loading styles for
torbutton/en/design/design.xml       614) onmouseover events and other operations. In addition, favicons can still be
torbutton/en/design/design.xml       615) loaded by the browser. The cssblocker component prevents this by implementing
torbutton/en/design/design.xml       616) and registering an <ulink
torbutton/en/design/design.xml       617) url="https://developer.mozilla.org/en/nsIContentPolicy">nsIContentPolicy</ulink>.
torbutton/en/design/design.xml       618) When an nsIContentPolicy is registered, Firefox checks every attempted network
torbutton/en/design/design.xml       619) request against its <ulink
torbutton/en/design/design.xml       620) url="https://developer.mozilla.org/en/nsIContentPolicy#shouldLoad()">shouldLoad</ulink>
torbutton/en/design/design.xml       621) member function to determine if the load should proceed. In Torbutton's case,
torbutton/en/design/design.xml       622) the content policy looks up the appropriate browser tab using the <link
torbutton/en/design/design.xml       623) linkend="windowmapper">window mapper</link>,
torbutton/en/design/design.xml       624) and checks that tab's load tag against the current Tor state. If the tab was
torbutton/en/design/design.xml       625) loaded in a different state than the current state, the fetch is denied.
torbutton/en/design/design.xml       626) Otherwise, it is allowed.</para> This helps to achieve the <link
torbutton/en/design/design.xml       627) linkend="isolation">Network
torbutton/en/design/design.xml       628) Isolation</link> requirements of Torbutton.
torbutton/en/design/design.xml       629) 
torbutton/en/design/design.xml       630) <para>In addition, the content policy also blocks website javascript from
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       631) <ulink
torbutton/en/design/design.xml       632) url="http://webdevwonders.com/detecting-firefox-add-ons/">querying for
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       633) versions and existence of extension chrome</ulink> while Tor is enabled, and
torbutton/en/design/design.xml       634) also masks the presence of Torbutton to website javascript while Tor is
torbutton/en/design/design.xml       635) disabled. </para>
torbutton/en/design/design.xml       636) 
torbutton/en/design/design.xml       637) <para>
torbutton/en/design/design.xml       638) 
torbutton/en/design/design.xml       639) Finally, some of the work that logically belongs to the content policy is
torbutton/en/design/design.xml       640) instead handled by the <command>torbutton_http_observer</command> and
torbutton/en/design/design.xml       641) <command>torbutton_weblistener</command> in <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       642) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/torbutton.js">torbutton.js</ulink>. These two objects handle blocking of
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       643) Firefox 3 favicon loads, popups, and full page plugins, which for whatever
torbutton/en/design/design.xml       644) reason are not passed to the Firefox content policy itself (see Firefox Bugs 
torbutton/en/design/design.xml       645) <ulink
torbutton/en/design/design.xml       646) url="https://bugzilla.mozilla.org/show_bug.cgi?id=437014">437014</ulink> and 
torbutton/en/design/design.xml       647) <ulink
torbutton/en/design/design.xml       648) url="https://bugzilla.mozilla.org/show_bug.cgi?id=401296">401296</ulink>).
torbutton/en/design/design.xml       649) 
torbutton/en/design/design.xml       650) </para>
torbutton/en/design/design.xml       651) 
torbutton/en/design/design.xml       652) <!-- 
torbutton/en/design/design.xml       653) FIXME: Hrmm, the content policy doesn't really lend itself well to display 
torbutton/en/design/design.xml       654) this way.. People looking for this much detail should consult the source.
torbutton/en/design/design.xml       655) 
torbutton/en/design/design.xml       656) <para>
torbutton/en/design/design.xml       657)     <table rowheader="firstcol" frame='all'><title>Access Permissions Table</title>
torbutton/en/design/design.xml       658)     <tgroup cols='5' align='left' colsep='1' rowsep='1'>
torbutton/en/design/design.xml       659)        <tbody>
torbutton/en/design/design.xml       660)        <row>
torbutton/en/design/design.xml       661)          <entry></entry>
torbutton/en/design/design.xml       662)          <entry>chrome/resource</entry>
torbutton/en/design/design.xml       663)          <entry>a3</entry>
torbutton/en/design/design.xml       664)          <entry>a4</entry>
torbutton/en/design/design.xml       665)          <entry>a5</entry>
torbutton/en/design/design.xml       666)        </row>
torbutton/en/design/design.xml       667)        <row>
torbutton/en/design/design.xml       668)          <entry>file</entry>
torbutton/en/design/design.xml       669)          <entry>b2</entry>
torbutton/en/design/design.xml       670)          <entry>b3</entry>
torbutton/en/design/design.xml       671)          <entry>b4</entry>
torbutton/en/design/design.xml       672)          <entry>b5</entry>
torbutton/en/design/design.xml       673)        </row>
torbutton/en/design/design.xml       674)        <row>
torbutton/en/design/design.xml       675)          <entry>c1</entry>
torbutton/en/design/design.xml       676)          <entry>c2</entry>
torbutton/en/design/design.xml       677)          <entry>c3</entry>
torbutton/en/design/design.xml       678)          <entry>c4</entry>
torbutton/en/design/design.xml       679)          <entry>c5</entry>
torbutton/en/design/design.xml       680)        </row>
torbutton/en/design/design.xml       681)        <row>
torbutton/en/design/design.xml       682)          <entry>d1</entry>
torbutton/en/design/design.xml       683)          <entry>d2</entry>
torbutton/en/design/design.xml       684)          <entry>d3</entry>
torbutton/en/design/design.xml       685)          <entry>d4</entry>
torbutton/en/design/design.xml       686)          <entry>d5</entry>
torbutton/en/design/design.xml       687)        </row>
torbutton/en/design/design.xml       688)        </tbody>
torbutton/en/design/design.xml       689)        </tgroup>
torbutton/en/design/design.xml       690)        </table>
torbutton/en/design/design.xml       691) </para>
torbutton/en/design/design.xml       692) -->
torbutton/en/design/design.xml       693) 
torbutton/en/design/design.xml       694) <para>
torbutton/en/design/design.xml       695) 
torbutton/en/design/design.xml       696) This helps to fulfill both the <link
torbutton/en/design/design.xml       697) linkend="setpreservation">Anonymity Set Preservation</link> and the <link
torbutton/en/design/design.xml       698) linkend="undiscoverability">Tor Undiscoverability</link> requirements of
torbutton/en/design/design.xml       699) Torbutton.</para>
torbutton/en/design/design.xml       700) 
torbutton/en/design/design.xml       701) </sect3>
torbutton/en/design/design.xml       702) </sect2>
torbutton/en/design/design.xml       703) </sect1>
torbutton/en/design/design.xml       704) <sect1>
torbutton/en/design/design.xml       705)  <title>Chrome</title>
torbutton/en/design/design.xml       706) 
torbutton/en/design/design.xml       707) <para>The chrome is where all the torbutton graphical elements and windows are
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       708) located. </para>
torbutton/en/design/design.xml       709) <sect2>
torbutton/en/design/design.xml       710)  <title>XUL Windows and Overlays</title>
torbutton/en/design/design.xml       711) <para>
torbutton/en/design/design.xml       712) Each window is described as an <ulink
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       713) url="http://developer.mozilla.org/en/docs/XUL_Reference">XML file</ulink>, with zero or more Javascript
torbutton/en/design/design.xml       714) files attached. The scope of these Javascript files is their containing
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       715) window. XUL files that add new elements and script to existing Firefox windows
torbutton/en/design/design.xml       716) are called overlays.</para>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       717) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       718) <sect3 id="browseroverlay">
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       719) <title>Browser Overlay - <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       720) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/torbutton.xul">torbutton.xul</ulink></title>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       721) 
torbutton/en/design/design.xml       722) <para>The browser overlay, torbutton.xul, defines the toolbar button, the status
torbutton/en/design/design.xml       723) bar, and events for toggling the button. The overlay code is in <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       724) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/torbutton.js">chrome/content/torbutton.js</ulink>.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       725) It contains event handlers for preference update, shutdown, upgrade, and
torbutton/en/design/design.xml       726) location change events.</para>
torbutton/en/design/design.xml       727) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       728) </sect3>
torbutton/en/design/design.xml       729) <sect3>
torbutton/en/design/design.xml       730)  <title>Preferences Window - <ulink
torbutton/en/design/design.xml       731) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/preferences.xul">preferences.xul</ulink></title>
torbutton/en/design/design.xml       732) 
torbutton/en/design/design.xml       733) <para>The preferences window of course lays out the Torbutton preferences, with
torbutton/en/design/design.xml       734) handlers located in <ulink
torbutton/en/design/design.xml       735) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/preferences.js">chrome/content/preferences.js</ulink>.</para>
torbutton/en/design/design.xml       736) </sect3>
torbutton/en/design/design.xml       737) <sect3>
torbutton/en/design/design.xml       738)  <title>Other Windows</title>
torbutton/en/design/design.xml       739) 
torbutton/en/design/design.xml       740) <para>There are additional windows that describe popups for right clicking on
torbutton/en/design/design.xml       741) the status bar, the toolbutton, and the about page.</para>
torbutton/en/design/design.xml       742) 
torbutton/en/design/design.xml       743) </sect3>
torbutton/en/design/design.xml       744) </sect2>
torbutton/en/design/design.xml       745) <sect2>
torbutton/en/design/design.xml       746)  <title>Major Chrome Observers</title>
torbutton/en/design/design.xml       747)  <para>
torbutton/en/design/design.xml       748) In addition to the <link linkend="components">components described
torbutton/en/design/design.xml       749) above</link>, Torbutton also instantiates several observers in the browser
torbutton/en/design/design.xml       750) overlay window. These mostly grew due to scoping convenience, and many should
torbutton/en/design/design.xml       751) probably be relocated into their own components.
torbutton/en/design/design.xml       752)  </para>
torbutton/en/design/design.xml       753)   <orderedlist>
torbutton/en/design/design.xml       754)    <listitem><command>torbutton_window_pref_observer</command>
torbutton/en/design/design.xml       755)     <para>
torbutton/en/design/design.xml       756) This is an observer that listens for Torbutton state changes, for the purposes
torbutton/en/design/design.xml       757) of updating the Torbutton button graphic as the Tor state changes.
torbutton/en/design/design.xml       758)     </para>
torbutton/en/design/design.xml       759)    </listitem>
torbutton/en/design/design.xml       760) 
torbutton/en/design/design.xml       761)    <listitem><command>torbutton_unique_pref_observer</command>
torbutton/en/design/design.xml       762)     <para>
torbutton/en/design/design.xml       763) 
torbutton/en/design/design.xml       764) This is an observer that only runs in one window, called the main window. It
torbutton/en/design/design.xml       765) listens for changes to all of the Torbutton preferences, as well as Torbutton
torbutton/en/design/design.xml       766) controlled Firefox preferences. It is what carries out the toggle path when
torbutton/en/design/design.xml       767) the proxy settings change. When the main window is closed, the
torbutton/en/design/design.xml       768) torbutton_close_window event handler runs to dub a new window the "main
torbutton/en/design/design.xml       769) window".
torbutton/en/design/design.xml       770) 
torbutton/en/design/design.xml       771)     </para>
torbutton/en/design/design.xml       772)    </listitem>
torbutton/en/design/design.xml       773) 
torbutton/en/design/design.xml       774)    <listitem><command>tbHistoryListener</command>
torbutton/en/design/design.xml       775)     <para>
torbutton/en/design/design.xml       776) The tbHistoryListener exists to prevent client window Javascript from
torbutton/en/design/design.xml       777) interacting with window.history to forcibly navigate a user to a tab session
torbutton/en/design/design.xml       778) history entry from a different Tor state. It also expunges the window.history
torbutton/en/design/design.xml       779) entries during toggle. This listener helps Torbutton
torbutton/en/design/design.xml       780) satisfy the <link linkend="isolation">Network Isolation</link> requirement as
torbutton/en/design/design.xml       781) well as the <link linkend="state">State Separation</link> requirement.
torbutton/en/design/design.xml       782) 
torbutton/en/design/design.xml       783)     </para>
torbutton/en/design/design.xml       784)    </listitem>
torbutton/en/design/design.xml       785) 
torbutton/en/design/design.xml       786)    <listitem><command>torbutton_http_observer</command>
torbutton/en/design/design.xml       787)     <para>
torbutton/en/design/design.xml       788) 
torbutton/en/design/design.xml       789) The torbutton_http_observer performs some of the work that logically belongs
torbutton/en/design/design.xml       790) to the content policy. This handles blocking of
torbutton/en/design/design.xml       791) Firefox 3 favicon loads, which for whatever
torbutton/en/design/design.xml       792) reason are not passed to the Firefox content policy itself (see Firefox Bugs
torbutton/en/design/design.xml       793) <ulink
torbutton/en/design/design.xml       794) url="https://bugzilla.mozilla.org/show_bug.cgi?id=437014">437014</ulink> and
torbutton/en/design/design.xml       795) <ulink
torbutton/en/design/design.xml       796) url="https://bugzilla.mozilla.org/show_bug.cgi?id=401296">401296</ulink>).
torbutton/en/design/design.xml       797) 
torbutton/en/design/design.xml       798)     </para>
torbutton/en/design/design.xml       799)     <para>
torbutton/en/design/design.xml       800) The observer is also responsible for redirecting users to alternate
torbutton/en/design/design.xml       801) search engines when Google presents them with a Captcha, as well as copying
torbutton/en/design/design.xml       802) Google Captcha-related cookies between international Google domains.
torbutton/en/design/design.xml       803)     </para>
torbutton/en/design/design.xml       804)    </listitem>
torbutton/en/design/design.xml       805) 
torbutton/en/design/design.xml       806)    <listitem><command>torbutton_proxyservice</command>
torbutton/en/design/design.xml       807)     <para>
torbutton/en/design/design.xml       808) The Torbutton proxy service handles redirecting Torbutton-related update
torbutton/en/design/design.xml       809) checks on addons.mozilla.org through Tor. This is done to help satisfy the
torbutton/en/design/design.xml       810) <link linkend="undiscoverability">Tor Undiscoverability</link> requirement.
torbutton/en/design/design.xml       811)     </para>
torbutton/en/design/design.xml       812)    </listitem>
torbutton/en/design/design.xml       813) 
torbutton/en/design/design.xml       814)    <listitem><command>torbutton_weblistener</command>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       815) <para>The <ulink
torbutton/en/design/design.xml       816) url="https://developer.mozilla.org/en/nsIWebProgressListener#onLocationChange">location
torbutton/en/design/design.xml       817) change</ulink> <ulink
torbutton/en/design/design.xml       818) url="https://developer.mozilla.org/en/nsIWebProgress">webprogress
torbutton/en/design/design.xml       819) listener</ulink>, <command>torbutton_weblistener</command> is one of the most
torbutton/en/design/design.xml       820) important parts of the chrome from a security standpoint. It is a <ulink
torbutton/en/design/design.xml       821) url="https://developer.mozilla.org/en/nsIWebProgressListener">webprogress
torbutton/en/design/design.xml       822) listener</ulink> that handles receiving an event every time a page load or
torbutton/en/design/design.xml       823) iframe load occurs. This class eventually calls down to
torbutton/en/design/design.xml       824) <function>torbutton_update_tags()</function> and
torbutton/en/design/design.xml       825) <function>torbutton_hookdoc()</function>, which apply the browser Tor load
torbutton/en/design/design.xml       826) state tags, plugin permissions, and install the Javascript hooks to hook the
torbutton/en/design/design.xml       827) <ulink
torbutton/en/design/design.xml       828) url="https://developer.mozilla.org/en/DOM/window.screen">window.screen</ulink>
torbutton/en/design/design.xml       829) object to obfuscate browser and desktop resolution information.
torbutton/en/design/design.xml       830) 
torbutton/en/design/design.xml       831) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       832)    </listitem>
torbutton/en/design/design.xml       833) 
torbutton/en/design/design.xml       834)   </orderedlist>
torbutton/en/design/design.xml       835)  </sect2>
torbutton/en/design/design.xml       836) </sect1>
torbutton/en/design/design.xml       837) 
torbutton/en/design/design.xml       838) <sect1>
torbutton/en/design/design.xml       839)  <title>Toggle Code Path</title>
torbutton/en/design/design.xml       840)  <para>
torbutton/en/design/design.xml       841) 
torbutton/en/design/design.xml       842) The act of toggling is connected to <function>torbutton_toggle()</function>
torbutton/en/design/design.xml       843) via the <ulink
torbutton/en/design/design.xml       844) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/torbutton.xul">torbutton.xul</ulink>
torbutton/en/design/design.xml       845) and <ulink
torbutton/en/design/design.xml       846) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/popup.xul">popup.xul</ulink>
torbutton/en/design/design.xml       847) overlay files. Most of the work in the toggling process is present in <ulink
torbutton/en/design/design.xml       848) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/torbutton.js">torbutton.js</ulink> 
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       849) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       850) </para>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       851) <para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml       852) 
torbutton/en/design/design.xml       853) Toggling is a 3 stage process: Button Click, Proxy Update, and
torbutton/en/design/design.xml       854) Settings Update. These stages are reflected in the prefs
torbutton/en/design/design.xml       855) <command>extensions.torbutton.tor_enabled</command>,
torbutton/en/design/design.xml       856) <command>extensions.torbutton.proxies_applied</command>, and
torbutton/en/design/design.xml       857) <command>extensions.torbutton.settings_applied</command>. The reason for the
torbutton/en/design/design.xml       858) three stage preference update is to ensure immediate enforcement of <link
torbutton/en/design/design.xml       859) linkend="isolation">Network Isolation</link> via the <link
torbutton/en/design/design.xml       860) linkend="contentpolicy">content policy</link>. Since the content window
torbutton/en/design/design.xml       861) javascript runs on a different thread than the chrome javascript, it is
torbutton/en/design/design.xml       862) important to properly convey the stages to the content policy to avoid race
torbutton/en/design/design.xml       863) conditions and leakage, especially with <ulink
torbutton/en/design/design.xml       864) url="https://bugzilla.mozilla.org/show_bug.cgi?id=409737">Firefox Bug 
torbutton/en/design/design.xml       865) 409737</ulink> unfixed. The content policy does not allow any network activity
torbutton/en/design/design.xml       866) whatsoever during this three stage transition.
torbutton/en/design/design.xml       867) 
torbutton/en/design/design.xml       868)  </para>
torbutton/en/design/design.xml       869)  <sect2>
torbutton/en/design/design.xml       870)   <title>Button Click</title>
torbutton/en/design/design.xml       871)   <para>
torbutton/en/design/design.xml       872) 
torbutton/en/design/design.xml       873) This is the first step in the toggling process. When the user clicks the
torbutton/en/design/design.xml       874) toggle button or the toolbar, <function>torbutton_toggle()</function> is
torbutton/en/design/design.xml       875) called. This function checks the current Tor status by comparing the current
torbutton/en/design/design.xml       876) proxy settings to the selected Tor settings, and then sets the proxy settings
torbutton/en/design/design.xml       877) to the opposite state, and sets the pref
torbutton/en/design/design.xml       878) <command>extensions.torbutton.tor_enabled</command> to reflect the new state.
torbutton/en/design/design.xml       879) It is this proxy pref update that gives notification via the <ulink
torbutton/en/design/design.xml       880) url="https://developer.mozilla.org/en/NsIPrefBranch2#addObserver.28.29">pref
torbutton/en/design/design.xml       881) observer</ulink>
torbutton/en/design/design.xml       882) <command>torbutton_unique_pref_observer</command> to perform the rest of the
torbutton/en/design/design.xml       883) toggle.
torbutton/en/design/design.xml       884) 
torbutton/en/design/design.xml       885)   </para>
torbutton/en/design/design.xml       886)  </sect2>
torbutton/en/design/design.xml       887)  <sect2>
torbutton/en/design/design.xml       888)   <title>Proxy Update</title>
torbutton/en/design/design.xml       889)   <para>
torbutton/en/design/design.xml       890) 
torbutton/en/design/design.xml       891) When Torbutton receives any proxy change notifications via its
torbutton/en/design/design.xml       892) <command>torbutton_unique_pref_observer</command>, it calls
torbutton/en/design/design.xml       893) <function>torbutton_set_status()</function> which checks against the Tor
torbutton/en/design/design.xml       894) settings to see if the Tor proxy settings match the current settings. If so,
torbutton/en/design/design.xml       895) it calls <function>torbutton_update_status()</function>, which determines if
torbutton/en/design/design.xml       896) the Tor state has actually changed, and sets
torbutton/en/design/design.xml       897) <command>extensions.torbutton.proxies_applied</command> to the appropriate Tor
torbutton/en/design/design.xml       898) state value, and ensures that
torbutton/en/design/design.xml       899) <command>extensions.torbutton.tor_enabled</command> is also set to the correct
torbutton/en/design/design.xml       900) value. This is decoupled from the button click functionality via the pref
torbutton/en/design/design.xml       901) observer so that other addons (such as SwitchProxy) can switch the proxy
torbutton/en/design/design.xml       902) settings between multiple proxies.
torbutton/en/design/design.xml       903) 
torbutton/en/design/design.xml       904)   </para>
torbutton/en/design/design.xml       905)  </sect2>
torbutton/en/design/design.xml       906) <!-- FIXME: Describe tab tagging and other state clearing hacks? -->
torbutton/en/design/design.xml       907)  <sect2>
torbutton/en/design/design.xml       908)   <title>Settings Update</title>
torbutton/en/design/design.xml       909)   <para>
torbutton/en/design/design.xml       910) 
torbutton/en/design/design.xml       911) The next stage is also handled by
torbutton/en/design/design.xml       912) <function>torbutton_update_status()</function>. This function sets scores of
torbutton/en/design/design.xml       913) Firefox preferences, saving the original values to prefs under
torbutton/en/design/design.xml       914) <command>extensions.torbutton.saved.*</command>, and performs the <link
torbutton/en/design/design.xml       915) linkend="cookiejar">cookie jarring</link>, state clearing (such as window.name
torbutton/en/design/design.xml       916) and DOM storage), and <link linkend="preferences">preference
torbutton/en/design/design.xml       917) toggling</link><!--, and ssl certificate jaring work of Torbutton-->. At the
torbutton/en/design/design.xml       918) end of its work, it sets
torbutton/en/design/design.xml       919) <command>extensions.torbutton.settings_applied</command>, which signifies the
torbutton/en/design/design.xml       920) completion of the toggle operation to the <link
torbutton/en/design/design.xml       921) linkend="contentpolicy">content policy</link>.
torbutton/en/design/design.xml       922) 
torbutton/en/design/design.xml       923)   </para>
torbutton/en/design/design.xml       924)  </sect2>
torbutton/en/design/design.xml       925) <sect2 id="preferences">
torbutton/en/design/design.xml       926) <title>Firefox preferences touched during Toggle</title>
torbutton/en/design/design.xml       927) <para>
torbutton/en/design/design.xml       928) There are also a number of Firefox preferences set in
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml       929) <function>torbutton_update_status()</function> that aren't governed by any
torbutton/en/design/design.xml       930) Torbutton setting. These are:
torbutton/en/design/design.xml       931) </para>
torbutton/en/design/design.xml       932) <orderedlist>
torbutton/en/design/design.xml       933) 
torbutton/en/design/design.xml       934) <!--
torbutton/en/design/design.xml       935) Not set any more.
torbutton/en/design/design.xml       936)  <listitem><ulink
torbutton/en/design/design.xml       937) url="http://kb.mozillazine.org/Browser.bookmarks.livemark_refresh_seconds">browser.bookmarks.livemark_refresh_seconds</ulink>
torbutton/en/design/design.xml       938) <para>
torbutton/en/design/design.xml       939) This pref is set in an attempt to disable the fetching of LiveBookmarks via
torbutton/en/design/design.xml       940) Tor. Since users can potentially collect a large amount of live bookmarks to
torbutton/en/design/design.xml       941) very personal sites (blogs of friends, wikipedia articles they maintain,
torbutton/en/design/design.xml       942) comment feeds of their own blog), it is not possible to cleanly isolate these
torbutton/en/design/design.xml       943) fetches and they are simply disabled during Tor usage.
torbutton/en/design/design.xml       944) This helps to address the <link
torbutton/en/design/design.xml       945) linkend="state">State Separation</link> requirement.
torbutton/en/design/design.xml       946) Unfortunately <ulink
torbutton/en/design/design.xml       947) url="https://bugzilla.mozilla.org/show_bug.cgi?id=436250">Firefox Bug
torbutton/en/design/design.xml       948) 436250</ulink> prevents this from
torbutton/en/design/design.xml       949) functioning completely correctly.
torbutton/en/design/design.xml       950) </para>
torbutton/en/design/design.xml       951)   </listitem>
torbutton/en/design/design.xml       952) -->
torbutton/en/design/design.xml       953) 
torbutton/en/design/design.xml       954)  <listitem><ulink
torbutton/en/design/design.xml       955) url="http://kb.mozillazine.org/Network.security.ports.banned">network.security.ports.banned</ulink>
torbutton/en/design/design.xml       956)  <para>
torbutton/en/design/design.xml       957) Torbutton sets this setting to add ports 8123, 8118, 9050 and 9051 (which it
torbutton/en/design/design.xml       958) reads from <command>extensions.torbutton.banned_ports</command>) to the list
torbutton/en/design/design.xml       959) of ports Firefox is forbidden to access. These ports are Polipo, Privoxy, Tor,
torbutton/en/design/design.xml       960) and the Tor control port, respectively. This is set for both Tor and Non-Tor
torbutton/en/design/design.xml       961) usage, and prevents websites from attempting to do http fetches from these
torbutton/en/design/design.xml       962) ports to see if they are open, which addresses the <link
torbutton/en/design/design.xml       963) linkend="undiscoverability">Tor Undiscoverability</link> requirement.
torbutton/en/design/design.xml       964)  </para>
torbutton/en/design/design.xml       965)  </listitem>
torbutton/en/design/design.xml       966)  <listitem><ulink url="http://kb.mozillazine.org/Browser.send_pings">browser.send_pings</ulink>
torbutton/en/design/design.xml       967)  <para>
torbutton/en/design/design.xml       968) This setting is currently always disabled. If anyone ever complains saying
torbutton/en/design/design.xml       969) that they *want* their browser to be able to send ping notifications to a
torbutton/en/design/design.xml       970) page or arbitrary link, I'll make this a pref or Tor-only. But I'm not holding
torbutton/en/design/design.xml       971) my breath. I haven't checked if the content policy is called for pings, but if
torbutton/en/design/design.xml       972) not, this setting helps with meeting the <link linkend="isolation">Network
torbutton/en/design/design.xml       973) Isolation</link> requirement.
torbutton/en/design/design.xml       974)  </para>
torbutton/en/design/design.xml       975)  </listitem>
torbutton/en/design/design.xml       976)  <listitem><ulink
torbutton/en/design/design.xml       977) url="http://kb.mozillazine.org/Browser.safebrowsing.remoteLookups">browser.safebrowsing.remoteLookups</ulink>
torbutton/en/design/design.xml       978)  <para>
torbutton/en/design/design.xml       979) Likewise for this setting. I find it hard to imagine anyone who wants to ask
torbutton/en/design/design.xml       980) Google in real time if each URL they visit is safe, especially when the list
torbutton/en/design/design.xml       981) of unsafe URLs is downloaded anyway. This helps fulfill the <link
torbutton/en/design/design.xml       982) linkend="disk">Disk Avoidance</link> requirement, by preventing your entire
torbutton/en/design/design.xml       983) browsing history from ending up on Google's disks.
torbutton/en/design/design.xml       984)  </para>
torbutton/en/design/design.xml       985)  </listitem>
torbutton/en/design/design.xml       986)  <listitem><ulink
torbutton/en/design/design.xml       987) url="http://kb.mozillazine.org/Browser.safebrowsing.enabled">browser.safebrowsing.enabled</ulink>
torbutton/en/design/design.xml       988)  <para>
torbutton/en/design/design.xml       989) Safebrowsing does <ulink
torbutton/en/design/design.xml       990) url="https://bugzilla.mozilla.org/show_bug.cgi?id=360387">unauthenticated
torbutton/en/design/design.xml       991) updates under Firefox 2</ulink>, so it is disabled during Tor usage. 
torbutton/en/design/design.xml       992) This helps fulfill the <link linkend="updates">Update
torbutton/en/design/design.xml       993) Safety</link> requirement. Firefox 3 has the fix for that bug, and so
torbutton/en/design/design.xml       994) safebrowsing updates are enabled during Tor usage.
torbutton/en/design/design.xml       995)  </para>
torbutton/en/design/design.xml       996)  </listitem>
torbutton/en/design/design.xml       997)  <listitem><ulink
torbutton/en/design/design.xml       998) url="http://kb.mozillazine.org/Network.protocol-handler.warn-external.%28protocol%29">network.protocol-handler.warn-external.(protocol)</ulink>
torbutton/en/design/design.xml       999)  <para>
torbutton/en/design/design.xml      1000) If Tor is enabled, we need to prevent random external applications from
torbutton/en/design/design.xml      1001) launching without at least warning the user. This group of settings only
torbutton/en/design/design.xml      1002) partially accomplishes this, however. Applications can still be launched via
torbutton/en/design/design.xml      1003) plugins. The mechanisms for handling this are described under the "Disable
torbutton/en/design/design.xml      1004) Plugins During Tor Usage" preference. This helps fulfill the <link
torbutton/en/design/design.xml      1005) linkend="proxy">Proxy Obedience</link> requirement, by preventing external
torbutton/en/design/design.xml      1006) applications from accessing network resources at the command of Tor-fetched
torbutton/en/design/design.xml      1007) pages. Unfortunately, due to <link linkend="FirefoxBugs">Firefox Bug</link>
torbutton/en/design/design.xml      1008) <ulink
torbutton/en/design/design.xml      1009) url="https://bugzilla.mozilla.org/show_bug.cgi?id=440892">440892</ulink>,
torbutton/en/design/design.xml      1010) these prefs are no longer obeyed. They are set still anyway out of respect for
torbutton/en/design/design.xml      1011) the dead.
torbutton/en/design/design.xml      1012)  </para>
torbutton/en/design/design.xml      1013) </listitem>
torbutton/en/design/design.xml      1014)   <listitem><ulink
torbutton/en/design/design.xml      1015) url="http://kb.mozillazine.org/Browser.sessionstore.max_tabs_undo">browser.sessionstore.max_tabs_undo</ulink>
torbutton/en/design/design.xml      1016)    <para>
torbutton/en/design/design.xml      1017) 
torbutton/en/design/design.xml      1018) To help satisfy the Torbutton <link linkend="state">State Separation</link>
torbutton/en/design/design.xml      1019) and <link linkend="isolation">Network Isolation</link> requirements,
torbutton/en/design/design.xml      1020) Torbutton needs to purge the Undo Tab history on toggle to prevent repeat
torbutton/en/design/design.xml      1021) "Undo Close" operations from accidentally restoring tabs from a different Tor
torbutton/en/design/design.xml      1022) State. This purge is accomplished by setting this preference to 0 and then
torbutton/en/design/design.xml      1023) restoring it to the previous user value upon toggle.
torbutton/en/design/design.xml      1024) 
torbutton/en/design/design.xml      1025)    </para>
torbutton/en/design/design.xml      1026)   </listitem>
torbutton/en/design/design.xml      1027) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1028)   <listitem><command>security.enable_ssl2</command> or <ulink
torbutton/en/design/design.xml      1029) url="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/interfaces/nsIDOMCrypto">nsIDOMCrypto::logout()</ulink>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1030)    <para>
torbutton/en/design/design.xml      1031) TLS Session IDs can persist for an indefinite duration, providing an
torbutton/en/design/design.xml      1032) identifier that is sent to TLS sites that can be used to link activity. This
torbutton/en/design/design.xml      1033) is particularly troublesome now that we have certificate verification in place
torbutton/en/design/design.xml      1034) in Firefox 3: The OCSP server can use this Session ID to build a history of
torbutton/en/design/design.xml      1035) TLS sites someone visits, and also correlate their activity as users move from
torbutton/en/design/design.xml      1036) network to network (such as home to work to coffee shop, etc), inside and
torbutton/en/design/design.xml      1037) outside of Tor. To handle this and to help satisfy our <link
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1038) linkend="state">State Separation Requirement</link>, we call the logout()
torbutton/en/design/design.xml      1039) function of nsIDOMCrypto. Since this may be absent, or may fail, we fall back
torbutton/en/design/design.xml      1040) to toggling
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1041) <command>security.enable_ssl2</command>, which clears the SSL Session ID
torbutton/en/design/design.xml      1042) cache via the pref observer at <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1043) url="http://mxr.mozilla.org/security/source/security/manager/ssl/src/nsNSSComponent.cpp">nsNSSComponent.cpp</ulink>.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1044)    </para>
torbutton/en/design/design.xml      1045)   </listitem>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1046)   <listitem><command>security.OCSP.enabled</command>
torbutton/en/design/design.xml      1047)    <para>
torbutton/en/design/design.xml      1048) Similarly, we toggle <command>security.OCSP.enabled</command>, which clears the OCSP certificate
torbutton/en/design/design.xml      1049) validation cache via the pref observer at <ulink
torbutton/en/design/design.xml      1050) url="http://mxr.mozilla.org/security/source/security/manager/ssl/src/nsNSSComponent.cpp">nsNSSComponent.cpp</ulink>.
torbutton/en/design/design.xml      1051) In this way, exit nodes will not be able to fingerprint you
torbutton/en/design/design.xml      1052) based the fact that non-Tor OCSP lookups were obviously previously cached.
torbutton/en/design/design.xml      1053) To handle this and to help satisfy our <link
torbutton/en/design/design.xml      1054) linkend="state">State Separation Requirement</link>,
torbutton/en/design/design.xml      1055)    </para>
torbutton/en/design/design.xml      1056)   </listitem>
torbutton/en/design/design.xml      1057)   <listitem><command><ulink
torbutton/en/design/design.xml      1058) url="http://kb.mozillazine.org/Updating_extensions#Disabling_update_checks_for_individual_add-ons_-_Advanced_users">extensions.e0204bd5-9d31-402b-a99d-a6aa8ffebdca.getAddons.cache.enabled</ulink></command>
torbutton/en/design/design.xml      1059)   <para>
torbutton/en/design/design.xml      1060) We permanently disable addon usage statistic reporting to the
torbutton/en/design/design.xml      1061) addons.mozilla.org statistics engine. These statistics send version
torbutton/en/design/design.xml      1062) information about Torbutton users via non-Tor, allowing their Tor use to be
torbutton/en/design/design.xml      1063) uncovered. Disabling this reporting helps Torbutton to satisfy its <link
torbutton/en/design/design.xml      1064) linkend="undiscoverability">Tor Undiscoverability</link> requirement.
torbutton/en/design/design.xml      1065) 
torbutton/en/design/design.xml      1066)   </para>
torbutton/en/design/design.xml      1067)   </listitem>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1068) 
torbutton/en/design/design.xml      1069)   <listitem><command><ulink url="http://www.mozilla.com/en-US/firefox/geolocation/">geo.enabled</ulink></command>
torbutton/en/design/design.xml      1070)    <para>
torbutton/en/design/design.xml      1071) 
torbutton/en/design/design.xml      1072) Torbutton disables Geolocation support in Firefox 3.5 and above whenever tor
torbutton/en/design/design.xml      1073) is enabled. This helps Torbutton maintain its
torbutton/en/design/design.xml      1074) <link linkend="location">Location Neutrality</link> requirement.
torbutton/en/design/design.xml      1075) While Firefox does prompt before divulging geolocational information,
torbutton/en/design/design.xml      1076) the assumption is that Tor users will never want to give their
torbutton/en/design/design.xml      1077) location away during Tor usage, and even allowing websites to prompt
torbutton/en/design/design.xml      1078) them to do so will only cause confusion and accidents to happen. Moreover,
torbutton/en/design/design.xml      1079) just because users may approve a site to know their location in non-Tor mode
torbutton/en/design/design.xml      1080) does not mean they want it divulged during Tor mode.
torbutton/en/design/design.xml      1081) 
torbutton/en/design/design.xml      1082)    </para>
torbutton/en/design/design.xml      1083)   </listitem>
torbutton/en/design/design.xml      1084) 
torbutton/en/design/design.xml      1085)   <listitem><command><ulink
torbutton/en/design/design.xml      1086) url="http://kb.mozillazine.org/Browser.zoom.siteSpecific">browser.zoom.siteSpecific</ulink></command>
torbutton/en/design/design.xml      1087)    <para>
torbutton/en/design/design.xml      1088) 
torbutton/en/design/design.xml      1089) Firefox actually remembers your zoom settings for certain sites. CSS
torbutton/en/design/design.xml      1090) and Javascript rule can use this to recognize previous visitors to a site.
torbutton/en/design/design.xml      1091) This helps Torbutton fulfill its <link linkend="state">State Separation</link>
torbutton/en/design/design.xml      1092) requirement.
torbutton/en/design/design.xml      1093) 
torbutton/en/design/design.xml      1094)    </para>
torbutton/en/design/design.xml      1095)   </listitem>
torbutton/en/design/design.xml      1096) 
torbutton/en/design/design.xml      1097)   <listitem><command><ulink
torbutton/en/design/design.xml      1098) url="https://developer.mozilla.org/en/controlling_dns_prefetching">network.dns.disablePrefetch</ulink></command>
torbutton/en/design/design.xml      1099)    <para>
torbutton/en/design/design.xml      1100) 
torbutton/en/design/design.xml      1101) Firefox 3.5 and above implement prefetching of DNS resolution for hostnames in
torbutton/en/design/design.xml      1102) links on a page to decrease page load latency. While Firefox does typically
torbutton/en/design/design.xml      1103) disable this behavior when proxies are enabled, we set this pref for added
torbutton/en/design/design.xml      1104) safety during Tor usage. Additionally, to prevent Tor-loaded tabs from having
torbutton/en/design/design.xml      1105) their links prefetched after a toggle to Non-Tor mode occurs,
torbutton/en/design/design.xml      1106) we also set the docShell attribute
torbutton/en/design/design.xml      1107) <ulink
torbutton/en/design/design.xml      1108) url="http://www.oxymoronical.com/experiments/apidocs/interface/nsIDocShell">
torbutton/en/design/design.xml      1109) allowDNSPrefetch</ulink> to false on Tor loaded tabs. This happens in the same
torbutton/en/design/design.xml      1110) positions in the code as those for disabling plugins via the allowPlugins
torbutton/en/design/design.xml      1111) docShell attribute. This helps Torbutton fulfill its <link
torbutton/en/design/design.xml      1112) linkend="isolation">Network Isolation</link> requirement.
torbutton/en/design/design.xml      1113) 
torbutton/en/design/design.xml      1114)    </para>
torbutton/en/design/design.xml      1115)   </listitem>
torbutton/en/design/design.xml      1116) 
torbutton/en/design/design.xml      1117)   <listitem><command><ulink
torbutton/en/design/design.xml      1118) url="http://kb.mozillazine.org/Browser.cache.offline.enable">browser.cache.offline.enable</ulink></command>
torbutton/en/design/design.xml      1119)    <para>
torbutton/en/design/design.xml      1120) 
torbutton/en/design/design.xml      1121) Firefox has the ability to store web applications in a special cache to allow
torbutton/en/design/design.xml      1122) them to continue to operate while the user is offline. Since this subsystem
torbutton/en/design/design.xml      1123) is actually different than the normal disk cache, it must be dealt with
torbutton/en/design/design.xml      1124) separately. Thus, Torbutton sets this preference to false whenever Tor is
torbutton/en/design/design.xml      1125) enabled. This helps Torbutton fulfill its <link linkend="disk">Disk
torbutton/en/design/design.xml      1126) Avoidance</link> and <link linkend="state">State Separation</link>
torbutton/en/design/design.xml      1127) requirements.
torbutton/en/design/design.xml      1128) 
torbutton/en/design/design.xml      1129)    </para>
torbutton/en/design/design.xml      1130)   </listitem>
torbutton/en/design/design.xml      1131) 
torbutton/en/design/design.xml      1132) <!-- FIXME: We should make it possible to search for ALL modified FF prefs -->
torbutton/en/design/design.xml      1133) 
torbutton/en/design/design.xml      1134) </orderedlist>
torbutton/en/design/design.xml      1135) </sect2>
torbutton/en/design/design.xml      1136) 
torbutton/en/design/design.xml      1137) </sect1>
torbutton/en/design/design.xml      1138) 
torbutton/en/design/design.xml      1139) <sect1>
torbutton/en/design/design.xml      1140)  <title>Description of Options</title>
torbutton/en/design/design.xml      1141) <para>This section provides a detailed description of Torbutton's options. Each
torbutton/en/design/design.xml      1142) option is presented as the string from the preferences window, a summary, the
torbutton/en/design/design.xml      1143) preferences it touches, and the effect this has on the components, chrome, and
torbutton/en/design/design.xml      1144) browser properties.</para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1145) <!-- FIXME: figure out how to give subsections # ids or make this into a
torbutton/en/design/design.xml      1146) listitem -->
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1147)  <sect2>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1148)   <title>Proxy Settings</title>
torbutton/en/design/design.xml      1149)  <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1150)   <title>Test Settings</title>
torbutton/en/design/design.xml      1151)   <para>
torbutton/en/design/design.xml      1152) This button under the Proxy Settings tab provides a way to verify that the 
torbutton/en/design/design.xml      1153) proxy settings are correct, and actually do route through the Tor network. It
torbutton/en/design/design.xml      1154) performs this check by issuing an <ulink
torbutton/en/design/design.xml      1155) url="http://developer.mozilla.org/en/docs/XMLHttpRequest">XMLHTTPRequest</ulink>
torbutton/en/design/design.xml      1156) for <ulink
torbutton/en/design/design.xml      1157) url="https://check.torproject.org/?TorButton=True">https://check.torproject.org/?Torbutton=True</ulink>.
torbutton/en/design/design.xml      1158) This is a special page that returns very simple, yet well-formed XHTML that
torbutton/en/design/design.xml      1159) Torbutton can easily inspect for a hidden link with an id of
torbutton/en/design/design.xml      1160) <command>TorCheckResult</command> and a target of <command>success</command>
torbutton/en/design/design.xml      1161) or <command>failure</command> to indicate if the
torbutton/en/design/design.xml      1162) user hit the page from a Tor IP, a non-Tor IP. This check is handled in
torbutton/en/design/design.xml      1163) <function>torbutton_test_settings()</function> in <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1164) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/torbutton.js">torbutton.js</ulink>.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1165) Presenting the results to the user is handled by the <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1166) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/preferences.xul">preferences
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1167) window</ulink>
torbutton/en/design/design.xml      1168) callback <function>torbutton_prefs_test_settings()</function> in <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1169) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/preferences.js">preferences.js</ulink>.  
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1170) 
torbutton/en/design/design.xml      1171)   </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1172)  </sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1173)  </sect2>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1174)  <sect2>
torbutton/en/design/design.xml      1175)   <title>Dynamic Content Settings</title>
torbutton/en/design/design.xml      1176)  <sect3 id="plugins">
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1177)   <title>Disable plugins on Tor Usage (crucial)</title>
torbutton/en/design/design.xml      1178)  <para>Option: <command>extensions.torbutton.no_tor_plugins</command></para>
torbutton/en/design/design.xml      1179) 
torbutton/en/design/design.xml      1180)  <para>Java and plugins <ulink
torbutton/en/design/design.xml      1181) url="http://java.sun.com/j2se/1.5.0/docs/api/java/net/class-use/NetworkInterface.html">can query</ulink> the <ulink
torbutton/en/design/design.xml      1182) url="http://www.rgagnon.com/javadetails/java-0095.html">local IP
torbutton/en/design/design.xml      1183) address</ulink> and report it back to the
torbutton/en/design/design.xml      1184) remote site. They can also <ulink
torbutton/en/design/design.xml      1185) url="http://decloak.net">bypass proxy settings</ulink> and directly connect to a
torbutton/en/design/design.xml      1186) remote site without Tor. Every browser plugin we have tested with Firefox has
torbutton/en/design/design.xml      1187) some form of network capability, and every one ignores proxy settings or worse - only
torbutton/en/design/design.xml      1188) partially obeys them. This includes but is not limited to:
torbutton/en/design/design.xml      1189) QuickTime, Windows Media Player, RealPlayer, mplayerplug-in, AcroRead, and
torbutton/en/design/design.xml      1190) Flash. 
torbutton/en/design/design.xml      1191) 
torbutton/en/design/design.xml      1192)  </para>
torbutton/en/design/design.xml      1193)  <para>
torbutton/en/design/design.xml      1194) Enabling this preference causes the above mentioned Torbutton chrome web progress
torbutton/en/design/design.xml      1195)  listener <command>torbutton_weblistener</command> to disable Java via <command>security.enable_java</command> and to disable
torbutton/en/design/design.xml      1196)  plugins via the browser <ulink
torbutton/en/design/design.xml      1197)  url="https://developer.mozilla.org/en/XUL%3aProperty%3adocShell">docShell</ulink>
torbutton/en/design/design.xml      1198)  attribute <command>allowPlugins</command>. These flags are set every time a new window is
torbutton/en/design/design.xml      1199)  created (<function>torbutton_tag_new_browser()</function>), every time a web
torbutton/en/design/design.xml      1200) load
torbutton/en/design/design.xml      1201) event occurs
torbutton/en/design/design.xml      1202)  (<function>torbutton_update_tags()</function>), and every time the tor state is changed
torbutton/en/design/design.xml      1203)  (<function>torbutton_update_status()</function>). As a backup measure, plugins are also
torbutton/en/design/design.xml      1204)  prevented from loading by the content policy in <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1205) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/cssblocker.js">@torproject.org/cssblocker;1</ulink> if Tor is
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1206)  enabled and this option is set.
torbutton/en/design/design.xml      1207)  </para>
torbutton/en/design/design.xml      1208) 
torbutton/en/design/design.xml      1209)  <para>All of this turns out to be insufficient if the user directly clicks
torbutton/en/design/design.xml      1210) on a plugin-handled mime-type. <ulink
torbutton/en/design/design.xml      1211) url="https://bugzilla.mozilla.org/show_bug.cgi?id=401296">In this case</ulink>,
torbutton/en/design/design.xml      1212) the browser decides that maybe it should ignore all these other settings and
torbutton/en/design/design.xml      1213) load the plugin anyways, because maybe the user really did want to load it
torbutton/en/design/design.xml      1214) (never mind this same load-style could happen automatically  with meta-refresh
torbutton/en/design/design.xml      1215) or any number of other ways..). To handle these cases, Torbutton stores a list
torbutton/en/design/design.xml      1216) of plugin-handled mime-types, and sets the pref
torbutton/en/design/design.xml      1217) <command>plugin.disable_full_page_plugin_for_types</command> to this list.
torbutton/en/design/design.xml      1218) Additionally, (since nothing can be assumed when relying on Firefox
torbutton/en/design/design.xml      1219) preferences and internals) if it detects a load of one of them from the web
torbutton/en/design/design.xml      1220) progress listener, it cancels the request, tells the associated DOMWindow to
torbutton/en/design/design.xml      1221) stop loading, clears the document, AND throws an exception. Anything short of
torbutton/en/design/design.xml      1222) all this and the plugin managed to find some way to load.
torbutton/en/design/design.xml      1223)  </para>
torbutton/en/design/design.xml      1224) 
torbutton/en/design/design.xml      1225) <!--
torbutton/en/design/design.xml      1226) 
torbutton/en/design/design.xml      1227) FIXME: Hrmm, technically this behavior is not covered by this pref.
torbutton/en/design/design.xml      1228) 
torbutton/en/design/design.xml      1229)  <para>
torbutton/en/design/design.xml      1230) Furthermore, with version 3.0 and above, Firefox
torbutton/en/design/design.xml      1231) <ulink
torbutton/en/design/design.xml      1232) url="https://bugzilla.mozilla.org/show_bug.cgi?id=440892">began ignoring</ulink>
torbutton/en/design/design.xml      1233) 
torbutton/en/design/design.xml      1234) <ulink
torbutton/en/design/design.xml      1235) url="http://kb.mozillazine.org/Network.protocol-handler.warn-external.%28protocol%29">network.protocol-handler.warn-external.(protocol)</ulink>
torbutton/en/design/design.xml      1236) prefs, which caused us to have to <link linkend="appblocker">wrap the external
torbutton/en/design/design.xml      1237) app launcher components</link> to prevent external apps from being loaded to
torbutton/en/design/design.xml      1238) bypass proxy settings.
torbutton/en/design/design.xml      1239)  </para>
torbutton/en/design/design.xml      1240) -->
torbutton/en/design/design.xml      1241) 
torbutton/en/design/design.xml      1242)  <para>
torbutton/en/design/design.xml      1243)  All this could be avoided, of course, if Firefox would either <ulink
torbutton/en/design/design.xml      1244) url="https://bugzilla.mozilla.org/show_bug.cgi?id=401296">obey
torbutton/en/design/design.xml      1245)  allowPlugins</ulink> for directly visited URLs, or notify its content policy for such
torbutton/en/design/design.xml      1246)  loads either <ulink
torbutton/en/design/design.xml      1247) url="https://bugzilla.mozilla.org/show_bug.cgi?id=309524">via</ulink> <ulink
torbutton/en/design/design.xml      1248) url="https://bugzilla.mozilla.org/show_bug.cgi?id=380556">shouldProcess</ulink> or shouldLoad. The fact that it does not is
torbutton/en/design/design.xml      1249)  not very encouraging.
torbutton/en/design/design.xml      1250)  </para>
torbutton/en/design/design.xml      1251) 
torbutton/en/design/design.xml      1252) 
torbutton/en/design/design.xml      1253)  <para>
torbutton/en/design/design.xml      1254) 
torbutton/en/design/design.xml      1255) Since most plugins completely ignore browser proxy settings, the actions
torbutton/en/design/design.xml      1256) performed by this setting are crucial to satisfying the <link
torbutton/en/design/design.xml      1257) linkend="proxy">Proxy Obedience</link> requirement.
torbutton/en/design/design.xml      1258) 
torbutton/en/design/design.xml      1259)  </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1260) </sect3>
torbutton/en/design/design.xml      1261) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1262)  <title>Isolate Dynamic Content to Tor State (crucial)</title>
torbutton/en/design/design.xml      1263) 
torbutton/en/design/design.xml      1264)  <para>Option: <command>extensions.torbutton.isolate_content</command></para>
torbutton/en/design/design.xml      1265) 
torbutton/en/design/design.xml      1266) <para>Enabling this preference is what enables the <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1267) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/cssblocker.js">@torproject.org/cssblocker;1</ulink> content policy
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1268) mentioned above, and causes it to block content load attempts in pages an
torbutton/en/design/design.xml      1269) opposite Tor state from the current state. Freshly loaded <ulink
torbutton/en/design/design.xml      1270) url="https://developer.mozilla.org/en/XUL/tabbrowser">browser
torbutton/en/design/design.xml      1271) tabs</ulink> are tagged
torbutton/en/design/design.xml      1272) with a <command>__tb_load_state</command> member in
torbutton/en/design/design.xml      1273) <function>torbutton_update_tags()</function> and this
torbutton/en/design/design.xml      1274) value is compared against the current tor state in the content policy.</para>
torbutton/en/design/design.xml      1275) 
torbutton/en/design/design.xml      1276) <para>It also kills all Javascript in each page loaded under that state by
torbutton/en/design/design.xml      1277) toggling the <command>allowJavascript</command> <ulink
torbutton/en/design/design.xml      1278) url="https://developer.mozilla.org/en/XUL%3aProperty%3adocShell">docShell</ulink> property, and issues a
torbutton/en/design/design.xml      1279) <ulink
torbutton/en/design/design.xml      1280) url="https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIWebNavigation#stop()">webNavigation.stop(webNavigation.STOP_ALL)</ulink> to each browser tab (the
torbutton/en/design/design.xml      1281) equivalent of hitting the STOP button).</para>
torbutton/en/design/design.xml      1282) 
torbutton/en/design/design.xml      1283) <para>
torbutton/en/design/design.xml      1284) 
torbutton/en/design/design.xml      1285) Unfortunately, <ulink
torbutton/en/design/design.xml      1286) url="https://bugzilla.mozilla.org/show_bug.cgi?id=409737">Firefox bug
torbutton/en/design/design.xml      1287) 409737</ulink> prevents <command>docShell.allowJavascript</command> from killing
torbutton/en/design/design.xml      1288) all event handlers, and event handlers registered with <ulink
torbutton/en/design/design.xml      1289) url="http://developer.mozilla.org/en/docs/DOM:element.addEventListener">addEventListener()</ulink>
torbutton/en/design/design.xml      1290) are still able to execute. The <link linkend="contentpolicy">Torbutton Content
torbutton/en/design/design.xml      1291) Policy</link> should prevent such code from performing network activity within
torbutton/en/design/design.xml      1292) the current tab, but activity that happens via a popup window or via a
torbutton/en/design/design.xml      1293) Javascript redirect can still slip by. For this reason, Torbutton blocks
torbutton/en/design/design.xml      1294) popups by checking for a valid <ulink
torbutton/en/design/design.xml      1295) url="http://developer.mozilla.org/en/docs/DOM:window.opener">window.opener</ulink>
torbutton/en/design/design.xml      1296) attribute in <function>torbutton_check_progress()</function>. If the window
torbutton/en/design/design.xml      1297) has an opener from a different Tor state, its load is blocked. The content
torbutton/en/design/design.xml      1298) policy also takes similar action to prevent Javascript redirects. This also
torbutton/en/design/design.xml      1299) has the side effect/feature of preventing the user from following any links
torbutton/en/design/design.xml      1300) from a page loaded in an opposite Tor state.
torbutton/en/design/design.xml      1301) 
torbutton/en/design/design.xml      1302) </para>
torbutton/en/design/design.xml      1303) 
torbutton/en/design/design.xml      1304) <para>
torbutton/en/design/design.xml      1305) This setting is responsible for satisfying the <link
torbutton/en/design/design.xml      1306) linkend="isolation">Network Isolation</link> requirement.
torbutton/en/design/design.xml      1307) </para>
torbutton/en/design/design.xml      1308) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1309) </sect3>
torbutton/en/design/design.xml      1310) <sect3 id="jshooks">
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1311) 
torbutton/en/design/design.xml      1312) <title>Hook Dangerous Javascript</title>
torbutton/en/design/design.xml      1313) 
torbutton/en/design/design.xml      1314)  <para>Option: <command>extensions.torbutton.kill_bad_js</command></para>
torbutton/en/design/design.xml      1315) 
torbutton/en/design/design.xml      1316) <para>This setting enables injection of the <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1317) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/jshooks.js">Javascript
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1318) hooking code</ulink>. This is done in the chrome in
torbutton/en/design/design.xml      1319) <function>torbutton_hookdoc()</function>, which is called ultimately by both the 
torbutton/en/design/design.xml      1320) <ulink
torbutton/en/design/design.xml      1321) url="https://developer.mozilla.org/en/nsIWebProgressListener">webprogress
torbutton/en/design/design.xml      1322) listener</ulink> <command>torbutton_weblistener</command> and the <link
torbutton/en/design/design.xml      1323) linkend="contentpolicy">content policy</link> (the latter being a hack to handle
torbutton/en/design/design.xml      1324) javascript: urls).
torbutton/en/design/design.xml      1325) 
torbutton/en/design/design.xml      1326) In the Firefox 2 days, this option did a lot more than
torbutton/en/design/design.xml      1327) it does now. It used to be responsible for timezone and improved useragent
torbutton/en/design/design.xml      1328) spoofing, and history object cloaking. However, now it only provides
torbutton/en/design/design.xml      1329) obfuscation of the <ulink
torbutton/en/design/design.xml      1330) url="https://developer.mozilla.org/en/DOM/window.screen">window.screen</ulink>
torbutton/en/design/design.xml      1331) object to mask your browser and desktop resolution.
torbutton/en/design/design.xml      1332) The resolution hooks
torbutton/en/design/design.xml      1333) effectively make the Firefox browser window appear to websites as if the renderable area
torbutton/en/design/design.xml      1334) takes up the entire desktop, has no toolbar or other GUI element space, and
torbutton/en/design/design.xml      1335) the desktop itself has no toolbars.
torbutton/en/design/design.xml      1336) These hooks drastically reduce the amount of information available to do <link
torbutton/en/design/design.xml      1337) linkend="fingerprinting">anonymity set reduction attacks</link> and help to
torbutton/en/design/design.xml      1338) meet the <link linkend="setpreservation">Anonymity Set Preservation</link>
torbutton/en/design/design.xml      1339) requirements. Unfortunately, Gregory Fleischer discovered it is still possible
torbutton/en/design/design.xml      1340) to retrieve the original screen values by using <ulink
torbutton/en/design/design.xml      1341) url="http://pseudo-flaw.net/tor/torbutton/unmask-sandbox-xpcnativewrapper.html">XPCNativeWrapper</ulink>
torbutton/en/design/design.xml      1342) or <ulink
torbutton/en/design/design.xml      1343) url="http://pseudo-flaw.net/tor/torbutton/unmask-components-lookupmethod.html">Components.lookupMethod</ulink>.
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1344) We are still looking for a workaround as of Torbutton 1.3.2.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1345) 
torbutton/en/design/design.xml      1346) <!-- FIXME: Don't forget to update this -->
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1347) <!-- XXX: Date() issue now fixed by TZ variable! -->
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1348) 
torbutton/en/design/design.xml      1349) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1350) </sect3>
torbutton/en/design/design.xml      1351) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1352) <title>Resize windows to multiples of 50px during Tor usage (recommended)</title>
torbutton/en/design/design.xml      1353) 
torbutton/en/design/design.xml      1354)  <para>Option: <command>extensions.torbutton.resize_windows</command></para>
torbutton/en/design/design.xml      1355) 
torbutton/en/design/design.xml      1356) <para>
torbutton/en/design/design.xml      1357) 
torbutton/en/design/design.xml      1358) This option drastically cuts down on the number of distinct anonymity sets
torbutton/en/design/design.xml      1359) that divide the Tor web userbase. Without this setting, the dimensions for a
torbutton/en/design/design.xml      1360) typical browser window range from 600-1200 horizontal pixels and 400-1000
torbutton/en/design/design.xml      1361) vertical pixels, or about 600x600 = 360000 different sets. Resizing the
torbutton/en/design/design.xml      1362) browser window to multiples of 50 on each side reduces the number of sets by
torbutton/en/design/design.xml      1363) 50^2, bringing the total number of sets to 144. Of course, the distribution
torbutton/en/design/design.xml      1364) among these sets are not uniform, but scaling by 50 will improve the situation
torbutton/en/design/design.xml      1365) due to this non-uniformity for users in the less common resolutions.
torbutton/en/design/design.xml      1366) Obviously the ideal situation would be to lie entirely about the browser
torbutton/en/design/design.xml      1367) window size, but this will likely cause all sorts of rendering issues, and is
torbutton/en/design/design.xml      1368) also not implementable in a foolproof way from extension land.
torbutton/en/design/design.xml      1369) 
torbutton/en/design/design.xml      1370) </para>
torbutton/en/design/design.xml      1371) <para>
torbutton/en/design/design.xml      1372) 
torbutton/en/design/design.xml      1373) The implementation of this setting is spread across a couple of different
torbutton/en/design/design.xml      1374) locations in the Torbutton javascript <link linkend="browseroverlay">browser
torbutton/en/design/design.xml      1375) overlay</link>. Since resizing minimized windows causes them to be restored,
torbutton/en/design/design.xml      1376) and since maximized windows remember their previous size to the pixel, windows
torbutton/en/design/design.xml      1377) must be resized before every document load (at the time of browser tagging)
torbutton/en/design/design.xml      1378) via <function>torbutton_check_round()</function>, called by
torbutton/en/design/design.xml      1379) <function>torbutton_update_tags()</function>. To prevent drift, the extension
torbutton/en/design/design.xml      1380) tracks the original values of the windows and uses this to perform the
torbutton/en/design/design.xml      1381) rounding on document load. In addition, to prevent the user from resizing a
torbutton/en/design/design.xml      1382) window to a non-50px multiple, a resize listener
torbutton/en/design/design.xml      1383) (<function>torbutton_do_resize()</function>) is installed on every new browser
torbutton/en/design/design.xml      1384) window to record the new size and round it to a 50px multiple while Tor is
torbutton/en/design/design.xml      1385) enabled. In all cases, the browser's contentWindow.innerWidth and innerHeight
torbutton/en/design/design.xml      1386) are set. This ensures that there is no discrepancy between the 50 pixel cutoff
torbutton/en/design/design.xml      1387) and the actual renderable area of the browser (so that it is not possible to
torbutton/en/design/design.xml      1388) infer toolbar size/presence by the distance to the nearest 50 pixel roundoff).
torbutton/en/design/design.xml      1389) 
torbutton/en/design/design.xml      1390) </para>
torbutton/en/design/design.xml      1391) <para>
torbutton/en/design/design.xml      1392) This setting helps to meet the <link
torbutton/en/design/design.xml      1393) linkend="setpreservation">Anonymity Set Preservation</link> requirements.
torbutton/en/design/design.xml      1394) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1395) </sect3>
torbutton/en/design/design.xml      1396) <sect3>
torbutton/en/design/design.xml      1397) 
torbutton/en/design/design.xml      1398) <title>Disable Search Suggestions during Tor (recommended)</title>
torbutton/en/design/design.xml      1399) 
torbutton/en/design/design.xml      1400)   <para>Option: <command>extensions.torbutton.no_search</command></para>
torbutton/en/design/design.xml      1401) 
torbutton/en/design/design.xml      1402) <para>
torbutton/en/design/design.xml      1403) This setting causes Torbutton to disable <ulink
torbutton/en/design/design.xml      1404) url="http://kb.mozillazine.org/Browser.search.suggest.enabled"><command>browser.search.suggest.enabled</command></ulink>
torbutton/en/design/design.xml      1405) during Tor usage.
torbutton/en/design/design.xml      1406) This governs if you get Google search suggestions during Tor
torbutton/en/design/design.xml      1407) usage. Your Google cookie is transmitted with google search suggestions, hence
torbutton/en/design/design.xml      1408) this is recommended to be disabled.
torbutton/en/design/design.xml      1409) 
torbutton/en/design/design.xml      1410) </para>
torbutton/en/design/design.xml      1411) <para>
torbutton/en/design/design.xml      1412) While this setting doesn't satisfy any Torbutton requirements, the fact that
torbutton/en/design/design.xml      1413) cookies are transmitted for partially typed queries does not seem desirable
torbutton/en/design/design.xml      1414) for Tor usage.
torbutton/en/design/design.xml      1415) </para>
torbutton/en/design/design.xml      1416) </sect3>
torbutton/en/design/design.xml      1417) 
torbutton/en/design/design.xml      1418) 
torbutton/en/design/design.xml      1419) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1420) <title>Disable Updates During Tor</title>
torbutton/en/design/design.xml      1421) 
torbutton/en/design/design.xml      1422)   <para>Option: <command>extensions.torbutton.no_updates</command></para>
torbutton/en/design/design.xml      1423) 
torbutton/en/design/design.xml      1424)   <para>This setting causes Torbutton to disable the four <ulink
torbutton/en/design/design.xml      1425) url="http://wiki.mozilla.org/Update:Users/Checking_For_Updates#Preference_Controls_and_State">Firefox
torbutton/en/design/design.xml      1426) update settings</ulink> during Tor
torbutton/en/design/design.xml      1427)   usage: <command>extensions.update.enabled</command>,
torbutton/en/design/design.xml      1428) <command>app.update.enabled</command>,
torbutton/en/design/design.xml      1429)   <command>app.update.auto</command>, and
torbutton/en/design/design.xml      1430) <command>browser.search.update</command>.  These prevent the
torbutton/en/design/design.xml      1431)   browser from updating extensions, checking for Firefox upgrades, and
torbutton/en/design/design.xml      1432)   checking for search plugin updates while Tor is enabled.
torbutton/en/design/design.xml      1433)   </para>
torbutton/en/design/design.xml      1434) <para>
torbutton/en/design/design.xml      1435) This setting satisfies the <link
torbutton/en/design/design.xml      1436) linkend="updates">Update Safety</link> requirement.
torbutton/en/design/design.xml      1437) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1438) </sect3>
torbutton/en/design/design.xml      1439) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1440) <title>Redirect Torbutton Updates Via Tor (recommended)</title>
torbutton/en/design/design.xml      1441) 
torbutton/en/design/design.xml      1442)   <para>Option: <command>extensions.torbutton.update_torbutton_via_tor</command></para>
torbutton/en/design/design.xml      1443) 
torbutton/en/design/design.xml      1444)   <para>This setting causes Torbutton to install an
torbutton/en/design/design.xml      1445) 
torbutton/en/design/design.xml      1446) <ulink
torbutton/en/design/design.xml      1447) url="https://developer.mozilla.org/en/nsIProtocolProxyFilter">nsIProtocolProxyFilter</ulink>
torbutton/en/design/design.xml      1448) in order to redirect all version update checks and Torbutton update downloads
torbutton/en/design/design.xml      1449) via Tor, regardless of if Tor is enabled or not. This was done both to address
torbutton/en/design/design.xml      1450) concerns about data retention done by <ulink
torbutton/en/design/design.xml      1451) url="https://www.addons.mozilla.org">addons.mozilla.org</ulink>, as well as to
torbutton/en/design/design.xml      1452) help censored users meet the <link linkend="undiscoverability">Tor
torbutton/en/design/design.xml      1453) Undiscoverability</link> requirement.
torbutton/en/design/design.xml      1454) 
torbutton/en/design/design.xml      1455)   </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1456) </sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1457) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1458) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1459) <title>Disable livemarks updates during Tor usage (recommended)</title>
torbutton/en/design/design.xml      1460)   <para>Option:
torbutton/en/design/design.xml      1461)    <simplelist>
torbutton/en/design/design.xml      1462)    <member><command>extensions.torbutton.disable_livemarks</command></member>
torbutton/en/design/design.xml      1463)    </simplelist>
torbutton/en/design/design.xml      1464)   </para>
torbutton/en/design/design.xml      1465) 
torbutton/en/design/design.xml      1466) <para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1467) 
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1468) This option causes Torbutton to prevent Firefox from loading <ulink
torbutton/en/design/design.xml      1469) url="http://www.mozilla.com/firefox/livebookmarks.html">Livemarks</ulink> during
torbutton/en/design/design.xml      1470) Tor usage. Because people often have very personalized Livemarks (such as RSS
torbutton/en/design/design.xml      1471) feeds of Wikipedia articles they maintain, etc). This is accomplished both by
torbutton/en/design/design.xml      1472) <link linkend="livemarks">wrapping the livemark-service component</link> and
torbutton/en/design/design.xml      1473) by calling stopUpdateLivemarks() on the <ulink
torbutton/en/design/design.xml      1474) url="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/browser/livemark-service;2">Livemark
torbutton/en/design/design.xml      1475) service</ulink> when Tor is enabled.
torbutton/en/design/design.xml      1476) 
torbutton/en/design/design.xml      1477) </para>
torbutton/en/design/design.xml      1478) 
torbutton/en/design/design.xml      1479) <para>
torbutton/en/design/design.xml      1480) This helps satisfy the <link linkend="isolation">Network
torbutton/en/design/design.xml      1481) Isolation</link> and <link linkend="setpreservation">Anonymity Set
torbutton/en/design/design.xml      1482) Preservation</link> requirements.
torbutton/en/design/design.xml      1483) </para>
torbutton/en/design/design.xml      1484) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1485) </sect3>
torbutton/en/design/design.xml      1486) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1487) <title>Block Tor/Non-Tor access to network from file:// urls (recommended)</title>
torbutton/en/design/design.xml      1488)   <para>Options:
torbutton/en/design/design.xml      1489)    <simplelist>
torbutton/en/design/design.xml      1490)    <member><command>extensions.torbutton.block_tor_file_net</command></member>
torbutton/en/design/design.xml      1491)    <member><command>extensions.torbutton.block_nontor_file_net</command></member>
torbutton/en/design/design.xml      1492)    </simplelist>
torbutton/en/design/design.xml      1493)   </para>
torbutton/en/design/design.xml      1494) 
torbutton/en/design/design.xml      1495) <para>
torbutton/en/design/design.xml      1496) 
torbutton/en/design/design.xml      1497) These settings prevent file urls from performing network operations during the
torbutton/en/design/design.xml      1498) respective Tor states. Firefox 2's implementation of same origin policy allows
torbutton/en/design/design.xml      1499) file urls to read and <ulink
torbutton/en/design/design.xml      1500) url="http://www.gnucitizen.org/blog/content-disposition-hacking/">submit
torbutton/en/design/design.xml      1501) arbitrary files from the local filesystem</ulink> to arbitrary websites. To
torbutton/en/design/design.xml      1502) make matters worse, the 'Content-Disposition' header can be injected
torbutton/en/design/design.xml      1503) arbitrarily by exit nodes to trick users into running arbitrary html files in
torbutton/en/design/design.xml      1504) the local context. These preferences cause the <link
torbutton/en/design/design.xml      1505) linkend="contentpolicy">content policy</link> to block access to any network
torbutton/en/design/design.xml      1506) resources from File urls during the appropriate Tor state.
torbutton/en/design/design.xml      1507) 
torbutton/en/design/design.xml      1508) </para>
torbutton/en/design/design.xml      1509) <para>
torbutton/en/design/design.xml      1510) 
torbutton/en/design/design.xml      1511) This preference helps to ensure Tor's <link linkend="isolation">Network
torbutton/en/design/design.xml      1512) Isolation</link> requirement, by preventing file urls from executing network
torbutton/en/design/design.xml      1513) operations in opposite Tor states. Also, allowing pages to submit arbitrary
torbutton/en/design/design.xml      1514) files to arbitrary sites just generally seems like a bad idea.
torbutton/en/design/design.xml      1515) 
torbutton/en/design/design.xml      1516) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1517) </sect3>
torbutton/en/design/design.xml      1518) 
torbutton/en/design/design.xml      1519) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1520) 
torbutton/en/design/design.xml      1521) <title>Close all Tor/Non-Tor tabs and windows on toggle (optional)</title>
torbutton/en/design/design.xml      1522) 
torbutton/en/design/design.xml      1523)   <para>Options:
torbutton/en/design/design.xml      1524)    <simplelist>
torbutton/en/design/design.xml      1525)    <member><command>extensions.torbutton.close_nontor</command></member>
torbutton/en/design/design.xml      1526)    <member><command>extensions.torbutton.close_tor</command></member>
torbutton/en/design/design.xml      1527)    </simplelist>
torbutton/en/design/design.xml      1528)   </para>
torbutton/en/design/design.xml      1529) 
torbutton/en/design/design.xml      1530) <para>
torbutton/en/design/design.xml      1531) 
torbutton/en/design/design.xml      1532) These settings cause Torbutton to enumerate through all windows and close all
torbutton/en/design/design.xml      1533) tabs in each window for the appropriate Tor state. This code can be found in
torbutton/en/design/design.xml      1534) <function>torbutton_update_status()</function>.  The main reason these settings
torbutton/en/design/design.xml      1535) exist is as a backup mechanism in the event of any Javascript or content policy
torbutton/en/design/design.xml      1536) leaks due to <ulink
torbutton/en/design/design.xml      1537) url="https://bugzilla.mozilla.org/show_bug.cgi?id=409737">Firefox Bug
torbutton/en/design/design.xml      1538) 409737</ulink>.  Torbutton currently tries to block all Javascript network
torbutton/en/design/design.xml      1539) activity via the content policy, but until that bug is fixed, there is some
torbutton/en/design/design.xml      1540) risk that there are alternate ways to bypass the policy. This option is
torbutton/en/design/design.xml      1541) available as an extra assurance of <link linkend="isolation">Network
torbutton/en/design/design.xml      1542) Isolation</link> for those who would like to be sure that when Tor is toggled
torbutton/en/design/design.xml      1543) all page activity has ceased. It also serves as a potential future workaround
torbutton/en/design/design.xml      1544) in the event a content policy failure is discovered, and provides an additional
torbutton/en/design/design.xml      1545) level of protection for the <link linkend="disk">Disk Avoidance</link>
torbutton/en/design/design.xml      1546) protection so that browser state is not sitting around waiting to be swapped
torbutton/en/design/design.xml      1547) out longer than necessary.
torbutton/en/design/design.xml      1548) 
torbutton/en/design/design.xml      1549) </para>
torbutton/en/design/design.xml      1550) <para>
torbutton/en/design/design.xml      1551) While this setting doesn't satisfy any Torbutton requirements, the fact that
torbutton/en/design/design.xml      1552) cookies are transmitted for partially typed queries does not seem desirable
torbutton/en/design/design.xml      1553) for Tor usage.
torbutton/en/design/design.xml      1554) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1555) </sect3>
torbutton/en/design/design.xml      1556)  </sect2>
torbutton/en/design/design.xml      1557)  <sect2>
torbutton/en/design/design.xml      1558)   <title>History and Forms Settings</title>
torbutton/en/design/design.xml      1559) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1560) <title>Isolate Access to History navigation to Tor state (crucial)</title>
torbutton/en/design/design.xml      1561)   <para>Option: <command>extensions.torbutton.block_js_history</command></para>
torbutton/en/design/design.xml      1562)   <para>
torbutton/en/design/design.xml      1563) This setting determines if Torbutton installs an <ulink
torbutton/en/design/design.xml      1564) url="http://www.oxymoronical.com/experiments/apidocs/interface/nsISHistoryListener">nsISHistoryListener</ulink>
torbutton/en/design/design.xml      1565) attached to the <ulink
torbutton/en/design/design.xml      1566) url="http://www.oxymoronical.com/experiments/apidocs/interface/nsISHistory">sessionHistory</ulink> of 
torbutton/en/design/design.xml      1567) of each browser's <ulink
torbutton/en/design/design.xml      1568) url="https://developer.mozilla.org/en/XUL%3aProperty%3awebNavigation">webNavigatator</ulink>.
torbutton/en/design/design.xml      1569) The nsIShistoryListener is instantiated with a reference to the containing
torbutton/en/design/design.xml      1570) browser window and blocks the back, forward, and reload buttons on the browser
torbutton/en/design/design.xml      1571) navigation bar when Tor is in an opposite state than the one to load the
torbutton/en/design/design.xml      1572) current tab. In addition, Tor clears the session history during a new document
torbutton/en/design/design.xml      1573) load if this setting is enabled. 
torbutton/en/design/design.xml      1574) 
torbutton/en/design/design.xml      1575)   </para>
torbutton/en/design/design.xml      1576)   <para>
torbutton/en/design/design.xml      1577) 
torbutton/en/design/design.xml      1578) This is marked as a crucial setting in part
torbutton/en/design/design.xml      1579) because Javascript access to the history object is indistinguishable from 
torbutton/en/design/design.xml      1580) user clicks, and because
torbutton/en/design/design.xml      1581) <ulink
torbutton/en/design/design.xml      1582) url="https://bugzilla.mozilla.org/show_bug.cgi?id=409737">Firefox Bug
torbutton/en/design/design.xml      1583) 409737</ulink> allows javascript to execute in opposite Tor states, javascript
torbutton/en/design/design.xml      1584) can issue reloads after Tor toggle to reveal your original IP. Even without
torbutton/en/design/design.xml      1585) this bug, however, Javascript is still able to access previous pages in your
torbutton/en/design/design.xml      1586) session history that may have been loaded under a different Tor state, to
torbutton/en/design/design.xml      1587) attempt to correlate your activity.
torbutton/en/design/design.xml      1588) 
torbutton/en/design/design.xml      1589)    </para>
torbutton/en/design/design.xml      1590)    <para>
torbutton/en/design/design.xml      1591) 
torbutton/en/design/design.xml      1592) This setting helps to fulfill Torbutton's <link linkend="state">State
torbutton/en/design/design.xml      1593) Separation</link> and (until Bug 409737 is fixed) <link linkend="isolation">Network Isolation</link>
torbutton/en/design/design.xml      1594) requirements.
torbutton/en/design/design.xml      1595) 
torbutton/en/design/design.xml      1596)    </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1597) </sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1598) 
torbutton/en/design/design.xml      1599) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1600) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1601) <title>History Access Settings</title>
torbutton/en/design/design.xml      1602) 
torbutton/en/design/design.xml      1603)   <para>Options:
torbutton/en/design/design.xml      1604)   <simplelist>
torbutton/en/design/design.xml      1605)    <member><command>extensions.torbutton.block_thread</command></member>
torbutton/en/design/design.xml      1606)    <member><command>extensions.torbutton.block_nthread</command></member>
torbutton/en/design/design.xml      1607)    <member><command>extensions.torbutton.block_thwrite</command></member>
torbutton/en/design/design.xml      1608)    <member><command>extensions.torbutton.block_nthwrite</command></member>
torbutton/en/design/design.xml      1609)   </simplelist>
torbutton/en/design/design.xml      1610)   </para>
torbutton/en/design/design.xml      1611) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1612) <para>On Firefox 3.x, these four settings govern the behavior of the <ulink
torbutton/en/design/design.xml      1613) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/ignore-history.js">components/ignore-history.js</ulink>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1614) history blocker component mentioned above. By hooking the browser's view of
torbutton/en/design/design.xml      1615) the history itself via the <ulink
torbutton/en/design/design.xml      1616) url="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/browser/global-history;2">@mozilla.org/browser/global-history;2</ulink>
torbutton/en/design/design.xml      1617) and <ulink
torbutton/en/design/design.xml      1618) url="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/browser/nav-history-service;1">@mozilla.org/browser/nav-history-service;1</ulink>
torbutton/en/design/design.xml      1619) components, this mechanism defeats all document-based <ulink
torbutton/en/design/design.xml      1620) url="http://whattheinternetknowsaboutyou.com/">history disclosure
torbutton/en/design/design.xml      1621) attacks</ulink>, including <ulink
torbutton/en/design/design.xml      1622) url="http://ha.ckers.org/weird/CSS-history.cgi">CSS-only attacks</ulink>.
torbutton/en/design/design.xml      1623) 
torbutton/en/design/design.xml      1624) The component also hooks functions involved in writing history to disk via
torbutton/en/design/design.xml      1625) both the <ulink
torbutton/en/design/design.xml      1626) url="http://developer.mozilla.org/en/docs/Places_migration_guide#History">Places
torbutton/en/design/design.xml      1627) Database</ulink> and the older Firefox 2 mechanisms.
torbutton/en/design/design.xml      1628) 
torbutton/en/design/design.xml      1629) </para>
torbutton/en/design/design.xml      1630) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1631) <para>
torbutton/en/design/design.xml      1632) On Firefox 4, Mozilla finally <ulink
torbutton/en/design/design.xml      1633) url="https://developer.mozilla.org/en/CSS/Privacy_and_the_%3avisited_selector">addressed
torbutton/en/design/design.xml      1634) these issues</ulink>, so we can effectively ignore the "read" pair of the
torbutton/en/design/design.xml      1635) above prefs. We then only need to link the write prefs to
torbutton/en/design/design.xml      1636) <command>places.history.enabled</command>, which disabled writing to the
torbutton/en/design/design.xml      1637) history store while set.
torbutton/en/design/design.xml      1638) </para>
torbutton/en/design/design.xml      1639) 
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1640) <para>
torbutton/en/design/design.xml      1641) This setting helps to satisfy the <link
torbutton/en/design/design.xml      1642) linkend="state">State Separation</link> and <link
torbutton/en/design/design.xml      1643) linkend="disk">Disk Avoidance</link> requirements.
torbutton/en/design/design.xml      1644) </para>
torbutton/en/design/design.xml      1645) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1646) </sect3>
torbutton/en/design/design.xml      1647) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1648) 
torbutton/en/design/design.xml      1649) <title>Clear History During Tor Toggle (optional)</title>
torbutton/en/design/design.xml      1650) 
torbutton/en/design/design.xml      1651) <para>Option: <command>extensions.torbutton.clear_history</command></para>
torbutton/en/design/design.xml      1652) 
torbutton/en/design/design.xml      1653) <para>This setting governs if Torbutton calls
torbutton/en/design/design.xml      1654) <ulink
torbutton/en/design/design.xml      1655) url="https://developer.mozilla.org/en/nsIBrowserHistory#removeAllPages.28.29">nsIBrowserHistory.removeAllPages</ulink>
torbutton/en/design/design.xml      1656) and <ulink
torbutton/en/design/design.xml      1657) url="http://www.oxymoronical.com/experiments/apidocs/interface/nsISHistory">nsISHistory.PurgeHistory</ulink>
torbutton/en/design/design.xml      1658) for each tab on Tor toggle.</para>
torbutton/en/design/design.xml      1659) <para>
torbutton/en/design/design.xml      1660) This setting is an optional way to help satisfy the <link
torbutton/en/design/design.xml      1661) linkend="state">State Separation</link> requirement.
torbutton/en/design/design.xml      1662) </para>
torbutton/en/design/design.xml      1663) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1664) </sect3>
torbutton/en/design/design.xml      1665) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1666) <title>Block Password+Form saving during Tor/Non-Tor</title>
torbutton/en/design/design.xml      1667) 
torbutton/en/design/design.xml      1668) <para>Options:
torbutton/en/design/design.xml      1669)   <simplelist>
torbutton/en/design/design.xml      1670)   <member><command>extensions.torbutton.block_tforms</command></member>
torbutton/en/design/design.xml      1671)   <member><command>extensions.torbutton.block_ntforms</command></member>
torbutton/en/design/design.xml      1672)   </simplelist>
torbutton/en/design/design.xml      1673)   </para>
torbutton/en/design/design.xml      1674) 
torbutton/en/design/design.xml      1675) <para>These settings govern if Torbutton disables
torbutton/en/design/design.xml      1676) <command>browser.formfill.enable</command>
torbutton/en/design/design.xml      1677) and <command>signon.rememberSignons</command> during Tor and Non-Tor usage.
torbutton/en/design/design.xml      1678) Since form fields can be read at any time by Javascript, this setting is a lot
torbutton/en/design/design.xml      1679) more important than it seems.
torbutton/en/design/design.xml      1680) </para>
torbutton/en/design/design.xml      1681) 
torbutton/en/design/design.xml      1682) <para>
torbutton/en/design/design.xml      1683) This setting helps to satisfy the <link
torbutton/en/design/design.xml      1684) linkend="state">State Separation</link> and <link
torbutton/en/design/design.xml      1685) linkend="disk">Disk Avoidance</link> requirements.
torbutton/en/design/design.xml      1686) </para>
torbutton/en/design/design.xml      1687) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1688) </sect3>
torbutton/en/design/design.xml      1689)  </sect2>
torbutton/en/design/design.xml      1690)  <sect2>
torbutton/en/design/design.xml      1691)   <title>Cache Settings</title>
torbutton/en/design/design.xml      1692) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1693)   <title>Block Tor disk cache and clear all cache on Tor Toggle</title>
torbutton/en/design/design.xml      1694) 
torbutton/en/design/design.xml      1695)   <para>Option: <command>extensions.torbutton.clear_cache</command>
torbutton/en/design/design.xml      1696)   </para>
torbutton/en/design/design.xml      1697) 
torbutton/en/design/design.xml      1698) <para>This option causes Torbutton to call <ulink
torbutton/en/design/design.xml      1699) url="https://developer.mozilla.org/en/nsICacheService#evictEntries.28.29">nsICacheService.evictEntries(0)</ulink>
torbutton/en/design/design.xml      1700) on Tor toggle to remove all entries from the cache. In addition, this setting
torbutton/en/design/design.xml      1701) causes Torbutton to set <ulink
torbutton/en/design/design.xml      1702) url="http://kb.mozillazine.org/Browser.cache.disk.enable">browser.cache.disk.enable</ulink> to false.
torbutton/en/design/design.xml      1703) </para>
torbutton/en/design/design.xml      1704) <para>
torbutton/en/design/design.xml      1705) This setting helps to satisfy the <link
torbutton/en/design/design.xml      1706) linkend="state">State Separation</link> and <link
torbutton/en/design/design.xml      1707) linkend="disk">Disk Avoidance</link> requirements.
torbutton/en/design/design.xml      1708) </para>
torbutton/en/design/design.xml      1709) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1710) </sect3>
torbutton/en/design/design.xml      1711) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1712)   <title>Block disk and memory cache during Tor</title>
torbutton/en/design/design.xml      1713) 
torbutton/en/design/design.xml      1714) <para>Option: <command>extensions.torbutton.block_cache</command></para>
torbutton/en/design/design.xml      1715) 
torbutton/en/design/design.xml      1716) <para>This setting
torbutton/en/design/design.xml      1717) causes Torbutton to set <ulink
torbutton/en/design/design.xml      1718) url="http://kb.mozillazine.org/Browser.cache.memory.enable">browser.cache.memory.enable</ulink>,
torbutton/en/design/design.xml      1719) <ulink
torbutton/en/design/design.xml      1720) url="http://kb.mozillazine.org/Browser.cache.disk.enable">browser.cache.disk.enable</ulink> and
torbutton/en/design/design.xml      1721) <ulink
torbutton/en/design/design.xml      1722) url="http://kb.mozillazine.org/Network.http.use-cache">network.http.use-cache</ulink> to false during tor usage.
torbutton/en/design/design.xml      1723) </para>
torbutton/en/design/design.xml      1724) <para>
torbutton/en/design/design.xml      1725) This setting helps to satisfy the <link
torbutton/en/design/design.xml      1726) linkend="state">State Separation</link> and <link
torbutton/en/design/design.xml      1727) linkend="disk">Disk Avoidance</link> requirements.
torbutton/en/design/design.xml      1728) </para>
torbutton/en/design/design.xml      1729) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1730) </sect3>
torbutton/en/design/design.xml      1731)  </sect2>
torbutton/en/design/design.xml      1732)  <sect2>
torbutton/en/design/design.xml      1733)   <title>Cookie and Auth Settings</title>
torbutton/en/design/design.xml      1734) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1735)   <title>Clear Cookies on Tor Toggle</title>
torbutton/en/design/design.xml      1736) 
torbutton/en/design/design.xml      1737) <para>Option: <command>extensions.torbutton.clear_cookies</command>
torbutton/en/design/design.xml      1738)   </para>
torbutton/en/design/design.xml      1739) 
torbutton/en/design/design.xml      1740) <para>
torbutton/en/design/design.xml      1741) 
torbutton/en/design/design.xml      1742) This setting causes Torbutton to call <ulink
torbutton/en/design/design.xml      1743) url="https://developer.mozilla.org/en/nsICookieManager#removeAll.28.29">nsICookieManager.removeAll()</ulink> on
torbutton/en/design/design.xml      1744) every Tor toggle. In addition, this sets <ulink
torbutton/en/design/design.xml      1745) url="http://kb.mozillazine.org/Network.cookie.lifetimePolicy">network.cookie.lifetimePolicy</ulink>
torbutton/en/design/design.xml      1746) to 2 for Tor usage, which causes all cookies to be demoted to session cookies,
torbutton/en/design/design.xml      1747) which prevents them from being written to disk. 
torbutton/en/design/design.xml      1748) 
torbutton/en/design/design.xml      1749) </para>
torbutton/en/design/design.xml      1750) <para>
torbutton/en/design/design.xml      1751) This setting helps to satisfy the <link
torbutton/en/design/design.xml      1752) linkend="state">State Separation</link> and <link
torbutton/en/design/design.xml      1753) linkend="disk">Disk Avoidance</link> requirements.
torbutton/en/design/design.xml      1754) </para>
torbutton/en/design/design.xml      1755) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1756) </sect3>
torbutton/en/design/design.xml      1757) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1758)   
torbutton/en/design/design.xml      1759)   <title>Store Non-Tor cookies in a protected jar</title>
torbutton/en/design/design.xml      1760) 
torbutton/en/design/design.xml      1761) <para>Option: <command>extensions.torbutton.cookie_jars</command>
torbutton/en/design/design.xml      1762)   </para>
torbutton/en/design/design.xml      1763) 
torbutton/en/design/design.xml      1764) <para>
torbutton/en/design/design.xml      1765) 
torbutton/en/design/design.xml      1766) This setting causes Torbutton to use <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1767) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/cookie-jar-selector.js">@torproject.org/cookie-jar-selector;2</ulink> to store
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1768) non-tor cookies in a cookie jar during Tor usage, and clear the Tor cookies
torbutton/en/design/design.xml      1769) before restoring the jar.
torbutton/en/design/design.xml      1770) </para>
torbutton/en/design/design.xml      1771) <para>
torbutton/en/design/design.xml      1772) This setting also sets <ulink
torbutton/en/design/design.xml      1773) url="http://kb.mozillazine.org/Network.cookie.lifetimePolicy">network.cookie.lifetimePolicy</ulink>
torbutton/en/design/design.xml      1774) to 2 for Tor usage, which causes all cookies to be demoted to session cookies,
torbutton/en/design/design.xml      1775) which prevents them from being written to disk. 
torbutton/en/design/design.xml      1776) 
torbutton/en/design/design.xml      1777) </para>
torbutton/en/design/design.xml      1778) 
torbutton/en/design/design.xml      1779) <para>
torbutton/en/design/design.xml      1780) This setting helps to satisfy the <link
torbutton/en/design/design.xml      1781) linkend="state">State Separation</link> and <link
torbutton/en/design/design.xml      1782) linkend="disk">Disk Avoidance</link> requirements.
torbutton/en/design/design.xml      1783) </para>
torbutton/en/design/design.xml      1784) 
torbutton/en/design/design.xml      1785) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1786) </sect3>
torbutton/en/design/design.xml      1787) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1788) 
torbutton/en/design/design.xml      1789)   <title>Store both Non-Tor and Tor cookies in a protected jar (dangerous)</title>
torbutton/en/design/design.xml      1790) 
torbutton/en/design/design.xml      1791) <para>Option: <command>extensions.torbutton.dual_cookie_jars</command>
torbutton/en/design/design.xml      1792)   </para>
torbutton/en/design/design.xml      1793) 
torbutton/en/design/design.xml      1794) <para>
torbutton/en/design/design.xml      1795) 
torbutton/en/design/design.xml      1796) This setting causes Torbutton to use <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1797) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/cookie-jar-selector.js">@torproject.org/cookie-jar-selector;2</ulink> to store
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1798) both Tor and Non-Tor cookies into protected jars.
torbutton/en/design/design.xml      1799) </para>
torbutton/en/design/design.xml      1800) 
torbutton/en/design/design.xml      1801) <para>
torbutton/en/design/design.xml      1802) This setting helps to satisfy the <link
torbutton/en/design/design.xml      1803) linkend="state">State Separation</link> requirement.
torbutton/en/design/design.xml      1804) </para>
torbutton/en/design/design.xml      1805) 
torbutton/en/design/design.xml      1806) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1807) </sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1808) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1809) <!-- FIXME: If we decide to keep it, document the cookie protections dialog
torbutton/en/design/design.xml      1810) -->
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1811) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1812) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1813) 
torbutton/en/design/design.xml      1814)   <title>Manage My Own Cookies (dangerous)</title>
torbutton/en/design/design.xml      1815) 
torbutton/en/design/design.xml      1816) <para>Options: None</para>
torbutton/en/design/design.xml      1817) <para>This setting disables all Torbutton cookie handling by setting the above
torbutton/en/design/design.xml      1818) cookie prefs all to false.</para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1819) </sect3>
torbutton/en/design/design.xml      1820) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1821) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1822) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1823)   <title>Do not write Tor/Non-Tor cookies to disk</title>
torbutton/en/design/design.xml      1824)   <para>Options:
torbutton/en/design/design.xml      1825)   <simplelist>
torbutton/en/design/design.xml      1826)   <member><command>extensions.torbutton.tor_memory_jar</command></member>
torbutton/en/design/design.xml      1827)   <member><command>extensions.torbutton.nontor_memory_jar</command></member>
torbutton/en/design/design.xml      1828)   </simplelist>
torbutton/en/design/design.xml      1829)   </para>
torbutton/en/design/design.xml      1830) 
torbutton/en/design/design.xml      1831) <para>
torbutton/en/design/design.xml      1832) These settings (contributed by arno) cause Torbutton to set <ulink
torbutton/en/design/design.xml      1833) url="http://kb.mozillazine.org/Network.cookie.lifetimePolicy">network.cookie.lifetimePolicy</ulink>
torbutton/en/design/design.xml      1834) to 2 during the appropriate Tor state, and to store cookies acquired in that
torbutton/en/design/design.xml      1835) state into a Javascript
torbutton/en/design/design.xml      1836) <ulink
torbutton/en/design/design.xml      1837) url="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Processing_XML_with_E4X">E4X</ulink>
torbutton/en/design/design.xml      1838) object as opposed to writing them to disk.
torbutton/en/design/design.xml      1839) </para>
torbutton/en/design/design.xml      1840) 
torbutton/en/design/design.xml      1841) <para>
torbutton/en/design/design.xml      1842) This allows Torbutton to provide an option to preserve a user's 
torbutton/en/design/design.xml      1843) cookies while still satisfying the <link linkend="disk">Disk Avoidance</link>
torbutton/en/design/design.xml      1844) requirement.
torbutton/en/design/design.xml      1845) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1846) </sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1847) 
torbutton/en/design/design.xml      1848) 
torbutton/en/design/design.xml      1849)   <title>Disable DOM Storage during Tor usage (crucial)</title>
torbutton/en/design/design.xml      1850) 
torbutton/en/design/design.xml      1851) <para>Option: <command>extensions.torbutton.disable_domstorage</command>
torbutton/en/design/design.xml      1852)   </para>
torbutton/en/design/design.xml      1853) 
torbutton/en/design/design.xml      1854) <para>
torbutton/en/design/design.xml      1855) 
torbutton/en/design/design.xml      1856) This setting causes Torbutton to toggle <command>dom.storage.enabled</command> during Tor
torbutton/en/design/design.xml      1857) usage to prevent 
torbutton/en/design/design.xml      1858) <ulink
torbutton/en/design/design.xml      1859)   url="http://developer.mozilla.org/en/docs/DOM:Storage">DOM Storage</ulink> from
torbutton/en/design/design.xml      1860)   being used to store persistent information across Tor states.</para>
torbutton/en/design/design.xml      1861) <para>
torbutton/en/design/design.xml      1862) This setting helps to satisfy the <link
torbutton/en/design/design.xml      1863) linkend="state">State Separation</link> requirement.
torbutton/en/design/design.xml      1864) </para>
torbutton/en/design/design.xml      1865) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1866) </sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1867) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1868) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1869)   <title>Clear HTTP Auth on Tor Toggle (recommended)</title>
torbutton/en/design/design.xml      1870) <para>Option: <command>extensions.torbutton.clear_http_auth</command>
torbutton/en/design/design.xml      1871)   </para>
torbutton/en/design/design.xml      1872) 
torbutton/en/design/design.xml      1873) <para>
torbutton/en/design/design.xml      1874) This setting causes Torbutton to call <ulink
torbutton/en/design/design.xml      1875) url="http://www.oxymoronical.com/experiments/apidocs/interface/nsIHttpAuthManager">nsIHttpAuthManager.clearAll()</ulink>
torbutton/en/design/design.xml      1876) every time Tor is toggled.
torbutton/en/design/design.xml      1877) </para>
torbutton/en/design/design.xml      1878) 
torbutton/en/design/design.xml      1879) <para>
torbutton/en/design/design.xml      1880) This setting helps to satisfy the <link
torbutton/en/design/design.xml      1881) linkend="state">State Separation</link> requirement.
torbutton/en/design/design.xml      1882) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1883) </sect3>
torbutton/en/design/design.xml      1884)  </sect2>
torbutton/en/design/design.xml      1885)  <sect2>
torbutton/en/design/design.xml      1886)   <title>Startup Settings</title>
torbutton/en/design/design.xml      1887) <sect3>
torbutton/en/design/design.xml      1888)   <title>On Browser Startup, set Tor state to: Tor, Non-Tor</title>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1889)   <para>Options:
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1890)    <command>extensions.torbutton.restore_tor</command>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1891)   </para>
torbutton/en/design/design.xml      1892) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1893)   <para>This option governs what Tor state tor is loaded in to.
torbutton/en/design/design.xml      1894) <function>torbutton_set_initial_state()</function> covers the case where the
torbutton/en/design/design.xml      1895) browser did not crash, and <function>torbutton_crash_recover()</function>
torbutton/en/design/design.xml      1896) covers the case where the <link linkend="crashobserver">crash observer</link>
torbutton/en/design/design.xml      1897) detected a crash.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1898) </para>
torbutton/en/design/design.xml      1899) <para>
torbutton/en/design/design.xml      1900) 
torbutton/en/design/design.xml      1901) Since the Tor state after a Firefox crash is unknown/indeterminate, this
torbutton/en/design/design.xml      1902) setting helps to satisfy the <link linkend="state">State Separation</link>
torbutton/en/design/design.xml      1903) requirement in the event of Firefox crashes by ensuring all cookies,
torbutton/en/design/design.xml      1904) settings and saved sessions are reloaded from a fixed Tor state.
torbutton/en/design/design.xml      1905)  
torbutton/en/design/design.xml      1906) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1907) </sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1908) 
torbutton/en/design/design.xml      1909) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1910) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1911)   <title>Prevent session store from saving Non-Tor/Tor-loaded tabs</title>
torbutton/en/design/design.xml      1912) 
torbutton/en/design/design.xml      1913)   <para>Options: 
torbutton/en/design/design.xml      1914)   <simplelist>
torbutton/en/design/design.xml      1915)     <member><command>extensions.torbutton.nonontor_sessionstore</command></member>
torbutton/en/design/design.xml      1916)     <member><command>extensions.torbutton.notor_sessionstore</command></member>
torbutton/en/design/design.xml      1917)   </simplelist>
torbutton/en/design/design.xml      1918)   </para>
torbutton/en/design/design.xml      1919) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1920)   <para>If these options are enabled, the <link
torbutton/en/design/design.xml      1921) linkend="tbsessionstore">tbSessionStore.js</link> component uses the session
torbutton/en/design/design.xml      1922) store listeners to filter out the appropriate tabs before writing the session
torbutton/en/design/design.xml      1923) store data to disk.
torbutton/en/design/design.xml      1924) </para>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1925) <para>
torbutton/en/design/design.xml      1926) This setting helps to satisfy the <link linkend="disk">Disk Avoidance</link>
torbutton/en/design/design.xml      1927) requirement, and also helps to satisfy the <link
torbutton/en/design/design.xml      1928) linkend="state">State Separation</link> requirement in the event of Firefox
torbutton/en/design/design.xml      1929) crashes.
torbutton/en/design/design.xml      1930) 
torbutton/en/design/design.xml      1931) </para>
torbutton/en/design/design.xml      1932) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1933) </sect3>
torbutton/en/design/design.xml      1934)  </sect2>
torbutton/en/design/design.xml      1935)  <sect2>
torbutton/en/design/design.xml      1936)   <title>Shutdown Settings</title>
torbutton/en/design/design.xml      1937) <sect3>
torbutton/en/design/design.xml      1938) 
torbutton/en/design/design.xml      1939)   <title>Clear cookies on Tor/Non-Tor shutdown</title>
torbutton/en/design/design.xml      1940) 
torbutton/en/design/design.xml      1941) <para>Option: <command>extensions.torbutton.shutdown_method</command>
torbutton/en/design/design.xml      1942)   </para>
torbutton/en/design/design.xml      1943) 
torbutton/en/design/design.xml      1944) <para> This option variable can actually take 3 values: 0, 1, and 2. 0 means no
torbutton/en/design/design.xml      1945) cookie clearing, 1 means clear only during Tor-enabled shutdown, and 2 means
torbutton/en/design/design.xml      1946) clear for both Tor and Non-Tor shutdown. When set to 1 or 2, Torbutton listens
torbutton/en/design/design.xml      1947) for the <ulink
torbutton/en/design/design.xml      1948) url="http://developer.mozilla.org/en/docs/Observer_Notifications#Application_shutdown">quit-application-granted</ulink> event in
torbutton/en/design/design.xml      1949) <link linkend="crashobserver">crash-observer.js</link> and use <ulink
torbutton/en/design/design.xml      1950) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/components/cookie-jar-selector.js">@torproject.org/cookie-jar-selector;2</ulink>
torbutton/en/design/design.xml      1951) to clear out all cookies and all cookie jars upon shutdown.
torbutton/en/design/design.xml      1952) </para>
torbutton/en/design/design.xml      1953) <para>
torbutton/en/design/design.xml      1954) This setting helps to satisfy the <link
torbutton/en/design/design.xml      1955) linkend="state">State Separation</link> requirement.
torbutton/en/design/design.xml      1956) </para>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1957) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      1958) 
torbutton/en/design/design.xml      1959) </sect3>
torbutton/en/design/design.xml      1960)  </sect2>
torbutton/en/design/design.xml      1961)  <sect2>
torbutton/en/design/design.xml      1962)   <title>Header Settings</title>
torbutton/en/design/design.xml      1963) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      1964) 
torbutton/en/design/design.xml      1965)   <title>Set user agent during Tor usage (crucial)</title>
torbutton/en/design/design.xml      1966)   <para>Options:
torbutton/en/design/design.xml      1967)    <simplelist>
torbutton/en/design/design.xml      1968)     <member><command>extensions.torbutton.set_uagent</command></member>
torbutton/en/design/design.xml      1969)     <member><command>extensions.torbutton.platform_override</command></member>
torbutton/en/design/design.xml      1970)     <member><command>extensions.torbutton.oscpu_override</command></member>
torbutton/en/design/design.xml      1971)     <member><command>extensions.torbutton.buildID_override</command></member>
torbutton/en/design/design.xml      1972)     <member><command>extensions.torbutton.productsub_override</command></member>
torbutton/en/design/design.xml      1973)     <member><command>extensions.torbutton.appname_override</command></member>
torbutton/en/design/design.xml      1974)     <member><command>extensions.torbutton.appversion_override</command></member>
torbutton/en/design/design.xml      1975)     <member><command>extensions.torbutton.useragent_override</command></member>
torbutton/en/design/design.xml      1976)     <member><command>extensions.torbutton.useragent_vendor</command></member>
torbutton/en/design/design.xml      1977)     <member><command>extensions.torbutton.useragent_vendorSub</command></member>
torbutton/en/design/design.xml      1978)   </simplelist>
torbutton/en/design/design.xml      1979)    </para>
torbutton/en/design/design.xml      1980) 
torbutton/en/design/design.xml      1981) <para>On face, user agent switching appears to be straight-forward in Firefox.
torbutton/en/design/design.xml      1982) It provides several options for controlling the browser user agent string:
torbutton/en/design/design.xml      1983) <command>general.appname.override</command>,
torbutton/en/design/design.xml      1984) <command>general.appversion.override</command>,
torbutton/en/design/design.xml      1985) <command>general.platform.override</command>,
torbutton/en/design/design.xml      1986) <command>general.oscpu.override</command>,
torbutton/en/design/design.xml      1987) <command>general.productSub.override</command>,
torbutton/en/design/design.xml      1988) <command>general.buildID.override</command>,
torbutton/en/design/design.xml      1989) <command>general.useragent.override</command>,
torbutton/en/design/design.xml      1990) <command>general.useragent.vendor</command>, and
torbutton/en/design/design.xml      1991) <command>general.useragent.vendorSub</command>. If
torbutton/en/design/design.xml      1992) the Torbutton preference <command>extensions.torbutton.set_uagent</command> is
torbutton/en/design/design.xml      1993) true, Torbutton copies all of the other above prefs into their corresponding
torbutton/en/design/design.xml      1994) browser preferences during Tor usage.</para>
torbutton/en/design/design.xml      1995) 
torbutton/en/design/design.xml      1996) 
torbutton/en/design/design.xml      1997) <para>
torbutton/en/design/design.xml      1998) 
torbutton/en/design/design.xml      1999) It also turns out that it is possible to detect the original Firefox version
torbutton/en/design/design.xml      2000) by <ulink url="http://ha.ckers.org/blog/20070516/read-firefox-settings-poc/">inspecting
torbutton/en/design/design.xml      2001) certain resource:// files</ulink>. These cases are handled by Torbutton's
torbutton/en/design/design.xml      2002) <link linkend="contentpolicy">content policy</link>.
torbutton/en/design/design.xml      2003) 
torbutton/en/design/design.xml      2004) </para>
torbutton/en/design/design.xml      2005) 
torbutton/en/design/design.xml      2006) <para>
torbutton/en/design/design.xml      2007) This setting helps to satisfy the <link
torbutton/en/design/design.xml      2008) linkend="setpreservation">Anonymity Set Preservation</link> requirement.
torbutton/en/design/design.xml      2009) </para>
torbutton/en/design/design.xml      2010) 
torbutton/en/design/design.xml      2011) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2012) </sect3>
torbutton/en/design/design.xml      2013) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2014) 
torbutton/en/design/design.xml      2015)   <title>Spoof US English Browser</title>
torbutton/en/design/design.xml      2016) <para>Options:
torbutton/en/design/design.xml      2017) <simplelist>
torbutton/en/design/design.xml      2018)  <member><command>extensions.torbutton.spoof_english</command></member>
torbutton/en/design/design.xml      2019)  <member><command>extensions.torbutton.spoof_charset</command></member>
torbutton/en/design/design.xml      2020)  <member><command>extensions.torbutton.spoof_language</command></member>
torbutton/en/design/design.xml      2021) </simplelist>
torbutton/en/design/design.xml      2022) </para>
torbutton/en/design/design.xml      2023) 
torbutton/en/design/design.xml      2024) <para> This option causes Torbutton to set
torbutton/en/design/design.xml      2025) <command>general.useragent.locale</command>
torbutton/en/design/design.xml      2026) <command>intl.accept_languages</command> to the value specified in
torbutton/en/design/design.xml      2027) <command>extensions.torbutton.spoof_locale</command>,
torbutton/en/design/design.xml      2028) <command>extensions.torbutton.spoof_charset</command> and
torbutton/en/design/design.xml      2029) <command>extensions.torbutton.spoof_language</command> during Tor usage, as
torbutton/en/design/design.xml      2030) well as hooking <command>navigator.language</command> via its <link
torbutton/en/design/design.xml      2031) linkend="jshooks">javascript hooks</link>.
torbutton/en/design/design.xml      2032)  </para>
torbutton/en/design/design.xml      2033) <para>
torbutton/en/design/design.xml      2034) This setting helps to satisfy the <link
torbutton/en/design/design.xml      2035) linkend="setpreservation">Anonymity Set Preservation</link> and <link
torbutton/en/design/design.xml      2036) linkend="location">Location Neutrality</link> requirements.
torbutton/en/design/design.xml      2037) </para>
torbutton/en/design/design.xml      2038) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2039) </sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2040) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2041) <sect3>
torbutton/en/design/design.xml      2042)   <title>Referer Spoofing Options</title>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2043) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2044) <para>Option: <command>extensions.torbutton.refererspoof</command>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2045) </para>
torbutton/en/design/design.xml      2046) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2047) <para>
torbutton/en/design/design.xml      2048) This option variable has three values. If it is 0, "smart" referer spoofing is
torbutton/en/design/design.xml      2049) enabled. If it is 1, the referer behaves as normal. If it is 2, no referer is
torbutton/en/design/design.xml      2050) sent. The default value is 1. The smart referer spoofing is implemented by the
torbutton/en/design/design.xml      2051) <link linkend="refspoofer">torRefSpoofer</link> component.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2052) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2053) </para>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2054) <para>
torbutton/en/design/design.xml      2055) This setting also does not directly satisfy any Torbutton requirement, but
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2056) some may desire to mask their referer for general privacy concerns.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2057) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2058) </sect3>
torbutton/en/design/design.xml      2059) 
torbutton/en/design/design.xml      2060) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2061)   <title>Strip platform and language off of Google Search Box queries</title>
torbutton/en/design/design.xml      2062) 
torbutton/en/design/design.xml      2063) <para>Option: <command>extensions.torbutton.fix_google_srch</command>
torbutton/en/design/design.xml      2064) </para>
torbutton/en/design/design.xml      2065) 
torbutton/en/design/design.xml      2066) <para> 
torbutton/en/design/design.xml      2067) 
torbutton/en/design/design.xml      2068) This option causes Torbutton to use the <ulink
torbutton/en/design/design.xml      2069) url="https://wiki.mozilla.org/Search_Service:API">@mozilla.org/browser/search-service;1</ulink>
torbutton/en/design/design.xml      2070) component to wrap the Google search plugin. On many platforms, notably Debian
torbutton/en/design/design.xml      2071) and Ubuntu, the Google search plugin is set to reveal a lot of language and
torbutton/en/design/design.xml      2072) platform information. This setting strips off that info while Tor is enabled.
torbutton/en/design/design.xml      2073) 
torbutton/en/design/design.xml      2074) </para>
torbutton/en/design/design.xml      2075) <para>
torbutton/en/design/design.xml      2076) This setting helps Torbutton to fulfill its <link
torbutton/en/design/design.xml      2077) linkend="setpreservation">Anonymity Set Preservation</link> requirement.
torbutton/en/design/design.xml      2078) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2079) </sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2080) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2081) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2082)   <title>Automatically use an alternate search engine when presented with a
torbutton/en/design/design.xml      2083) Google Captcha</title>
torbutton/en/design/design.xml      2084) 
torbutton/en/design/design.xml      2085) <para>Options:
torbutton/en/design/design.xml      2086) <simplelist>
torbutton/en/design/design.xml      2087)  <member><command>extensions.torbutton.asked_google_captcha</command></member>
torbutton/en/design/design.xml      2088)  <member><command>extensions.torbutton.dodge_google_captcha</command></member>
torbutton/en/design/design.xml      2089)  <member><command>extensions.torbutton.google_redir_url</command></member>
torbutton/en/design/design.xml      2090) </simplelist>
torbutton/en/design/design.xml      2091) </para>
torbutton/en/design/design.xml      2092) 
torbutton/en/design/design.xml      2093) <para>
torbutton/en/design/design.xml      2094) 
torbutton/en/design/design.xml      2095) Google's search engine has rate limiting features that cause it to
torbutton/en/design/design.xml      2096) <ulink
torbutton/en/design/design.xml      2097) url="http://googleonlinesecurity.blogspot.com/2007/07/reason-behind-were-sorry-message.html">present
torbutton/en/design/design.xml      2098) captchas</ulink> and sometimes even outright ban IPs that issue large numbers
torbutton/en/design/design.xml      2099) of search queries, especially if a lot of these queries appear to be searching
torbutton/en/design/design.xml      2100) for software vulnerabilities or unprotected comment areas.
torbutton/en/design/design.xml      2101) 
torbutton/en/design/design.xml      2102) </para>
torbutton/en/design/design.xml      2103) <para>
torbutton/en/design/design.xml      2104) 
torbutton/en/design/design.xml      2105) Despite multiple discussions with Google, we were unable to come to a solution
torbutton/en/design/design.xml      2106) or any form of compromise that would reduce the number of captchas and
torbutton/en/design/design.xml      2107) outright bans seen by Tor users issuing regular queries.
torbutton/en/design/design.xml      2108) 
torbutton/en/design/design.xml      2109) </para>
torbutton/en/design/design.xml      2110) <para>
torbutton/en/design/design.xml      2111) As a result, we've implemented this option as an <ulink
torbutton/en/design/design.xml      2112) url="https://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads#HTTP_Observers">'http-on-modify-request'</ulink>
torbutton/en/design/design.xml      2113) http observer to optionally redirect banned or captcha-triggering Google
torbutton/en/design/design.xml      2114) queries to search engines that do not rate limit Tor users. The current
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2115) options are duckduckgo.com, ixquick.com, bing.com, yahoo.com and scroogle.org. These are
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2116) encoded in the preferences
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2117) <command>extensions.torbutton.redir_url.[1-5]</command>.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2118) 
torbutton/en/design/design.xml      2119) </para>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2120) </sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2121) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2122) <sect3>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2123) 
torbutton/en/design/design.xml      2124)   <title>Store SSL/CA Certs in separate jars for Tor/Non-Tor (recommended)</title>
torbutton/en/design/design.xml      2125) 
torbutton/en/design/design.xml      2126) <para>Options:
torbutton/en/design/design.xml      2127) <simplelist>
torbutton/en/design/design.xml      2128)  <member><command>extensions.torbutton.jar_certs</command></member>
torbutton/en/design/design.xml      2129)  <member><command>extensions.torbutton.jar_ca_certs</command></member>
torbutton/en/design/design.xml      2130) </simplelist>
torbutton/en/design/design.xml      2131) </para>
torbutton/en/design/design.xml      2132) <para>
torbutton/en/design/design.xml      2133) 
torbutton/en/design/design.xml      2134) These settings govern if Torbutton attempts to isolate the user's SSL
torbutton/en/design/design.xml      2135) certificates into separate jars for each Tor state. This isolation is
torbutton/en/design/design.xml      2136) implemented in <function>torbutton_jar_certs()</function> in <ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2137) url="https://gitweb.torproject.org/torbutton.git/blob_plain/HEAD:/src/chrome/content/torbutton.js">chrome/content/torbutton.js</ulink>,
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2138) which calls <function>torbutton_jar_cert_type()</function> and
torbutton/en/design/design.xml      2139) <function>torbutton_unjar_cert_type()</function> for each certificate type in
torbutton/en/design/design.xml      2140) the <ulink
torbutton/en/design/design.xml      2141) url="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/security/nsscertcache;1">@mozilla.org/security/nsscertcache;1</ulink>.
torbutton/en/design/design.xml      2142) Certificates are deleted from and imported to the <ulink
torbutton/en/design/design.xml      2143) url="http://www.oxymoronical.com/experiments/xpcomref/applications/Firefox/3.5/components/%40mozilla.org/security/x509certdb;1">@mozilla.org/security/x509certdb;1</ulink>.
torbutton/en/design/design.xml      2144) </para>
torbutton/en/design/design.xml      2145) 
torbutton/en/design/design.xml      2146) <para>
torbutton/en/design/design.xml      2147) The first time this pref is used, a backup of the user's certificates is
torbutton/en/design/design.xml      2148) created in their profile directory under the name
torbutton/en/design/design.xml      2149) <filename>cert8.db.bak</filename>. This file can be copied back to
torbutton/en/design/design.xml      2150) <filename>cert8.db</filename> to fully restore the original state of the
torbutton/en/design/design.xml      2151) user's certificates in the event of any error.
torbutton/en/design/design.xml      2152) </para>
torbutton/en/design/design.xml      2153) 
torbutton/en/design/design.xml      2154) <para>
torbutton/en/design/design.xml      2155) Since exit nodes and malicious sites can insert content elements sourced to
torbutton/en/design/design.xml      2156) specific SSL sites to query if a user has a certain certificate,
torbutton/en/design/design.xml      2157) this setting helps to satisfy the <link linkend="state">State
torbutton/en/design/design.xml      2158) Separation</link> requirement of Torbutton. Unfortunately, <ulink
torbutton/en/design/design.xml      2159) url="https://bugzilla.mozilla.org/show_bug.cgi?id=435159">Firefox Bug
torbutton/en/design/design.xml      2160) 435159</ulink> prevents it from functioning correctly in the event of rapid Tor toggle, so it
torbutton/en/design/design.xml      2161) is currently not exposed via the preferences UI.
torbutton/en/design/design.xml      2162) 
torbutton/en/design/design.xml      2163) </para>
torbutton/en/design/design.xml      2164) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2165) </sect3>
torbutton/en/design/design.xml      2166) 
torbutton/en/design/design.xml      2167) 
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2168) </sect2>
torbutton/en/design/design.xml      2169) </sect1>
torbutton/en/design/design.xml      2170) 
torbutton/en/design/design.xml      2171) <sect1 id="FirefoxBugs">
torbutton/en/design/design.xml      2172)   <title>Relevant Firefox Bugs</title>
torbutton/en/design/design.xml      2173)   <para>
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2174) Future releases of Torbutton are going to be designed around supporting only
torbutton/en/design/design.xml      2175) <ulink url="https://www.torproject.org/projects/torbrowser.html.en">Tor
torbutton/en/design/design.xml      2176) Browser Bundle</ulink>, which greatly simplifies the number and nature of Firefox
torbutton/en/design/design.xml      2177) bugs we must fix. This allows us to abandon the complexities of <link
torbutton/en/design/design.xml      2178) linkend="state">State
torbutton/en/design/design.xml      2179) Separation</link> and <link linkend="isolation">Network Isolation</link> requirements
torbutton/en/design/design.xml      2180) associated with the Toggle Model.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2181)   </para>
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2182)   <sect2 id="TorBrowserBugs">
torbutton/en/design/design.xml      2183)    <title>Tor Browser Bugs</title>
torbutton/en/design/design.xml      2184)    <para>
torbutton/en/design/design.xml      2185) The list of Firefox patches we must create to improve privacy on the
torbutton/en/design/design.xml      2186) Tor Browser Bundle are collected in the Tor Bug Tracker under <ulink
torbutton/en/design/design.xml      2187) url="https://trac.torproject.org/projects/tor/ticket/2871">ticket
torbutton/en/design/design.xml      2188) #2871</ulink>. These bugs are also applicable to the Toggle Model, and
torbutton/en/design/design.xml      2189) should be considered higher priority than all Toggle Model specific bugs
torbutton/en/design/design.xml      2190) below.
torbutton/en/design/design.xml      2191)    </para>
torbutton/en/design/design.xml      2192)   </sect2>
torbutton/en/design/design.xml      2193)   <sect2 id="ToggleModelBugs">
torbutton/en/design/design.xml      2194)    <title>Toggle Model Bugs</title>
torbutton/en/design/design.xml      2195)    <para>
torbutton/en/design/design.xml      2196) In addition to the Tor Browser bugs, the Torbutton Toggle Model suffers from
torbutton/en/design/design.xml      2197) additional bugs specific to the need to isolate state across the toggle.
torbutton/en/design/design.xml      2198) Toggle model bugs are considered a lower priority than the bugs against the
torbutton/en/design/design.xml      2199) Tor Browser model.
torbutton/en/design/design.xml      2200)    </para>
torbutton/en/design/design.xml      2201)   <sect3 id="FirefoxSecurity">
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2202)    <title>Bugs impacting security</title>
torbutton/en/design/design.xml      2203)    <para>
torbutton/en/design/design.xml      2204) 
torbutton/en/design/design.xml      2205) Torbutton has to work around a number of Firefox bugs that impact its
torbutton/en/design/design.xml      2206) security. Most of these are mentioned elsewhere in this document, but they
torbutton/en/design/design.xml      2207) have also been gathered here for reference. In order of decreasing severity,
torbutton/en/design/design.xml      2208) they are:
torbutton/en/design/design.xml      2209) 
torbutton/en/design/design.xml      2210)    </para>
torbutton/en/design/design.xml      2211)    <orderedlist>
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2212) <!--
torbutton/en/design/design.xml      2213) Duplicated in toggle model.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2214)     <listitem><ulink
torbutton/en/design/design.xml      2215) url="https://bugzilla.mozilla.org/show_bug.cgi?id=429070">Bug 429070 - exposing
torbutton/en/design/design.xml      2216) Components.interfaces to untrusted content leaks information about installed
torbutton/en/design/design.xml      2217) extensions</ulink>
torbutton/en/design/design.xml      2218)      <para>
torbutton/en/design/design.xml      2219) <ulink url="http://pseudo-flaw.net/">Gregory Fleischer</ulink> demonstrated at Defcon 17 that these interfaces can
torbutton/en/design/design.xml      2220) also be used to <ulink
torbutton/en/design/design.xml      2221) url="http://pseudo-flaw.net/tor/torbutton/fingerprint-firefox.html">fingerprint
torbutton/en/design/design.xml      2222) Firefox down the to the minor version</ulink>. Note that his test has not been
torbutton/en/design/design.xml      2223) updated since 3.5.3, hence it reports 3.5.3 for more recent Firefoxes. This
torbutton/en/design/design.xml      2224) bug interferes with Torbutton's ability to satisfy its <link
torbutton/en/design/design.xml      2225) linkend="setpreservation">Anonymity Set Preservation</link> requirement.
torbutton/en/design/design.xml      2226)      </para>
torbutton/en/design/design.xml      2227)     </listitem>
torbutton/en/design/design.xml      2228)    <listitem><ulink
torbutton/en/design/design.xml      2229) url="https://bugzilla.mozilla.org/show_bug.cgi?id=280661">Bug 280661 - SOCKS proxy server
torbutton/en/design/design.xml      2230) connection timeout hard-coded</ulink>
torbutton/en/design/design.xml      2231)     <para>
torbutton/en/design/design.xml      2232) 
torbutton/en/design/design.xml      2233) This bug prevents us from using the Firefox SOCKS layer directly, and
torbutton/en/design/design.xml      2234) currently requires us to ship an auxiliary HTTP proxy called <ulink
torbutton/en/design/design.xml      2235) url="http://www.pps.jussieu.fr/~jch/software/polipo/">Polipo</ulink>. If this
torbutton/en/design/design.xml      2236) patch were landed, we would no longer need to ship Polipo, which has a number
torbutton/en/design/design.xml      2237) of privacy and security issues of its own (in addition to being unmaintained).
torbutton/en/design/design.xml      2238) 
torbutton/en/design/design.xml      2239)     </para>
torbutton/en/design/design.xml      2240)    </listitem>
torbutton/en/design/design.xml      2241)    <listitem><ulink
torbutton/en/design/design.xml      2242) url="https://bugzilla.mozilla.org/show_bug.cgi?id=418986">Bug 418986 - window.screen
torbutton/en/design/design.xml      2243) provides a large amount of identifiable information</ulink>
torbutton/en/design/design.xml      2244)    <para>
torbutton/en/design/design.xml      2245) 
torbutton/en/design/design.xml      2246) As <link linkend="fingerprinting">mentioned above</link>, a large amount of
torbutton/en/design/design.xml      2247) information is available from <ulink
torbutton/en/design/design.xml      2248) url="http://developer.mozilla.org/en/docs/DOM:window.screen">window.screen</ulink>.
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2249) The most sensitive data to anonymity is actually that which is not used in
torbutton/en/design/design.xml      2250) rendering - such as desktop resolution, and window decoration size.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2251) Currently, there is no way to obscure this information without Javascript
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2252) hooking. In addition, many of this same desktop and window decoration
torbutton/en/design/design.xml      2253) resolution information is available via <ulink
torbutton/en/design/design.xml      2254) url="https://developer.mozilla.org/En/CSS/Media_queries">CSS Media
torbutton/en/design/design.xml      2255) Queries</ulink>, so perhaps some more lower-level rendering controls or
torbutton/en/design/design.xml      2256) preferences need to be provided. These issues interfere with Torbutton's
torbutton/en/design/design.xml      2257) ability to fulfill its <link linkend="setpreservation">Anonymity Set
torbutton/en/design/design.xml      2258) Preservation</link> requirement.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2259) 
torbutton/en/design/design.xml      2260)    </para>
torbutton/en/design/design.xml      2261)    </listitem>
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2262) -->
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2263)    <listitem><ulink
torbutton/en/design/design.xml      2264) url="https://bugzilla.mozilla.org/show_bug.cgi?id=435159">Bug 435159 -
torbutton/en/design/design.xml      2265) nsNSSCertificateDB::DeleteCertificate has race conditions</ulink>
torbutton/en/design/design.xml      2266)       <para>
torbutton/en/design/design.xml      2267) 
torbutton/en/design/design.xml      2268) In Torbutton 1.2.0rc1, code was added to attempt to isolate SSL certificates
torbutton/en/design/design.xml      2269) the user has installed. Unfortunately, the method call to delete a certificate
torbutton/en/design/design.xml      2270) from the current certificate database acts lazily: it only sets a variable
torbutton/en/design/design.xml      2271) that marks a cert for deletion later, and it is not cleared if that
torbutton/en/design/design.xml      2272) certificate is re-added. This means that if the Tor state is toggled quickly,
torbutton/en/design/design.xml      2273) that certificate could remain present until it is re-inserted (causing an
torbutton/en/design/design.xml      2274) error dialog), and worse, it would still be deleted after that.  The lack of
torbutton/en/design/design.xml      2275) this functionality is considered a Torbutton security bug because cert
torbutton/en/design/design.xml      2276) isolation is considered a <link linkend="state">State Separation</link>
torbutton/en/design/design.xml      2277) feature.
torbutton/en/design/design.xml      2278) 
torbutton/en/design/design.xml      2279)       </para>
torbutton/en/design/design.xml      2280)      </listitem>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2281)      <listitem>Give more visibility into and control over TLS
torbutton/en/design/design.xml      2282) negotiation
torbutton/en/design/design.xml      2283)      <para>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2284) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2285) There are several <ulink
torbutton/en/design/design.xml      2286) url="https://trac.torproject.org/projects/tor/ticket/2482">TLS issues
torbutton/en/design/design.xml      2287) impacting Torbutton security</ulink>. It is not clear if these should be one
torbutton/en/design/design.xml      2288) Firefox bug or several, but in particular we need better control over various
torbutton/en/design/design.xml      2289) aspects of TLS connections. Firefox currently provides no observer capable of
torbutton/en/design/design.xml      2290) extracting TLS parameters or certificates early enough to cancel a TLS
torbutton/en/design/design.xml      2291) request. We would like to be able to provide <ulink
torbutton/en/design/design.xml      2292) url="https://www.eff.org/https-everywhere">HTTPS-Everywhere</ulink> users with
torbutton/en/design/design.xml      2293) the ability to <ulink
torbutton/en/design/design.xml      2294) url="https://trac.torproject.org/projects/tor/wiki/HTTPSEverywhere/SSLObservatorySubmission">have
torbutton/en/design/design.xml      2295) their certificates audited</ulink> by a <ulink
torbutton/en/design/design.xml      2296) url="http://www.networknotary.org/">Perspectives</ulink>-style set of
torbutton/en/design/design.xml      2297) notaries. The problem with this is that the API observer points do not exist
torbutton/en/design/design.xml      2298) for any Firefox addon to actually block authentication token submission over a
torbutton/en/design/design.xml      2299) TLS channel, so every addon to date (including Perspectives) is actually
torbutton/en/design/design.xml      2300) providing users with notification *after* their authentication tokens have
torbutton/en/design/design.xml      2301) already been compromised. This obviously needs to be fixed.
torbutton/en/design/design.xml      2302)      </para>
torbutton/en/design/design.xml      2303)      </listitem>
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2304) <!--
torbutton/en/design/design.xml      2305) This is under the Tor Browser model.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2306)      <listitem><ulink
torbutton/en/design/design.xml      2307) url="https://bugzilla.mozilla.org/show_bug.cgi?id=575230">Bug 575230 - Provide option to
torbutton/en/design/design.xml      2308) reduce precision of Date()</ulink>
torbutton/en/design/design.xml      2309)       <para>
torbutton/en/design/design.xml      2310) 
torbutton/en/design/design.xml      2311) Currently it is possible to <ulink
torbutton/en/design/design.xml      2312) url="http://arstechnica.com/tech-policy/news/2010/02/firm-uses-typing-cadence-to-finger-unauthorized-users.ars">fingerprint
torbutton/en/design/design.xml      2313) users based on their typing cadence</ulink> using the high precision timer
torbutton/en/design/design.xml      2314) available to javascript. Using this same precision, it is possible to compute
torbutton/en/design/design.xml      2315) an identifier based upon the clock drift of the client from some nominal
torbutton/en/design/design.xml      2316) source. The latter is not much of a concern for Tor users, as the variable
torbutton/en/design/design.xml      2317) delay to load and run a page is measured on the order of seconds, but the high
torbutton/en/design/design.xml      2318) precision timer can still be used to fingerprint aspects of a browser's
torbutton/en/design/design.xml      2319) javascript engine and processor, and apparently also a user's typing cadence.
torbutton/en/design/design.xml      2320) This bug hinders Torbutton's ability to satisfy its <link
torbutton/en/design/design.xml      2321) linkend="setpreservation">Anonymity Set Preservation</link> requirement.
torbutton/en/design/design.xml      2322) 
torbutton/en/design/design.xml      2323)       </para>
torbutton/en/design/design.xml      2324)      </listitem>
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2325) -->
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2326)     <listitem><ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2327) url="https://bugzilla.mozilla.org/show_bug.cgi?id=122752">Bug 122752 - SOCKS
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2328) Username/Password Support</ulink>
torbutton/en/design/design.xml      2329)     <para>
torbutton/en/design/design.xml      2330) We need <ulink url="https://developer.mozilla.org/en/nsIProxyInfo">Firefox
torbutton/en/design/design.xml      2331) APIs</ulink> or about:config settings to control the SOCKS Username and
torbutton/en/design/design.xml      2332) Password fields. The reason why we need this support is to utilize an (as yet
torbutton/en/design/design.xml      2333) unimplemented) scheme to separate Tor traffic based <ulink
torbutton/en/design/design.xml      2334) url="https://gitweb.torproject.org/torspec.git/blob_plain/HEAD:/proposals/171-separate-streams.txt">on
torbutton/en/design/design.xml      2335) SOCKS username/password</ulink>.
torbutton/en/design/design.xml      2336)     </para>
torbutton/en/design/design.xml      2337)     </listitem>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2338) 
torbutton/en/design/design.xml      2339)      <listitem><ulink
torbutton/en/design/design.xml      2340) url="https://bugzilla.mozilla.org/show_bug.cgi?id=409737">Bug 409737 -
torbutton/en/design/design.xml      2341) javascript.enabled and docShell.allowJavascript do not disable all event
torbutton/en/design/design.xml      2342) handlers</ulink>
torbutton/en/design/design.xml      2343)      <para>
torbutton/en/design/design.xml      2344) 
torbutton/en/design/design.xml      2345) This bug allows pages to execute javascript via addEventListener and perhaps
torbutton/en/design/design.xml      2346) other callbacks. In order to prevent this bug from enabling an attacker to
torbutton/en/design/design.xml      2347) break the <link linkend="isolation">Network Isolation</link> requirement,
torbutton/en/design/design.xml      2348) Torbutton 1.1.13 began blocking popups and history manipulation from different
torbutton/en/design/design.xml      2349) Tor states.  So long as there are no ways to open popups or redirect the user
torbutton/en/design/design.xml      2350) to a new page, the <link linkend="contentpolicy">Torbutton content
torbutton/en/design/design.xml      2351) policy</link> should block Javascript network access. However, if there are
torbutton/en/design/design.xml      2352) ways to open popups or perform redirects such that Torbutton cannot block
torbutton/en/design/design.xml      2353) them, pages may still have free reign to break that requirement and reveal a
torbutton/en/design/design.xml      2354) user's original IP address.
torbutton/en/design/design.xml      2355) 
torbutton/en/design/design.xml      2356)      </para>
torbutton/en/design/design.xml      2357)      </listitem>
torbutton/en/design/design.xml      2358)      <listitem><ulink
torbutton/en/design/design.xml      2359) url="https://bugzilla.mozilla.org/show_bug.cgi?id=448743">Bug 448743 -
torbutton/en/design/design.xml      2360) Decouple general.useragent.locale from spoofing of navigator.language</ulink>
torbutton/en/design/design.xml      2361)      <para>
torbutton/en/design/design.xml      2362) 
torbutton/en/design/design.xml      2363) Currently, Torbutton spoofs the <command>navigator.language</command>
torbutton/en/design/design.xml      2364) attribute via <link linkend="jshooks">Javascript hooks</link>. Unfortunately,
torbutton/en/design/design.xml      2365) these do not work on Firefox 3. It would be ideal to have
torbutton/en/design/design.xml      2366) a pref to set this value (something like a
torbutton/en/design/design.xml      2367) <command>general.useragent.override.locale</command>),
torbutton/en/design/design.xml      2368) to avoid fragmenting the anonymity set of users of foreign locales. This issue
torbutton/en/design/design.xml      2369) impedes Torbutton from fully meeting its <link
torbutton/en/design/design.xml      2370) linkend="setpreservation">Anonymity Set Preservation</link>
torbutton/en/design/design.xml      2371) requirement on Firefox 3.
torbutton/en/design/design.xml      2372) 
torbutton/en/design/design.xml      2373)      </para>
torbutton/en/design/design.xml      2374)      </listitem>
torbutton/en/design/design.xml      2375)     </orderedlist>
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2376)   </sect3>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2377) <!-- XXX: Need to create a bug for DOM storage APIs at some point -->
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2378)   <sect3 id="FirefoxWishlist">
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2379)    <title>Bugs blocking functionality</title>
torbutton/en/design/design.xml      2380)    <para>
torbutton/en/design/design.xml      2381) The following bugs impact Torbutton and similar extensions' functionality.
torbutton/en/design/design.xml      2382)    </para>
torbutton/en/design/design.xml      2383) 
torbutton/en/design/design.xml      2384)     <orderedlist>
torbutton/en/design/design.xml      2385) 
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2386) <!--
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2387)    <listitem><ulink
torbutton/en/design/design.xml      2388) url="https://bugzilla.mozilla.org/show_bug.cgi?id=445696">Bug 445696 -
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2389) Extensions cannot determine if Firefox is full screen</ulink>
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2390)    <para>
torbutton/en/design/design.xml      2391) 
torbutton/en/design/design.xml      2392) The windowState property of <ulink
torbutton/en/design/design.xml      2393) url="https://developer.mozilla.org/en/XUL/window">ChromeWindows</ulink> does not accurately reflect the true
torbutton/en/design/design.xml      2394) state of the window in some cases on Linux. This causes Torbutton to attempt
torbutton/en/design/design.xml      2395) to resize maximized and minimized windows when it should not.
torbutton/en/design/design.xml      2396) 
torbutton/en/design/design.xml      2397)    </para>
torbutton/en/design/design.xml      2398)    </listitem>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2399) -->
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2400)    <listitem><ulink
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2401) url="https://bugzilla.mozilla.org/show_bug.cgi?id=629820">Bug 629820 - nsIContentPolicy::shouldLoad not
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2402) called for web request in Firefox Mobile</ulink>
torbutton/en/design/design.xml      2403)     <para>
torbutton/en/design/design.xml      2404) 
torbutton/en/design/design.xml      2405) The new <ulink
torbutton/en/design/design.xml      2406) url="https://wiki.mozilla.org/Mobile/Fennec/Extensions/Electrolysis">Electrolysis</ulink>
torbutton/en/design/design.xml      2407) multiprocess system appears to have some pretty rough edge cases with respect
torbutton/en/design/design.xml      2408) to registering XPCOM category managers such as the nsIContentPolicy, which
torbutton/en/design/design.xml      2409) make it difficult to do a straight-forward port of Torbutton or
torbutton/en/design/design.xml      2410) HTTPS-Everywhere to Firefox Mobile.  It probably also has similar issues with
torbutton/en/design/design.xml      2411) wrapping existing <link linkend="hookedxpcom">Firefox XPCOM components</link>,
torbutton/en/design/design.xml      2412) which will also cause more problems for porting Torbutton.
torbutton/en/design/design.xml      2413) 
torbutton/en/design/design.xml      2414)     </para>
torbutton/en/design/design.xml      2415)    </listitem>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2416) <!--
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2417)    <listitem><ulink
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2418) url="https://bugzilla.mozilla.org/show_bug.cgi?id=290456">Bug 290456 -
torbutton/en/design/design.xml      2419) Block/clear Flash MX "cookies" as well</ulink>
torbutton/en/design/design.xml      2420)    <para>
torbutton/en/design/design.xml      2421) 
torbutton/en/design/design.xml      2422) Today, it is possible to allow plugins if you have a transparent proxy such as
torbutton/en/design/design.xml      2423) <ulink url="http://anonymityanywhere.com/incognito/">Incognito</ulink> to prevent proxy bypass. However, flash cookies can still be used to
torbutton/en/design/design.xml      2424) link your Tor and Non-Tor activity, and this reveal your IP to an adversary
torbutton/en/design/design.xml      2425) that does so. This can be solved by manually removing your flash cookies (like
torbutton/en/design/design.xml      2426) <ulink
torbutton/en/design/design.xml      2427) url="https://addons.mozilla.org/en-US/firefox/addon/6623">BetterPrivacy</ulink> does), but
torbutton/en/design/design.xml      2428) it would be nice if there was a standard way to do this from a Firefox API.
torbutton/en/design/design.xml      2429) 
torbutton/en/design/design.xml      2430)    </para>
torbutton/en/design/design.xml      2431)    </listitem>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2432) -->
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2433)    <listitem><ulink
torbutton/en/design/design.xml      2434) url="https://bugzilla.mozilla.org/show_bug.cgi?id=417869">Bug 417869 -
torbutton/en/design/design.xml      2435) Browser context is difficult to obtain from many XPCOM callbacks</ulink>
torbutton/en/design/design.xml      2436)    <para>
torbutton/en/design/design.xml      2437) 
torbutton/en/design/design.xml      2438) It is difficult to determine which tabbrowser many XPCOM callbacks originate
torbutton/en/design/design.xml      2439) from, and in some cases absolutely no context information is provided at all.
torbutton/en/design/design.xml      2440) While this doesn't have much of an effect on Torbutton, it does make writing
torbutton/en/design/design.xml      2441) extensions that would like to do per-tab settings and content filters (such as
torbutton/en/design/design.xml      2442) FoxyProxy) difficult to impossible to implement securely.
torbutton/en/design/design.xml      2443) 
torbutton/en/design/design.xml      2444)    </para>
torbutton/en/design/design.xml      2445)    </listitem>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2446) <!--
torbutton/en/design/design.xml      2447) FIXME: This doesn't really apply anymore.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2448)    <listitem><ulink
torbutton/en/design/design.xml      2449) url="https://bugzilla.mozilla.org/show_bug.cgi?id=418321">Bug 418321 -
torbutton/en/design/design.xml      2450) Components do not expose disk interfaces</ulink>
torbutton/en/design/design.xml      2451)    <para>
torbutton/en/design/design.xml      2452) 
torbutton/en/design/design.xml      2453) Several components currently provide no way of reimplementing their disk
torbutton/en/design/design.xml      2454) access to easily satisfy Torbutton's <link linkend="disk">Disk
torbutton/en/design/design.xml      2455) Avoidance</link> requirements. Workarounds exist, but they are <link
torbutton/en/design/design.xml      2456) linkend="sessionstore">clunky</link>, and
torbutton/en/design/design.xml      2457) some of them involve disabling functionality during Tor usage.
torbutton/en/design/design.xml      2458) 
torbutton/en/design/design.xml      2459)    </para>
torbutton/en/design/design.xml      2460)    </listitem>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2461) -->
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2462) 
torbutton/en/design/design.xml      2463) <!--
torbutton/en/design/design.xml      2464) FIXME: Need to use new observer methods if possible
torbutton/en/design/design.xml      2465)    <listitem><ulink
torbutton/en/design/design.xml      2466) url="https://bugzilla.mozilla.org/show_bug.cgi?id=448741">Bug 448741 -
torbutton/en/design/design.xml      2467) nsISessionStore uses private methods and is not extensible</ulink>
torbutton/en/design/design.xml      2468)    <para>
torbutton/en/design/design.xml      2469) 
torbutton/en/design/design.xml      2470) Similar to the above bug, in the specific case of the sessionstore component,
torbutton/en/design/design.xml      2471) the API is not amenable to Contract ID hooking, and this requires that
torbutton/en/design/design.xml      2472) Torbutton include modified copies of this component for Firefox 2 and 3, which
torbutton/en/design/design.xml      2473) has <ulink
torbutton/en/design/design.xml      2474) url="https://bugs.torproject.org/flyspray/index.php?do=details&amp;id=722">raised
torbutton/en/design/design.xml      2475) objections</ulink> from some developers.
torbutton/en/design/design.xml      2476) 
torbutton/en/design/design.xml      2477)    </para>
torbutton/en/design/design.xml      2478)    </listitem>
torbutton/en/design/design.xml      2479)    <listitem><ulink
torbutton/en/design/design.xml      2480) url="https://bugzilla.mozilla.org/show_bug.cgi?id=439384">Bug 439384 -
torbutton/en/design/design.xml      2481) "profile-do-change" event does not cause cookie table reload</ulink>
torbutton/en/design/design.xml      2482)    <para>
torbutton/en/design/design.xml      2483) 
torbutton/en/design/design.xml      2484) In Firefox 3, the change to the new SQLlite database for cookie storage has a
torbutton/en/design/design.xml      2485) bug that prevents Torbutton's cookie jaring from working properly. The
torbutton/en/design/design.xml      2486) "profile-do-change" observer event no longer properly causes either a sync or
torbutton/en/design/design.xml      2487) reload of the cookie database from disk after it is copied into place.
torbutton/en/design/design.xml      2488) Torbutton currently works around this by issuing the SQLLite queries manually
torbutton/en/design/design.xml      2489) to store and rebuild the cookie database.
torbutton/en/design/design.xml      2490) 
torbutton/en/design/design.xml      2491)    </para>
torbutton/en/design/design.xml      2492)    </listitem>
torbutton/en/design/design.xml      2493) 
torbutton/en/design/design.xml      2494)    <listitem><ulink
torbutton/en/design/design.xml      2495) url="https://bugzilla.mozilla.org/show_bug.cgi?id=248970">Bug 248970 (PrivateBrowsing) - Private Browsing mode (global toggle for
torbutton/en/design/design.xml      2496) saving/caching everything)</ulink>
torbutton/en/design/design.xml      2497)    <para>
torbutton/en/design/design.xml      2498) 
torbutton/en/design/design.xml      2499) This bug catalogs the discussion of a 'Private Mode' in Firefox that would
torbutton/en/design/design.xml      2500) perform many, but not all, of the activities of Torbutton. It would be useful
torbutton/en/design/design.xml      2501) to leverage the resulting setting to simplify Torbutton. This bug is listed so
torbutton/en/design/design.xml      2502) we can track this progress and ensure that it doesn't end up defining
torbutton/en/design/design.xml      2503) behaviors contrary to and incompatible with Torbutton's requirements (though a
torbutton/en/design/design.xml      2504) subset of the <link linkend="requirements">requirements</link> is of course fine).
torbutton/en/design/design.xml      2505) 
torbutton/en/design/design.xml      2506)    </para>
torbutton/en/design/design.xml      2507)    </listitem>
torbutton/en/design/design.xml      2508) -->
torbutton/en/design/design.xml      2509) 
torbutton/en/design/design.xml      2510) 
torbutton/en/design/design.xml      2511) 
torbutton/en/design/design.xml      2512)   </orderedlist>
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2513)   </sect3>
torbutton/en/design/design.xml      2514)   <sect3 id="FirefoxMiscBugs">
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2515)    <title>Low Priority Bugs</title>
torbutton/en/design/design.xml      2516)    <para>
torbutton/en/design/design.xml      2517) The following bugs have an effect upon Torbutton, but are superseded by more
torbutton/en/design/design.xml      2518) practical and more easily fixable variant bugs above; or have stable, simple
torbutton/en/design/design.xml      2519) workarounds.
torbutton/en/design/design.xml      2520)   </para>
torbutton/en/design/design.xml      2521) 
torbutton/en/design/design.xml      2522)     <orderedlist>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2523) <!--
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2524)     <listitem><ulink
torbutton/en/design/design.xml      2525) url="https://bugzilla.mozilla.org/show_bug.cgi?id=435151">Bug 435151 - XPCSafeJSObjectWrapper breaks evalInSandbox</ulink>
torbutton/en/design/design.xml      2526)      <para>
torbutton/en/design/design.xml      2527) 
torbutton/en/design/design.xml      2528) Under Firefox 3, the XPCSafeJSObjectWrapper breaks when you try to use
torbutton/en/design/design.xml      2529) constructors of classes defined from within the scope of the sandbox, among
torbutton/en/design/design.xml      2530) other things. This prevents Torbutton from applying the Timezone hooks under
torbutton/en/design/design.xml      2531) Firefox 3, but a better solution for Torbutton's specific date hooking needs 
torbutton/en/design/design.xml      2532) would be a fix for the above mentioned Bug 392274. Of course, many more
torbutton/en/design/design.xml      2533) extensions may be interested in the sandbox hooking functionality working
torbutton/en/design/design.xml      2534) properly though.
torbutton/en/design/design.xml      2535) 
torbutton/en/design/design.xml      2536)      </para>
torbutton/en/design/design.xml      2537)      </listitem>
Mike Perry Update Torbutton design doc.

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2538) -->
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2539)      <listitem><ulink
torbutton/en/design/design.xml      2540) url="https://bugzilla.mozilla.org/show_bug.cgi?id=440892">Bug 440892 -
torbutton/en/design/design.xml      2541) network.protocol-handler.warn-external are ignored</ulink>
torbutton/en/design/design.xml      2542)      <para>
torbutton/en/design/design.xml      2543) 
torbutton/en/design/design.xml      2544) Sometime in the Firefox 3 development cycle, the preferences that governed
torbutton/en/design/design.xml      2545) warning a user when external apps were launched got disconnected from the code
torbutton/en/design/design.xml      2546) that does the launching. Torbutton depended on these prefs to prevent websites
torbutton/en/design/design.xml      2547) from launching specially crafted documents and application arguments that
torbutton/en/design/design.xml      2548) caused Proxy Bypass. We currently work around this issue by <link
torbutton/en/design/design.xml      2549) linkend="appblocker">wrapping the app launching components</link> to present a
torbutton/en/design/design.xml      2550) popup before launching external apps while Tor is enabled. While this works,
torbutton/en/design/design.xml      2551) it would be nice if these prefs were either fixed or removed.
torbutton/en/design/design.xml      2552) 
torbutton/en/design/design.xml      2553)      </para>
torbutton/en/design/design.xml      2554)      </listitem>
torbutton/en/design/design.xml      2555)     <listitem><ulink
torbutton/en/design/design.xml      2556) url="https://bugzilla.mozilla.org/show_bug.cgi?id=437014">Bug 437014 -
torbutton/en/design/design.xml      2557) nsIContentPolicy::shouldLoad no longer called for favicons</ulink>
torbutton/en/design/design.xml      2558)     <para>
torbutton/en/design/design.xml      2559) 
torbutton/en/design/design.xml      2560) Firefox 3.0 stopped calling the shouldLoad call of content policy for favicon
torbutton/en/design/design.xml      2561) loads. Torbutton had relied on this call to block favicon loads for opposite
torbutton/en/design/design.xml      2562) Tor states. The workaround it employs for Firefox 3 is to cancel the request
torbutton/en/design/design.xml      2563) when it arrives in the <command>torbutton_http_observer</command> used for
torbutton/en/design/design.xml      2564) blocking full page plugin loads. This seems to work just fine, but is a bit
torbutton/en/design/design.xml      2565) dirty.
torbutton/en/design/design.xml      2566) 
torbutton/en/design/design.xml      2567)     </para>
torbutton/en/design/design.xml      2568)     </listitem>
torbutton/en/design/design.xml      2569) <!--
torbutton/en/design/design.xml      2570)     <listitem><ulink
torbutton/en/design/design.xml      2571) url="https://bugzilla.mozilla.org/show_bug.cgi?id=437016">Bug 437016 -
torbutton/en/design/design.xml      2572) nsIContentPolicy::shouldLoad not called for livemarks</ulink>
torbutton/en/design/design.xml      2573)     <para>
torbutton/en/design/design.xml      2574) 
torbutton/en/design/design.xml      2575) An alternative fix for the livemarks bug above would be to block livemarks
torbutton/en/design/design.xml      2576) fetches from the content policy. Unfortunately shouldLoad is not called for
torbutton/en/design/design.xml      2577) livemarks fetches.
torbutton/en/design/design.xml      2578) 
torbutton/en/design/design.xml      2579)     </para>
torbutton/en/design/design.xml      2580)     </listitem>
torbutton/en/design/design.xml      2581) -->
torbutton/en/design/design.xml      2582)  
torbutton/en/design/design.xml      2583)      <listitem><ulink
torbutton/en/design/design.xml      2584) url="https://bugzilla.mozilla.org/show_bug.cgi?id=309524">Bug 309524</ulink>
torbutton/en/design/design.xml      2585) and <ulink url="https://bugzilla.mozilla.org/show_bug.cgi?id=380556">Bug
torbutton/en/design/design.xml      2586) 380556</ulink> - nsIContentPolicy::shouldProcess is not called.
torbutton/en/design/design.xml      2587)      <para>
torbutton/en/design/design.xml      2588) 
torbutton/en/design/design.xml      2589) This is a call that would be useful to develop a better workaround for the
torbutton/en/design/design.xml      2590) allowPlugins issue above. If the content policy were called before a URL was
torbutton/en/design/design.xml      2591) handed over to a plugin or helper app, it would make the workaround for the
torbutton/en/design/design.xml      2592) above allowPlugins bug a lot cleaner. Obviously this bug is not as severe as
torbutton/en/design/design.xml      2593) the others though, but it might be nice to have this API as a backup.
torbutton/en/design/design.xml      2594) 
torbutton/en/design/design.xml      2595)      </para>
torbutton/en/design/design.xml      2596)      </listitem>
torbutton/en/design/design.xml      2597) 
torbutton/en/design/design.xml      2598)      <listitem><ulink
torbutton/en/design/design.xml      2599) url="https://bugzilla.mozilla.org/show_bug.cgi?id=401296">Bug 401296 - docShell.allowPlugins
torbutton/en/design/design.xml      2600) not honored for direct links</ulink> (Perhaps subset of <ulink
torbutton/en/design/design.xml      2601) url="https://bugzilla.mozilla.org/show_bug.cgi?id=282106">Bug 282106</ulink>?)
torbutton/en/design/design.xml      2602)      <para>
torbutton/en/design/design.xml      2603) 
torbutton/en/design/design.xml      2604) Similar to the javascript plugin disabling attribute, the plugin disabling
torbutton/en/design/design.xml      2605) attribute is also not perfect &mdash; it is ignored for direct links to plugin
torbutton/en/design/design.xml      2606) handled content, as well as meta-refreshes to plugin handled content.  This
torbutton/en/design/design.xml      2607) requires Torbutton to listen to a number of different http events to intercept
torbutton/en/design/design.xml      2608) plugin-related mime type URLs and cancel their requests. Again, since plugins
torbutton/en/design/design.xml      2609) are quite horrible about obeying proxy settings, loading a plugin pretty much
torbutton/en/design/design.xml      2610) ensures a way to break the <link linkend="isolation">Network Isolation</link>
torbutton/en/design/design.xml      2611) requirement and reveal a user's original IP address. Torbutton's code to
torbutton/en/design/design.xml      2612) perform this workaround has been subverted at least once already by Kyle
torbutton/en/design/design.xml      2613) Williams.
torbutton/en/design/design.xml      2614) 
torbutton/en/design/design.xml      2615)      </para>
torbutton/en/design/design.xml      2616)      </listitem>
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2617) <!--
torbutton/en/design/design.xml      2618) Actually, ECMAScript 5 handles this correctly now.
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2619)    <listitem><ulink
torbutton/en/design/design.xml      2620) url="https://bugzilla.mozilla.org/show_bug.cgi?id=419598">Bug 419598 - 'var
torbutton/en/design/design.xml      2621) Date' is deletable</ulink>
torbutton/en/design/design.xml      2622)      <para>
torbutton/en/design/design.xml      2623) 
torbutton/en/design/design.xml      2624) Based on Page 62 of the <ulink
torbutton/en/design/design.xml      2625) url="http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf">ECMA-262
torbutton/en/design/design.xml      2626) Javascript spec</ulink>, it seems like it should be possible to do something
torbutton/en/design/design.xml      2627) like the following to prevent the Date object from being unmasked:
torbutton/en/design/design.xml      2628) <screen>
torbutton/en/design/design.xml      2629) with(window) {
torbutton/en/design/design.xml      2630)     var Date = fakeDate;
torbutton/en/design/design.xml      2631)     var otherVariable = 42;
torbutton/en/design/design.xml      2632) }
torbutton/en/design/design.xml      2633) 
torbutton/en/design/design.xml      2634) delete window.Date; // Should fail. Instead succeeds, revealing original Date.
torbutton/en/design/design.xml      2635) delete window.otherVariable; // Fails, leaving window.otherVariable set to 42.
torbutton/en/design/design.xml      2636) </screen>
torbutton/en/design/design.xml      2637) 
torbutton/en/design/design.xml      2638) From the ECMA-262 spec:
torbutton/en/design/design.xml      2639) 
torbutton/en/design/design.xml      2640) <blockquote>
torbutton/en/design/design.xml      2641) If the variable statement occurs inside a FunctionDeclaration, the variables
torbutton/en/design/design.xml      2642) are defined with function-local scope in that function, as described in
torbutton/en/design/design.xml      2643) s10.1.3. Otherwise, they are defined with global scope (that is, they are
torbutton/en/design/design.xml      2644) created as members of the global object, as described in 10.1.3) using
torbutton/en/design/design.xml      2645) property attributes { DontDelete }. Variables are created when the execution
torbutton/en/design/design.xml      2646) scope is entered. A Block does not define a new execution scope. Only Program
torbutton/en/design/design.xml      2647) and FunctionDeclaration produce a new scope. Variables are initialized to
torbutton/en/design/design.xml      2648) undefined when created. A variable with an Initialiser is assigned the value
torbutton/en/design/design.xml      2649) of its AssignmentExpression when the VariableStatement is executed, not when
torbutton/en/design/design.xml      2650) the variable is created.
torbutton/en/design/design.xml      2651) </blockquote>
torbutton/en/design/design.xml      2652) 
torbutton/en/design/design.xml      2653) In fact, this is exactly how the with statement with a variable declaration
torbutton/en/design/design.xml      2654) behaves <emphasis>for all other variables other than ones that shadow system
torbutton/en/design/design.xml      2655) variables</emphasis>. Some variables (such as
torbutton/en/design/design.xml      2656) <command>window.screen</command>, and <command>window.history</command>) can't
torbutton/en/design/design.xml      2657) even be shadowed in this way, and give an error about lacking a setter. If
torbutton/en/design/design.xml      2658) such shadowing were possible, it would greatly simplify the Javascript hooking
torbutton/en/design/design.xml      2659) code, which currently relies on undocumented semantics of
torbutton/en/design/design.xml      2660) <command>__proto__</command> to copy the original values in the event of a
torbutton/en/design/design.xml      2661) delete. This <command>__proto__</command> hack unfortunately does not work for
torbutton/en/design/design.xml      2662) the Date object though.
torbutton/en/design/design.xml      2663) 
torbutton/en/design/design.xml      2664)      </para>
torbutton/en/design/design.xml      2665)     </listitem>
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2666) -->
Andrew Lewman add in the torbutton design...

Andrew Lewman authored 13 years ago

torbutton/en/design/design.xml      2667)   </orderedlist>
Mike Perry Update design doc to reflec...

Mike Perry authored 13 years ago

torbutton/en/design/design.xml      2668)   </sect3>
torbutton/en/design/design.xml      2669)  </sect2>