| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690 | \documentclass{article}\usepackage{url}\newenvironment{tightlist}{\begin{list}{$\bullet$}{  \setlength{\itemsep}{0mm}    \setlength{\parsep}{0mm}    %  \setlength{\labelsep}{0mm}    %  \setlength{\labelwidth}{0mm}    %  \setlength{\topsep}{0mm}    }}{\end{list}}\newcommand{\tmp}[1]{{\bf #1} [......] \\}\newcommand{\plan}[1]{ {\bf (#1)}}\begin{document}\title{Tor Development Roadmap: Wishlist for Nov 2006--Dec 2007}\author{Roger Dingledine \and Nick Mathewson \and Shava Nerad}\maketitle\pagestyle{plain}% TO DO:%   add cites%   add time estimates\section{Introduction}%Hi, Roger!  Hi, Shava.  This paragraph should get deleted soon.  Right now,%this document goes into about as much detail as I'd like to go into for a%technical audience, since that's the audience I know best.  It doesn't have%time estimates everywhere.  It isn't well prioritized, and it doesn't%distinguish well between things that need lots of research and things that%don't.  The breakdowns don't all make sense.  There are lots of things where%I don't make it clear how they fit into larger goals, and lots of larger%goals that don't break down into little things. It isn't all stuff we can do%for sure, and it isn't even all stuff we can do for sure in 2007.  The%tmp\{\} macro indicates stuff I haven't said enough about.  That said, here%plangoes...Tor (the software) and Tor (the overall software/network/support/documentsuite) are now experiencing all the crises of success.  Over the next year,we're probably going to grow more in terms of users, developers, and fundingthan before.  This gives us the opportunity to perform long-neglectedmaintenance tasks.\section{Code and design infrastructure}\subsection{Protocol revision}To maintain backward compatibility, we've postponed major protocolchanges and redesigns for a long time.  Because of this, there are a numberof sensible revisions we've been putting off until we could deploy several ofthem at once.  To do each of these, we first need to discuss designalternatives with other cryptographers and outside collaborators tomake sure that our choices are secure.First of all, our protocol needs better {\bf versioning support} so that wecan make backward-incompatible changes to our core protocol.  There aredifficult anonymity issues here, since many naive designs would make it easyto tell clients apart (and then track them) based on their supported versions.With protocol versioning support would come the ability to {\bf future-proof  our ciphersuites}.  For example, not only our OR protocol, but also ourdirectory protocol, is pretty firmly tied to the SHA-1 hash function, whichthough not yet known to be insecure for our purposes, has begun to showits age.  We shouldremove assumptions throughout our design based on the assumption that publickeys, secret keys, or digests will remain any particular size indefinitely.Our OR {\bf authentication protocol}, though provablysecure\cite{tap:pet2006}, relies more on particular aspects of RSA and ourimplementation thereof than we had initially believed.  To future-proofagainst changes, we should replace it with a less delicate approach.\plan{For all the above: 2 person-months to specify, spread over several  months with time for interaction with external participants.  One  person-month to implement.  Start specifying in early 2007.}We might design a {\bf stream migration} feature so that streams tunneledover Tor could be more resilient to dropped connections and changed IPs.\plan{Not in 2007.}A new protocol could support {\bf multiple cell sizes}.  Right now, all datapasses through the Tor network divided into 512-byte cells.  This isefficient for high-bandwidth protocols, but inefficient for protocolslike SSH or AIM that send information in small chunks.  Of course, we need toinvestigate the extent to which multiple sizes could make it easier for anadversary to fingerprint a traffic pattern. \plan{Not in 2007.}As a part of our design, we should investigate possible {\bf cipher modes}other than counter mode.  For example, a mode with built-in integritychecking, error propagation, and random access could simplify our protocolsignificantly.  Sadly, many of these are patented and unavailable for us.\plan{Not in 2007.}\subsection{Scalability}\subsubsection{Improved directory efficiency}Right now, clients download a statement of the {\bf network status} made byeach directory authority.  We could reduce network bandwidth significantly byhaving the authorities jointly sign a statement reflecting their vote on thecurrent network status.  This would save clients up to 160K per hour, andmake their view of the network more uniform.  Of course, we'd need to makesure the voting process was secure and resilient to failures in thenetwork.\plan{Must do; specify in 2006. 2 weeks to specify, 3-4 weeks to  implement.}We should {\bf shorten router descriptors}, since the current format includesa great deal of information that's only of interest to the directoryauthorities, and not of interest to clients.  We can do this by having eachrouter upload a short-form and a long-form signed descriptor, and havingclients download only the short form.  Even a naive version of this wouldsave about 40\% of the bandwidth currently spent by clients downloadingdescriptors.\plan{Must do; specify in 2006. 3-4 weeks.}We should {\bf have routers upload their descriptors even less often}, sothat clients do not need to download replacements every 18 hours whether anyinformation has changed or not.  (As of Tor 0.1.2.3-alpha, clients toleraterouters that don't upload often, but routers still upload at least every 18hours to support older clients.) \plan{Must do, but not until 0.1.1.x isdeprecated in mid 2007. 1 week.}\subsubsection{Non-clique topology}Our current network design achieves a certain amount of its anonymity bymaking clients act like each other through the simple expedient of makingsure that all clients know all servers, and that any server can talk to anyother server.  But as the number of servers increases to serve anever-greater number of clients, these assumptions become impractical.At worst, if these scalability issues become troubling before a solution isfound, we can design and build a solution to {\bf split the network intomultiple slices} until a better solution comes along.  This is not ideal,since rather than looking like all other users from a point of view of pathselection, users would ``only'' look like 200,000--300,000 otherusers.\plan{Not unless needed.}We are in the process of designing {\bf improved schemes for network  scalability}.  Some approaches focus on limiting what an adversary can knowabout what a user knows; others focus on reducing the extent to which anadversary can exploit this knowledge.  These are currently in their infancy,and will probably not be needed in 2007, but they must be designed in 2007 ifthey are to be deployed in 2008.\plan{Design in 2007; unknown difficulty.  Write a paper.}\subsubsection{Relay incentives}To support more users on the network, we need to get more servers.  So far,we've relied on volunteerism to attract server operators, and so far it'sserved us well.  But in the long run, we need to {\bf design incentives for  users to run servers} and relay traffic for others.  Most obviously, wecould try to build the network so that servers offered improved service forother servers, but we would need to do so without weakening anonymity andmaking it obvious which connections originate from users running servers.  Wehave some preliminary designs~\cite{incentives-txt,tor-challenges},but need to performsome more research to make sure they would be safe and effective.\plan{Write  a draft paper; 2 person-months.}\subsection{Portability}Our {\bf Windows implementation}, though much improved, continues to lagbehind Unix and Mac OS X, especially when running as a server.  We hope tomerge promising patches from Mike Chiussi to address this point, and bringWindows performance on par with other platforms.\plan{Do in 2007; 1.5 months  to integrate not counting Mike's work.}We should have {\bf better support for portable devices}, including modes ofoperation that require less RAM, and that write to disk less frequently (toavoid wearing out flash RAM).\plan{Optional; 2 weeks.}We should {\bf stop using socketpair on Windows}; instead, we can usein-memory structures to communicate between cpuworkers and the main thread,and between connections.\plan{Optional; 1 week.}\subsection{Performance: resource usage}We've been working on {\bf using less RAM}, especially on servers.  This haspaid off a lot for directory caches in the 0.1.2, which in some cases areusing 90\% less memory than they used to require.  But we can do better,especially in the area around our buffer management algorithms, by using anapproach more like the BSD and Linux kernels use instead of our current ringbuffer approach.  (For OR connections, we can just use queues of cell-sizedchunks produced with a specialized allocator.)  This could potentially savearound 25 to 50\% of the memory currently allocated for network buffers, andmake Tor a more attractive proposition for restricted-memory environmentslike old computers, mobile devices, and the like.\plan{Do in 2007; 2-3 weeks  plus one week measurement.}We should improve our {\bf bandwidth limiting}.  The current system has beencrucial in making users willing to run servers: nobody is willing to run aserver if it might use an unbounded amount of bandwidth, especially if theyare charged for their usage.  We can make our system better by letting usersconfigure bandwidth limits independently for their own traffic and trafficrelayed for others; and by adding write limits for users running directoryservers.\plan{Do in 2006; 2-3 weeks.}On many hosts, sockets are still in short supply, and will be until we canmigrate our protocol to UDP.  We can {\bf use fewer sockets} by making ourself-to-self connections happen internally to the code rather than involvingthe operating system's socket implementation.\plan{Optional; 1 week.}\subsection{Performance: network usage}We know too little about how well our current pathselection algorithms actually spread traffic around the network in practice.We should {\bf research the efficacy of our traffic allocation} and eitherassure ourselves that it is close enough to optimal as to need no improvement(unlikely) or {\bf identify ways to improve network usage}, and get moreusers' traffic delivered faster.  Performing this research will requirecareful thought about anonymity implications.We should also {\bf examine the efficacy of our congestion control  algorithm}, and see whether we can improve client performance in thepresence of a congested network through dynamic `sendme' window sizes orother means.  This will have anonymity implications too if we aren't careful.\plan{For both of the above: research, design and write  a measurement tool in 2007: 1 month.  See if we can interest a graduate  student.}We should work on making Tor's cell-based protocol  perform better onnetworks with low bandwidthand high packet loss.\plan{Do in 2007 if we're funded to do it; 4-6 weeks.}\subsection{Performance scenario: one Tor client, many users}We should {\bf improve Tor's performance when a single Tor handles many  clients}.  Many organizations want to manage a single Tor client on theirfirewall for many users, rather than having each user install a separateTor client.  We haven't optimized for this scenario, and it is likely thatthere are some code paths in the current implementation that becomeinefficient when a single Tor is servicing hundreds or thousands of clientconnections.  (Additionally, it is likely that such clients have interestinganonymity requirements the we should investigate.)  We should profile Torunder appropriate loads, identify bottlenecks, and fix them.\plan{Do in 2007  if we're funded to do it; 4-8 weeks.}\subsection{Tor servers on asymmetric bandwidth}Tor should work better on servers that have asymmetric connections like cableor DSL.  Because Tor has separate TCP connections between eachhop, if the incoming bytes are arriving just fine and the outgoing bytes areall getting dropped on the floor, the TCP push-back mechanisms don't reallytransmit this information back to the incoming streams.\plan{Do in 2007 since  related to bandwidth limiting.  3-4 weeks.}\subsection{Running Tor as both client and server}Many performance tradeoffs and balances that might need more attention.We first need to track and fix whatever bottlenecks emerge; but we alsoneed to invent good algorithms for prioritizing the client's trafficwithout starving the server's traffic too much.\plan{No idea; tryprofiling and improving things in 2007.}\subsection{Protocol redesign for UDP}Tor has relayed only TCP traffic since its first versions, and has usedTLS-over-TCP to do so.  This approach has proved reliable and flexible, butin the long term we will need to allow UDP traffic on the network, and switchsome or all of the network to using a UDP transport.  {\bf Supporting UDP  traffic} will make Tor more suitable for protocols that require UDP, suchas many VOIP protocols.  {\bf Using a UDP transport} could greatly reduceresource limitations on servers, and make the network far less interruptibleby lossy connections.  Either of these protocol changes would require a greatdeal of design work, however.  We hope to be able to enlist the aid of a fewtalented graduate students to assist with the initial design andspecification, but the actual implementation will require significant testingof different reliable transport approaches.\plan{Maybe do a design in 2007 ifwe find an interested academic.  Ian or Ben L might be good partners here.}\section{Blocking resistance}\subsection{Design for blocking resistance}We have written a design document explaining our general approach to blockingresistance.  We should workshop it with other experts in the field to gettheir ideas about how we can improve Tor's efficacy as an anti-censorshiptool.\subsection{Implementation: client-side and bridges-side}Our anticensorship design calls for some nodes to act as ``bridges''that are outside a national firewall, and others inside the firewall toact as pure clients.  This part of the design is quite clear-cut; we'reprobably ready to begin implementing it.  To {\bf implement bridges}, weneed to have servers publish themselves as limited-availability relaysto a special bridge authority if they judge they'd make good servers.We will also need to help provide documentation for port forwarding,and an easy configuration tool for running as a bridge.To {\bf implement clients}, we need to provide a flexible interface tolearn about bridges and to act on knowledge of bridges. We also needto teach them how to know to use bridges as their first hop, and how tofetch directory information from both classes of directory authority.Clients also need to {\bf use the encrypted directory variant} added in Tor0.1.2.3-alpha.  This will let them retrieve directory information over Toronce they've got their initial bridges. We may want to get the rest of theTor user base to begin using this encrypted directory variant too, toprovide cover.Bridges will want to be able to {\bf listen on multiple addresses and ports}if they can, to give the adversary more ports to block.\subsection{Research: anonymity implications from becoming a bridge}\subsection{Implementation: bridge authority}The design here is also reasonably clear-cut: we need to run somedirectory authorities with a slightly modified protocol that doesn't leakthe entire list of bridges. Thus users can learn up-to-date informationfor bridges they already know about, but they can't learn about arbitrarynew bridges.\subsection{Normalizing the Tor protocol on the wire}Additionally, we should {\bf resist content-based filters}.  Though anadversary can't see what users are saying, some aspects of our protocol areeasy to fingerprint {\em as} Tor.  We should correct this where possible.Look like Firefox; or look like nothing?Future research: investigate timing similarities with other protocols.\subsection{Access control for bridges}Design/impl: password-protecting bridges, in light of above.And/or more general access control.\subsection{Research: scanning-resistance}\subsection{Research/Design/Impl: how users discover bridges}Our design anticipates an arms race between discovery methods and censors.We need to begin the infrastructure on our side quickly, preferably in aflexible language like Python, so we can adapt quickly to censorship.phase one: personal bridgesphase two: families of personal bridgesphase three: more structured social networkphase four: bag of tricksResearch: phase five...Integration with Psiphon, etc?\subsection{Document best practices for users}Document best practices for various activities common amongblocked users (e.g. WordPress use).\subsection{Research: how to know if a bridge has been blocked?}\subsection{GeoIP maintenance, and "private" user statistics}How to know if the whole idea is working?\subsection{Research: hiding whether the user is reading or publishing?}\subsection{Research: how many bridges do you need to know to maintainreachability?}\subsection{Resisting censorship of the Tor website, docs, and mirrors}We should take some effort to consider {\bf initial distribution of Tor and  related information} in countries where the Tor website and mirrors arecensored.  (Right now, most countries that block access to Tor block only themain website and leave mirrors and the network itself untouched.)  Fallingback on word-of-mouth is always a good last resort, but we should also takesteps to make sure it's relatively easy for users to get ahold of a copy.\section{Security}\subsection{Security research projects}We should investigate approaches with some promise to help Tor resistend-to-end traffic correlation attacks.  It's an open research questionwhether (and to what extent) {\bf mixed-latency} networks, {\bf low-volume  long-distance padding}, or other approaches can resist these attacks, whichare currently some of the most effective against careful Tor users.  Weshould research these questions and perform simulations to identifyopportunities for strengthening our design without dropping performance tounacceptable levels. %Cite something\plan{Start doing this in 2007; write a paper.  8-16 weeks.}We've got some preliminary results suggesting that {\bf a topology-aware  routing algorithm}~\cite{feamster:wpes2004} could reduce Tor users'vulnerability against local or ISP-level adversaries, by ensuring that theyare never in a position to watch both ends of a connection.  We need toexamine the effects of this approach in more detail and consider side-effectson anonymity against other kinds of adversaries.  If the approach still lookspromising, we should investigate ways for clients to implement it (or anapproximation of it) without having to download routing tables for the wholeInternet. \plan{Not in 2007 unless a graduate student wants to do it.}%\tmp{defenses against end-to-end correlation}  We don't expect any to work%right now, but it would be useful to learn that one did.  Alternatively,%proving that one didn't would free up researchers in the field to go work on%other things.%% See above; I think I got this.We should research the efficacy of {\bf website fingerprinting} attacks,wherein an adversary tries to match the distinctive traffic and timingpattern of the resources constituting a given website to the traffic patternof a user's client.  These attacks work great in simulations, but inpractice we hear they don't work nearly as well.  We should get some actualnumbers to investigate the issue, and figure out what's going on.  If weresist these attacks, or can improve our design to resist them, we should.% add cites\plan{Possibly part of end-to-end correlation paper.  Otherwise, not in 2007  unless a graduate student is interested.}\subsection{Implementation security}Right now, each Tor node stores its keys unencrypted.  We should {\bf encrypt  more Tor keys} so that Tor authorities can require a startup password.  Weshould look into adding intermediary medium-term ``signing keys'' betweenidentity keys and onion keys, so that a password could be required to replacea signing key, but not to start Tor.  This would improve Tor's long-termsecurity, especially in its directory authority infrastructure.\plan{Design this  as a part of the revised ``v2.1'' directory protocol; implement it in  2007. 3-4 weeks.}We should also {\bf mark RAM that holds key material as non-swappable} sothat there is no risk of recovering key material from a hard diskcompromise.  This would require submitting patches upstream to OpenSSL, wheresupport for marking memory as sensitive is currently in a very preliminarystate.\plan{Nice to do, but not in immediate Tor scope.}There are numerous tools for identifying trouble spots in code (such asCoverity or even VS2005's code analysis tool) and we should convince somebodyto run some of them against the Tor codebase.  Ideally, we could figure out away to get our code checked periodically rather than just once.\plan{Almost  no time once we talk somebody into it.}We should try {\bf protocol fuzzing} to identify errors in ourimplementation.\plan{Not in 2007 unless we find a grad student or  undergraduate who wants to try.}Our guard nodes help prevent an attacker from being able to become a chosenclient's entry point by having each client choose a few favorite entry pointsas ``guards'' and stick to them.   We should implement a {\bf directory  guards} feature to keep adversaries from enumerating Tor users by acting asa directory cache.\plan{Do in 2007; 2 weeks.}\subsection{Detect corrupt exits and other servers}With the success of our network, we've attracted servers in many locations,operated by many kinds of people.  Unfortunately, some of these locationshave compromised or defective networks, and some of these people areuntrustworthy or incompetent.  Our current design relies on authorityadministrators to identify bad nodes and mark them as nonfunctioning.  Weshould {\bf automate the process of identifying malfunctioning nodes} asfollows:We should create a generic {\bf feedback mechanism for add-on tools} likeMike Perry's ``Snakes on a Tor'' to report failing nodes to authorities.\plan{Do in 2006; 1-2 weeks.}We should write tools to {\bf detect more kinds of innocent node failure},such as nodes whose network providers intercept SSL, nodes whose networkproviders censor popular websites, and so on.  We should also try to detect{\bf routers that snoop traffic}; we could do this by launching connectionsto throwaway accounts, and seeing which accounts get used.\plan{Do in 2007;  ask Mike Perry if he's interested.  4-6 weeks.}We should add {\bf an efficient way for authorities to mark a set of servers  as probably collaborating} though not necessarily otherwise dishonest.This happens when an administrator starts multiple routers, but doesn't markthem as belonging to the same family.\plan{Do during v2.1 directory protocol  redesign; 1-2 weeks to implement.}To avoid attacks where an adversary claims good performance in order toattract traffic, we should {\bf have authorities measure node performance}(including stability and bandwidth) themselves, and not simply believe whatthey're told.  Measuring stability can be done by tracking MTBF.  Measuringbandwidth can be tricky, since it's hard to distinguish between a server withlow capacity, and a high-capacity server with most of its capacity inuse.\plan{Do ``Stable'' in 2007; 2-3 weeks.  ``Fast'' will be harder; do it  if we can interest a grad student.}{\bf Operating a directory authority should be easier.}  We rely on authorityoperators to keep the network running well, but right now their job involvestoo much busywork and administrative overhead.  A better interface for themto use could free their time to work on exception cases rather than onadding named nodes to the network.\plan{Do in 2007; 4-5 weeks.}\subsection{Protocol security}In addition to other protocol changes discussed above,% And should we move some of them down here? -NMwe should add {\bf hooks for denial-of-service resistance}; we have somepreliminary designs, but we shouldn't postpone them until we really need them.If somebody tries a DDoS attack against the Tor network, we won't want towait for all the servers and clients to upgrade to a newversion.\plan{Research project; do this in 2007 if funded.}\section{Development infrastructure}\subsection{Build farm}We've begun to deploy a cross-platform distributed build farm of hoststhat build and test the Tor source every time it changes in our developmentrepository.We need to {\bf get more participants}, so that we can test a larger varietyof platforms.  (Previously, we've only found out when our code had broken onobscure platforms when somebody got around to building it.)We need also to {\bf add our dependencies} to the build farm, so that we canensure that libraries we need (especially libevent) do not stop working onany important platform between one release and the next.\plan{This is ongoing as more buildbots arrive.}\subsection{Improved testing harness}Currently, our {\bf unit tests} cover only about 20\% of the code base.  Thisis uncomfortably low; we should write more and switch to a more flexibletesting framework.\plan{Ongoing basis, time permitting.}We should also write flexible {\bf automated single-host deployment tests} sowe can more easily verify that the current codebase works with thenetwork.\plan{Worthwhile in 2007; would save lots of time.  2-4 weeks.}We should build automated {\bf stress testing} frameworks so we can see whichrealistic loads cause Tor to perform badly, and regularly profile Tor againstthese loads.  This would give us {\it in vitro} performance values tosupplement our deployment experience.\plan{Worthwhile in 2007; 2-6 weeks.}We should improve our memory profiling code.\plan{...}\subsection{Centralized build system}We currently rely on a separate packager to maintain the packaging system andto build Tor on each platform for which we distribute binaries.  Separatepackage maintainers is sensible, but separate package builders has meantlong turnaround times between source releases and package releases.  Weshould create the necessary infrastructure for us to produce binaries for allmajor packages within an hour or so of source release.\plan{We should  brainstorm this at least in 2007.}\subsection{Improved metrics}We need a way to {\bf measure the network's health, capacity, and degree of  utilization}.  Our current means for doing this are ad hoc and notcompletely accurateWe need better ways to {\bf tell which countries are users are coming from,  and how many there are}.  A good perspective of the network helps usallocate resources and identify trouble spots, but our current approacheswill work less and less well as we make it harder for adversaries toenumerate users.  We'll probably want to shift to a smarter, statisticalapproach rather than our current ``count and extrapolate'' method.\plan{All of this in 2007 if funded; 4-8 weeks}% \tmp{We'd like to know how much of the network is getting used.}% I think this is covered above -NM\subsection{Controller library}We've done lots of design and development on our controller interface, whichallows UI applications and other tools to interact with Tor.  We couldencourage the development of more such tools by releasing a {\bf  general-purpose controller library}, ideally with API support for severalpopular programming languages.\plan{2006 or 2007; 1-2 weeks.}\section{User experience}\subsection{Get blocked less, get blocked less broadly}Right now, some services block connections from the Tor network becausethey don't have a betterway to keep vandals from abusing them than blocking IP addresses associatedwith vandalism.  Our approach so far has been to educate them about bettersolutions that currently exist, but we should also {\bf create bettersolutions for limiting vandalism by anonymous users} like credential andblind-signature based implementations, and encourage their use. Otherpromising starting points including writing a patch and explanation forWikipedia, and helping Freenode to document, maintain, and expand itscurrent Tor-friendly position.\plan{Do a writeup here in 2007; 1-2 weeks.}Those who do block Tor users also block overbroadly, sometimes blacklistingoperators of Tor servers that do not permit exit to their services.  We couldobviate innocent reasons for doing so by designing a {\bf narrowly-targeted Tor  RBL service} so that those who wanted to overblock Tor could no longerplead incompetence.\plan{Possibly in 2007 if we decide it's a good idea; 3  weeks.}\subsection{All-in-one bundle}We need a well-tested, well-documented bundle of Tor and supportingapplications configured to use it correctly.  We have an initialimplementation well under way, but it will need additional work inidentifying requisite Firefox extensions, identifying security threats,improving user experience, and so on.  This will need significantly more workbefore it's ready for a general public release.\subsection{LiveCD Tor}We need a nice bootable livecd containing a minimal OS and a few applicationsconfigured to use it correctly.  The Anonym.OS project demonstrated that thisis quite feasible, but their project is not currently maintained.\subsection{A Tor client in a VM}\tmp{a.k.a JanusVM} which is quite related to the firewall-level deploymentsection below. JanusVM is a Linux kernel running in VMWare. It gets an IPaddress from the network, and serves as a DHCP server for its host Windowsmachine. It intercepts all outgoing traffic and redirects it into Privoxy,Tor, etc. This Linux-in-Windows approach may help us with scalability inthe short term, and it may also be a good long-term solution rather thanaccepting all security risks in Windows.%\subsection{Interface improvements}%\tmp{Allow controllers to manipulate server status.}% (Why is this in the User Experience section?) -RD% I think it's better left to a generic ``make controller iface better'' item.\subsection{Firewall-level deployment}Another useful deployment mode for some users is using {\bf Tor in a firewall  configuration}, and directing all their traffic through Tor.  This can be alittle tricky to set up currently, but it's an effective way to make sure notraffic leaves the host un-anonymized.  To achieve this, we need to {\bf  improve and port our new TransPort} feature which allows Tor to be usedwithout SOCKS support; to {\bf add an anonymizing DNS proxy} feature to Tor;and to {\bf construct a recommended set of firewall configurations} to redirecttraffic to Tor.This is an area where {\bf deployment via a livecd}, or an installationtargeted at specialized home routing hardware, could be useful.\subsection{Assess software and configurations for anonymity risks}Right now, users and packagers are more or less on their own when selectingFirefox extensions.  We should {\bf assemble a recommended list of browser  extensions} through experiment, and include this in the application bundleswe distribute.We should also describe {\bf best practices for using Tor with each class of  application}. For example, Ethan Zuckerman has written a detailedtutorial on how to use Tor, Firefox, GMail, and Wordpress to blog withimproved safety. There are many other cases on the Internet where anonymitywould be helpful, and there are a lot of ways to screw up using Tor.The Foxtor and Torbutton extensions serve similar purposes; we should pick afavorite, and merge in the useful features of the other.%\tmp{clean up our own bundled software:%E.g. Merge the good features of Foxtor into Torbutton}%% What else did you have in mind? -NM\subsection{Localization}Right now, most of our user-facing code is internationalized.  We need tointernationalize the last few hold-outs (like the Tor expert installer), and getmore translations for the parts that are already internationalized.Also, we should look into a {\bf unified translator's solution}.  Currently,since different tools have been internationalized using theframework-appropriate method, different tools require translators to localizethem via different interfaces.  Inasmuch as possible, we should maketranslators only need to use a single tool to translate the whole Tor suite.\section{Support}It would be nice to set up some {\bf user support infrastructure} and{\bf contributor support infrastructure}, especially focusing on serveroperators and on coordinating volunteers.This includes intuitive and easy ticket systems for bug reports andfeature suggestions (not just mailing lists with a half dozen peopleand no clear roles for who answers what), but it also includes a morepersonalized and efficient framework for interaction so we keep theattention and interest of the contributors, and so we make them feelhelpful and wanted.\section{Documentation}\subsection{Unified documentation scheme}We need to {\bf inventory our documentation.}  Our documentation so far hasbeen mostly produced on an {\it ad hoc} basis, in response to particularneeds and requests.  We should figure out what documentation we have, which ofit (if any) should get priority, and whether we can't put it all into asingle format.We could {\bf unify the docs} into a single book-like thing.  This will alsohelp us identify what sections of the ``book'' are missing.\subsection{Missing technical documentation}We should {\bf revise our design paper} to reflect the new decisions andresearch we've made since it was published in 2004.  This will help otherresearchers evaluate and suggest improvements to Tor's current design.Other projects sometimes implement the client side of our protocol.  Weencourage this, but we should write {\bf a document about how to avoidexcessive resource use}, so we don't need to worry that they will do sowithout regard to the effect of their choices on server resources.\subsection{Missing user documentation}Our documentation falls into two broad categories: some is `discoursive' andexplains in detail why users should take certain actions, and otherdocumentation is `comprehensive' and describes all of Tor's features.  Rightnow, we have no document that is both deep, readable, and thorough.  Weshould correct this by identifying missing spots in our design.\bibliographystyle{plain} \bibliography{tor-design}\end{document}
 |