docs/en/faq.wml
2a9aaa80
 ## translation metadata
40e07e2e
 # Revision: $Revision$
2a9aaa80
 # Translation-Priority: 2-medium
 
 #include "head.wmi" TITLE="Tor Project: FAQ" CHARSET="UTF-8"
 <div id="content" class="clearfix">
   <div id="breadcrumbs">
b289ef06
     <a href="<page index>">Home &raquo; </a>
2a9aaa80
     <a href="<page docs/documentation>">Documentation &raquo; </a>
     <a href="<page docs/faq>">FAQ</a>
   </div>
   <div id="maincol">
     <!-- PUT CONTENT AFTER THIS TAG -->
     <h1>Tor FAQ</h1>
ed5ac546
     <hr>
0b68c29c
 
df57496e
     <p>General questions:</p>
2a9aaa80
     <ul>
     <li><a href="#WhatIsTor">What is Tor?</a></li>
37855015
     <li><a href="#Torisdifferent">How is Tor different from other
 proxies?</a></li>
2a9aaa80
     <li><a href="#CompatibleApplications">What programs can I use with
     Tor?</a></li>
     <li><a href="#WhyCalledTor">Why is it called Tor?</a></li>
     <li><a href="#Backdoor">Is there a backdoor in Tor?</a></li>
58d43f4a
     <li><a href="#DistributingTor">Can I distribute Tor?</a></li>
8b32cf78
     <li><a href="#SupportMail">How can I get support?</a></li>
c5a65f0d
     <li><a href="#Forum">Is there a Tor forum?</a></li>
2a9aaa80
     <li><a href="#WhySlow">Why is Tor so slow?</a></li>
f30e672d
     <li><a href="#FileSharing">How can I share files anonymously through Tor?
     </a></li>
2a9aaa80
     <li><a href="#Funding">What would The Tor Project do with more
     funding?</a></li>
13b97478
     <li><a href="#IsItWorking">How can I tell if Tor is working, and that my
f30e672d
     connections really are anonymized?</a></li>
73bd2ad3
     <li><a href="#Mobile">Can I use Tor on my phone or mobile device?</a></li>
b75b913d
     <li><a href="#OutboundPorts">Which outbound ports must be open when
     using Tor as a client?</a></li>
91d870fd
     <li><a href="#FTP">How do I use my browser for ftp with Tor?</a></li>
13b97478
     <li><a href="#NoDataScrubbing">Does Tor remove personal information
34bb6a9b
     from the data my application sends?</a></li>
dc7ed63e
     <li><a href="#Metrics">How many people use Tor? How many relays or
     exit nodes are there?</a></li>
2a9aaa80
     </ul>
0b68c29c
 
df57496e
     <p>Compilation and Installation:</p>
6f107e8d
 
2a9aaa80
     <ul>
     <li><a href="#HowUninstallTor">How do I uninstall Tor?</a></li>
     <li><a href="#PGPSigs">What are these "sig" files on the download
     page?</a></li>
465835b2
     <li><a href="#GetTor">Your website is blocked in my country. How
     do I download Tor?</a></li>
991262e9
     <li><a href="#VirusFalsePositives">Why does my Tor executable appear to
2a9aaa80
     have a virus or spyware?</a></li>
6f107e8d
     <li><a href="#tarballs">How do I open a .tar.gz or .tar.xz file?</a></li>
37855015
     <li><a href="#LiveCD">Is there a LiveCD or other bundle that
 includes Tor?</a></li>
2a9aaa80
     </ul>
0b68c29c
 
32700e09
     <p>Tor Browser (general):</p>
fbdf7a2d
     <ul>
b4a92f3d
 
a90d2945
     <li><a href="#TBBFlash">Why can't I view videos on YouTube and other
     Flash-based sites?</a></li>
a03040cb
     <li><a href="#Ubuntu">I'm using Ubuntu, and I can't start Tor Browser.
f30e672d
     </a></li>
a03040cb
     <li><a href="#SophosOnMac">I'm using the Sophos anti-virus
3b7785b1
     software on my Mac, and Tor starts but I can't browse anywhere.</a></li>
23559347
     <li><a href="#XPCOMError">When I start Tor Browser I get an 
 error message: "Cannot load XPCOM".</a></li>
a90d2945
     <li><a href="#TBBOtherExtensions">Can I install other Firefox
94ff8c2a
     extensions? Which extensions should I avoid using?</a></li>
37855015
     <li><a href="#TBBJavaScriptEnabled">Why is NoScript configured to
32700e09
 allow JavaScript by default in Tor Browser?  Isn't that
37855015
 unsafe?</a></li>
b4a92f3d
     <li><a href="#TBBOtherBrowser">I want to use Chrome/IE/Opera/etc
     with Tor.</a></li>
991262e9
     <li><a href="#GoogleCAPTCHA">Google makes me solve a CAPTCHA or tells
fbdf7a2d
     me I have spyware installed.</a></li>
13b97478
     <li><a href="#ForeignLanguages">Why does Google show up in foreign
b932c302
     languages?</a></li>
fbdf7a2d
     <li><a href="#GmailWarning">Gmail warns me that my account may have
     been compromised.</a></li>
13b97478
     <li><a href="#NeedToUseAProxy">My internet connection requires an HTTP
6d9ff1cf
     or SOCKS Proxy</a></li>
2ab0987e
     <li><a href="#TBBSocksPort">I want to
     run another application through Tor.</a></li>
13b97478
     <li><a href="#CantSetProxy">What should I do if I can't set a proxy
9fb81a6f
     with my application?</a></li>
6f107e8d
     </ul>
 
32700e09
     <p>Tor Browser (3.x and later):</p>
6f107e8d
 
     <ul>
3f0f8bad
     <li><a href="#DisableJS">How do I disable JavaScript?</a></li>
13b97478
     <li><a href="#VerifyDownload">How do I verify the download
3f0f8bad
     (sha256sums.txt)?</a></li>
13b97478
     <li><a href="#NewIdentityClosingTabs">Why does "New Identity" close
3f0f8bad
     all my open tabs?</a></li>
13b97478
     <li><a href="#ConfigureRelayOrBridge">How do I configure Tor as a relay
3f0f8bad
     or bridge?</a></li>
     <li><a href="#Timestamps">Why are the file timestamps from 2000?</a></li>
f65daf2d
     <li><a href="#TBBSourceCode">Where is the source code for Tor Browser?
32700e09
     How do I verify a build?</a></li>
fbdf7a2d
     </ul>
 
df57496e
     <p>Advanced Tor usage:</p>
6f107e8d
 
363378b6
     <ul>
     <li><a href="#torrc">I'm supposed to "edit my torrc". What does
     that mean?</a></li>
3a045675
     <li><a href="#Logs">How do I set up logging, or see Tor's
b8ba95ed
     logs?</a></li>
91d870fd
     <li><a href="#LogLevel">What log level should I use?</a></li>
9b8e41f3
     <li><a href="#DoesntWork">Tor is running, but it's not working
     correctly.</a></li>
a2904cae
     <li><a href="#TorCrash">My Tor keeps crashing.</a></li>
37855015
     <li><a href="#ChooseEntryExit">Can I control which nodes (or
 country)
d97ab35a
     are used for entry/exit?</a></li>
dc7ed63e
     <li><a href="#FirewallPorts">My firewall only allows a few outgoing
     ports.</a></li>
6d9ff1cf
     <li><a href="#DefaultExitPorts">Is there a list of default exit ports?</a></li>
13b97478
     <li><a href="#WarningsAboutSOCKSandDNSInformationLeaks">I keep seeing
     these warnings about SOCKS and DNS information leaks. Should I
0e8964cc
     worry?</a></li>
13b97478
     <li><a href="#SocksAndDNS">How do I check if my application that uses
f30e672d
     SOCKS is leaking DNS requests?</a></li>
2a9aaa80
     </ul>
0b68c29c
 
df57496e
     <p>Running a Tor relay:</p>
2a9aaa80
     <ul>
01f0dd22
 
     <li><a href="#HowDoIDecide">How do I decide if I should run a relay?
     </a></li>
13b97478
     <li><a href="#WhyIsntMyRelayBeingUsedMore">Why isn't my relay being
a043d47b
     used more?</a></li>
a756dc11
     <li><a href="#IDontHaveAStaticIP">I don't have a static IP.</a></li>
13b97478
     <li><a href="#PortscannedMore">Why do I get portscanned more often
a756dc11
     when I run a Tor relay?</a></li>
13b97478
     <li><a href="#HighCapacityConnection">How can I get Tor to fully
a043d47b
     make use of my high capacity connection?</a></li>
37855015
     <li><a href="#RelayFlexible">How stable does my relay need to
 be?</a></li>
13b97478
     <li><a href="#BandwidthShaping">What bandwidth shaping options are
a756dc11
     available to Tor relays?</a></li>
13b97478
     <li><a href="#LimitTotalBandwidth">How can I limit the total amount
a756dc11
     of bandwidth used by my Tor relay?</a></li>
13b97478
     <li><a href="#RelayWritesMoreThanItReads">Why does my relay write
ac519bf8
     more bytes onto the network than it reads?</a></li>
13b97478
     <li><a href="#Hibernation">Why can I not browse anymore after
ac519bf8
     limiting bandwidth on my Tor relay?</a></li>
a756dc11
     <li><a href="#ExitPolicies">I'd run a relay, but I don't want to deal
2a9aaa80
     with abuse issues.</a></li>
2b63e88f
     <li><a href="#PackagedTor">Should I install Tor from my package manager,
a10d8980
     or build from source?</a></li>
5bdf9aee
     <li><a href="#WhatIsTheBadExitFlag">What is the BadExit flag?</a></li>
13b97478
     <li><a href="#IGotTheBadExitFlagWhyDidThatHappen">I got the BadExit flag.
5bdf9aee
     Why did that happen?</a></li>
13b97478
     <li><a href="#MyRelayRecentlyGotTheGuardFlagAndTrafficDroppedByHalf">My
5bdf9aee
     relay recently got the Guard flag and traffic dropped by half.</a></li>
13b97478
     <li><a href="#TorClientOnADifferentComputerThanMyApplications">I want to run my Tor client on a
9350708c
     different computer than my applications.</a></li>
13b97478
     <li><a href="#ServerClient">Can I install Tor on a central server, and
9350708c
     have my clients connect to it?</a></li>
13b97478
     <li><a href="#JoinTheNetwork">So I can just configure a nickname and
9350708c
     ORPort and join the network?</a></li>
2a9aaa80
     <li><a href="#RelayOrBridge">Should I be a normal relay or bridge
     relay?</a></li>
13b97478
     <li><a href="#UpgradeOrMove">I want to upgrade/move my relay. How do I
f30e672d
     keep the same key?</a></li>
9b92b660
     <li><a href="#OfflineED25519">How do offline ed25519 identity keys work?
     What do I need to know?</a></li>
37855015
     <li><a href="#MultipleRelays">I want to run more than one
 relay.</a></li>
f30e672d
     <li><a href="#NTService">How do I run my Tor relay as an NT service?
     </a></li>
13b97478
     <li><a href="#VirtualServer">Can I run a Tor relay from my virtual server
f30e672d
     account?</a></li>
f549ee31
     <li><a href="#WrongIP">My relay is picking the wrong IP address.</a></li>
     <li><a href="#BehindANAT">I'm behind a NAT/Firewall</a></li>
ae4527f6
     <li><a href="#OutgoingFirewall">How should I configure the outgoing filters on my relay?</a></li>
f30e672d
     <li><a href="#RelayMemory">Why is my Tor relay using so much memory?
     </a></li>
     <li><a href="#BetterAnonymity">Do I get better anonymity if I run a relay?
     </a></li>
13b97478
     <li><a href="#FacingLegalTrouble">I'm facing legal trouble. How do I
5bdf9aee
     prove that my server was a Tor relay at a given time?</a></li>
2ee01d9b
     <li><a href="#RelayDonations">Can I donate for a relay rather than
     run my own?</a></li>
2a9aaa80
     </ul>
0b68c29c
 
32316cbf
     <p>Tor onion services:</p>
6f107e8d
 
f30e672d
     <ul>
32316cbf
     <li><a href="#AccessOnionServices">How do I access onion services?</a></li>
     <li><a href="#ProvideAnOnionService">How do I provide an onion service?</a></li>
f30e672d
     </ul>
0b68c29c
 
df57496e
     <p>Development:</p>
6f107e8d
 
2fd90486
     <ul>
13b97478
     <li><a href="#VersionNumbers">What do these weird version numbers
2fd90486
     mean?</a></li>
     <li><a href="#PrivateTorNetwork">How do I set up my own private
     Tor network?</a></li>
13b97478
     <li><a href="#UseTorWithJava">How can I make my Java program use the
2fd90486
     Tor network?</a></li>
     <li><a href="#WhatIsLibevent">What is Libevent?</a></li>
13b97478
     <li><a href="#MyNewFeature">What do I need to do to get a new feature
2fd90486
     into Tor?</a></li>
     </ul>
 
df57496e
     <p>Anonymity and Security:</p>
2a9aaa80
     <ul>
13b97478
     <li><a href="#WhatProtectionsDoesTorProvide">What protections does Tor
a2904cae
     provide?</a></li>
13b97478
     <li><a href="#CanExitNodesEavesdrop">Can exit nodes eavesdrop on
a2904cae
     communications? Isn't that bad? </a></li>
13b97478
     <li><a href="#AmITotallyAnonymous">So I'm totally anonymous if I use
9fb81a6f
     Tor?</a></li>
37855015
     <li><a href="#KeyManagement">Tell me about all the keys Tor
 uses.</a></li>
75abc428
     <li><a href="#EntryGuards">What are Entry Guards?</a></li>
91d870fd
     <li><a href="#ChangePaths">How often does Tor change its paths?</a></li>
13b97478
     <li><a href="#CellSize">Tor uses hundreds of bytes for every IRC line. I
f30e672d
     can't afford that!</a></li>
13b97478
     <li><a href="#OutboundConnections">Why does netstat show these outbound
f30e672d
     connections?</a></li>
     <li><a href="#PowerfulBlockers">What about powerful blocking mechanisms
     </a></li>
13b97478
     <li><a href="#RemotePhysicalDeviceFingerprinting">Does Tor resist
f30e672d
     "remote physical device fingerprinting"?</a></li>
5bdf9aee
     <li><a href="#IsTorLikeAVPN">Is Tor like a VPN?</a></li>
13b97478
     <li><a href="#Proxychains">Aren't 10 proxies (proxychains) better than
08e6e1c9
     Tor with only 3 hops?</a></li>
13b97478
     <li><a href="#AttacksOnOnionRouting">What attacks remain against onion
f30e672d
     routing?</a></li>
5bdf9aee
     <li><a href="#LearnMoreAboutAnonymity">Where can I learn more about anonymity?</a></li>
2a9aaa80
     </ul>
0b68c29c
 
df57496e
     <p>Alternate designs that we don't do (yet):</p>
6f107e8d
 
2a9aaa80
     <ul>
     <li><a href="#EverybodyARelay">You should make every Tor user be a
     relay.</a></li>
37855015
     <li><a href="#TransportIPnotTCP">You should transport all IP
 packets,
bfbe8320
     not just TCP packets.</a></li>
6bba3d6a
     <li><a href="#HideExits">You should hide the list of Tor relays,
     so people can't block the exits.</a></li>
13b97478
     <li><a href="#ChoosePathLength">You should let people choose their path
f30e672d
     length.</a></li>
13b97478
     <li><a href="#SplitEachConnection">You should split each connection over
f30e672d
     many paths.</a></li>
13b97478
     <li><a href="#MigrateApplicationStreamsAcrossCircuits">You should migrate
34bb6a9b
     application streams across circuits.</a></li>
13b97478
     <li><a href="#LetTheNetworkPickThePath">You should let the network pick
34bb6a9b
     the path, not the client.</a></li>
13b97478
     <li><a href="#UnallocatedNetBlocks">Your default exit policy should block
f30e672d
     unallocated net blocks too.</a></li>
13b97478
     <li><a href="#BlockWebsites">Exit policies should be able to block
f30e672d
     websites, not just IP addresses.</a></li>
13b97478
     <li><a href="#BlockContent">You should change Tor to prevent users from
f30e672d
     posting certain content.</a></li>
ae26aad0
     <li><a href="#SendPadding">You should send padding so it's more secure.
     </a></li>
13b97478
     <li><a href="#Steganography">You should use steganography to hide Tor
ae26aad0
     traffic.</a></li>
2a9aaa80
     </ul>
0b68c29c
 
df57496e
     <p>Abuse:</p>
2a9aaa80
     <ul>
37855015
     <li><a href="#Criminals">Doesn't Tor enable criminals to do bad
 things?</a></li>
2a9aaa80
     <li><a href="#RespondISP">How do I respond to my ISP about my exit
     relay?</a></li>
ff62bd3e
     <li><a href="#HelpPoliceOrLawyers">I have questions about
    a Tor IP address for a legal case.</a></li>
2a9aaa80
     </ul>
0b68c29c
 
37855015
     <p>For other questions not yet on this version of the FAQ, see the
 <a
da280ad7
     href="<wikifaq>">wiki FAQ</a> for now.</p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
2a9aaa80
     <a id="General"></a>
f87eea1a
     <h2><a class="anchor" href="#General">General:</a></h2>
0b68c29c
 
2a9aaa80
     <a id="WhatIsTor"></a>
     <h3><a class="anchor" href="#WhatIsTor">What is Tor?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
     The name "Tor" can refer to several different components.
     </p>
0b68c29c
 
2a9aaa80
     <p>
b5f1407d
     Tor is a program you can run on your computer that helps keep
     you safe on the Internet. It protects you by bouncing your communications
2a9aaa80
     around a distributed network of relays run by volunteers all around
b5f1407d
     the world: it prevents somebody watching your Internet connection from
2a9aaa80
     learning what sites you visit, and it prevents the sites you visit
b5f1407d
     from learning your physical location.
     This set of volunteer relays is called the <b>Tor network</b>.
     The way most people use Tor is with <b>Tor Browser</b>,
     which is a version of Firefox that fixes many privacy issues.
     You can read more about how Tor works on the <a href="<page
     about/overview>">overview page</a>.
2a9aaa80
     </p>
0b68c29c
 
2a9aaa80
     <p>
b5f1407d
     The <b>Tor Project</b> is a non-profit (charity) organization that
     maintains and develops the Tor software.
2a9aaa80
     </p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
2a9aaa80
     <a id="Torisdifferent"></a>
37855015
     <h3><a class="anchor" href="#Torisdifferent">How is Tor different
 from other proxies?</a></h3>
     <p>
     A typical proxy provider sets up a server somewhere on the Internet
 and
 allows you to use it to relay your traffic.  This creates a simple, easy
 to
 maintain architecture.  The users all enter and leave through the same
 server.
 The provider may charge for use of the proxy, or fund their costs
 through
 advertisements on the server.  In the simplest configuration, you don't
 have to
 install anything.  You just have to point your browser at their proxy
 server.
 Simple proxy providers are fine solutions if you do not want protections
 for
b5f1407d
 your privacy and anonymity online and you trust the provider to not do
37855015
 bad
 things.  Some simple proxy providers use SSL to secure your connection
b5f1407d
 to them, which protects you against local eavesdroppers, such as those at a
 cafe with free wifi Internet.
caf41fb0
     </p>
     <p>
37855015
     Simple proxy providers also create a single point of failure.  The
 provider
b5f1407d
 knows both who you are and what you browse on the Internet.  They can see
37855015
 your
 traffic as it passes through their server.  In some cases, they can even
 see
defde4b4
 inside your
37855015
 encrypted traffic as they relay it to your banking site or to ecommerce
 stores.
b5f1407d
 You have to trust the provider isn't
37855015
 watching your traffic, injecting their own advertisements into your
 traffic
b5f1407d
 stream, or recording your personal details.
caf41fb0
     </p>
     <p>
37855015
     Tor passes your traffic through at least 3 different servers before
 sending
 it on to the destination. Because there's a separate layer of encryption
 for
b5f1407d
 each of the three relays, somebody watching your Internet connection
 can't modify, or read, what you are
 sending into the Tor network. Your traffic is encrypted between the Tor
 client (on your computer) and where it pops out somewhere else in the
 world.
 </p>
2a9aaa80
     <p>
     <dl>
37855015
     <dt>Doesn't the first server see who I am?</dt><dd>Possibly. A bad
 first of
 three servers can see encrypted Tor traffic coming from your computer.
 It
 still doesn't know who you are and what you are doing over Tor.  It
 merely sees
 "This IP address is using Tor".  Tor is not illegal anywhere in the
 world, so
 using Tor by itself is fine.  You are still protected from this node
 figuring
b5f1407d
 out both who you are and where you are going on the Internet.</dd>
37855015
     <dt>Can't the third server see my traffic?</dt><dd>Possibly.  A bad
 third
 of three servers can see the traffic you sent into Tor.  It won't know
 who sent
b5f1407d
 this traffic.  If you're using encryption (like
 HTTPS), it will only know the destination. See <a
 href="https://www.eff.org/pages/tor-and-https">this visualization of
 Tor and HTTPS</a> to understand how Tor and HTTPS interact.
 </dd>
2a9aaa80
     </dl>
     </p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
6f107e8d
 
2a9aaa80
     <a id="CompatibleApplications"></a>
37855015
     <h3><a class="anchor" href="#CompatibleApplications">What programs
 can I use with Tor?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
1660b67d
     Most people use Tor Browser,
32700e09
     which includes everything you need to browse the web safely using
1660b67d
     Tor. Using other browsers is <a href="#TBBOtherBrowser">dangerous
     and not recommended</a>.
2a9aaa80
     </p>
     <p>
     There are plenty of other programs you can use with Tor,
     but we haven't researched the application-level anonymity
91d870fd
     issues on all of them well enough to be able to recommend a safe
1660b67d
     configuration. Our wiki has a community-maintained list of
     instructions for <a
81720f6d
     href="<wiki>doc/TorifyHOWTO">Torifying
91d870fd
     specific applications</a>.
2a9aaa80
     Please add to these lists and help us keep them accurate!
     </p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
2a9aaa80
     <a id="WhyCalledTor"></a>
37855015
     <h3><a class="anchor" href="#WhyCalledTor">Why is it called
 Tor?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
     Because Tor is the onion routing network. When we were starting the
     new next-generation design and implementation of onion routing in
     2001-2002, we would tell people we were working on onion routing,
     and they would say "Neat. Which one?" Even if onion routing has
     become a standard household term, Tor was born out of the actual <a
     href="http://www.onion-router.net/">onion routing project</a> run by
     the Naval Research Lab.
     </p>
0b68c29c
 
2a9aaa80
     <p>
     (It's also got a fine translation from German and Turkish.)
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     Note: even though it originally came from an acronym, Tor is not
 spelled
2a9aaa80
     "TOR". Only the first letter is capitalized. In fact, we can usually
37855015
     spot people who haven't read any of our website (and have instead
 learned
     everything they know about Tor from news articles) by the fact that
 they
2a9aaa80
     spell it wrong.
     </p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
2a9aaa80
     <a id="Backdoor"></a>
37855015
     <h3><a class="anchor" href="#Backdoor">Is there a backdoor in
 Tor?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
1c8ac595
     There is absolutely no backdoor in Tor.  We know some smart lawyers
     who say that it's unlikely that anybody will try to make us add one
     in our jurisdiction (U.S.). If they do ask us, we will fight them,
     and (the lawyers say) probably win.
2a9aaa80
     </p>
0b68c29c
 
2a9aaa80
     <p>
1660b67d
     We will <a
     href="https://media.ccc.de/v/31c3_-_6251_-_en_-_saal_1_-_201412301400_-_state_of_the_onion_-_jacob_-_arma">never</a>
     put a backdoor in Tor.
2a9aaa80
     We think that putting a backdoor in Tor would be tremendously
37855015
     irresponsible to our users, and a bad precedent for security
1c8ac595
     software in general. If we ever put a deliberate backdoor in our
     security software, it would ruin our professional reputations.
     Nobody would trust our software ever again &mdash; for excellent
     reason!
2a9aaa80
     </p>
0b68c29c
 
2a9aaa80
     <p>
     But that said, there are still plenty of subtle attacks
     people might try. Somebody might impersonate us, or break into our
37855015
     computers, or something like that. Tor is open source, and you
1c8ac595
     should always check the source (or at least the diffs since the last
     release) for suspicious things. If we (or the distributors) don't
     give you source, that's a sure sign something funny might be going
     on. You should also check the <a href="<page
     docs/verifying-signatures>">PGP signatures</a> on the releases, to
     make sure nobody messed with the distribution sites.
2a9aaa80
     </p>
0b68c29c
 
2a9aaa80
     <p>
     Also, there might be accidental bugs in Tor that could affect your
37855015
     anonymity. We periodically find and fix anonymity-related bugs, so
1c8ac595
     make sure you keep your Tor versions up-to-date.
2a9aaa80
     </p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
2a9aaa80
     <a id="DistributingTor"></a>
37855015
     <h3><a class="anchor" href="#DistributingTor">Can I distribute
 Tor?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
     Yes.
     </p>
0b68c29c
 
2a9aaa80
     <p>
f86c4fee
     The Tor software is <a href="https://www.fsf.org/">free software</a>. This
     means we give you the rights to redistribute the Tor software, either
     modified or unmodified, either for a fee or gratis. You don't have to
2a9aaa80
     ask us for specific permission.
     </p>
0b68c29c
 
2a9aaa80
     <p>
f86c4fee
     However, if you want to redistribute the Tor software you must follow our
2a9aaa80
     <a href="<gitblob>LICENSE">LICENSE</a>.
f86c4fee
     Essentially this means that you need to include our LICENSE file along
2a9aaa80
     with whatever part of the Tor software you're distributing.
     </p>
0b68c29c
 
2a9aaa80
     <p>
f86c4fee
     Most people who ask us this question don't want to distribute just the
db1b8809
     Tor software, though. They want to distribute the <a
11ab6cce
     href="<page projects/torbrowser>">Tor Browser</a>. This includes <a
f86c4fee
     href="https://www.mozilla.org/en-US/firefox/organizations/">Firefox
2b63e88f
     Extended Support Release</a>, and the NoScript and HTTPS-Everywhere
     extensions. You will need to follow the license for those programs as
     well. Both of those Firefox extensions are distributed under
f86c4fee
     the <a href="https://www.fsf.org/licensing/licenses/gpl.html">GNU General
2b63e88f
     Public License</a>, while Firefox ESR is released under the Mozilla Public
     License. The simplest way to obey their licenses is to include the source
     code for these programs everywhere you include the bundles themselves.
2a9aaa80
     </p>
0b68c29c
 
2a9aaa80
     <p>
f86c4fee
     Also, you should make sure not to confuse your readers about what Tor is,
     who makes it, and what properties it provides (and doesn't provide). See
     our <a href="<page docs/trademark-faq>">trademark FAQ</a> for details.
2a9aaa80
     </p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
2a9aaa80
     <a id="SupportMail"></a>
37855015
     <h3><a class="anchor" href="#SupportMail">How can I get
 support?</a></h3>
7841030e
 
1660b67d
     <p>See the <a href="<page about/contact>#support">Support section
     on the contact page</a>.
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
c5a65f0d
     <a id="Forum"></a>
     <h3><a class="anchor" href="#Forum">Is there a Tor forum?</a></h3>
 
13b97478
     <p>We have a <a href="https://tor.stackexchange.com/">StackExchange
ff62bd3e
     page</a> that is currently in public beta.
c5a65f0d
     </p>
 
     <hr>
 
2a9aaa80
     <a id="WhySlow"></a>
     <h3><a class="anchor" href="#WhySlow">Why is Tor so slow?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
     There are many reasons why the Tor network is currently slow.
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     Before we answer, though, you should realize that Tor is never going
 to
     be blazing fast. Your traffic is bouncing through volunteers'
 computers
     in various parts of the world, and some bottlenecks and network
 latency
2a9aaa80
     will always be present. You shouldn't expect to see university-style
     bandwidth through Tor.
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     But that doesn't mean that it can't be improved. The current Tor
 network
     is quite small compared to the number of people trying to use it,
 and
     many of these users don't understand or care that Tor can't
 currently
2a9aaa80
     handle file-sharing traffic load.
     </p>
0b68c29c
 
2a9aaa80
     <p>
     For the much more in-depth answer, see <a
89634fa0
     href="<blog>why-tor-is-slow">Roger's blog
37855015
     post on the topic</a>, which includes both a detailed PDF and a
 video
2a9aaa80
     to go with it.
     </p>
0b68c29c
 
2a9aaa80
     <p>
     What can you do to help?
     </p>
0b68c29c
 
2a9aaa80
     <ul>
0b68c29c
 
2a9aaa80
     <li>
37855015
     <a href="<page docs/tor-doc-relay>">Configure your Tor to relay
 traffic
     for others</a>. Help make the Tor network large enough that we can
 handle
2a9aaa80
     all the users who want privacy and security on the Internet.
     </li>
0b68c29c
 
2a9aaa80
     <li>
c261c7ec
     Help us make Tor more usable. We
2a9aaa80
     especially need people to help make it easier to configure your Tor
     as a relay. Also, we need help with clear simple documentation to
     walk people through setting it up.
     </li>
0b68c29c
 
2a9aaa80
     <li>
37855015
     There are some bottlenecks in the current Tor network. Help us
 design
     experiments to track down and demonstrate where the problems are,
 and
2a9aaa80
     then we can focus better on fixing them.
     </li>
0b68c29c
 
2a9aaa80
     <li>
     Tor needs some architectural changes too. One important change is to
37855015
     start providing <a href="#EverybodyARelay">better service to people
 who
     relay traffic</a>. We're working on this, and we'll finish faster if
 we
2a9aaa80
     get to spend more time on it.
     </li>
0b68c29c
 
2a9aaa80
     <li>
37855015
     Help do other things so we can do the hard stuff. Please take a
 moment
     to figure out what your skills and interests are, and then <a
 href="<page
2a9aaa80
     getinvolved/volunteer>">look at our volunteer page</a>.
     </li>
0b68c29c
 
2a9aaa80
     <li>
37855015
     Help find sponsors for Tor. Do you work at a company or government
 agency
2a9aaa80
     that uses Tor or has a use for Internet privacy, e.g. to browse the
37855015
     competition's websites discreetly, or to connect back to the home
 servers
     when on the road without revealing affiliations? If your
 organization has
     an interest in keeping the Tor network working, please contact them
 about
     supporting Tor. Without sponsors, Tor is going to become even
 slower.
2a9aaa80
     </li>
0b68c29c
 
2a9aaa80
     <li>
     If you can't help out with any of the above, you can still help out
37855015
     individually by <a href="<page donate/donate>">donating a bit of
 money to the
2a9aaa80
     cause</a>. It adds up!
     </li>
0b68c29c
 
2a9aaa80
     </ul>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
91d870fd
     <a id="FileSharing"></a>
13b97478
     <h3><a class="anchor" href="#FileSharing">How can I share files
f30e672d
     anonymously through Tor?</a></h3>
91d870fd
 
     <p>
13b97478
     File sharing (peer-to-peer/P2P) is widely unwanted in the Tor network,
     and exit nodes are configured to block file sharing traffic by default.
     Tor is not really designed for it, and file sharing through Tor slows
     down everyone's browsing. Also, Bittorrent over Tor <a
f30e672d
     href="https://blog.torproject.org/blog/bittorrent-over-tor-isnt-good-idea">
     is not anonymous</a>!
91d870fd
     </p>
 
     <hr>
 
2a9aaa80
     <a id="Funding"></a>
37855015
     <h3><a class="anchor" href="#Funding">What would The Tor Project do
 with more funding?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
b1506c2b
     The Tor network's <a
cafc6b4a
 href="https://metrics.torproject.org/networksize.html">several thousand</a>
f43669fc
     relays push <a
 href="https://metrics.torproject.org/bandwidth.html">around 100 Gbps on
 average</a>. We have <a
 href="https://metrics.torproject.org/userstats-relay-country.html">millions of
     daily users</a>. But the Tor network is not yet self-sustaining.
2a9aaa80
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     There are six main development/maintenance pushes that need
 attention:
2a9aaa80
     </p>
0b68c29c
 
2a9aaa80
     <ul>
0b68c29c
 
2a9aaa80
     <li>
     Scalability: We need to keep scaling and decentralizing the Tor
     architecture so it can handle thousands of relays and millions of
37855015
     users. The upcoming stable release is a major improvement, but
 there's
2a9aaa80
     lots more to be done next in terms of keeping Tor fast and stable.
     </li>
0b68c29c
 
2a9aaa80
     <li>
37855015
     User support: With this many users, a lot of people are asking
 questions
     all the time, offering to help out with things, and so on. We need
 good
     clean docs, and we need to spend some effort coordinating
 volunteers.
2a9aaa80
     </li>
0b68c29c
 
2a9aaa80
     <li>
37855015
     Relay support: the Tor network is run by volunteers, but they still
 need
2a9aaa80
     attention with prompt bug fixes, explanations when things go wrong,
37855015
     reminders to upgrade, and so on. The network itself is a commons,
 and
     somebody needs to spend some energy making sure the relay operators
 stay
     happy. We also need to work on stability on some platforms &mdash;
 e.g.,
db82b71b
     Tor relays have problems on Win XP currently.
2a9aaa80
     </li>
0b68c29c
 
2a9aaa80
     <li>
37855015
     Usability: Beyond documentation, we also need to work on usability
 of the
     software itself. This includes installers, clean GUIs, easy
 configuration
     to interface with other applications, and generally automating all
 of
c261c7ec
     the difficult and confusing steps inside Tor.
     Usability for privacy software has never been easy.
2a9aaa80
     </li>
0b68c29c
 
2a9aaa80
     <li>
     Incentives: We need to work on ways to encourage people to configure
     their Tors as relays and exit nodes rather than just clients.
37855015
     <a href="#EverybodyARelay">We need to make it easy to become a
 relay,
2a9aaa80
     and we need to give people incentives to do it.</a>
     </li>
0b68c29c
 
2a9aaa80
     <li>
     Research: The anonymous communications field is full
     of surprises and gotchas. In our copious free time, we
     also help run top anonymity and privacy conferences like <a
     href="http://petsymposium.org/">PETS</a>. We've identified a set of
37855015
     critical <a href="<page getinvolved/volunteer>#Research">Tor
 research questions</a>
     that will help us figure out how to make Tor secure against the
 variety of
     attacks out there. Of course, there are more research questions
 waiting
2a9aaa80
     behind these.
     </li>
0b68c29c
 
2a9aaa80
     </ul>
0b68c29c
 
2a9aaa80
     <p>
     We're continuing to move forward on all of these, but at this rate
37855015
     <a href="#WhySlow">the Tor network is growing faster than the
 developers
2a9aaa80
     can keep up</a>.
37855015
     Now would be an excellent time to add a few more developers to the
 effort
2a9aaa80
     so we can continue to grow the network.
     </p>
0b68c29c
 
2a9aaa80
     <p>
     We are also excited about tackling related problems, such as
     censorship-resistance.
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     We are proud to have <a href="<page about/sponsors>">sponsorship and
 support</a>
     from the Omidyar Network, the International Broadcasting Bureau,
 Bell
     Security Solutions, the Electronic Frontier Foundation, several
 government
2a9aaa80
     agencies and research groups, and hundreds of private contributors.
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     However, this support is not enough to keep Tor abreast of changes
 in the
     Internet privacy landscape. Please <a href="<page
 donate/donate>">donate</a>
     to the project, or <a href="<page about/contact>">contact</a> our
 executive
2a9aaa80
     director for information on making grants or major donations.
     </p>
0b68c29c
 
73bd2ad3
     <hr>
 
 
     <a id="Mobile"></a>
2b63e88f
     <h3><a class="anchor" href="#Mobile">Can I use Tor on my phone or mobile
73bd2ad3
     device?</a></h3>
 
     <p>
2b63e88f
     Tor on Android devices is maintained by the <a
     href="https://guardianproject.info">Guardian Project</a>. Currently, there
     is no supported way of using Tor on iOS; the Guardian Project is
73bd2ad3
     working to make this a reality in the future.
     </p>
 
611c066e
     <hr>
 
b75b913d
     <a id="OutboundPorts"></a>
     <h3><a class="anchor" href="#OutboundPorts">Which outbound ports must be open when
     using Tor as a client?</a></h3>
91d870fd
     <p>
13b97478
     Tor may attempt to connect to any port that is advertised in the
     directory as an ORPort (for making Tor connections) or a DirPort (for
f1aa31be
     fetching updates to the directory). There are a variety of these ports:
     many of them are running on 80, 443, 9001, and 9030, but many use other
     ports too.
91d870fd
     </p>
     <p>
b75b913d
     When using Tor as a client, you could probably get away with opening only those four
13b97478
     ports. Since Tor does all its connections in the background, it will retry
     ones that fail, and hopefully you'll never have to know that it failed, as
     long as it finds a working one often enough. However, to get the most
f1aa31be
     diversity in your entry nodes &mdash; and thus the most security
     &mdash; as well as the most robustness in your connectivity, you'll
     want to let it connect to all of them.
     See the FAQ entry on <a href="#FirewallPorts">firewalled ports</a> if
     you want to explicitly tell your Tor client which ports are reachable
     for you.
     </p>
2b63e88f
 
91d870fd
     <hr>
2b63e88f
 
91d870fd
     <a id="IsItWorking"></a>
13b97478
     <h3><a class="anchor" href="#IsItWorking">How can I tell if Tor is
f30e672d
     working, and that my connections really are anonymized?</a></h3>
91d870fd
 
     <p>
13b97478
     There are sites you can visit that will tell you if you appear to be
f30e672d
     coming through the Tor network. Try the <a href="https://check.torproject.org">
     Tor Check</a> site and see whether it thinks you are using Tor or not.
91d870fd
     </p>
2b63e88f
 
91d870fd
     <hr>
2b63e88f
 
91d870fd
     <a id="FTP"></a>
     <h3><a class="anchor" href="#FTP">How do I use my browser for ftp with Tor?
     </a></h3>
 
f30e672d
     <p>
32700e09
     Use <a href="https://torproject.org/projects/torbrowser.html">Tor
     Browser</a>. If you want a separate application for an
13b97478
     ftp client, we've heard good things about  FileZilla for Windows. You can
     configure it to point to Tor as a "socks4a" proxy on "localhost" port
     "9050".
f30e672d
     </p>
34bb6a9b
 
91d870fd
     <hr>
2b63e88f
 
34bb6a9b
     <a id="NoDataScrubbing"></a>
13b97478
     <h3><a class="anchor" href="#NoDataScrubbing">Does Tor remove personal
34bb6a9b
     information from the data my application sends?</a></h3>
 
13b97478
     <p>No, it doesn't. You need to use a separate program that understands
     your application and protocol and knows how to clean or "scrub" the data
5bd3add6
     it sends. Tor Browser tries to keep application-level data,
     like the user-agent string, uniform for all users. Tor Browser can't
13b97478
     do anything about text that you type into forms, though. <a
cf814f9e
     href="<page download/download-easy>#warning">Be
34bb6a9b
     careful and be smart.</a>
     </p>
 
     <hr>
 
7841030e
     <a id="Metrics"></a>
37855015
     <h3><a class="anchor" href="#Metrics">How many people use Tor? How
f30e672d
     many relays or exit nodes are there?</a></h3>
7841030e
 
91d870fd
     <p>
     All this and more about measuring Tor can be found at the <a
dc7ed63e
     href="https://metrics.torproject.org/">Tor Metrics Portal</a>.</p>
ed5ac546
     <hr>
0b68c29c
 
6f107e8d
     <a id="CompilationAndInstallation"></a>
f87eea1a
     <h2><a class="anchor" href="#CompilationAndInstallation">Compilation And Installation:</a></h2>
6f107e8d
 
2a9aaa80
     <a id="HowUninstallTor"></a>
37855015
     <h3><a class="anchor" href="#HowUninstallTor">How do I uninstall
 Tor?</a></h3>
 
     <p>
     Tor Browser does not install itself in the classic sense of
 applications. You just simply delete the folder or directory named "Tor
 Browser" and it is removed from your system.
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     If this is not related to Tor Browser, uninstallation depends
 entirely on how you installed it and which operating system you
     have. If you installed a package, then hopefully your package has a
 way to
13b97478
     uninstall itself. The Windows packages include uninstallers.
2a9aaa80
     </p>
0b68c29c
 
2a9aaa80
     <p>
     For Mac OS X, follow the <a
     href="<page docs/tor-doc-osx>#uninstall">uninstall directions</a>.
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     If you installed by source, I'm afraid there is no easy uninstall
 method. But
     on the bright side, by default it only installs into /usr/local/ and
 it should
2a9aaa80
     be pretty easy to notice things there.
     </p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
2a9aaa80
     <a id="PGPSigs"></a>
37855015
     <h3><a class="anchor" href="#PGPSigs">What are these "sig" files on
 the download page?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
37855015
     These are PGP signatures, so you can verify that the file you've
 downloaded is
2a9aaa80
     exactly the one that we intended you to get.
     </p>
0b68c29c
 
2a9aaa80
     <p>
     Please read the <a
37855015
     href="<page docs/verifying-signatures>">verifying signatures</a>
 page for details.
2a9aaa80
     </p>
0b68c29c
 
465835b2
 <hr>
 
 <a id="GetTor"></a>
 <h3><a class="anchor" href="#GetTor">Your website is blocked in my
 country. How do I download Tor?</a></h3>
 
 <p>
 Some government or corporate firewalls censor connections to Tor's
 website. In those cases, you have three options. First, get it from
f65daf2d
 a friend &mdash; <a href="<page projects/torbrowser>">Tor Browser</a>
32700e09
 fits nicely on a USB key. Second, find the <a
37855015
 href="https://encrypted.google.com/search?q=tor+mirrors">google
 cache</a>
465835b2
 for the <a href="<page getinvolved/mirrors>">Tor mirrors</a> page
 and see if any of those copies of our website work for you. Third,
8ee668f8
 you can download Tor Browser via email: log in to your email account
 and send an email to '<tt>gettor@torproject.org</tt>' with one of the
 following words in the body of the message: <tt>windows</tt>,
 <tt>osx</tt> or <tt>linux</tt> (case insensitive).
 You will receive a reply with links from popular cloud services to
ecaa2485
 download Tor Browser for Windows, Mac OS X or Linux, depending on the
8ee668f8
 option you chose. Currently, the only cloud service supported is
01ce58c7
 Dropbox. If you send a blank message or anything different from the
 options mentioned, you will receive a help message with detailed
8ee668f8
 instructions to ask for Tor Browser via email. Please note that you
 can use this service from any email address: gmail, yahoo, hotmail,
 riseup, etc. The only restriction is that you can do a maximum of
 three requests in a row, after that you'll have to wait 20 minutes to
 use it again. See the <a href="../projects/gettor.html">GetTor</a>
 section for more information.
465835b2
 </p>
 
 <p>
37855015
 Be sure to <a href="<page docs/verifying-signatures>">verify the
 signature</a>
86339d18
 of any package you download, especially when you get it from somewhere
 other than our official HTTPS website.
465835b2
 </p>
 
ed5ac546
     <hr>
0b68c29c
 
082877a6
     <a id="VirusFalsePositives"></a>
5fe101b2
     <h3><a class="anchor" href="#VirusFalsePositives">Why does my
     Tor executable appear to have a virus or spyware?</a></h3>
082877a6
     <p>
13b97478
     Sometimes, overzealous Windows virus and spyware detectors trigger on
     some parts of the Tor Windows binary. Our best guess is that these are
     false positives — after all, the anti-virus and anti-spyware business is
     just a guessing game anyway. You should contact your vendor and explain
     that you have a program that seems to be triggering false positives. Or
082877a6
     pick a better vendor.
     </p>
13b97478
     <p>In the meantime, we encourage you to not just take our word for it.
     Our job is to provide the source; if you're concerned, please do
082877a6
     recompile it yourself.</p>
 
     <hr>
 
6f107e8d
     <a id="tarballs"></a>
13b97478
     <h3><a class="anchor" href="#tarballs">How do I open a .tar.gz
c70b2a5f
     or .tar.xz file?</a></h3>
991262e9
 
     <p>
     Tar is a common archive utility for Unix and Linux systems. If your
13b97478
     system has a mouse, you can usually open them by double clicking.
     Otherwise open a command prompt and execute</p>
efb55037
     <pre>tar xzf &lt;FILENAME&gt;.tar.gz</pre> or <pre>tar xJf &lt;FILENAME&gt;.tar.xz</pre>
991262e9
     <p>
13b97478
     as documented on tar's man page.
991262e9
     </p>
 
     <hr>
 
2a9aaa80
     <a id="LiveCD"></a>
37855015
     <h3><a class="anchor" href="#LiveCD">Is there a LiveCD or other
 bundle that includes Tor?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
c34cd538
     Yes.  Use <a href="https://tails.boum.org/">The Amnesic Incognito
32700e09
     Live System</a> or <a href="<page projects/torbrowser>">Tor Browser</a>.
2a9aaa80
     </p>
d97ab35a
 
 <hr>
 
6f107e8d
 <a id="TBBGeneral"></a>
f87eea1a
 <h2><a class="anchor" href="#TBBGeneral">Tor Browser (general):</a></h2>
6f107e8d
 
77175ca6
 <a id="TBBFlash"></a>
37855015
 <h3><a class="anchor" href="#TBBFlash">Why can't I view videos on
0d4ab419
 some Flash-based sites?</a></h3>
77175ca6
 
 <p>
0d4ab419
 Some sites require third party browser plugins such as Flash.
94ff8c2a
 Plugins operate independently from Firefox and can perform
 activity on your computer that ruins your anonymity. This includes
0d4ab419
 but is not limited to: completely disregarding
 proxy settings, querying your <a
f30e672d
 href="http://forums.sun.com/thread.jspa?threadID=5162138&amp;messageID=9618376">
 local IP address</a>, and <a
94ff8c2a
 href="http://epic.org/privacy/cookies/flash.html">storing their own
 cookies</a>. It is possible to use a LiveCD solution such as
13b97478
 or <a href="https://tails.boum.org/">The Amnesic Incognito Live System</a>
 that creates a secure, transparent proxy to protect you from proxy bypass,
 however issues with local IP address discovery and Flash cookies still remain.
f30e672d
 </p>
94ff8c2a
 
77175ca6
 <hr>
 
f549ee31
 <a id="Ubuntu"></a>
 <h3><a class="anchor" href="#Ubuntu">
a03040cb
 I'm using Ubuntu and I can't start Tor Browser.</a></h3>
f549ee31
 <p>
2b63e88f
 You'll need to tell Ubuntu that you want the ability to execute shell scripts
 from the graphical interface. Open "Files" (Unity's explorer), open
 Preferences-> Behavior Tab -> Set "Run executable text files when they are
347dc852
 opened" to "Ask every time", then OK.
60761506
 </p>
5bd3add6
 <p>You can also start Tor Browser from the command line by running </p>
34bb6a9b
 <pre>./start-tor-browser</pre>
f549ee31
 <p>
 from inside the Tor Browser directory.
 </p>
 
991262e9
 <hr>
 
a03040cb
 <a id="SophosOnMac"></a>
 <h3><a class="anchor" href="#SophosOnMac">I'm using the Sophos anti-virus
3b7785b1
     software on my Mac, and Tor starts but I can't browse anywhere.</a></h3>
a03040cb
 <p>
13b97478
 You'll need to modify Sophos anti-virus so that Tor can connect to the
 internet. Go to Preferences -> Web Protection -> General, and turn off
a03040cb
 the protections for "Malicious websites" and "Malicious downloads".
 </p>
1db3b7d3
 <p>
2b63e88f
 We encourage affected Sophos users to contact Sophos support about
1db3b7d3
 this issue.
 </p>
a03040cb
 
f549ee31
 <hr>
 
394edc35
 <a id="XPCOMError"></a>
23559347
 <h3><a class="anchor" href="#XPCOMError">When I start Tor Browser I get an 
 error message: "Cannot load XPCOM".</a></h3>
394edc35
 
 <p>
23559347
 This <a 
 href="https://trac.torproject.org/projects/tor/ticket/10789">problem</a> is 
 specifically caused by the Webroot SecureAnywhere Antivirus software. 
 From the Webroot control panel, go to Identity Protection &rarr; Application 
 Protection, and set all the files in your Tor Browser folder to 'Allow'. 
 We encourage affected Webroot users to contact Webroot support about this 
 issue.
60eca14e
 </p>
394edc35
 
 <hr>
 
77175ca6
 <a id="TBBOtherExtensions"></a>
 <h3><a class="anchor" href="#TBBOtherExtensions">Can I install other
 Firefox extensions?</a></h3>
 
 <p>
5bd3add6
 Tor Browser is free software, so there is nothing preventing you from
13b97478
 modifying it any way you like. However, we do not recommend installing any
32700e09
 additional Firefox add-ons with Tor Browser. Add-ons can break
13b97478
 your anonymity in a number of ways, including browser fingerprinting and
f30e672d
 bypassing proxy settings.
77175ca6
 </p>
94ff8c2a
 <p>
13b97478
 Some people have suggested we include ad-blocking software or
5bd3add6
 anti-tracking software with Tor Browser. Right now, we do not
32700e09
 think that's such a good idea. Tor Browser aims to provide
13b97478
 sufficient privacy that additional add-ons to stop ads and trackers are
 not necessary. Using add-ons like these may cause some sites to break, which
f30e672d
 <a href="https://www.torproject.org/projects/torbrowser/design/#philosophy">
13b97478
 we don't want to do</a>. Additionally, maintaining a list of "bad" sites that
 should be black-listed provides another opportunity to uniquely fingerprint
 users.
55d1a604
 </p>
94ff8c2a
 
77175ca6
 <hr>
 
5a746784
 <a id="TBBJavaScriptEnabled"></a>
e38f623f
 <a id="TBBCanIBlockJS"></a>
37855015
 <h3><a class="anchor" href="#TBBJavaScriptEnabled">Why is NoScript
32700e09
 configured to allow JavaScript by default in Tor Browser?
37855015
 Isn't that unsafe?</a></h3>
5a746784
 
 <p>
32700e09
 We configure NoScript to allow JavaScript by default in Tor
 Browser because many websites will not work with JavaScript
5a746784
 disabled.  Most users would give up on Tor entirely if a website
 they want to use requires JavaScript, because they would not know
 how to allow a website to use JavaScript (or that enabling
 JavaScript might make a website work).
 </p>
 
e38f623f
 <p>
 There's a tradeoff here. On the one hand, we should leave
 JavaScript enabled by default so websites work the way
 users expect. On the other hand, we should disable JavaScript
 by default to better protect against browser vulnerabilities (<a
f30e672d
 href="https://blog.torproject.org/blog/tor-security-advisory-old-tor-browser-bundles-vulnerable">
 not just a theoretical concern!</a>). But there's a third issue: websites
e38f623f
 can easily determine whether you have allowed JavaScript for them,
 and if you disable JavaScript by default but then allow a few websites
 to run scripts (the way most people use NoScript), then your choice of
 whitelisted websites acts as a sort of cookie that makes you recognizable
 (and distinguishable), thus harming your anonymity.
 </p>
5a746784
 
 <p>
e38f623f
 Ultimately, we want the default Tor bundles to use
 a combination of firewalls (like the iptables rules
 in <a href="https://tails.boum.org/">Tails</a>) and <a
 href="https://trac.torproject.org/projects/tor/ticket/7680">sandboxes</a>
 to make JavaScript not so scary. In
 the shorter term, TBB 3.0 will hopefully <a
 href="https://trac.torproject.org/projects/tor/ticket/9387">allow users
 to choose their JavaScript settings more easily</a> &mdash; but the
 partitioning concern will remain.
5a746784
 </p>
 
 <p>
e38f623f
 Until we get there, feel free to leave JavaScript on or off depending
 on your security, anonymity, and usability priorities.
5a746784
 </p>
 
 <hr>
 
b4a92f3d
 <a id="TBBOtherBrowser"></a>
 <h3><a class="anchor" href="#TBBOtherBrowser">I want to use
 Chrome/IE/Opera/etc with Tor.</a></h3>
 
 <p>
64d65ef2
 In short, using any browser besides Tor Browser with Tor is a
b4a92f3d
 really bad idea.
 </p>
 
 <p>
64d65ef2
 Our efforts to work with the Chrome team to <a
 href="https://blog.torproject.org/blog/google-chrome-incognito-mode-tor-and-fingerprinting">add
 missing APIs</a> were unsuccessful, unfortunately. Currently, it is impossible
5bd3add6
 to use other browsers and get the same level of protections as when using
64d65ef2
 Tor Browser.
b4a92f3d
 </p>
 
 <hr>
 
0de2b0a3
 <a id="GoogleCAPTCHA"></a>
 <h3><a class="anchor" href="#GoogleCAPTCHA">Google makes me solve a
 CAPTCHA or tells me I have spyware installed.</a></h3>
fbdf7a2d
 
 <p>
 This is a known and intermittent problem; it does not mean that Google
 considers Tor to be spyware.
 </p>
 
 <p>
37855015
 When you use Tor, you are sending queries through exit relays that are
93c6f7dd
 also shared by thousands of other users. Tor users typically see this
 message when many Tor users are querying Google in a short period of time.
 Google interprets the high volume of traffic from a single IP address
 (the exit relay you happened to pick) as somebody trying to "crawl" their
 website, so it slows down traffic from that IP address for a short time.
fbdf7a2d
 </p>
 <p>
 An alternate explanation is that Google tries to detect certain
 kinds of spyware or viruses that send distinctive queries to Google
 Search. It notes the IP addresses from which those queries are received
 (not realizing that they are Tor exit relays), and tries to warn any
 connections coming from those IP addresses that recent queries indicate
 an infection.
 </p>
 
 <p>
93c6f7dd
 To our knowledge, Google is not doing anything intentionally specifically
fbdf7a2d
 to deter or block Tor use. The error message about an infected machine
 should clear up again after a short time.
 </p>
 
 <hr />
 
91d870fd
 <a id="ForeignLanguages"></a>
 <h3><a class="anchor" href="#ForeignLanguages">
 Why does Google show up in foreign languages?</a></h3>
 
 <p>
13b97478
  Google uses "geolocation" to determine where in the world you are, so it
  can give you a personalized experience. This includes using the language
  it thinks you prefer, and it also includes giving you different results
f30e672d
  on your queries.
91d870fd
 </p>
 <p>
13b97478
 If you really want to see Google in English you can click the link that
 provides that. But we consider this a feature with Tor, not a bug --- the
 Internet is not flat, and it in fact does look different depending on
2b63e88f
 where you are. This feature reminds people of this fact.
91d870fd
 </p>
 <p>
13b97478
 Note that Google search URLs take name/value pairs as arguments and one
 of those names is "hl". If you set "hl" to "en" then Google will return
 search results in English regardless of what Google server you have been
 sent to. On a query this looks like:
f30e672d
 </p>
34bb6a9b
 <pre>https://encrypted.google.com/search?q=online%20anonymity&hl=en</pre>
91d870fd
 <p>
13b97478
 Another method is to simply use your country code for accessing Google.
 This can be google.be, google.de, google.us and so on.
e27eb072
 </p>
 <hr />
fbdf7a2d
 <a id="GmailWarning"></a>
37855015
 <h3><a class="anchor" href="#GmailWarning">Gmail warns me that my
f30e672d
 account may have been compromised.</a></h3>
fbdf7a2d
 
 <p>
 Sometimes, after you've used Gmail over Tor, Google presents a
 pop-up notification that your account may have been compromised.
 The notification window lists a series of IP addresses and locations
 throughout the world recently used to access your account.
 </p>
 
 <p>
 In general this is a false alarm: Google saw a bunch of logins from
37855015
 different places, as a result of running the service via Tor, and
 decided
fbdf7a2d
 it was a good idea to confirm the account was being accessed by it's
 rightful owner.
 </p>
 
 <p>
 Even though this may be a biproduct of using the service via tor,
 that doesn't mean you can entirely ignore the warning. It is
 <i>probably</i> a false positive, but it might not be since it is
 possible for someone to hijack your Google cookie.
 </p>
 
 <p>
 Cookie hijacking is possible by either physical access to your computer
 or by watching your network traffic.  In theory only physical access
 should compromise your system because Gmail and similar services
 should only send the cookie over an SSL link. In practice, alas, it's <a
37855015
 href="http://fscked.org/blog/fully-automated-active-https-cookie-
 hijacking">
fbdf7a2d
 way more complex than that</a>.
 </p>
 
 <p>
 And if somebody <i>did</i> steal your google cookie, they might end
 up logging in from unusual places (though of course they also might
 not). So the summary is that since you're using Tor, this security
 measure that Google uses isn't so useful for you, because it's full of
 false positives. You'll have to use other approaches, like seeing if
 anything looks weird on the account, or looking at the timestamps for
 recent logins and wondering if you actually logged in at those times.
 </p>
 
 <hr>
 
6d9ff1cf
 <a id="NeedToUseAProxy"></a>
13b97478
 <h3><a class="anchor" href="#NeedToUseAProxy">My internet connection
9fb81a6f
 requires an HTTP or SOCKS Proxy</a></h3>
6d9ff1cf
 
 <p>
13b97478
 You can set Proxy IP address, port, and authentication information in
 Tor Browser's Network Settings. If you're using Tor another way, check
 out the HTTPProxy and HTTPSProxy config options in the <a
cf814f9e
 href="<page docs/tor-manual>">man page</a>,
13b97478
 and modify your torrc file accordingly. You will need an HTTP proxy for
 doing GET requests to fetch the Tor directory, and you will need an
 HTTPS proxy for doing CONNECT requests to get to Tor relays. (It's fine
 if they're the same proxy.) Tor also recognizes the torrc options
 Socks4Proxy and Socks5Proxy.
6d9ff1cf
 </p>
 <p>
13b97478
 Also read up on the HTTPProxyAuthenticator and HTTPSProxyAuthenticator
 options if your proxy requires auth. We only support basic auth currently,
 but if you need NTLM authentication, you may find <a
 href="http://archives.seul.org/or/talk/Jun-2005/msg00223.html">this post
 in the archives</a> useful.
6d9ff1cf
 </p>
 <p>
13b97478
 If your proxies only allow you to connect to certain ports, look at the
 entry on <a href="#FirewallPorts">Firewalled clients</a> for how
 to restrict what ports your Tor will try to access.
6d9ff1cf
 </p>
 
 <hr>
 
2ab0987e
 
 <a id="TBBSocksPort"></a>
 <h3><a class="anchor" href="#TBBSocksPort">
 I want to run another application through Tor.</a></h3>
 
 <p>
 If you are trying to use some external application with Tor, step zero
 should be to <a href="<page download/download>#warning">reread the set
 of warnings</a> for ways you can screw up. Step one should be to try
 to use a SOCKS proxy rather than an HTTP proxy.
 Typically Tor listens for SOCKS connections on port 9050. Tor Browser listens
 on port 9150.
 </p>
 
 <p>
 If your application doesn't support SOCKS proxies, feel free to install <a
 href="http://www.privoxy.org/">privoxy</a>.
 However, please realize that this approach is not recommended for novice
 users. Privoxy has an <a
 href="http://www.privoxy.org/faq/misc.html#TOR">example
 configuration</a> of Tor and Privoxy.
 </p>
 
 <p>
2b63e88f
 If you're unable to use the application's native proxy settings, all hope is
2ab0987e
 not lost. See <a href="#CantSetProxy">below</a>.
 </p>
 
 <hr>
 
9fb81a6f
 <a id="CantSetProxy"></a>
13b97478
 <h3><a class="anchor" href="#CantSetProxy">What should I do if I can't
9fb81a6f
 set a proxy with my application?</a></h3>
 
 <p>
13b97478
 On Unix, we recommend you give <a
 href="https://github.com/dgoulet/torsocks/">torsocks</a> a try.
 Alternative proxifying tools like <a
 href="http://www.dest-unreach.org/socat/">socat</a> and <a
 href="http://proxychains.sourceforge.net/">proxychains</a> are also
9fb81a6f
 available.</p>
13b97478
 <p>
 The Windows way to force applications through Tor is less clear. <a
 href="http://freecap.ru/eng/">Some</a> <a
 href="http://www.freehaven.net/~aphex/torcap/">tools</a> have been <a
9fb81a6f
 href="http://www.crowdstrike.com/community-tools/index.html#tool-79">proposed
13b97478
 </a>, but we'd also like to see further testing done here.
9fb81a6f
 </p>
 
 <hr>
 
6f107e8d
 <a id="TBB3.x"></a>
f87eea1a
 <h2><a class="anchor" href="#TBB3.x">Tor Browser (3.x and later):</a></h2>
3f0f8bad
     <a id="WhereDidVidaliaGo"></a>
13b97478
     <h3><a class="anchor" href="#WhereDidVidaliaGo">Where did the world map
3f0f8bad
     (Vidalia) go?</a></h3>
 
13b97478
     <p>Vidalia has been replaced with Tor Launcher, which is a Firefox
eac54dca
     extension that provides similar functionality.</p>
3f0f8bad
 
     <hr>
 
     <a id="DisableJS"></a>
     <h3><a class="anchor" href="#DisableJS">How do I disable JavaScript?</a>
     </h3>
 
13b97478
     <p>Alas, Mozilla decided to get rid of the config checkbox for JavaScript
     from earlier Firefox versions. And since TBB 3.5 is based on Firefox 24
     (FF17 is unmaintained), that means TBB 3.5 doesn't have the config
3f0f8bad
     checkbox anymore either, which is unfortunate.</p>
 
13b97478
     <p>The simplest way to disable JavaScript in TBB 3.5 is to click on the
     Noscript "S" (between the green onion and the address bar), and select
     "Forbid scripts globally". Note that vanilla NoScript actually whitelists
     several domains even when you try to disable scripts globally, whereas
3f0f8bad
     Tor Browser's NoScript configuration disables all of them. </p>
 
13b97478
     <p>The more klunky way to disable JavaScript is to go to about:config,
3f0f8bad
     find javascript.enabled, and set it to false.</p>
 
     <p>There is also a very simple addon available at addons.mozilla.org
     called QuickJS, which provides a toolbar toggle for the javascript.enabled
13b97478
     about:config control. There are no configuration options for the addon,
     it just switches the javascript.enabled entry between true and false and
3f0f8bad
     provides a button for it. </p>
 
13b97478
     <p>If you want to be extra safe, use both the about:config setting and
3f0f8bad
     NoScript. </p>
 
13b97478
     <p>As for whether you should disable it or leave it enabled, that's <a
d9003542
     href="#TBBJavaScriptEnabled">a tradeoff we leave to you</a>.</p>
3f0f8bad
 
     <hr>
 
     <a id="VerifyDownload"></a>
     <h3><a class="anchor" href="#VerifyDownload">How do I verify the download
     (sha256sums.txt)?</a></h3>
 
2b63e88f
     <p>Instructions are on the <a
     href="<page docs/verifying-signatures>#BuildVerification">verifying
d395f9ab
     signatures</a> page.</p>
3f0f8bad
 
     <hr>
2b63e88f
 
3f0f8bad
     <a id="NewIdentityClosingTabs"></a>
13b97478
     <h3><a class="anchor" href="#NewIdentityClosingTabs">Why does "New
3f0f8bad
     Identity" close all my open tabs?</a></h3>
 
     <p>
13b97478
     That's actually a feature, since it's discarding your application-level
c261c7ec
     browser data too.
3f0f8bad
     </p>
 
     <p>
d97ea42e
     We're working on ways to make the behavior less surprising, e.g. a popup
     warning or auto restoring tabs. See ticket <a
     href="https://trac.torproject.org/projects/tor/ticket/9906">#9906</a> and
     ticket <a
     href="https://trac.torproject.org/projects/tor/ticket/10400">#10400</a>
     to follow progress there.
3f0f8bad
     </p>
 
     <hr>
 
     <a id="ConfigureRelayOrBridge"></a>
     <h3><a class="anchor" href="#ConfigureRelayOrBridge">How do I configure Tor as a relay or bridge?</a></h3>
 
     <p>
13b97478
     You've got three options.
3f0f8bad
     </p>
 
     <p>
13b97478
     First (best option), if you're on Linux, you can install the system
     Tor package (e.g. apt-get install tor) and then set it up to be a relay
     (<a href="https://www.torproject.org/docs/tor-relay-debian">instructions</a>).
3f0f8bad
     You can then use TBB independent of that.
     </p>
 
 
     <p>
c261c7ec
     Second (complex option), you can edit your torrc file (in Data/Tor/torrc)
13b97478
     directly to add the following lines:
3f0f8bad
     </p>
     <pre>
     ORPort 443
     Exitpolicy reject *:*
     BridgeRelay 1  # only add this line if you want to be a bridge
     </pre>
 
     <hr>
 
     <a id="Timestamps"></a>
13b97478
     <h3><a class="anchor" href="#Timestamps">Why are the file timestamps
3f0f8bad
     from 2000?</a></h3>
 
13b97478
     <p>One of the huge new features in TBB 3.x is the "deterministic build"
32700e09
     process, which allows many people to build Tor Browser and
13b97478
     verify that they all make exactly the same package. See Mike's <a
     href="https://blog.torproject.org/blog/deterministic-builds-part-one-cyberwar-and-global-compromise">first
     blog</a> post for the motivation, and his <a
3f0f8bad
     href="https://blog.torproject.org/blog/deterministic-builds-part-two-technical-details">second
13b97478
     blog post</a> for the technical details of how we do it.
3f0f8bad
     </p>
 
13b97478
     <p>Part of creating identical builds is having everybody use the same
     timestamp. Mike picked the beginning of 2000 for that time. The reason
3f0f8bad
     you might see 7pm in 1999 is because of time zones. </p>
 
     <hr>
 
6f107e8d
     <a id="TBBSourceCode"></a>
f65daf2d
     <h3><a class="anchor" href="#TBBSourceCode">Where is the source code for
32700e09
     Tor Browser? How do I verify a build?</a></h3>
3f0f8bad
 
     <p>
1700644e
     Start with <a href="https://gitweb.torproject.org/builders/tor-browser-bundle.git">https://gitweb.torproject.org/builders/tor-browser-bundle.git</a> and <a href="https://gitweb.torproject.org/builders/tor-browser-bundle.git/tree/gitian/README.build">https://gitweb.torproject.org/builders/tor-browser-bundle.git/tree/gitian/README.build</a>.
3f0f8bad
     </p>
 
 
9fb81a6f
 <hr>
 
6f107e8d
 <a id="AdvancedTorUsage"></a>
f87eea1a
 <h2><a class="anchor" href="#AdvancedTorUsage">Advanced Tor usage:</a></h2>
6f107e8d
 
363378b6
 <a id="torrc"></a>
37855015
 <h3><a class="anchor" href="#torrc">I'm supposed to "edit my torrc".
 What does that mean?</a></h3>
363378b6
 
 <p>
ff563973
 Tor uses a text file called torrc that contains configuration
363378b6
 instructions for how your Tor program should behave. The default
13b97478
 configuration should work fine for most Tor users.
363378b6
 </p>
e0544ee2
 <p>
78825462
 If you installed Tor Browser on Windows or Linux, look for
e0037ef0
 <code>Browser/TorBrowser/Data/Tor/torrc</code> inside your Tor Browser
 directory.
78825462
 If you're on macOS, the torrc is in <code>~/Library/Application Support/TorBrowser-Data/Tor</code> .
 To get to it, press cmd-shift-g while in Finder and copy/paste that directory
 into the box that appears.
7740f878
 </p>
 <p>
78825462
 Otherwise, if you are using Tor without Tor Browser, it looks for the
 torrc file in <code>/usr/local/etc/tor/torrc</code> if you compiled tor
 from source, and <code>/etc/tor/torrc</code> or <code>/etc/torrc</code>
 if you installed a pre-built package.
 </p>
363378b6
 
 <p>
ff563973
 Once you've created or changed your torrc file, you will need to restart
 tor for the changes to take effect. (For advanced users, note that
37855015
 you actually only need to send Tor a HUP signal, not actually restart
 it.)
363378b6
 </p>
 
 <p>
a756dc11
 For other configuration options you can use, see the <a href="<page
13b97478
 docs/tor-manual>">Tor manual page</a>. Have a look at <a
58cae06f
 href="https://gitweb.torproject.org/tor.git/tree/src/config/torrc.sample.in">
13b97478
 the sample torrc file</a> for hints on common configurations. Remember, all
 lines beginning with # in torrc are treated as comments and have no effect
e74b1f21
 on Tor's configuration.
2f78f1bc
 </p>
 
 <hr>
 
3a045675
 <a id="Logs"></a>
37855015
 <h3><a class="anchor" href="#Logs">How do I set up logging, or see Tor's
 logs?</a></h3>
b8ba95ed
 
 <p>
c261c7ec
 You'll have to go find the log files by
3a045675
 hand. Here are some likely places for your logs to be:
b8ba95ed
 </p>
 
 <ul>
 <li>On OS X, Debian, Red Hat, etc, the logs are in /var/log/tor/
 </li>
3a045675
 <li>On Windows, there are no default log files currently. If you enable
 logs in your torrc file, they default to <code>\username\Application
 Data\tor\log\</code> or <code>\Application Data\tor\log\</code>
 </li>
 <li>If you compiled Tor from source, by default your Tor logs to <a
 href="http://en.wikipedia.org/wiki/Standard_streams">"stdout"</a>
 at log-level notice. If you enable logs in your torrc file, they
 default to <code>/usr/local/var/log/tor/</code>.
b8ba95ed
 </li>
 </ul>
 
 <p>
37855015
 To change your logging setup by hand, <a href="#torrc">edit your
 torrc</a>
3a045675
 and find the section (near the top of the file) which contains the
 following line:
b8ba95ed
 </p>
 
 <pre>
3a045675
 \## Logs go to stdout at level "notice" unless redirected by something
 \## else, like one of the below lines.
314b5a00
 </pre>
b8ba95ed
 
 <p>
3a045675
 For example, if you want Tor to send complete debug, info, notice, warn,
b8ba95ed
 and err level messages to a file, append the following line to the end
 of the section:
 </p>
 
 <pre>
 Log debug file c:/program files/tor/debug.log
 </pre>
 
 <p>
3a045675
 Replace <code>c:/program files/tor/debug.log</code> with a directory
 and filename for your Tor log.
b8ba95ed
 </p>
 
 <hr>
 
91d870fd
 
 <a id="LogLevel"></a>
 <h3><a class="anchor" href="#LogLevel">What log level should I use?</a></h3>
 
 <p>
13b97478
 There are five log levels (also called "log severities") you might see in
f30e672d
 Tor's logs:
91d870fd
 </p>
 
 <ul>
13b97478
     <li>"err": something bad just happened, and we can't recover. Tor will
f30e672d
     exit.</li>
13b97478
     <li>"warn": something bad happened, but we're still running. The bad
     thing might be a bug in the code, some other Tor process doing something
     unexpected, etc. The operator should examine the message and try to
f30e672d
     correct the problem.</li>
91d870fd
     <li>"notice": something the operator will want to know about.</li>
13b97478
     <li>"info": something happened (maybe bad, maybe ok), but there's
f30e672d
     nothing you need to (or can) do about it.</li>
13b97478
     <li>"debug": for everything louder than info. It is quite loud indeed.</li>
91d870fd
 </ul>
 
 <p>
13b97478
 Alas, some of the warn messages are hard for ordinary users to correct -- the
 developers are slowly making progress at making Tor automatically react
f30e672d
 correctly for each situation.
91d870fd
 </p>
 
 <p>
13b97478
 We recommend running at the default, which is "notice". You will hear about
f30e672d
 important things, and you won't hear about unimportant things.
91d870fd
 </p>
 
 <p>
13b97478
 Tor relays in particular should avoid logging at info or debug in normal
 operation, since they might end up recording sensitive information in
 their logs.
91d870fd
 </p>
 
f30e672d
 <hr>
 
d97ab35a
 <a id="DoesntWork"></a>
37855015
 <h3><a class="anchor" href="#DoesntWork">I installed Tor but it's not
 working.</a></h3>
d97ab35a
 
 <p>
32700e09
 Once you've got Tor Browser up and running, the first question to
8b16a25e
 ask is whether your Tor client is able to establish a circuit.
d97ab35a
 </p>
 
c261c7ec
 <p>If Tor can establish a circuit, Tor Browser will
 automatically launch the browser for you. You can also check in the
 <a href="#Logs">Tor logs</a> for
d97ab35a
 a line saying that Tor "has successfully opened a circuit. Looks like
 client functionality is working."
 </p>
 
 <p>
 If Tor can't establish a circuit, here are some hints:
 </p>
 
 <ol>
 <li>Check your system clock. If it's more than a few hours off, Tor will
9b8e41f3
 refuse to build circuits. For Microsoft Windows users, synchronize your
 clock under the clock -&gt; Internet time tab. In addition, correct the
8b16a25e
 day and date under the 'Date &amp; Time' Tab. Also make sure your time
 zone is correct.</li>
9b8e41f3
 <li>Is your Internet connection <a href="#FirewallPorts">firewalled
 by port</a>, or do you normally need to use a <a
6d9ff1cf
 href="<#NeedToUseAProxy">proxy</a>?
d97ab35a
 </li>
37855015
 <li>Are you running programs like Norton Internet Security or SELinux
 that
d97ab35a
 block certain connections, even though you don't realize they do? They
 could be preventing Tor from making network connections.</li>
 <li>Are you in China, or behind a restrictive corporate network firewall
 that blocks the public Tor relays? If so, you should learn about <a
1f87f8d9
 href="<page docs/bridges>">Tor bridges</a>.</li>
3a045675
 <li>Check your <a href="#Logs">Tor logs</a>. Do they give you any hints
 about what's going wrong?</li>
d97ab35a
 </ol>
 
 <hr />
 
a2904cae
 <a id="TorCrash"></a>
 <h3><a class="anchor" href="#TorCrash">My Tor keeps crashing.</a></h3>
 <p>
13b97478
  We want to hear from you! There are supposed to be zero crash bugs in Tor.
  This FAQ entry describes the best way for you to be helpful to us. But even
  if you can't work out all the details, we still want to hear about it, so
  we can help you track it down.
a2904cae
 </p>
 <p>
13b97478
 First, make sure you're using the latest version of Tor (either the latest
 stable or the latest development version).
a2904cae
 </p>
 <p>
13b97478
 Second, make sure your version of libevent is new enough. We recommend at
 least libevent 1.3a.
a2904cae
 </p>
 <p>
13b97478
 Third, see if there's already an entry for your bug in the <a
 href="https://bugs.torproject.org/">Tor bugtracker</a>. If so,
 check if there are any new details that you can add.
a2904cae
 </p>
 <p>
13b97478
 Fourth, is the crash repeatable? Can you cause the crash? Can
 you isolate some of the circumstances or config options that
 make it happen? How quickly or often does the bug show up?
 Can you check if it happens with other versions of Tor, for
 example the latest stable release?
a2904cae
 </p>
 <p>
13b97478
 Fifth, what sort of crash do you get?
a2904cae
 </p>
 <ul>
 <li>
13b97478
 Does your Tor log include an "assert failure"? If so, please
 tell us that line, since it helps us figure out what's going on.
 Tell us the previous couple of log messages as well, especially
 if they seem important.
a2904cae
 </li>
 <li>
13b97478
 If it says "Segmentation fault - core dumped" then you need to
 do a bit more to track it down. Look for a file like "core" or
 "tor.core" or "core.12345" in your current directory, or in your
 Data Directory. If it's there, run "gdb tor core" and then "bt",
 and include the output. If you can't find a core, run "ulimit -c
 unlimited", restart Tor, and try to make it crash again. (This core
 thing will only work on Unix -- alas, tracking down bugs on Windows
 is harder. If you're on Windows, can you get somebody to duplicate
a2904cae
 your bug on Unix?)
 </li>
 <li>
13b97478
 If Tor simply vanishes mysteriously, it probably is a segmentation
 fault but you're running Tor in the background (as a daemon) so you
 won't notice. Go look at the end of your log file, and look for a
 core file as above. If you don't find any good hints, you should
 consider running Tor in the foreground (from a shell) so you can
 see how it dies. Warning: if you switch to running Tor in the foreground,
 you might start using a different torrc file, with a different default
 Data Directory; see the <a href="#UpgradeOrMove">relay-upgrade FAQ entry</a>
 for details.
a2904cae
 </li>
 <li>
13b97478
 If it's still vanishing mysteriously, perhaps something else is killing it?
 Do you have resource limits (ulimits) configured that kill off processes
3b9e68b9
 sometimes? On Linux, try running
13b97478
 "dmesg" to see if the out-of-memory killer removed your process. (Tor will
 exit cleanly if it notices that it's run out of memory, but in some cases
 it might not have time to notice.) In very rare circumstances, hardware
 problems could also be the culprit.
a2904cae
 </li>
 </ul>
 <p>
13b97478
 Sixth, if the above ideas don't point out the bug, consider increasing your
 log level to "loglevel debug". You can look at the log-configuration FAQ
 entry for instructions on what to put in your torrc file. If it usually
 takes a long time for the crash to show up, you will want to reserve a whole
 lot of disk space for the debug log. Alternatively, you could just send
 debug-level logs to the screen (it's called "stdout" in the torrc), and then
 when it crashes you'll see the last couple of log lines it had printed.
 (Note that running with verbose logging like this will slow Tor down
 considerably, and note also that it's generally not a good idea security-wise
 to keep logs like this sitting around.)
a2904cae
 </p>
 
 <hr />
 
2a9aaa80
     <a id="ChooseEntryExit"></a>
37855015
     <h3><a class="anchor" href="#ChooseEntryExit">Can I control which
 nodes (or country) are used for entry/exit?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
0b68c29c
     Yes. You can set preferred entry and exit nodes as well as
     inform Tor which nodes you do not want to use.
e57c8363
     The following options can be added to your config file <a
     href="#torrc">"torrc"</a> or specified on the command line:
2a9aaa80
     </p>
     <dl>
       <dt><tt>EntryNodes $fingerprint,$fingerprint,...</tt></dt>
37855015
         <dd>A list of preferred nodes to use for the first hop in the
 circuit, if possible.
2a9aaa80
         </dd>
       <dt><tt>ExitNodes $fingerprint,$fingerprint,...</tt></dt>
37855015
         <dd>A list of preferred nodes to use for the last hop in the
 circuit, if possible.
2a9aaa80
         </dd>
       <dt><tt>ExcludeNodes $fingerprint,$fingerprint,...</tt></dt>
0b68c29c
         <dd>A list of nodes to never use when building a circuit.
2a9aaa80
         </dd>
       <dt><tt>ExcludeExitNodes $fingerprint,$fingerprint,...</tt></dt>
0b68c29c
         <dd>A list of nodes to never use when picking an exit.
37855015
             Nodes listed in <tt>ExcludeNodes</tt> are automatically in
 this list.
2a9aaa80
         </dd>
     </dl>
     <p>
0b68c29c
     <em>We recommend you do not use these</em>
37855015
     &mdash; they are intended for testing and may disappear in future
 versions.
0b68c29c
     You get the best security that Tor can provide when you leave the
     route selection to Tor; overriding the entry / exit nodes can mess
     up your anonymity in ways we don't understand.
2a9aaa80
     </p>
     <p>
13b97478
     Note also that not every circuit is used to deliver traffic outside of
     the Tor network. It is normal to see non-exit circuits (such as those
32316cbf
     used to connect to onion services, those that do directory fetches,
13b97478
     those used for relay reachability self-tests, and so on) that end at
     a non-exit node. To keep a node from being used entirely, see
     <tt>ExcludeNodes</tt> and <tt>StrictNodes</tt> in the
f30e672d
     <a href="<page docs/tor-manual>">manual</a>.
2a9aaa80
     </p>
     <p>
bf50c0c6
     Instead of <tt>$fingerprint</tt> you can also specify a <a
37855015
 
 href="https://secure.wikimedia.org/wikipedia/en/wiki/ISO_3166-1_alpha-2"
 >2
91837fb7
     letter ISO3166 country code</a> in curly braces (for example <tt>{de}</tt>),
e0961bf0
     or an ip address pattern (for example 255.254.0.0/8).
     Make sure there are no spaces between the commas and the
bf50c0c6
     list items.
2a9aaa80
     </p>
     <p>
37855015
     If you want to access a service directly through Tor's Socks
 interface
0b68c29c
     (eg. using ssh via connect.c), another option is to set up an
37855015
     internal mapping in your configuration file using
 <tt>MapAddress</tt>.
2a9aaa80
     See the manual page for details.
     </p>
0b68c29c
 
ed5ac546
     <hr>
d97ab35a
 
dc7ed63e
 <a id="FirewallPorts"></a>
37855015
 <h3><a class="anchor" href="#FirewallPorts">My firewall only allows a
 few outgoing ports.</a></h3>
dc7ed63e
 
 <p>
 If your firewall works by blocking ports, then you can tell Tor to only
c261c7ec
 use the ports when you start your Tor Browser. Or you can add the ports
 that your firewall permits by adding "FascistFirewall 1"
37855015
 to
e57c8363
 your <a href="<page docs/faq>#torrc">torrc
c261c7ec
 configuration file</a>.
dc7ed63e
 By default, when you set this Tor assumes that your firewall allows only
 port 80 and port 443 (HTTP and HTTPS respectively). You can select a
 different set of ports with the FirewallPorts torrc option.
 </p>
 
 <p>
 If you want to be more fine-grained with your controls, you can also
 use the ReachableAddresses config options, e.g.:
 </p>
 
 <pre>
   ReachableDirAddresses *:80
   ReachableORAddresses *:443
 </pre>
 
 <hr>
d97ab35a
 
6d9ff1cf
     <a id="DefaultExitPorts"></a>
13b97478
     <h3><a class="anchor" href="#DefaultExitPorts">Is there a list of default exit
f30e672d
     ports?</a></h3>
91d870fd
     <p>
13b97478
 The default open ports are listed below but keep in mind that, any port or
 ports can be opened by the relay operator by configuring it in torrc or
 modifying the source code. But the default according to src/or/policies.c
 from the source code release tor-0.2.4.16-rc is:
91d870fd
     </p>
     <pre>
   reject 0.0.0.0/8
   reject 169.254.0.0/16
   reject 127.0.0.0/8
   reject 192.168.0.0/16
   reject 10.0.0.0/8
   reject 172.16.0.0/12
   reject *:25
   reject *:119
   reject *:135-139
   reject *:445
   reject *:563
   reject *:1214
   reject *:4661-4666
   reject *:6346-6429
   reject *:6699
   reject *:6881-6999
   accept *:*
     </pre>
     <p>
13b97478
     A relay will block access to its own IP address, as well local network
     IP addresses. A relay always blocks itself by default. This prevents
     Tor users from accidentally accessing any of the exit operator's local
     services.
f30e672d
     </p>
 
     <hr>
 
0e8964cc
     <a id="WarningsAboutSOCKSandDNSInformationLeaks"></a>
13b97478
     <h3><a class="anchor" href="#WarningsAboutSOCKSandDNSInformationLeaks">I
     keep seeing these warnings about SOCKS and DNS information leaks.
0e8964cc
     Should I worry?</a></h3>
     <p>
13b97478
     The warning is:
0e8964cc
     </p>
     <p>
13b97478
     Your application (using socks5 on port %d) is giving Tor only an IP
     address. Applications that do DNS resolves themselves may leak
     information. Consider using Socks4A (e.g. via Polipo or socat) instead.
0e8964cc
     </p>
     <p>
13b97478
     If you are running Tor to get anonymity, and you are worried about an
     attacker who is even slightly clever, then yes, you should worry. Here's why.
0e8964cc
     </p>
     <p>
13b97478
     <b>The Problem.</b> When your applications connect to servers on the
     Internet, they need to resolve hostnames that you can read (like
     www.torproject.org) into IP addresses that the Internet can use (like
     209.237.230.66). To do this, your application sends a request to a DNS
     server, telling it the hostname it wants to resolve. The DNS server
     replies by telling your application the IP address.
0e8964cc
     </p>
     <p>
13b97478
     Clearly, this is a bad idea if you plan to connect to the remote host
     anonymously: when your application sends the request to the DNS server,
     the DNS server (and anybody else who might be watching) can see what
     hostname you are asking for. Even if your application then uses Tor to
     connect to the IP anonymously, it will be pretty obvious that the user
     making the anonymous connection is probably the same person who made
     the DNS request.
0e8964cc
     </p>
     <p>
13b97478
     <b>Where SOCKS comes in.</b> Your application uses the SOCKS protocol
     to connect to your local Tor client. There are 3 versions of SOCKS you
     are likely to run into: SOCKS 4 (which only uses IP addresses), SOCKS 5
     (which usually uses IP addresses in practice), and SOCKS 4a (which uses
     hostnames).
0e8964cc
     </p>
     <p>
13b97478
     When your application uses SOCKS 4 or SOCKS 5 to give Tor an IP address,
     Tor guesses that it 'probably' got the IP address non-anonymously from a
     DNS server. That's why it gives you a warning message: you probably aren't
     as anonymous as you think.
0e8964cc
     </p>
     <p>
13b97478
     <b>So what can I do?</b> We describe a few solutions below.
0e8964cc
     </p>
     <ul>
     <li>If your application speaks SOCKS 4a, use it. </li>
13b97478
     <li>If you only need one or two hosts, or you are good at programming,
     you may be able to get a socks-based port-forwarder like socat to work
     for you; see <a
     href="https://trac.torproject.org/projects/tor/wiki/doc/TorifyHOWTO">the
0e8964cc
     Torify HOWTO</a> for examples. </li>
13b97478
     <li>Tor ships with a program called tor-resolve that can use the Tor
     network to look up hostnames remotely; if you resolve hostnames to IPs
     with tor-resolve, then pass the IPs to your applications, you'll be fine.
0e8964cc
     (Tor will still give the warning, but now you know what it means.) </li>
 <!-- I'm not sure if this project is still maintained or not
 
 <li>You can use TorDNS as a local DNS server to rectify the DNS leakage. See the Torify HOWTO for info on how to run particular applications anonymously. </li>
 !-->
     </ul>
13b97478
     <p>If you think that you applied one of the solutions properly but still
     experience DNS leaks please verify there is no third-party application
     using DNS independently of Tor. Please see <a
     href="#AmITotallyAnonymous">the FAQ entry on whether you're really
     absolutely anonymous using Tor</a> for some examples.
0e8964cc
     </p>
 
     <hr>
 
f30e672d
     <a id="SocksAndDNS"></a>
13b97478
     <h3><a class="anchor" href="#SocksAndDNS">How do I check if my application that uses
f30e672d
     SOCKS is leaking DNS requests?</a></h3>
 
     <p>
13b97478
     These are two steps you need to take here. The first is to make sure
     that it's using the correct variant of the SOCKS protocol, and the
     second is to make sure that there aren't other leaks.
f30e672d
     </p>
 
     <p>
13b97478
     Step one: add "TestSocks 1" to your torrc file, and then watch your
     logs as you use your application. Tor will then log, for each SOCKS
     connection, whether it was using a 'good' variant or a 'bad' one.
     (If you want to automatically disable all 'bad' variants, set
     "SafeSocks 1" in your <a href="#torrc">torrc</a> file.)
f30e672d
     </p>
 
     <p>
13b97478
     Step two: even if your application is using the correct variant of
     the SOCKS protocol, there is still a risk that it could be leaking
     DNS queries. This problem happens in Firefox extensions that resolve
     the destination hostname themselves, for example to show you its IP
     address, what country it's in, etc. These applications may use a safe
     SOCKS variant when actually making connections, but they still do DNS
     resolves locally. If you suspect your application might behave like
     this, you should use a network sniffer like <a
     href="https://www.wireshark.org/">Wireshark</a> and look for
     suspicious outbound DNS requests. I'm afraid the details of how to look
     for these problems are beyond the scope of a FAQ entry though -- find
     a friend to help if you have problems.
91d870fd
     </p>
 
     <hr>
 
6f107e8d
     <a id="RunningATorRelay"></a>
f87eea1a
     <h2><a class="anchor" href="#RunningATorRelay">Running a Tor relay:</a></h2>
6f107e8d
 
01f0dd22
     <a id="HowDoIDecide"></a>
13b97478
     <h3><a class="anchor" href="#HowDoIDecide">How do I decide if I should
01f0dd22
     run a relay?</a></h3>
     <p>
13b97478
     We're looking for people with reasonably reliable Internet connections,
48db95c8
     that have at least 250 kilobytes/second each way. If that's you, please
13b97478
     consider <a href="https://www.torproject.org/docs/tor-relay-debian">helping
     out</a>.
01f0dd22
     </p>
2b63e88f
 
01f0dd22
     <hr>
2b63e88f
 
01f0dd22
     <a id="WhyIsntMyRelayBeingUsedMore"></a>
13b97478
     <h3><a class="anchor" href="#WhyIsntMyRelayBeingUsedMore">Why isn't my
01f0dd22
     relay being used more?</a></h3>
     <p>
13b97478
     If your relay is relatively new then give it time. Tor decides which
     relays it uses heuristically based on reports from Bandwidth
     Authorities. These authorities take measurements of your relay's
     capacity and, over time, directs more traffic there until it reaches
     an optimal load. The lifecycle of a new relay is explained in more
01f0dd22
     depth in <a href="https://blog.torproject.org/blog/lifecycle-of-a-new-relay">
     this blog post</a>.
     </p>
     <p>
13b97478
     If you've been running a relay for a while and still having issues
01f0dd22
     then try asking on the <a href=
     "https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-relays/">
13b97478
     tor-relays list</a>.
01f0dd22
     </p>
2b63e88f
 
01f0dd22
     <hr>
 
a756dc11
     <a id="IDontHaveAStaticIP"></a>
13b97478
     <h3><a class="anchor" href="#IDontHaveAStaticIP">I don't have a static
a756dc11
     IP.</a></h3>
 
     <p>
13b97478
     Tor can handle relays with dynamic IP addresses just fine. Just leave
     the "Address" line in your torrc blank, and Tor will guess.
a756dc11
     </p>
 
     <hr>
 
     <a id="PortscannedMore"></a>
13b97478
     <h3><a class="anchor" href="#PortscannedMore">Why do I get portscanned
a756dc11
     more often when I run a Tor relay?</a></h3>
 
     <p>
13b97478
     If you allow exit connections, some services that people connect to
     from your relay will connect back to collect more information about you.
     For example, some IRC servers connect back to your identd port to record
     which user made the connection. (This doesn't really work for them,
     because Tor doesn't know this information, but they try anyway.) Also,
     users exiting from you might attract the attention of other users on the
     IRC server, website, etc. who want to know more about the host they're
     relaying through.
a756dc11
     </p>
     <p>
13b97478
     Another reason is that groups who scan for open proxies on the Internet
     have learned that sometimes Tor relays expose their socks port to the
     world. We recommend that you bind your socksport to local networks only.
a756dc11
     </p>
     <p>
13b97478
     In any case, you need to keep up to date with your security. See this <a
     href="https://trac.torproject.org/projects/tor/wiki/doc/OperationalSecurity">article
     on operational security for Tor relays</a> for more suggestions.
a756dc11
     </p>
 
     <hr>
 
2b63e88f
     <a id="HighCapacityConnection"></a>
13b97478
     <h3><a class="anchor" href="#HighCapacityConnection">How can I get Tor to fully
a043d47b
     make use of my high capacity connection?</a></h3>
2b63e88f
 
a043d47b
     <p>
13b97478
     See <a href="http://archives.seul.org/or/relays/Aug-2010/msg00034.html">this
a043d47b
     tor-relays thread</a>.
     </p>
2b63e88f
 
     <hr>
 
2a9aaa80
     <a id="RelayFlexible"></a>
37855015
     <h3><a class="anchor" href="#RelayFlexible">How stable does my relay
 need to be?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
     We aim to make setting up a Tor relay easy and convenient:
     </p>
0b68c29c
 
2a9aaa80
     <ul>
     <li>Tor has built-in support for <a
21acf0b1
     href="#BandwidthShaping">
2a9aaa80
     rate limiting</a>. Further, if you have a fast
     link but want to limit the number of bytes per
     day (or week or month) that you donate, check out the <a
37855015
 
6f107e8d
 href="#LimitTotalBandwidth">
37855015
 hibernation
2a9aaa80
     feature</a>.
     </li>
37855015
     <li>Each Tor relay has an <a href="#ExitPolicies">exit policy</a>
 that
     specifies what sort of outbound connections are allowed or refused
 from
     that relay. If you are uncomfortable allowing people to exit from
 your
     relay, you can set it up to only allow connections to other Tor
 relays.
2a9aaa80
     </li>
     <li>It's fine if the relay goes offline sometimes. The directories
     notice this quickly and stop advertising the relay. Just try to make
     sure it's not too often, since connections using the relay when it
     disconnects will break.
     </li>
     <li>We can handle relays with dynamic IPs just fine &mdash; simply
     leave the Address config option blank, and Tor will try to guess.
     </li>
     <li>If your relay is behind a NAT and it doesn't know its public
     IP (e.g. it has an IP of 192.168.x.y), you'll need to set up port
0b68c29c
     forwarding. Forwarding TCP connections is system dependent but
6d9ff1cf
     <a href="#BehindANAT">this FAQ entry</a>
2a9aaa80
     offers some examples on how to do this.
     </li>
     <li>Your relay will passively estimate and advertise its recent
37855015
     bandwidth capacity, so high-bandwidth relays will attract more users
 than
     low-bandwidth ones. Therefore having low-bandwidth relays is useful
 too.
2a9aaa80
     </li>
     </ul>
0b68c29c
 
ed5ac546
     <hr>
2b63e88f
 
da4a6f08
     <a id="OutgoingFirewall"></a>
b75b913d
     <h3><a class="anchor" href="#OutgoingFirewall">How should I configure
3b4bfbda
     the outgoing filters on my relay?</a></h3>
da4a6f08
 
     <p>
3b4bfbda
     All <em>outgoing</em> connections must be allowed, so that each relay can 
     communicate with every other relay.
da4a6f08
     </p>
     <p>
3b4bfbda
     In many jurisdictions, Tor relay operators are legally protected by the 
     same <em>common carrier</em> regulations that prevent internet service 
     providers from being held liable for third-party content that passes 
     through their network. Exit relays that filter some traffic would 
     likely forfeit those protections. 
da4a6f08
     </p>
     <p>
3b4bfbda
     Tor promotes free network access without interference. 
     Exit relays must not filter the traffic 
     that passes through them to the internet. 
     Exit relays found to be filtering traffic will get the <a 
da4a6f08
     href="#WhatIsTheBadExitFlag">BadExit</a> flag once detected.
     </p>
 
     <hr>
 
a756dc11
     <a id="BandwidthShaping"></a>
13b97478
     <h3><a class="anchor" href="#BandwidthShaping">What bandwidth shaping
a756dc11
     options are available to Tor relays?</a></h3>
 
     <p>
13b97478
     There are two options you can add to your torrc file:
a756dc11
     </p>
     <ul>
     <li>
13b97478
     BandwidthRate is the maximum long-term bandwidth allowed (bytes per
4a938356
     second). For example, you might want to choose "BandwidthRate 10 MBytes"
     for 10 megabytes per second (a fast connection), or "BandwidthRate 500
35be4c37
     KBytes" for 500 kilobytes per second (a decent cable connection).
5300884f
     The minimum BandwidthRate setting is 75 kilobytes per second.
a756dc11
     </li>
     <li>
13b97478
     BandwidthBurst is a pool of bytes used to fulfill requests during
     short periods of traffic above BandwidthRate but still keeps the
     average over a long period to BandwidthRate. A low Rate but a high
     Burst enforces a long-term average while still allowing more traffic
     during peak times if the average hasn't been reached lately. For example,
4a938356
     if you choose "BandwidthBurst 500 KBytes" and also use that for your
     BandwidthRate, then you will never use more than 500 kilobytes per second;
     but if you choose a higher BandwidthBurst (like 5 MBytes), it will allow
a756dc11
     more bytes through until the pool is empty.
     </li>
     </ul>
     <p>
13b97478
     If you have an asymmetric connection (upload less than download) such
     as a cable modem, you should set BandwidthRate to less than your smaller
     bandwidth (Usually that's the upload bandwidth). (Otherwise, you could
     drop many packets during periods of maximum bandwidth usage -- you may
     need to experiment with which values make your connection comfortable.)
     Then set BandwidthBurst to the same as BandwidthRate.
a756dc11
     </p>
     <p>
13b97478
     Linux-based Tor nodes have another option at their disposal: they can
     prioritize Tor traffic below other traffic on their machine, so that
     their own personal traffic is not impacted by Tor load. A <a
1700644e
     href="https://gitweb.torproject.org/tor.git/tree/contrib/operator-tools/linux-tor-prio.sh">script
13b97478
     to do this</a> can be found in the Tor source distribution's contrib
     directory.
a756dc11
     </p>
     <p>
13b97478
     Additionally, there are hibernation options where you can tell Tor to
     only serve a certain amount of bandwidth per time period (such as 100
     GB per month). These are covered in the <a
     href="#LimitTotalBandwidth">hibernation entry</a> below.
a756dc11
     </p>
     <p>
4a938356
     Note that BandwidthRate and BandwidthBurst are in <b>Bytes</b>, not Bits.
a756dc11
     </p>
 
     <hr>
 
     <a id="LimitTotalBandwidth"></a>
13b97478
     <h3><a class="anchor" href="#LimitTotalBandwidth">How can I limit the
a756dc11
     total amount of bandwidth used by my Tor relay?</a></h3>
     <p>
13b97478
     The accounting options in the torrc file allow you to specify the maximum
     amount of bytes your relay uses for a time period.
a756dc11
     </p>
     <pre>
     AccountingStart day week month [day] HH:MM
     </pre>
     <p>
13b97478
     This specifies when the accounting should reset. For instance, to setup
     a total amount of bytes served for a week (that resets every Wednesday
     at 10:00am), you would use:
a756dc11
     </p>
     <pre>
     AccountingStart week 3 10:00
f97d8cfe
     AccountingMax 500 GBytes
a756dc11
     </pre>
     <p>
13b97478
     This specifies the maximum amount of data your relay will send during an
     accounting period, and the maximum amount of data your relay will receive
     during an account period. When the accounting period resets (from
a756dc11
     AccountingStart), then the counters for AccountingMax are reset to 0.
     </p>
     <p>
f97d8cfe
     Example: Let's say you want to allow 50 GB of traffic every day in each
13b97478
     direction and the accounting should reset at noon each day:
a756dc11
     </p>
     <pre>
     AccountingStart day 12:00
f97d8cfe
     AccountingMax 50 GBytes
a756dc11
     </pre>
     <p>
13b97478
     Note that your relay won't wake up exactly at the beginning of each
     accounting period. It will keep track of how quickly it used its
     quota in the last period, and choose a random point in the new interval
     to wake up. This way we avoid having hundreds of relays working at the
     beginning of each month but none still up by the end.
a756dc11
     </p>
     <p>
13b97478
     If you have only a small amount of bandwidth to donate compared to your
     connection speed, we recommend you use daily accounting, so you don't
     end up using your entire monthly quota in the first day. Just divide
     your monthly amount by 30. You might also consider rate limiting to
     spread your usefulness over more of the day: if you want to offer X GB
4a938356
     in each direction, you could set your RelayBandwidthRate to 20*X KBytes.
f97d8cfe
     For example,
4a938356
     if you have 50 GB to offer each way, you might set your RelayBandwidthRate to
f97d8cfe
     1000 KBytes: this way your relay will always be useful for at least half of
13b97478
     each day.
a756dc11
     </p>
4a938356
     <pre>
     AccountingStart day 0:00
     AccountingMax 50 GBytes
     RelayBandwidthRate 1000 KBytes
     RelayBandwidthBurst 5000 KBytes # allow higher bursts but maintain average
     </pre>
efb55037
 
     <hr>
 
     <a id="RelayWritesMoreThanItReads"></a>
13b97478
     <h3><a class="anchor" href="#RelayWritesMoreThanItReads">Why does my relay
ac519bf8
     write more bytes onto the network than it reads?</a></h3>
efb55037
 
13b97478
     <p>You're right, for the most part a byte into your Tor relay means a
efb55037
     byte out, and vice versa. But there are a few exceptions:</p>
 
13b97478
     <p>If you open your DirPort, then Tor clients will ask you for a copy of
     the directory. The request they make (an HTTP GET) is quite small, and the
     response is sometimes quite large. This probably accounts for most of the
efb55037
     difference between your "write" byte count and your "read" byte count.</p>
 
13b97478
     <p>Another minor exception shows up when you operate as an exit node, and
     you read a few bytes from an exit connection (for example, an instant
     messaging or ssh connection) and wrap it up into an entire 512 byte cell
efb55037
     for transport through the Tor network.</p>
 
     <hr>
 
     <a id="Hibernation"></a>
13b97478
     <h3><a class="anchor" href="#Hibernation">Why can I not browse anymore
ac519bf8
     after limiting bandwidth on my Tor relay?</a></h3>
efb55037
 
13b97478
     <p>The parameters assigned in the <a
     href="#LimitTotalBandwidth">AccountingMax</a> and <a
     href="#BandwidthShaping">BandwidthRate</a> apply to both client and
     relay functions of the Tor process. Thus you may find that you are unable
     to browse as soon as your Tor goes into hibernation, signaled by this
efb55037
     entry in the log:</p>
 
13b97478
     <pre>Bandwidth soft limit reached; commencing hibernation. No new
efb55037
     connections will be accepted</pre>
 
13b97478
     <p>The solution is to run two Tor processes - one relay and one client,
     each with its own config. One way to do this (if you are starting from a
efb55037
     working relay setup) is as follows:</p>
 
     <ul>
         <li>In the relay Tor torrc file, simply set the SocksPort to 0.</li>
13b97478
         <li>Create a new client torrc file from the torrc.sample and ensure
         it uses a different log file from the relay. One naming convention
efb55037
         may be torrc.client and torrc.relay.</li>
13b97478
         <li>Modify the Tor client and relay startup scripts to include
efb55037
         '-f /path/to/correct/torrc'.</li>
ecaa2485
         <li>In Linux/BSD/Mac OS X, changing the startup scripts to Tor.client
efb55037
         and Tor.relay may make separation of configs easier.</li>
     </ul>
 
a756dc11
     <hr>
0b68c29c
 
2a9aaa80
     <a id="ExitPolicies"></a>
37855015
     <h3><a class="anchor" href="#ExitPolicies">I'd run a relay, but I
 don't want to deal with abuse issues.</a></h3>
0b68c29c
 
2a9aaa80
     <p>
     Great. That's exactly why we implemented exit policies.
     </p>
0b68c29c
 
2a9aaa80
     <p>
     Each Tor relay has an exit policy that specifies what sort of
37855015
     outbound connections are allowed or refused from that relay. The
 exit
2a9aaa80
     policies are propagated to Tor clients via the directory, so clients
     will automatically avoid picking exit relays that would refuse to
     exit to their intended destination. This way each relay can decide
     the services, hosts, and networks he wants to allow connections to,
37855015
     based on abuse potential and his own situation. Read the FAQ entry
 on
     <a href="<page docs/faq-abuse>#TypicalAbuses">issues you might
 encounter</a>
0b68c29c
     if you use the default exit policy, and then read Mike Perry's
e233c281
     <a href="<blog>tips-running-exit-node">tips
2a9aaa80
     for running an exit node with minimal harassment</a>.
     </p>
0b68c29c
 
2a9aaa80
     <p>
0b68c29c
     The default exit policy allows access to many popular services
37855015
     (e.g. web browsing), but <a
6d9ff1cf
 href="#DefaultExitPorts">restricts</a>
2a9aaa80
     some due to abuse potential (e.g. mail) and some since
     the Tor network can't handle the load (e.g. default
     file-sharing ports). You can change your exit policy
c261c7ec
     by editing your
e57c8363
     <a href="<page docs/faq>#torrc">torrc</a>
37855015
     file. If you want to avoid most if not all abuse potential, set it
 to
c261c7ec
     "reject *:*". This setting
37855015
 means
     that your relay will be used for relaying traffic inside the Tor
 network,
2a9aaa80
     but not for connections to external websites or other services.
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     If you do allow any exit connections, make sure name resolution
 works
2a9aaa80
     (that is, your computer can resolve Internet addresses correctly).
37855015
     If there are any resources that your computer can't reach (for
 example,
2a9aaa80
     you are behind a restrictive firewall or content filter), please
37855015
     explicitly reject them in your exit policy &mdash; otherwise Tor
 users
2a9aaa80
     will be impacted too.
     </p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
a10d8980
     <a id="PackagedTor"></a>
2b63e88f
     <h3><a class="anchor" href="#PackagedTor">Should I install Tor from my
a10d8980
     package manager, or build from source?</a></h3>
     <p>
2b63e88f
     If you're using Debian or Ubuntu especially, there are a number of benefits
     to installing Tor from the <a
f26db68a
     href="<page docs/debian>">Tor Project's repository</a>.
a10d8980
     </p>
     <ul>
       <li>
f26db68a
       Your ulimit -n gets set to 32768 &mdash; high enough for Tor to
       keep open all the connections it needs.
a10d8980
       </li>
       <li>
2b63e88f
       A user profile is created just for Tor, so Tor doesn't need to run as
a10d8980
       root.
       </li>
       <li>
       An init script is included so that Tor runs at boot.
       </li>
       <li>
2b63e88f
       Tor runs with --verify-config, so that most problems with your
       config file get caught.
a10d8980
       </li>
       <li>
       Tor can bind to low level ports, then drop privileges.
       </li>
     </ul>
 
     <hr>
 
5bdf9aee
     <a id="WhatIsTheBadExitFlag"></a>
13b97478
     <h3><a class="anchor" href="#WhatIsTheBadExitFlag">What is the
5bdf9aee
     BadExit flag?</a></h3>
 
13b97478
     <p>When an exit is misconfigured or malicious it's assigned the BadExit
     flag. This tells Tor to avoid exiting through that relay. In effect,
5bdf9aee
     relays with this flag become non-exits.</p>
 
     <hr>
 
     <a id="IGotTheBadExitFlagWhyDidThatHappen"></a>
     <h3><a class="anchor" href="#IGotTheBadExitFlagWhyDidThatHappen">I got
     the BadExit flag why did that happen?</a></h3>
 
13b97478
     <p>If you got this flag then we either discovered a problem or suspicious
     activity coming from your exit and weren't able to contact you. The reason
     for most flaggings are documented on the <a
     href="https://trac.torproject.org/projects/tor/wiki/doc/badRelays">bad
     relays wiki</a>. Please <a
cf814f9e
     href="<page about/contact>">contact us</a> so
5bdf9aee
     we can sort out the issue.</p>
 
     <hr>
 
     <a id="MyRelayRecentlyGotTheGuardFlagAndTrafficDroppedByHalf"></a>
13b97478
     <h3><a class="anchor" href="#MyRelayRecentlyGotTheGuardFlagAndTrafficDroppedByHalf">My
5bdf9aee
     relay recently got the Guard flag and traffic dropped by half.</a></h3>
     <p>
13b97478
     Since it's now a guard, clients are using it less in other positions, but
     not many clients have rotated their existing guards out to use it as a
     guard yet. Read more details in this <a
     href="https://blog.torproject.org/blog/lifecycle-of-a-new-relay">blog
     post</a> or in <a href="http://freehaven.net/anonbib/#wpes12-cogs">Changing
     of the Guards: A Framework for Understanding and Improving Entry Guard
5bdf9aee
     Selection in Tor</a>.
     </p>
2b63e88f
 
5bdf9aee
     <hr>
 
     <a id="TorClientOnADifferentComputerThanMyApplications"></a>
13b97478
     <h3><a class="anchor" href="#TorClientOnADifferentComputerThanMyApplications">I
5bdf9aee
     want to run my Tor client on a different computer than my applications.
     </a></h3>
91d870fd
     <p>
13b97478
     By default, your Tor client only listens for applications that
     connect from localhost. Connections from other computers are
     refused. If you want to torify applications on different computers
     than the Tor client, you should edit your torrc to define
     SocksListenAddress 0.0.0.0 and then restart (or hup) Tor. If you
     want to get more advanced, you can configure your Tor client on a
     firewall to bind to your internal IP but not your external IP.
91d870fd
     </p>
 
     <hr>
 
     <a id="ServerClient"></a>
13b97478
     <h3><a class="anchor" href="#ServerClient">Can I install Tor on a
f30e672d
     central server, and have my clients connect to it?</a></h3>
     <p>
13b97478
      Yes. Tor can be configured as a client or a relay on another
      machine, and allow other machines to be able to connect to it
      for anonymity. This is most useful in an environment where many
      computers want a gateway of anonymity to the rest of the world.
      However, be forwarned that with this configuration, anyone within
      your private network (existing between you and the Tor
      client/relay) can see what traffic you are sending in clear text.
      The anonymity doesn't start until you get to the Tor relay.
      Because of this, if you are the controller of your domain and you
      know everything's locked down, you will be OK, but this configuration
      may not be suitable for large private networks where security is
f30e672d
      key all around.
     </p>
     <p>
13b97478
 Configuration is simple, editing your torrc file's SocksListenAddress
f30e672d
 according to the following examples:
91d870fd
     </p>
     <pre>
e27eb072
 
13b97478
   #This provides local interface access only,
e27eb072
   #needs SocksPort to be greater than 0
13b97478
   SocksListenAddress 127.0.0.1
e27eb072
 
   #This provides access to Tor on a specified interface
13b97478
   SocksListenAddress 192.168.x.x:9100
e27eb072
 
   #Accept from all interfaces
   SocksListenAddress 0.0.0.0:9100
    </pre>
91d870fd
     <p>
13b97478
 You can state multiple listen addresses, in the case that you are
f30e672d
 part of several networks or subnets.
91d870fd
     </p>
     <pre>
   SocksListenAddress 192.168.x.x:9100 #eth0
   SocksListenAddress 10.x.x.x:9100 #eth1
     </pre>
     <p>
13b97478
 After this, your clients on their respective networks/subnets would specify
 a socks proxy with the address and port you specified SocksListenAddress
 to be.
91d870fd
     </p>
     <p>
13b97478
 Please note that the SocksPort configuration option gives the port ONLY for
 localhost (127.0.0.1). When setting up your SocksListenAddress(es), you need
f30e672d
 to give the port with the address, as shown above.
91d870fd
     <p>
13b97478
 If you are interested in forcing all outgoing data through the central Tor
 client/relay, instead of the server only being an optional proxy, you may find
 the program iptables (for *nix) useful.
91d870fd
     </p>
 
     <hr>
 
2a9aaa80
     <a id="RelayOrBridge"></a>
37855015
     <h3><a class="anchor" href="#RelayOrBridge">Should I be a normal
 relay or bridge relay?</a></h3>
0b68c29c
 
37855015
     <p><a href="<page docs/bridges>">Bridge relays</a> (or "bridges" for
 short)
     are <a href="<page docs/tor-doc-relay>">Tor relays</a> that aren't
6c03dfec
     listed in the public Tor directory.
55d1a604
     That means that ISPs or governments trying to block access to the
6c03dfec
     Tor network can't simply block all bridges.
2a9aaa80
     </p>
0b68c29c
 
2a9aaa80
     <p>Being a normal relay vs being a bridge relay is almost the same
     configuration: it's just a matter of whether your relay is listed
6c03dfec
     publicly or not.
2a9aaa80
     </p>
0b68c29c
 
6c03dfec
     <p>
55d1a604
     So bridges are useful a) for Tor users in oppressive regimes,
6c03dfec
     and b) for people who want an extra layer of security
da63731b
     because they're worried somebody will recognize that it's a public
     Tor relay IP address they're contacting.
2a9aaa80
     </p>
0b68c29c
 
6c03dfec
     <p>
     Several countries, including China and Iran, have found ways to
55d1a604
     detect and block connections to Tor bridges.
c21cddf4
     <a href="<page docs/pluggable-transports>">Obfsproxy</a> bridges address
55d1a604
     this by adding another layer of obfuscation.
6c03dfec
     </p>
 
37855015
     <p>So should you run a normal relay or bridge relay? If you have
 lots
6c03dfec
     of bandwidth, you should definitely run a normal relay.
     If you're willing
da63731b
     to <a href="#ExitPolicies">be an exit</a>, you should definitely
     run a normal relay, since we need more exits. If you can't be an
     exit and only have a little bit of bandwidth, be a bridge. Thanks
     for volunteering!
2a9aaa80
     </p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
f549ee31
 <a id="UpgradeOrMove"></a>
13b97478
 <h3><a class="anchor" href="#UpgradeOrMove">I want to upgrade/move my relay.
f30e672d
 How do I keep the same key?</a></h3>
f549ee31
 
 <p>
9b92b660
 When upgrading your Tor relay, or moving it on a different computer, the
 important part is to keep the same identity keys (stored in
 "keys/ed25519_master_id_secret_key" and "keys/secret_id_key" in your
 DataDirectory). Keeping backups of the identity keys so you can restore
 a relay in the future is the recommended way to ensure the reputation of
 the relay won't be wasted.
f549ee31
 </p>
9b92b660
 
f549ee31
 <p>
13b97478
 This means that if you're upgrading your Tor relay and you keep the same
 torrc and the same DataDirectory, then the upgrade should just work and
 your relay will keep using the same key. If you need to pick a new
9b92b660
 DataDirectory, be sure to copy your old
 keys/ed25519_master_id_secret_key and keys/secret_id_key over.
 </p>
 
 <p>
 Note: As of Tor 0.2.7 we are using new generation identities for relays
 based on ed25519 elliptic curve cryptography. Eventually they will
 replace the old RSA identities, but that will happen in time, to ensure
 compatibility with older versions. Until then, each relay will have both
 an ed25519 identity (identity key file:
 keys/ed25519_master_id_secret_key) and a RSA identity (identity key
 file: keys/secret_id_key). You need to copy / backup both of them in
 order to restore your relay, change your DataDirectory or migrate the
 relay on a new computer.
f549ee31
 </p>
 
9b92b660
 
f549ee31
     <hr>
 
9b92b660
 <a id="OfflineED25519"></a>
 <h3><a class="anchor" href="#OfflineED25519">How do offline ed25519
 identity keys work? What do I need to know?</a></h3>
 
 <p>
 As of Tor 0.2.7 offline ed25519 identity keys are supported. In simple words, it works like this:
 <ul>
 <li>there is a master ed25519 identity secret key file named
 "ed25519_master_id_secret_key". This is the most important one, so make
 sure you keep a backup in a secure place - the file is sensitive and
 should be protected. Tor could encrypt it for you if you generate it
 manually and enter a password when asked.</li>
 
 <li>a medium term signing key named "ed25519_signing_secret_key" is
 generated for Tor to use. Also, a certificate is generated named
 "ed25519_signing_cert" which is signed by the master identity secret key
 and confirms that the medium term signing key is valid for a certain
 period of time. The default validity is 30 days, but this can be
 customized by setting "SigningKeyLifetime N days|weeks|months" in
 torrc.</li>
 <li>there is also a master public key named
 "ed25519_master_id_public_key, which is the actual identity of the relay
 advertised in the network. This one is not sensitive and can be easily
 computed from "ed5519_master_id_secret_key".</li>
 </ul>
 Tor will only need access to the medium term signing key and certificate
 as long as they are valid, so the master identity secret key can be kept
 outside DataDirectory/keys, on a storage media or a different computer.
 You'll have to manually renew the medium term signing key and
 certificate before they expire otherwise the Tor process on the relay
 will exit upon expiration.
 </p>
 
 <p>
 This feature is optional, you don't need to use it unless you want to.
 If you want your relay to run unattended for longer time without having
 to manually do the medium term signing key renewal on regular basis,
 best to leave the master identity secret key in DataDirectory/keys, just
 make a backup in case you'll need to reinstall it.  If you want to use
 this feature, you can consult our <a
 href="https://trac.torproject.org/projects/tor/wiki/doc/TorRelaySecurity/OfflineKeys">more
 detailed guide</a> on the topic.
 </p>
 
 <hr>
 
f549ee31
 <a id="NTService"></a>
13b97478
 <h3><a class="anchor" href="#NTService">How do I run my Tor relay as an NT
f30e672d
 service?</a></h3>
f549ee31
 
 <p>
13b97478
  You can run Tor as a service on all versions of Windows except Windows
c261c7ec
  95/98/ME.
f549ee31
 </p>
 <p>
13b97478
 If you've already configured your Tor to be a relay, please note that when
 you enable Tor as a service, it will use a different DatagDirectory, and
 thus will generate a different key. If you want to keep using the old key,
 see the Upgrading your Tor relay FAQ entry for how to restore the old
f30e672d
 identity key.
f549ee31
 </p>
 <p>
 To install Tor as a service, you can simply run:
 </p>
 <pre>
 tor --service install
 </pre>
 <p>
13b97478
 A service called Tor Win32 Service will be installed and started. This
 service will also automatically start every time Windows boots, unless
 you change the Start-up type. An easy way to check the status of Tor,
 start or stop the service, and change the start-up type is by running
 services.msc and finding the Tor service in the list of currently
f30e672d
 installed services.
f549ee31
 </p>
 <p>
13b97478
 Optionally, you can specify additional options for the Tor service using
 the -options argument. For example, if you want Tor to use C:\tor\torrc,
 instead of the default torrc, and open a control port on port 9151, you
f30e672d
 would run:
f549ee31
 </p>
 <pre>
 tor --service install -options -f C:\tor\torrc ControlPort 9151
 </pre>
 <p>
 You can also start or stop the Tor service from the command line by typing:
 </p>
 <pre>
  tor --service start
 </pre>
 <p>
 or
 </p>
 <pre>
  tor --service stop
 </pre>
 <p>
 To remove the Tor service, you can run the following command:
 </p>
 <pre>
 tor --service remove
 </pre>
 <p>
13b97478
 If you are running Tor as a service and you want to uninstall Tor entirely,
 be sure to run the service removal command (shown above) first before
 running the uninstaller from "Add/Remove Programs". The uninstaller is
f30e672d
 currently not capable of removing the active service.
f549ee31
 </p>
 
 <hr>
 
 <a id="VirtualServer"></a>
13b97478
 <h3><a class="anchor" href="#VirtualServer">Can I run a Tor relay from my
f30e672d
 virtual server account?</a></h3>
f549ee31
 
 <p>
13b97478
 Some ISPs are selling "vserver" accounts that provide what they call a
 virtual server -- you can't actually interact with the hardware, and
 they can artificially limit certain resources such as the number of file
 descriptors you can open at once. Competent vserver admins are able to
 configure your server to not hit these limits. For example, in SWSoft's
 Virtuozzo, investigate /proc/user_beancounters. Look for "failcnt" in
 tcpsndbuf, tcprecvbuf, numothersock, and othersockbuf. Ask for these to
d12fbf62
 be increased accordingly. Xen, Virtual Box and VMware virtual servers have no such limits normally.
f549ee31
 </p>
 <p>
13b97478
 If the vserver admin will not increase system limits another option is
 to reduce the memory allocated to the send and receive buffers on TCP
 connections Tor uses. An experimental feature to constrain socket buffers
 has recently been added. If your version of Tor supports it, set
 "ConstrainedSockets 1" in your configuration. See the tor man page for
f30e672d
 additional details about this option.
f549ee31
 </p>
 <p>
13b97478
 Unfortunately, since Tor currently requires you to be able to connect to
 all the other Tor relays, we need you to be able to use at least 1024 file
 descriptors. This means we can't make use of Tor relays that are crippled
f30e672d
 in this way.
f549ee31
 </p>
 <p>
13b97478
 We hope to fix this in the future, once we know how to build a Tor network
 with restricted topologies -- that is, where each node connects to only a
f30e672d
 few other nodes. But this is still a long way off.
f549ee31
 </p>
 
e27eb072
 <hr>
 
481ccca3
 <a id="MultipleRelays"></a>
37855015
 <h3><a class="anchor" href="#MultipleRelays">I want to run more than one
 relay.</a></h3>
21be8103
 
 <p>
 Great. If you want to run several relays to donate more to the network,
 we're happy with that. But please don't run more than a few dozen on
 the same network, since part of the goal of the Tor network is dispersal
 and diversity.
 </p>
 
 <p>
 If you do decide to run more than one relay, please set the "MyFamily"
e57c8363
 config option in the <a href="#torrc">torrc</a> of each relay, listing
 all the relays (comma-separated) that are under your control:
21be8103
 </p>
 
 <pre>
     MyFamily $fingerprint1,$fingerprint2,$fingerprint3
 </pre>
 
 <p>
 where each fingerprint is the 40 character identity fingerprint (without
e0961bf0
 spaces).
21be8103
 </p>
 
 <p>
 That way clients will know to avoid using more than one of your relays
 in a single circuit. You should set MyFamily if you have administrative
 control of the computers or of their network, even if they're not all in
 the same geographic location.
 </p>
 
     <hr>
 
f549ee31
     <a id="WrongIP"></a>
13b97478
     <h3><a class="anchor" href="#WrongIP">My relay is picking the wrong
f30e672d
     IP address.</a></h3>
f549ee31
     <p>
13b97478
  Tor guesses its IP address by asking the computer for its hostname, and
  then resolving that hostname. Often people have old entries in their
f30e672d
  /etc/hosts file that point to old IP addresses.
f549ee31
     </p>
     <p>
13b97478
 If that doesn't fix it, you should use the "Address" config option to
 specify the IP you want it to pick. If your computer is behind a NAT and
 it only has an internal IP address, see the following FAQ entry on <a
d9003542
 href="#RelayFlexible">dynamic IP addresses</a>.
f549ee31
     </p>
     <p>
13b97478
 Also, if you have many addresses, you might also want to set
 "OutboundBindAddress" so external connections come from the IP you intend
 to present to the world.
f549ee31
     </p>
 
     <hr>
 
     <a id="BehindANAT"></a>
     <h3><a class="anchor" href="#BehindANAT">I'm behind a NAT/Firewall.</a></h3>
 
     <p>
13b97478
 See <a>http://portforward.com/</a> for directions on how to port forward with
f30e672d
 your NAT/router device.
f549ee31
 </p>
 <p>
13b97478
 If your relay is running on a internal net you need to setup port forwarding.
 Forwarding TCP connections is system dependent but the firewalled-clients FAQ
f30e672d
 entry offers some examples on how to do this.
f549ee31
 </p>
 <p>
13b97478
 Also, here's an example of how you would do this on GNU/Linux if you're using
f30e672d
 iptables:
f549ee31
 </p>
 <pre>
 /sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 9001 -j ACCEPT
 </pre>
 <p>
13b97478
 You may have to change "eth0" if you have a different external interface
 (the one connected to the Internet). Chances are you have only one (except
 the loopback) so it shouldn't be too hard to figure out.
f549ee31
     </p>
     <hr>
 
2a9aaa80
     <a id="RelayMemory"></a>
37855015
     <h3><a class="anchor" href="#RelayMemory">Why is my Tor relay using
 so much memory?</a></h3>
0b68c29c
 
37855015
     <p>If your Tor relay is using more memory than you'd like, here are
 some
2a9aaa80
     tips for reducing its footprint:
     </p>
0b68c29c
 
2a9aaa80
     <ol>
     <li>If you're on Linux, you may be encountering memory fragmentation
37855015
     bugs in glibc's malloc implementation. That is, when Tor releases
 memory
     back to the system, the pieces of memory are fragmented so they're
 hard
     to reuse. The Tor tarball ships with OpenBSD's malloc
 implementation,
     which doesn't have as many fragmentation bugs (but the tradeoff is
 higher
     CPU load). You can tell Tor to use this malloc implementation
 instead:
2a9aaa80
     <tt>./configure --enable-openbsd-malloc</tt></li>
0b68c29c
 
37855015
     <li>If you're running a fast relay, meaning you have many TLS
 connections
2a9aaa80
     open, you are probably losing a lot of memory to OpenSSL's internal
bac515da
     buffers (38KB+ per socket). We've patched OpenSSL to <a href="https://lists.torproject.org/pipermail/tor-dev/2008-June/001519.html">release
2a9aaa80
     unused buffer memory more aggressively</a>. If you update to OpenSSL
37855015
     1.0.0 or newer, Tor's build process will automatically recognize and
 use
2a9aaa80
     this feature.</li>
0b68c29c
 
2a9aaa80
     <li>If you still can't handle the memory load, consider reducing the
37855015
     amount of bandwidth your relay advertises. Advertising less
 bandwidth
2a9aaa80
     means you will attract fewer users, so your relay shouldn't grow
     as large. See the <tt>MaxAdvertisedBandwidth</tt> option in the man
     page.</li>
0b68c29c
 
2a9aaa80
     </ol>
0b68c29c
 
2a9aaa80
     <p>
37855015
     All of this said, fast Tor relays do use a lot of ram. It is not
 unusual
2a9aaa80
     for a fast exit relay to use 500-1000 MB of memory.
     </p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
f549ee31
     <a id="BetterAnonymity"></a>
13b97478
     <h3><a class="anchor" href="#BetterAnonymity">Do I get better anonymity
f30e672d
     if I run a relay?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
f549ee31
 Yes, you do get better anonymity against some attacks.
     </p>
     <p>
13b97478
 The simplest example is an attacker who owns a small number of Tor relays.
 He will see a connection from you, but he won't be able to know whether
f30e672d
 the connection originated at your computer or was relayed from somebody else.
f549ee31
     </p>
     <p>
13b97478
 There are some cases where it doesn't seem to help: if an attacker can
 watch all of your incoming and outgoing traffic, then it's easy for him
 to learn which connections were relayed and which started at you. (In
 this case he still doesn't know your destinations unless he is watching
f30e672d
 them too, but you're no better off than if you were an ordinary client.)
f549ee31
     </p>
     <p>
13b97478
 There are also some downsides to running a Tor relay. First, while we
 only have a few hundred relays, the fact that you're running one might
 signal to an attacker that you place a high value on your anonymity.
 Second, there are some more esoteric attacks that are not as
 well-understood or well-tested that involve making use of the knowledge
 that you're running a relay -- for example, an attacker may be able to
 "observe" whether you're sending traffic even if he can't actually watch
 your network, by relaying traffic through your Tor relay and noticing
f30e672d
 changes in traffic timing.
f549ee31
     </p>
     <p>
13b97478
 It is an open research question whether the benefits outweigh the risks.
 A lot of that depends on the attacks you are most worried about. For
 most users, we think it's a smart move.
2a9aaa80
     </p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
5bdf9aee
     <a id="FacingLegalTrouble"></a>
13b97478
     <h3><a class="anchor" href="#FacingLegalTrouble">I'm facing legal
     trouble. How do I prove that my server was a Tor relay at a given
5bdf9aee
     time?</a></h3>
 
     <p><a href="https://exonerator.torproject.org/">
13b97478
     Exonerator</a> is a web service that can check if an IP address was a
     relay at a given time. We can also <a
cf814f9e
     href="<page about/contact>">provide a signed
5bdf9aee
     letter</a> if needed.</p>
 
     <hr>
 
e71b1ebb
     <a id="RelayDonations"></a>
2ee01d9b
     <h3><a class="anchor" href="#RelayDonations">Can I donate for a
     relay rather than run my own?</a></h3>
e71b1ebb
 
     <p>
11ab6cce
     Sure! We recommend these non-profit charities that are happy to turn
e71b1ebb
     your donations into better speed and anonymity for the Tor network:
     </p>
     <ul>
     <li><a href="https://www.torservers.net/">torservers.net</a>
     is a German charitable non-profit that runs a wide variety of
11ab6cce
     exit relays worldwide. They also like donations of bandwidth from
     ISPs.</li>
e71b1ebb
     <li><a
37855015
 href="https://www.noisebridge.net/wiki/Noisebridge_Tor">Noisebridge</a>
e71b1ebb
     is a US-based 501(c)(3) non-profit that collects donations and turns
11ab6cce
     them into more US-based exit relay capacity.</li>
     <li><a href="https://nos-oignons.net/">Nos Oignons</a> is a French
     charitable non-profit that runs fast exit relays in France.</li>
6f107e8d
     <li><a href="https://www.dfri.se/donera/?lang=en">DFRI</a> is a
     Swedish non-profit running exit relays.</li>
e71b1ebb
     </ul>
 
     <p>
     These organizations are not the same as <a href="<page
     donate/donate>">The Tor Project, Inc</a>, but we consider that a
bc280d13
     good thing. They're run by nice people who are part of the
f0ebea19
     Tor community.
e71b1ebb
     </p>
 
     <p>
     Note that there can be a tradeoff here between anonymity and
37855015
     performance. The Tor network's anonymity comes in part from
 diversity,
e71b1ebb
     so if you are in a position to run your own relay, you will be
e53eda17
     improving Tor's anonymity more than by donating. At the same time
     though, economies
e71b1ebb
     of scale for bandwidth mean that combining many small donations into
f0ebea19
     several larger relays is more efficient at improving network
e71b1ebb
     performance. Improving anonymity and improving performance are both
     worthwhile goals, so however you can help is great!
     </p>
 
     <hr>
 
32316cbf
 # Leaving in old ids to accomodate incoming links.
 <a id="TorOnionServices"></a><a id="TorHiddenServices"></a>
f87eea1a
 <h2><a class="anchor" href="#TorOnionServices">Tor onion services:</a></h2>
6f107e8d
 
32316cbf
     <a id="AccessOnionServices"></a><a id="AccessHiddenServices"></a>
     <h3><a class="anchor" href="#AccessOnionServices">How do I access
     onion services?</a></h3>
2b63e88f
 
f30e672d
     <p>
32316cbf
     Tor onion services are named with a special top-level domain (TLD)
13b97478
     name in DNS: .onion. Since the .onion TLD is not recognized by the
     official root DNS servers on the Internet, your application will not
     get the response it needs to locate the service. Currently, the Tor
     directory server provides this look-up service; and thus the look-up
     request must get to the Tor network.
f30e672d
     </p>
 
 <p>
13b97478
  Therefore, your application <b>needs</b> to pass the .onion hostname to
  Tor directly. You can't try to resolve it to an IP address, since there
32316cbf
  <i>is</i> no corresponding IP address.
f30e672d
 </p>
2b63e88f
 
13b97478
     <p>
     So, how do you make your application pass the hostname directly to Tor?
     You can't use SOCKS 4, since SOCKS 4 proxies require an IP from the
     client (a web browser is an example of a SOCKS client). Even though
     SOCKS 5 can accept either an IP or a hostname, most applications
     supporting SOCKS 5 try to resolve the name before passing it to the
     SOCKS proxy. SOCKS 4a, however, always accepts a hostname: You'll need
     to use SOCKS 4a.
     </p>
2b63e88f
 
13b97478
     <p>
     Some applications, such as the browsers Mozilla Firefox and Apple's
     Safari, support sending DNS queries to Tor's SOCKS 5 proxy. Most web
     browsers don't support SOCKS 4a very well, though. The workaround is
     to point your web browser at an HTTP proxy, and tell the HTTP proxy
f30e672d
     to speak to Tor with SOCKS 4a. We recommend Polipo as your HTTP proxy.
     </p>
2b63e88f
 
f30e672d
     <p>
13b97478
     For applications that do not support HTTP proxy, and so cannot use
     Polipo, <a href="http://www.freecap.ru/eng/">FreeCap</a> is an
32316cbf
     alternative. When using FreeCap set proxy protocol to SOCKS 5 and under
13b97478
     settings set DNS name resolving to remote. This
     will allow you to use almost any program with Tor without leaking DNS
32316cbf
     lookups and allow those same programs to access onion services.
f30e672d
     </p>
2b63e88f
 
f30e672d
     <p>
13b97478
     See also the <a href="#SocksAndDNS">question on DNS</a>.
2b63e88f
     </p>
 
f30e672d
     <hr>
 
32316cbf
     <a id="ProvideAnOnionService"></a><a id="ProvideAHiddenService"></a>
     <h3><a class="anchor" href="#ProvideAnOnionService">How do I provide an
     onion service?</a></h3>
2b63e88f
 
f30e672d
     <p>
c9be5827
     See the <a href="<page docs/tor-onion-service>">
32316cbf
     official onion service configuration instructions</a>.
f30e672d
     </p>
 
     <hr>
2b63e88f
 
6f107e8d
     <a id="Development"></a>
f87eea1a
     <h2><a class="anchor" href="#Development">Development:</a></h2>
6f107e8d
 
2fd90486
     <a id="VersionNumbers"></a>
13b97478
     <h3><a class="anchor" href="#VersionNumbers">What do these weird
2fd90486
     version numbers mean?</a></h3>
 
     <p>
13b97478
     Versions of Tor before 0.1.0 used a strange and hard-to-explain
991262e9
     version scheme. Let's forget about those.
2fd90486
     </p>
     <p>
13b97478
     Starting with 0.1.0, versions all look like this:
     MAJOR.MINOR.MICRO(.PATCHLEVEL)(-TAG). The stuff in parenthesis is
     optional. MAJOR, MINOR, MICRO, and PATCHLEVEL are all numbers. Only one
     release is ever made with any given set of these version numbers. The
     TAG lets you know how stable we think the release is: "alpha" is pretty
     unstable; "rc" is a release candidate; and no tag at all means that we
     have a final release. If the tag ends with "-cvs", you're looking at
     a development snapshot that came after a given release.
2fd90486
     </p>
     <p>
13b97478
     So for example, we might start a development branch with (say)
     0.1.1.1-alpha. The patchlevel increments consistently as the status
     tag changes, for example, as in: 0.1.1.2-alpha, 0.1.1.3-alpha,
     0.1.1.4-rc, 0.1.1.5-rc, etc. Eventually, we would release 0.1.1.6.
2fd90486
     The next stable release would be 0.1.1.7.
     </p>
     <p>
13b97478
     Why do we do it like this? Because every release has a unique
     version number, it is easy for tools like package manager to tell
     which release is newer than another. The tag makes it easy for users
     to tell how stable the release is likely to be.
2fd90486
     </p>
 
     <hr>
 
     <a id="PrivateTorNetwork"></a>
13b97478
     <h3><a class="anchor" href="#PrivateTorNetwork">How do I set up my
2fd90486
     own private Tor network?</a></h3>
2b63e88f
 
2fd90486
     <p>
13b97478
     If you want to experiment locally with your own network, or you're
     cut off from the Internet and want to be able to mess with Tor still,
     then you may want to set up your own separate Tor network.
2fd90486
     </p>
     <p>
13b97478
     To set up your own Tor network, you need to run your own authoritative
     directory servers, and your clients and relays must be configured so
     they know about your directory servers rather than the default public
     ones.
2fd90486
     </p>
     <p>
13b97478
     Apart from the somewhat tedious method of manually configuring a couple
     of directory authorities, relays and clients there are two separate
     tools that could help. One is Chutney, the other is Shadow.
2fd90486
     </p>
     <p>
13b97478
     <a href="https://gitweb.torproject.org/chutney.git">Chutney</a> is a
     tool for configuring, controlling and running tests on a
     testing Tor network. It requires that you have Tor and Python (2.5 or
2fd90486
     later) installed on your system. You can use Chutney to create a testing
13b97478
     network by generating Tor configuration files (torrc) and necssary keys
2fd90486
     (for the directory authorities). Then you can let Chutney start your Tor
     authorities, relays and clients and wait for the network to bootstrap.
13b97478
     Finally, you can have Chutney run tests on your network to see which
     things work and which do not. Chutney is typically used for running a
     testing network with about 10 instances of Tor. Every instance of Tor
     binds to one or two ports on localhost (127.0.0.1) and all Tor
     communication is done over the loopback interface. The <a
1700644e
     href="https://gitweb.torproject.org/chutney.git/tree/README">Chutney
13b97478
     README</a> is a good starting point for getting it up and running.
     </p>
     <p>
     <a href="https://github.com/shadow/shadow">Shadow</a> is a network
     simulator that can run Tor through its Scallion plug-in. Although
     it's typically used for running load and performance tests on
     substantially larger Tor test networks than what's feasible with
     Chutney, it also makes for an excellent debugging tool since you can
     run completely deterministic experiments. A large Shadow network is on
     the size of thousands of instances of Tor, and you can run experiments
     out of the box using one of Shadow's several included scallion experiment
     configurations. Shadow can be run on any linux machine without root,
     and can also run on EC2 using a pre-configured image. Also, Shadow
     controls the time of the simulation with the effect that
     time-consuming tests can be done more efficiently than in an
     ordinary testing network. The <a
     href="https://github.com/shadow/shadow/wiki">Shadow wiki</a> and
     <a href="http://shadow.github.io/">Shadow website</a> are
     good places to get started.
2fd90486
     </p>
 
     <hr>
 
e105e056
     <a id="UseTorWithJava"></a>
13b97478
     <h3><a class="anchor" href="#UseTorWithJava">How can I make my Java
2fd90486
     program use the Tor Network?</a></h3>
 
     <p>
13b97478
     The newest versions of Java now have SOCKS4/5 support built in.
     Unfortunately, the SOCKS interface is not very well documented and
     may still leak your DNS lookups. The safest way to use Tor is to
     interface the SOCKS protocol directly or go through an application-level
     proxy that speaks SOCKS4a. For an example and libraries that implement
     the SOCKS4a connection, go to Joe Foley's TorLib in the <a
     href="http://web.mit.edu/foley/www/TinFoil/">TinFoil Project</a>.
2fd90486
     </p>
 
     <p>
13b97478
     A fully Java implementation of the Tor client is now available as <a
     href="http://www.subgraph.com/orchid.html">Orchid</a>. We still consider
     Orchid to be experimental, so use with care.
2fd90486
     </p>
 
     <hr>
 
 
     <a id="WhatIsLibevent"></a>
     <h3><a class="anchor" href="#WhatIsLibevent">What is Libevent?</a></h3>
2b63e88f
 
2fd90486
     <p>
13b97478
     When you want to deal with a bunch of net connections at once, you
     have a few options:
2fd90486
     </p>
     <p>
13b97478
     One is multithreading: you have a separate micro-program inside the
     main program for each net connection that reads and writes to the
     connection as needed.This, performance-wise, sucks.
2fd90486
     </p>
     <p>
13b97478
     Another is asynchronous network programming: you have a single main
     program that finds out when various net connections are ready to
2fd90486
     read/write, and acts accordingly.
     </p>
     <p>
13b97478
     The problem is that the oldest ways to find out when net connections
     are ready to read/write, suck. And the newest ways are finally fast,
     but are not available on all platforms.
2fd90486
     </p>
     <p>
13b97478
     This is where Libevent comes in and wraps all these ways to find
     out whether net connections are ready to read/write, so that Tor
     (and other programs) can use the fastest one that your platform
     supports, but can still work on older platforms (these methods are
     all different depending on the platorm) So Libevent presents a
     consistent and fast interface to select, poll, kqueue, epoll,
     /dev/poll, and windows select.
2fd90486
     </p>
     <p>
13b97478
     However, On the the Win32 platform (by Microsoft) the only good
     way to do fast IO on windows with hundreds of sockets is using
     overlapped IO, which is grossly unlike every other BSD sockets
     interface.
2fd90486
     </p>
13b97478
     <p>Libevent has <a href="http://www.monkey.org/~provos/libevent/">its
2fd90486
     own website</a>.
     </p>
     <hr>
 
     <a id="MyNewFeature"></a>
13b97478
     <h3><a class="anchor" href="#MyNewFeature">What do I need to do to get
2fd90486
     a new feature into Tor?</a></h3>
2b63e88f
 
2fd90486
     <p>
13b97478
     For a new feature to go into Tor, it needs to be designed (explain what
     you think Tor should do), argued to be secure (explain why it's better
     or at least as good as what Tor does now), specified (explained at the
     byte level at approximately the level of detail in tor-spec.txt), and
     implemented (done in software).
2fd90486
     </p>
 
     <p>
13b97478
     You probably shouldn't count on other people doing all of these steps
     for you: people who are skilled enough to do this stuff generally
2fd90486
     have their own favorite feature requests.
     </p>
 
     <hr>
 
6f107e8d
     <a id="AnonymityAndSecurity"></a>
f87eea1a
     <h2><a class="anchor" href="#AnonymityAndSecurity">Anonymity And Security:</a></h2>
6f107e8d
 
a2904cae
     <a id="WhatProtectionsDoesTorProvide"></a>
13b97478
     <h3><a class="anchor" href="#WhatProtectionsDoesTorProvide">What
a2904cae
     protections does Tor provide?</a></h3>
2b63e88f
 
13b97478
     <p>
     Internet communication is based on a store-and-forward model that
     can be understood in analogy to postal mail: Data is transmitted in
     blocks called IP datagrams or packets. Every packet includes a source
     IP address (of the sender) and a destination IP address (of the
     receiver), just as ordinary letters contain postal addresses of sender
     and receiver. The way from sender to receiver involves multiple hops of
     routers, where each router inspects the destination IP address and
     forwards the packet closer to its destination. Thus, every router
     between sender and receiver learns that the sender is communicating
     with the receiver. In particular, your local ISP is in the position to
     build a complete profile of your Internet usage. In addition, every
     server in the Internet that can see any of the packets can profile your
     behaviour.
     </p>
2b63e88f
 
13b97478
     <p>
     The aim of Tor is to improve your privacy by sending your traffic through
     a series of proxies. Your communication is encrypted in multiple layers
     and routed via multiple hops through the Tor network to the final
     receiver. More details on this process can be found in the <a
     href="https://www.torproject.org/about/overview">Tor overview</a>.
     Note that all your local ISP can observe now is that you are
     communicating with Tor nodes. Similarly, servers in the Internet just
a2904cae
     see that they are being contacted by Tor nodes.
     </p>
2b63e88f
 
a2904cae
     <p>
13b97478
     Generally speaking, Tor aims to solve three privacy problems:
a2904cae
     </p>
2b63e88f
 
a2904cae
     <p>
13b97478
     First, Tor prevents websites and other services from learning
     your location, which they can use to build databases about your
     habits and interests. With Tor, your Internet connections don't
     give you away by default -- now you can have the ability to choose,
     for each connection, how much information to reveal.
a2904cae
     </p>
2b63e88f
 
a2904cae
     <p>
13b97478
     Second, Tor prevents people watching your traffic locally (such as
728b231c
     your ISP or someone with access to your home wifi or router) from
     learning what information you're fetching and where you're fetching
     it from. It also stops them from deciding what you're
13b97478
     allowed to learn and publish -- if you can get to any part of the Tor
2b63e88f
     network, you can reach any site on the Internet.
a2904cae
     </p>
 
     <p>
13b97478
     Third, Tor routes your connection through more than one Tor relay
     so no single relay can learn what you're up to. Because these relays
     are run by different individuals or organizations, distributing trust
a2904cae
     provides more security than the old <a href="#Torisdifferent">one hop proxy
13b97478
     </a> approach.
a2904cae
     </p>
2b63e88f
 
a2904cae
     <p>
13b97478
     Note, however, that there are situations where Tor fails to solve these
     privacy problems entirely: see the entry below on <a
2b63e88f
     href="#AttacksOnOnionRouting">remaining attacks</a>.
a2904cae
     </p>
2b63e88f
 
a2904cae
     <hr>
2b63e88f
 
a2904cae
     <a id="CanExitNodesEavesdrop"></a>
13b97478
     <h3><a class="anchor" href="#CanExitNodesEavesdrop">Can exit nodes eavesdrop
a2904cae
     on communications? Isn't that bad?</a></h3>
2b63e88f
 
a2904cae
     <p>
13b97478
     Yes, the guy running the exit node can read the bytes that come in and
     out there. Tor anonymizes the origin of your traffic, and it makes sure
     to encrypt everything inside the Tor network, but it does not magically
     encrypt all traffic throughout the Internet.
a2904cae
     </p>
2b63e88f
 
a2904cae
     <p>
13b97478
     This is why you should always use end-to-end encryption such as SSL for
     sensitive Internet connections. (The corollary to this answer is that if
     you are worried about somebody intercepting your traffic and you're
     *not* using end-to-end encryption at the application layer, then something
     has already gone wrong and you shouldn't be thinking that Tor is the problem.)
a2904cae
     </p>
2b63e88f
 
a2904cae
     <hr>
2b63e88f
 
9fb81a6f
     <a id="AmITotallyAnonymous"></a>
13b97478
     <h3><a class="anchor" href="#AmITotallyAnonymous">So I'm totally anonymous
9fb81a6f
     if I use Tor?</a></h3>
 
     <p>
     <b>No.</b>
     </p>
     <p>
13b97478
     First, Tor protects the network communications. It separates where you
     are from where you are going on the Internet. What content and data you
     transmit over Tor is controlled by you. If you login to Google or
     Facebook via Tor, the local ISP or network provider doesn't know you
     are visiting Google or Facebook. Google and Facebook don't know where
     you are in the world. However, since you have logged into their sites,
     they know who you are. If you don't want to share information, you are
     in control.
     </p>
 
     <p>
     Second, active content, such as Java, Javascript, Adobe Flash, Adobe
     Shockwave, QuickTime, RealAudio, ActiveX controls, and VBScript, are
     binary applications. These binary applications run as your user account
     with your permissions in your operating system. This means these
     applications can access anything that your user account can access. Some
     of these technologies, such as Java and Adobe Flash for instance, run in
     what is known as a virtual machine. This virtual machine may have the
     ability to ignore your configured proxy settings, and therefore bypass
     Tor and share information directly to other sites on the Internet. The
     virtual machine may be able to store data, such as cookies, completely
     separate from your browser or operating system data stores. Therefore,
9fb81a6f
     these technologies must be disabled in your browser to use Tor safely.
     </p>
     <p>
32700e09
     That's where <a
f65daf2d
     href="<page projects/torbrowser>">Tor Browser</a> comes in. We produce
32700e09
     a web browser that is preconfigured to
13b97478
     help you control the risks to your privacy and anonymity while browsing
     the Internet. Not only are the above technologies disabled to prevent
5bd3add6
     identity leaks, Tor Browser also includes browser extensions like
9fb81a6f
     NoScript and Torbutton, as well as patches to the Firefox source
5bd3add6
     code. The full design of Tor Browser can be read <a
13b97478
     href="https://www.torproject.org/projects/torbrowser/design/">here</a>.
     In designing a safe, secure solution for browsing the web with Tor,
     we've discovered that configuring <a href="#TBBOtherBrowser">other
7740f878
     browsers</a> to use Tor is unsafe.
9fb81a6f
     </p>
 
     <p>
13b97478
     Alternatively, you may find a Live CD or USB operating system more to
     your liking. The Tails team has created an <a
     href="https://tails.boum.org/">entire bootable operating system</a>
     configured for anonymity and privacy on the Internet.
9fb81a6f
     </p>
 
     <p>
13b97478
     Tor is a work in progress. There is still <a
     href="https://www.torproject.org/getinvolved/volunteer">plenty of work
     left to do</a> for a strong, secure, and complete solution.
9fb81a6f
     </p>
 
     <hr>
 
2a9aaa80
     <a id="KeyManagement"></a>
37855015
     <h3><a class="anchor" href="#KeyManagement">Tell me about all the
 keys Tor uses.</a></h3>
0b68c29c
 
2a9aaa80
     <p>
     Tor uses a variety of different keys, with three goals in mind: 1)
     encryption to ensure privacy of data within the Tor network, 2)
     authentication so clients know they're
37855015
     talking to the relays they meant to talk to, and 3) signatures to
 make
2a9aaa80
     sure all clients know the same set of relays.
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     <b>Encryption</b>: first, all connections in Tor use TLS link
 encryption,
2a9aaa80
     so observers can't look inside to see which circuit a given cell is
37855015
     intended for. Further, the Tor client establishes an ephemeral
 encryption
8d180ff7
     key with each relay in the circuit; these extra layers of encryption
     mean that only the exit relay can read
2a9aaa80
     the cells. Both sides discard the circuit key when the circuit ends,
37855015
     so logging traffic and then breaking into the relay to discover the
f30e672d
     key won't work.
2a9aaa80
     </p>
0b68c29c
 
2a9aaa80
     <p>
     <b>Authentication</b>:
     Every Tor relay has a public decryption key called the "onion key".
8d180ff7
     Each relay rotates its onion key once a week.
2a9aaa80
     When the Tor client establishes circuits, at each step it <a
37855015
 
 href="<svnprojects>design-paper/tor-design.html#subsec:circuits">demands
2a9aaa80
     that the Tor relay prove knowledge of its onion key</a>. That way
     the first node in the path can't just spoof the rest of the path.
8d180ff7
     Because the Tor client chooses the path, it can make sure to get
     Tor's "distributed trust" property: no single relay in the path can
     know about both the client and what the client is doing.
2a9aaa80
     </p>
0b68c29c
 
2a9aaa80
     <p>
     <b>Coordination</b>:
37855015
     How do clients know what the relays are, and how do they know that
 they
     have the right keys for them? Each relay has a long-term public
 signing
     key called the "identity key". Each directory authority additionally
 has a
2a9aaa80
     "directory signing key". The directory authorities <a
365df400
     href="<specblob>dir-spec.txt">provide a signed list</a>
37855015
     of all the known relays, and in that list are a set of certificates
 from
     each relay (self-signed by their identity key) specifying their
 keys,
     locations, exit policies, and so on. So unless the adversary can
 control
8d180ff7
     a majority of the directory authorities (as of 2012 there are 8
97f29551
     directory authorities), he can't trick the Tor client into using
     other Tor relays.
2a9aaa80
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     How do clients know what the directory authorities are? The Tor
 software
     comes with a built-in list of location and public key for each
 directory
     authority. So the only way to trick users into using a fake Tor
 network
2a9aaa80
     is to give them a specially modified version of the software.
     </p>
0b68c29c
 
2a9aaa80
     <p>
     How do users know they've got the right software? When we distribute
     the source code or a package, we digitally sign it with <a
     href="http://www.gnupg.org/">GNU Privacy Guard</a>. See the <a
     href="<page docs/verifying-signatures>">instructions
     on how to check Tor's signatures</a>.
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     In order to be certain that it's really signed by us, you need to
 have
     met us in person and gotten a copy of our GPG key fingerprint, or
 you
     need to know somebody who has. If you're concerned about an attack
 on
     this level, we recommend you get involved with the security
 community
2a9aaa80
     and start meeting people.
     </p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
75abc428
 <a id="EntryGuards"></a>
37855015
 <h3><a class="anchor" href="#EntryGuards">What are Entry
 Guards?</a></h3>
75abc428
 
 <p>
 Tor (like all current practical low-latency anonymity designs) fails
 when the attacker can see both ends of the communications channel. For
37855015
 example, suppose the attacker controls or watches the Tor relay you
 choose
 to enter the network, and also controls or watches the website you
 visit. In
75abc428
 this case, the research community knows no practical low-latency design
 that can reliably stop the attacker from correlating volume and timing
 information on the two sides.
 </p>
 
 <p>
 So, what should we do? Suppose the attacker controls, or can observe,
b2491cec
 <i>C</i> relays. Suppose there are <i>N</i> relays total. If you select
 new entry and exit relays each time you use the network, the attacker
40ca9a48
 will be able to correlate all traffic you send with probability around
b2491cec
 <i>(c/n)<sup>2</sup></i>. But profiling is, for most users, as bad
 as being traced all the time: they want to do something often without
 an attacker noticing, and the attacker noticing once is as bad as the
37855015
 attacker noticing more often. Thus, choosing many random entries and
 exits
b2491cec
 gives the user no chance of escaping profiling by this kind of attacker.
75abc428
 </p>
 
 <p>
37855015
 The solution is "entry guards": each Tor client selects a few relays at
 random
b2491cec
 to use as entry points, and uses only those relays for her first hop. If
 those relays are not controlled or observed, the attacker can't win,
 ever, and the user is secure. If those relays <i>are</i> observed or
 controlled by the attacker, the attacker sees a larger <i>fraction</i>
37855015
 of the user's traffic &mdash; but still the user is no more profiled
 than
b2491cec
 before. Thus, the user has some chance (on the order of <i>(n-c)/n</i>)
 of avoiding profiling, whereas she had none before.
75abc428
 </p>
 
 <p>
b2491cec
 You can read more at <a href="http://freehaven.net/anonbib/#wright02">An
 Analysis of the Degradation of Anonymous Protocols</a>, <a
 href="http://freehaven.net/anonbib/#wright03">Defending Anonymous
 Communication Against Passive Logging Attacks</a>, and especially
 <a href="http://freehaven.net/anonbib/#hs-attack06">Locating Hidden
 Servers</a>.
75abc428
 </p>
 
 <p>
 Restricting your entry nodes may also help against attackers who want
 to run a few Tor nodes and easily enumerate all of the Tor user IP
 addresses. (Even though they can't learn what destinations the users
 are talking to, they still might be able to do bad things with just a
b2491cec
 list of users.) However, that feature won't really become useful until
 we move to a "directory guard" design as well.
75abc428
 </p>
 
     <hr>
 
91d870fd
     <a id="ChangePaths"></a>
     <h3><a class="anchor" href="#ChangePaths">How often does Tor change its paths?</a></h3>
     <p>
13b97478
      Tor will reuse the same circuit for new TCP streams for 10 minutes,
      as long as the circuit is working fine. (If the circuit fails, Tor
f30e672d
      will switch to a new circuit immediately.)
     </p>
     <p>
13b97478
 But note that a single TCP stream (e.g. a long IRC connection) will stay on
 the same circuit forever -- we don't rotate individual streams from one
 circuit to the next. Otherwise an adversary with a partial view of the
 network would be given many chances over time to link you to your
f30e672d
 destination, rather than just one chance.
     </p>
 
     <hr>
 
     <a id="CellSize"></a>
13b97478
     <h3><a class="anchor" href="#CellSize">Tor uses hundreds of bytes for
f30e672d
     every IRC line. I can't afford that!</a></h3>
     <p>
13b97478
      Tor sends data in chunks of 512 bytes (called "cells"), to make it
      harder for intermediaries to guess exactly how many bytes you're
      communicating at each step. This is unlikely to change in the near
      future -- if this increased bandwidth use is prohibitive for you, I'm
f30e672d
      afraid Tor is not useful for you right now.
91d870fd
     </p>
     <p>
13b97478
 The actual content of these fixed size cells is
1700644e
 <a href="https://gitweb.torproject.org/torspec.git/tree/tor-spec.txt">
f30e672d
 documented in the main Tor spec</a>, section 3.
     </p>
     <p>
13b97478
 We have been considering one day adding two classes of cells -- maybe a 64
 byte cell and a 1024 byte cell. This would allow less overhead for
 interactive streams while still allowing good throughput for bulk streams.
 But since we want to do a lot of work on quality-of-service and better
 queuing approaches first, you shouldn't expect this change anytime soon
 (if ever). However if you are keen, there are a couple of
cf814f9e
 <a href="<page getinvolved/volunteer>#Research">
13b97478
 research ideas</a> that may involve changing the cell size.
91d870fd
     </p>
 
f30e672d
     <hr>
 
91d870fd
     <a id="OutboundConnections"></a>
13b97478
     <h3><a class="anchor" href="#OutboundConnections">Why does netstat show
f30e672d
     these outbound connections?</a></h3>
91d870fd
     <p>
13b97478
     Because that's how Tor works. It holds open a handful of connections
     so there will be one available when you need one.
91d870fd
     </p>
 
     <hr>
 
f549ee31
     <a id="PowerfulBlockers"></a>
13b97478
     <h3><a class="anchor" href="#PowerfulBlockers">What about powerful blocking
f30e672d
     mechanisms?</a></h3>
f549ee31
     <p>
13b97478
  An adversary with a great deal of manpower and money, and severe
  real-world penalties to discourage people from trying to evade detection,
f30e672d
  is a difficult test for an anonymity and anti-censorship system.
f549ee31
     </p>
     <p>
13b97478
 The original Tor design was easy to block if the attacker controls Alice's
 connection to the Tor network --- by blocking the directory authorities, by
 blocking all the relay IP addresses in the directory, or by filtering based
 on the fingerprint of the Tor TLS handshake. After seeing these attacks and
 others first-hand, more effort was put into researching new circumvention
 techniques. Pluggable transports are protocols designed to allow users behind
f30e672d
 government firewalls to access the Tor network.
f549ee31
     </p>
     <p>
13b97478
 We've made quite a bit of progress on this problem lately. You can read more
cf814f9e
 details on the <a href="<page docs/pluggable-transports>">
13b97478
 pluggable transports page</a>. You may also be interested in
 <a href="https://www.youtube.com/watch?v=GwMr8Xl7JMQ">Roger and Jake's talk at
 28C3</a>, or <a href="https://www.youtube.com/watch?v=JZg1nqs793M">Runa's
f30e672d
 talk at 44con</a>.
f549ee31
     </p>
 
     <hr>
13b97478
 
f549ee31
     <a id="RemotePhysicalDeviceFingerprinting"></a>
13b97478
     <h3><a class="anchor" href="#RemotePhysicalDeviceFingerprinting">Does Tor
f30e672d
     resist "remote physical device fingerprinting"?</a></h3>
f549ee31
     <p>
  Yes, we resist all of these attacks as far as we know.
     </p>
     <p>
13b97478
 These attacks come from examining characteristics of the IP headers or TCP
 headers and looking for information leaks based on individual hardware
 signatures. One example is the
ff62bd3e
 <a href="http://www.caida.org/outreach/papers/2005/fingerprinting/">
13b97478
 Oakland 2005 paper</a> that lets you learn if two packet streams originated
f30e672d
 from the same hardware, but only if you can see the original TCP timestamps.
f549ee31
 </p>
 <p>
13b97478
 Tor transports TCP streams, not IP packets, so we end up automatically
 scrubbing a lot of the potential information leaks. Because Tor relays use
 their own (new) IP and TCP headers at each hop, this information isn't
 relayed from hop to hop. Of course, this also means that we're limited in
 the protocols we can transport (only correctly-formed TCP, not all IP like
 ZKS's Freedom network could) -- but maybe that's a good thing at this stage.
f30e672d
 </p>
f549ee31
 
     <hr>
 
5bdf9aee
     <a id="IsTorLikeAVPN"></a>
     <h3><a class="anchor" href="#IsTorLikeAVPN">Is Tor like a VPN?</a></h3>
2b63e88f
 
13b97478
     <p>
2b63e88f
     <b>Do not use a VPN as an <a href="http://www.nbcnews.com/news/investigations/war-anonymous-british-spies-attacked-hackers-snowden-docs-show-n21361">anonymity solution</a>.</b>
     If you're looking for a trusted entry into the Tor network, or if you want
f947dc67
     to obscure the fact that you're using Tor, <a
     href="https://www.torproject.org/docs/bridges#RunningABridge">setting up
     a private server as a bridge</a> works quite well.
     </p>
 
     <p>
13b97478
     VPNs encrypt the traffic between the user and the VPN provider,
     and they can act as a proxy between a user and an online destination.
     However, VPNs have a single point of failure: the VPN provider.
     A technically proficient attacker or a number of employees could
     retrieve the full identity information associated with a VPN user.
     It is also possible to use coercion or other means to convince a
     VPN provider to reveal their users' identities. Identities can be
     discovered by following a money trail (using Bitcoin does not solve
     this problem because Bitcoin is not anonymous), or by persuading the
     VPN provider to hand over logs. Even
     if a VPN provider says they don't keep logs, users have to take their
     word for it---and trust that the VPN provider won't buckle to outside
     pressures that might want them to start keeping logs.
     </p>
 
     <p>
     When you use a VPN, websites can still build up a persistent profile of
     your usage over time. Even though sites you visit won't automatically
     get your originating IP address, they still know how to profile you
     based on your browsing history.
     </p>
 
     <p>
     When you use Tor the IP address you connect to changes at most every 10
     minutes, and often more frequently than that. This makes it extremely
     dificult for websites to create any sort of persistent profile of Tor
     users (assuming you did not <a
cf814f9e
     href="<page download/download>#warning">identify
13b97478
     yourself in other ways</a>). No one Tor relay can know enough
     information to compromise any Tor user because of Tor's <a
cf814f9e
     href="<page about/overview>#thesolution">encrypted
08e6e1c9
     three-hop circuit</a> design.
     </p>
5bdf9aee
 
     <hr>
 
ff62bd3e
     <a id="Proxychains"></a>
13b97478
     <h3><a class="anchor" href="#Proxychains">Aren't 10 proxies
ff62bd3e
     (proxychains) better than Tor with only 3 hops?</a></h3>
2b63e88f
 
ff62bd3e
     <p>
13b97478
     Proxychains is a program that sends your traffic through a series of
     open web proxies that you supply before sending it on to your final
     destination. <a href="#KeyManagement">Unlike Tor</a>, proxychains
     does not encrypt the connections between each proxy server. An open proxy
     that wanted to monitor your connection could see all the other proxy
     servers you wanted to use between itself and your final destination,
     as well as the IP address that proxy hop received traffic from.
ff62bd3e
     </p>
     <p>
13b97478
     Because the <a
ff62bd3e
     href="https://gitweb.torproject.org/torspec.git?a=blob_plain;hb=HEAD;f=tor-spec.txt">
13b97478
     Tor protocol</a> requires encrypted relay-to-relay connections, not
     even a misbehaving relay can see the entire path of any Tor user.
ff62bd3e
     </p>
     <p>
13b97478
     While Tor relays are run by volunteers and checked periodically for
     suspicious behavior, many open proxies that can be found with a search
     engine are compromised machines, misconfigured private proxies
     not intended for public use, or honeypots set up to exploit users.
ff62bd3e
     </p>
2b63e88f
 
ff62bd3e
     <hr>
2b63e88f
 
ff62bd3e
 
f549ee31
 <a id="AttacksOnOnionRouting"></a>
13b97478
     <h3><a class="anchor" href="#AttacksOnOnionRouting">What attacks remain
f30e672d
     against onion routing?</a></h3>
91d870fd
     <p>
13b97478
 As mentioned above, it is possible for an observer who can view both you and
 either the destination website or your Tor exit node to correlate timings of
 your traffic as it enters the Tor network and also as it exits. Tor does not
f30e672d
 defend against such a threat model.
91d870fd
     </p>
     <p>
13b97478
 In a more limited sense, note that if a censor or law enforcement agency has
 the ability to obtain specific observation of parts of the network, it is
 possible for them to verify a suspicion that you talk regularly to your friend
 by observing traffic at both ends and correlating the timing of only that
 traffic. Again, this is only useful to verify that parties already suspected
 of communicating with one another are doing so. In most countries, the
 suspicion required to obtain a warrant already carries more weight than
f30e672d
 timing correlation would provide.
91d870fd
     </p>
     <p>
13b97478
 Furthermore, since Tor reuses circuits for multiple TCP connections, it is
 possible to associate non anonymous and anonymous traffic at a given exit
 node, so be careful about what applications you run concurrently over Tor.
 Perhaps even run separate Tor clients for these applications.
91d870fd
     </p>
 
     <hr>
 
5bdf9aee
     <a id="LearnMoreAboutAnonymity"></a>
13b97478
     <h3><a class="anchor" href="#LearnMoreAboutAnonymity">Where can I
5bdf9aee
     learn more about anonymity?</a></h3>
 
     <p>
     <a href="http://freehaven.net/anonbib/topic.html#Anonymous_20communication">Read these papers</a> (especially the ones in boxes) to get up to speed on anonymous communication systems.
     </p>
 
     <hr>
6f107e8d
 
     <a id="AlternateDesigns"></a>
f87eea1a
     <h2><a class="anchor" href="#AlternateDesigns">Alternate designs:</a></h2>
6f107e8d
 
2a9aaa80
     <a id="EverybodyARelay"></a>
37855015
     <h3><a class="anchor" href="#EverybodyARelay">You should make every
 Tor user be a relay.</a></h3>
0b68c29c
 
2a9aaa80
     <p>
     Requiring every Tor user to be a relay would help with scaling the
336a322c
     network to handle all our users, and <a
6d9ff1cf
     href="#BetterAnonymity">running a Tor
37855015
     relay may help your anonymity</a>. However, many Tor users cannot be
 good
     relays &mdash; for example, some Tor clients operate from behind
 restrictive
     firewalls, connect via modem, or otherwise aren't in a position
 where they
2a9aaa80
     can relay traffic. Providing service to these clients is a critical
37855015
     part of providing effective anonymity for everyone, since many Tor
 users
     are subject to these or similar constraints and including these
 clients
2a9aaa80
     increases the size of the anonymity set.
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     That said, we do want to encourage Tor users to run relays, so what
 we
     really want to do is simplify the process of setting up and
 maintaining
     a relay. We've made a lot of progress with easy configuration in the
 past
c261c7ec
     few years:
     Tor is good at automatically detecting whether it's
37855015
 reachable and
2a9aaa80
     how much bandwidth it can offer.
     </p>
0b68c29c
 
2a9aaa80
     <p>
37855015
     There are five steps we need to address before we can do this
 though:
2a9aaa80
     </p>
0b68c29c
 
2a9aaa80
     <p>
     First, we need to make Tor stable as a relay on all common
     operating systems. The main remaining platform is Windows,
13b97478
     and we're mostly there. See Section 4.1 of <a
f30e672d
     href="https://www.torproject.org/press/2008-12-19-roadmap-press-release"
37855015
 >our
2a9aaa80
     development roadmap</a>.
     </p>
0b68c29c
 
2a9aaa80
     <p>
     Second, we still need to get better at automatically estimating
     the right amount of bandwidth to allow. See item #7 on the
37855015
     <a href="<page getinvolved/volunteer>#Research">research section of
 the
2a9aaa80
     volunteer page</a>: "Tor doesn't work very well when relays
     have asymmetric bandwidth (e.g. cable or DSL)". It might be that <a
6090d0c4
     href="<page docs/faq>#TransportIPnotTCP">switching
37855015
     to UDP transport</a> is the simplest answer here &mdash; which alas
 is
2a9aaa80
     not a very simple answer at all.
     </p>
0b68c29c
 
2a9aaa80
     <p>
     Third, we need to work on scalability, both of the network (how to
     stop requiring that all Tor relays be able to connect to all Tor
     relays) and of the directory (how to stop requiring that all Tor
     users know about all Tor relays). Changes like this can have large
     impact on potential and actual anonymity. See Section 5 of the <a
     href="<svnprojects>design-paper/challenges.pdf">Challenges</a> paper
     for details. Again, UDP transport would help here.
     </p>
0b68c29c
 
2a9aaa80
     <p>
     Fourth, we need to better understand the risks from
     letting the attacker send traffic through your relay while
     you're also initiating your own anonymized traffic. <a
     href="http://freehaven.net/anonbib/#back01">Three</a> <a
     href="http://freehaven.net/anonbib/#clog-the-queue">different</a>
     <a href="http://freehaven.net/anonbib/#torta05">research</a> papers
     describe ways to identify the relays in a circuit by running traffic
37855015
     through candidate relays and looking for dips in the traffic while
 the
     circuit is active. These clogging attacks are not that scary in the
 Tor
     context so long as relays are never clients too. But if we're trying
 to
     encourage more clients to turn on relay functionality too (whether
 as
     <a href="<page docs/bridges>">bridge relays</a> or as normal
 relays), then
     we need to understand this threat better and learn how to mitigate
 it.
     </p>
 
     <p>
     Fifth, we might need some sort of incentive scheme to encourage
 people
     to relay traffic for others, and/or to become exit nodes. Here are
 our
89634fa0
     <a href="<blog>two-incentive-designs-tor">current
2a9aaa80
     thoughts on Tor incentives</a>.
     </p>
0b68c29c
 
2a9aaa80
     <p>
     Please help on all of these!
     </p>
0b68c29c
 
bfbe8320
 <hr>
 
 <a id="TransportIPnotTCP"></a>
37855015
 <h3><a class="anchor" href="#TransportIPnotTCP">You should transport all
 IP packets, not just TCP packets.</a></h3>
bfbe8320
 
 <p>
6090d0c4
 This would be handy, because it would make Tor better able to handle
 new protocols like VoIP, it could solve the whole need to socksify
 applications, and it would solve the fact that exit relays need to
37855015
 allocate a lot of file descriptors to hold open all the exit
 connections.
bfbe8320
 </p>
 
 <p>
6090d0c4
 We're heading in this direction: see <a
 href="https://trac.torproject.org/projects/tor/ticket/1855">this trac
 ticket</a> for directions we should investigate. Some of the hard
 problems are:
bfbe8320
 </p>
 
19c85a70
 <ol>
6090d0c4
 <li>IP packets reveal OS characteristics. We would still need to do
 IP-level packet normalization, to stop things like TCP fingerprinting
 attacks. Given the diversity and complexity of TCP stacks, along with <a
6d9ff1cf
 href="#RemotePhysicalDeviceFingerprinting">device
6090d0c4
 fingerprinting attacks</a>, it looks like our best bet is shipping our
 own user-space TCP stack.
bfbe8320
 </li>
6090d0c4
 <li>Application-level streams still need scrubbing. We will still need
 user-side applications like Torbutton. So it won't become just a matter
 of capturing packets and anonymizing them at the IP layer.
bfbe8320
 </li>
 <li>Certain protocols will still leak information. For example, we must
 rewrite DNS requests so they are delivered to an unlinkable DNS server
 rather than the DNS server at a user's ISP; thus, we must understand
 the protocols we are transporting.
 </li>
 <li><a
37855015
 href="http://crypto.stanford.edu/~nagendra/projects/dtls/dtls.html">DTLS
 </a>
6090d0c4
 (datagram TLS) basically has no users, and IPsec sure is big. Once we've
 picked a transport mechanism, we need to design a new end-to-end Tor
 protocol for avoiding tagging attacks and other potential anonymity and
 integrity issues now that we allow drops, resends, et cetera.
bfbe8320
 </li>
 <li>Exit policies for arbitrary IP packets mean building a secure
 IDS. Our node operators tell us that exit policies are one of the main
 reasons they're willing to run Tor. Adding an Intrusion Detection System
 to handle exit policies would increase the security complexity of Tor,
37855015
 and would likely not work anyway, as evidenced by the entire field of
 IDS
bfbe8320
 and counter-IDS papers. Many potential abuse issues are resolved by the
 fact that Tor only transports valid TCP streams (as opposed to arbitrary
 IP including malformed packets and IP floods), so exit policies become
 even <i>more</i> important as we become able to transport IP packets. We
 also need to compactly describe exit policies in the Tor directory,
37855015
 so clients can predict which nodes will allow their packets to exit
 &mdash;
bfbe8320
 and clients need to predict all the packets they will want to send in
 a session before picking their exit node!
 </li>
6090d0c4
 <li>The Tor-internal name spaces would need to be redesigned. We support
32316cbf
 onion service ".onion" addresses by intercepting the addresses when
6090d0c4
 they are passed to the Tor client. Doing so at the IP level will require
 a more complex interface between Tor and the local DNS resolver.
bfbe8320
 </li>
6bba3d6a
 </ol>
 
 <hr>
 
 <a id="HideExits"></a>
 <h3><a class="anchor" href="#HideExits">You should hide the list of Tor
 relays, so people can't block the exits.</a></h3>
 
 <p>
 There are a few reasons we don't:
 </p>
 
 <ol>
 <li>We can't help but make the information available, since Tor clients
 need to use it to pick their paths. So if the "blockers" want it, they
 can get it anyway. Further, even if we didn't tell clients about the
 list of relays directly, somebody could still make a lot of connections
 through Tor to a test site and build a list of the addresses they see.
 </li>
 
37855015
 <li>If people want to block us, we believe that they should be allowed
 to
6bba3d6a
 do so.  Obviously, we would prefer for everybody to allow Tor users to
 connect to them, but people have the right to decide who their services
37855015
 should allow connections from, and if they want to block anonymous
 users,
6bba3d6a
 they can.
 </li>
 
 <li>Being blockable also has tactical advantages: it may be a persuasive
3b1aa0cd
 response to website maintainers who feel threatened by Tor. Giving them
 the option may inspire them to <a href="<page docs/faq-abuse>#Bans">stop
 and think</a> about whether they really want to eliminate private access
 to their system, and if not, what other options they might have. The
 time they might otherwise have spent blocking Tor, they may instead
 spend rethinking their overall approach to privacy and anonymity.
6bba3d6a
 </li>
bfbe8320
 </ol>
 
ed5ac546
     <hr>
0b68c29c
 
91d870fd
 <a id="ChoosePathLength"></a>
13b97478
 <h3><a class="anchor" href="#ChoosePathLength">You should let people choose
f30e672d
 their path length.</a></h3>
91d870fd
 <p>
13b97478
  Right now the path length is hard-coded at 3 plus the number of nodes in
  your path that are sensitive. That is, in normal cases it's 3, but for
32316cbf
  example if you're accessing an onion service or a ".exit" address it could be 4.
91d870fd
 </p>
 <p>
794e34f2
  We don't want to encourage people to use paths longer than this &mdash; it
13b97478
  increases load on the network without (as far as we can tell) providing
88bf76d0
  any more security. Remember that
 <a href="https://svn.torproject.org/svn/projects/design-paper/tor-design.html#subsec:threat-model">the
 best way to attack Tor is to attack the endpoints and ignore the middle
ddb28373
  of the path</a>.
794e34f2
  Also, using paths longer than 3 could harm anonymity, first because
  it makes <a href="http://freehaven.net/anonbib/#ccs07-doa">"denial of
  security"</a> attacks easier, and second because it could act as an
  identifier if only a few people do it ("Oh, there's that person who
  changed her path length again").
91d870fd
 </p>
 <p>
13b97478
  And we don't want to encourage people to use paths of length 1 either.
794e34f2
  Currently there is no reason to suspect that investigating a single
  relay will yield user-destination pairs, but if many people are using
13b97478
  only a single hop, we make it more likely that attackers will seize or
794e34f2
  break into relays in hopes of tracing users.
91d870fd
 </p>
 <p>
13b97478
  Now, there is a good argument for making the number of hops in a path
  unpredictable. For example, somebody who happens to control the last
  two hops in your path still doesn't know who you are, but they know
  for sure which entry node you used. Choosing path length from, say,
  a geometric distribution will turn this into a statistical attack,
  which seems to be an improvement. On the other hand, a longer path
794e34f2
  length is bad for usability, and without further protections it seems
  likely that an adversary can estimate your path length anyway. We're
  not sure of the right trade-offs here. Please write a research paper
  that tells us what to do.
91d870fd
 </p>
 
     <hr>
 
 <a id="SplitEachConnection"></a>
13b97478
     <h3><a class="anchor" href="#SplitEachConnection">You should split
f30e672d
     each connection over many paths.</a></h3>
91d870fd
 
     <p>
13b97478
  We don't currently think this is a good idea. You see, the attacks we're
  worried about are at the endpoints: the adversary watches Alice (or the
  first hop in the path) and Bob (or the last hop in the path) and learns
f30e672d
  that they are communicating.
91d870fd
     </p>
     <p>
13b97478
 If we make the assumption that timing attacks work well on even a few packets
 end-to-end, then having *more* possible ways for the adversary to observe the
f30e672d
 connection seems to hurt anonymity, not help it.
91d870fd
     </p>
     <p>
13b97478
 Now, it's possible that we could make ourselves more resistant to end-to-end
 attacks with a little bit of padding and by making each circuit send and
 receive a fixed number of cells. This approach is more well-understood in
 the context of high-latency systems. See e.g.
f30e672d
 <a href="http://freehaven.net/anonbib/#pet05-serjantov">
13b97478
 Message Splitting Against the Partial Adversary by Andrei Serjantov and
f30e672d
 Steven J. Murdoch</a>.
91d870fd
     </p>
     <p>
13b97478
 But since we don't currently understand what network and padding
 parameters, if any, could provide increased end-to-end security, our
 current strategy is to minimize the number of places that the adversary
f30e672d
 could possibly see.
91d870fd
     </p>
 
     <hr>
 
34bb6a9b
     <a id="MigrateApplicationStreamsAcrossCircuits"></a>
13b97478
     <h3><a class="anchor" href="#MigrateApplicationStreamsAcrossCircuits">You
34bb6a9b
     should migrate application streams across circuits.</a></h3>
13b97478
     <p>This would be great for two reasons. First, if a circuit breaks, we
     would be able to shift its active streams onto a new circuit, so they
     don't have to break. Second, it is conceivable that we could get
     increased security against certain attacks by migrating streams
     periodically, since leaving a stream on a given circuit for many hours
34bb6a9b
     might make it more vulnerable to certain adversaries.</p>
 
13b97478
     <p>There are two problems though. First, Tor would need a much more
     bulky protocol. Right now each end of the Tor circuit just sends the
     cells, and lets TCP provide the in-order guaranteed delivery. If we
     can move streams across circuits, though, we would need to add queues
     at each end of the circuit, add sequence numbers so we can send and
     receive acknowledgements for cells, and so forth. These changes would
     increase the complexity of the Tor protocol considerably. Which leads
     to the second problem: if the exit node goes away, there's nothing we
     can do to save the TCP connection. Circuits are typically three hops
34bb6a9b
     long, so in about a third of the cases we just lose.</p>
 
13b97478
     <p>Thus our current answer is that since we can only improve things by
     at best 2/3, it's not worth the added code and complexity. If somebody
     writes a protocol specification for it and it turns out to be pretty
34bb6a9b
     simple, we'd love to add it.</p>
 
13b97478
     <p>But there are still some approaches we can take to improve the
     reliability of streams. The main approach we have now is to specify
     that streams using certain application ports prefer circuits to be
     made up of stable nodes. These ports are specified in the "LongLivedPorts"
efb55037
     <a href="#torrc">torrc</a> option, and they default to</p>
     <pre>21,22,706,1863,5050,5190,5222,5223,6667,6697,8300</pre>
13b97478
     <p>The definition of "stable" is an open research question, since we
     can only guess future stability based on past performance. Right now
     we judge that a node is stable if it advertises that it has been up
     for more than a day. Down the road we plan to refine this so it takes into
34bb6a9b
     account the average stability of the other nodes in the Tor network.</p>
 
     <hr>
 
     <a id="LetTheNetworkPickThePath"></a>
13b97478
     <h3><a class="anchor" href="#LetTheNetworkPickThePath">You should
34bb6a9b
     let the network pick the path, not the client</a></h3>
 
13b97478
     <p>No. You cannot trust the network to pick the path for relays could
     collude and route you through their colluding friends. This would give
34bb6a9b
     an adversary the ability to watch all of your traffic end to end.</p>
 
     <hr>
 
91d870fd
     <a id="UnallocatedNetBlocks"></a>
13b97478
     <h3><a class="anchor" href="#UnallocatedNetBlocks">Your default exit
f30e672d
     policy should block unallocated net blocks too.</a></h3>
91d870fd
 
     <p>
13b97478
  No, it shouldn't. The default exit policy blocks certain private net blocks,
  like 10.0.0.0/8, because they might actively be in use by Tor relays and we
  don't want to cause any surprises by bridging to internal networks. Some
  overzealous firewall configs suggest that you also block all the parts of
  the Internet that IANA has not currently allocated. First, this turns into
  a problem for them when those addresses *are* allocated. Second, why should
f30e672d
  we default-reject something that might one day be useful?
91d870fd
     </p>
     <p>
13b97478
 Tor's default exit policy is chosen to be flexible and useful in the future:
 we allow everything except the specific addresses and ports that we
 anticipate will lead to problems.
91d870fd
     </p>
 
     <hr>
 
     <a id="BlockWebsites"></a>
13b97478
     <h3><a class="anchor" href="#BlockWebsites">Exit policies should be
f30e672d
     able to block websites, not just IP addresses.</a></h3>
91d870fd
 
     <p>
13b97478
  It would be nice to let relay operators say things like "reject
  www.slashdot.org" in their exit policies, rather than requiring
  them to learn all the IP address space that could be covered by the site
f30e672d
  (and then also blocking other sites at those IP addresses).
91d870fd
     </p>
     <p>
13b97478
 There are two problems, though. First, users could still get around these
 blocks. For example, they could request the IP address rather than the
 hostname when they exit from the Tor network. This means operators would
f30e672d
 still need to learn all the IP addresses for the destinations in question.
91d870fd
     </p>
     <p>
13b97478
 The second problem is that it would allow remote attackers to censor
 arbitrary sites. For example, if a Tor operator blocks www1.slashdot.org,
 and then some attacker poisons the Tor relay's DNS or otherwise changes
 that hostname to resolve to the IP address for a major news site, then
 suddenly that Tor relay is blocking the news site.
91d870fd
     </p>
 
     <hr>
 
     <a id="BlockContent"></a>
13b97478
     <h3><a class="anchor" href="#BlockContent">You should change Tor to
f30e672d
     prevent users from posting certain content.</a></h3>
91d870fd
 
13b97478
     <p> Tor only transports data, it does not inspect the contents of the
     connections which are sent over it. In general it's a very hard problem
     for a computer to determine what is objectionable content with good true
     positive/false positive rates and we are not interested in addressing
f30e672d
     this problem.
91d870fd
     </p>
     <p>
13b97478
 Further, and more importantly, which definition of "certain content" could we
 use? Every choice would lead to a quagmire of conflicting personal morals. The
 only solution is to have no opinion.
91d870fd
     </p>
 
     <hr>
 
ae26aad0
     <a id="SendPadding"></a>
13b97478
     <h3><a class="anchor" href="#SendPadding">You should send padding so it's
ae26aad0
     more secure.</a></h3>
2b63e88f
 
ae26aad0
     <p>
13b97478
     Like all anonymous communication networks that are fast enough for web
     browsing, Tor is vulnerable to statistical "traffic confirmation"
     attacks, where the adversary watches traffic at both ends of a circuit
     and confirms his guess that they're communicating. It would be really
     nice if we could use cover traffic to confuse this attack. But there
ae26aad0
     are three problems here:
     </p>
2b63e88f
 
ae26aad0
     <ul>
     <li>
13b97478
     Cover traffic is really expensive. And *every* user needs to be doing
     it. This adds up to a lot of extra bandwidth cost for our volunteer
ae26aad0
     operators, and they're already pushed to the limit.
     </li>
     <li>
13b97478
     You'd need to always be sending traffic, meaning you'd need to always
     be online. Otherwise, you'd need to be sending end-to-end cover
     traffic -- not just to the first hop, but all the way to your final
     destination -- to prevent the adversary from correlating presence of
     traffic at the destination to times when you're online. What does it
     mean to send cover traffic to -- and from -- a web server? That is not
     supported in most protocols.
ae26aad0
     </li>
     <li>
13b97478
     Even if you *could* send full end-to-end padding between all users and
     all destinations all the time, you're *still* vulnerable to active
     attacks that block the padding for a short time at one end and look for
     patterns later in the path.
ae26aad0
     </li>
     </ul>
2b63e88f
 
ae26aad0
     <p>
13b97478
     In short, for a system like Tor that aims to be fast, we don't see any
     use for padding, and it would definitely be a serious usability problem.
     We hope that one day somebody will prove us wrong, but we are not
     optimistic.
ae26aad0
     </p>
2b63e88f
 
ae26aad0
     <hr>
 
     <a id="Steganography"></a>
13b97478
     <h3><a class="anchor" href="#Steganography">You should use steganography to hide Tor
ae26aad0
     traffic.</a></h3>
2b63e88f
 
ae26aad0
     <p>
13b97478
     Many people suggest that we should use steganography to make it hard
     to notice Tor connections on the Internet. There are a few problems
     with this idea though:
ae26aad0
     </p>
2b63e88f
 
ae26aad0
     <p>
13b97478
     First, in the current network topology, the Tor relays list <a
     href="#HideExits">is public</a> and can be accessed by attackers.
     An attacker who wants to detect or block anonymous users could
     always just notice <b>any connection</b> to or from a Tor relay's
     IP address.
ae26aad0
     </p>
2b63e88f
 
ae26aad0
     <hr>
 
6f107e8d
     <a id="Abuse"></a>
f87eea1a
     <h2><a class="anchor" href="#Abuse">Abuse:</a></h2>
6f107e8d
 
2a9aaa80
     <a id="Criminals"></a>
37855015
     <h3><a class="anchor" href="#Criminals">Doesn't Tor enable criminals
 to do bad things?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
     For the answer to this question and others, please see our <a
     href="<page docs/faq-abuse>">Tor Abuse FAQ</a>.
     </p>
0b68c29c
 
ed5ac546
     <hr>
0b68c29c
 
2a9aaa80
     <a id="RespondISP"></a>
37855015
     <h3><a class="anchor" href="#RespondISP">How do I respond to my ISP
 about my exit relay?</a></h3>
0b68c29c
 
2a9aaa80
     <p>
     A collection of templates for successfully responding to ISPs is <a
81720f6d
     href="<wiki>doc/TorAbuseTemplates">collected
2a9aaa80
     here</a>.
     </p>
0b68c29c
 
ed5ac546
     <hr>
7841030e
 
ff62bd3e
    <a id="HelpPoliceOrLawyers"></a>
    <h3><a class="anchor" href="#HelpPoliceOrLawyers">I have questions about
    a Tor IP address for a legal case.</a></h3>
13b97478
 
ff62bd3e
    <p>
13b97478
    Please read the <a
    href="https://www.torproject.org/eff/tor-legal-faq">legal FAQ written
    by EFF lawyers</a>. There's a growing <a
    href="https://blog.torproject.org/blog/start-tor-legal-support-directory">legal
ff62bd3e
    directory</a> of people who may be able to help you.
    </p>
13b97478
 
ff62bd3e
    <p>
13b97478
    If you need to check if a certain IP address was acting as a Tor exit
    node at a certain date and time, you can use the <a
ff62bd3e
    href="https://exonerator.torproject.org/">ExoneraTor tool</a> to query the
    historic Tor relay lists and get an answer.
    </p>
13b97478
 
ff62bd3e
    <hr>
13b97478
 
2a9aaa80
   </div>
   <!-- END MAINCOL -->
   <div id = "sidecol">
 #include "side.wmi"
 #include "info.wmi"
   </div>
   <!-- END SIDECOL -->
 </div>
 <!-- END CONTENT -->
0b68c29c
 #include <foot.wmi>
11ab6cce