git.schokokeks.org
Repositories
Help
Report an Issue
tor-webwml.git
Code
Commits
Branches
Tags
Suche
Strukturansicht:
ad68be46c
Branches
Tags
bridges
docs-debian
jobs
master
press-clips
tor-webwml.git
getinvolved
en
volunteer.wml
Subtasks for txtorcon/stem project idea
Damian Johnson
commited
ad68be46c
at 2013-04-23 16:39:34
volunteer.wml
Blame
History
Raw
## translation metadata # Revision: $Revision$ # Translation-Priority: 4-optional #include "head.wmi" TITLE="Tor: Volunteer" CHARSET="UTF-8" <div id="content" class="clearfix"> <div id="breadcrumbs"> <a href="<page index>">Home » </a> <a href="<page getinvolved/volunteer>">Volunteer</a> </div> <div id="maincol"> <!-- PUT CONTENT AFTER THIS TAG --> <h1>A few things everyone can do now:</h1> <ol> <li>Please consider <a href="<page docs/tor-doc-relay>">running a relay</a> to help the Tor network grow.</li> <li>Do you have an Amazon account? Are you willing to spend up to $3 a month? Then spin up your own Tor <a href="<page docs/bridges>">bridge</a> in less than 10 minutes with <a href="https://cloud.torproject.org/">tor cloud</a>!</li> <li>Tell your friends! Get them to run relays. Get them to run hidden services. Get them to tell their friends.</li> <li>If you like Tor's goals, please <a href="<page donate/donate>">take a moment to donate to support further Tor development</a>. We're also looking for more sponsors — if you know any companies, NGOs, agencies, or other organizations that want anonymity / privacy / communications security, let them know about us.</li> <li>We're looking for more <a href="<page about/torusers>">good examples of Tor users and Tor use cases</a>. If you use Tor for a scenario or purpose not yet described on that page, and you're comfortable sharing it with us, we'd love to hear from you.</li> </ol> <a id="Documentation"></a> <h2><a class="anchor" href="#Documentation">Documentation</a></h2> <ol> <li>Help translate the <!-- web page and --> documentation into other languages. See the <a href="<page getinvolved/translation>">translation guidelines</a> if you want to help out. We especially need Arabic or Farsi translations, for the many Tor users in censored areas.</li> <li>Evaluate and document <a href="<wiki>doc/TorifyHOWTO">our list of programs</a> that can be configured to use Tor.</li> <li>We have a huge list of <a href="<wiki>doc/SupportPrograms">potentially useful programs that interface to Tor</a>. Which ones are useful in which situations? Please help us test them out and document your results.</li> </ol> <a id="Advocacy"></a> <h2><a class="anchor" href="#Advocacy">Advocacy</a></h2> <ol> <li>Create a presentation that can be used for various user group meetings around the world.</li> <li>Create a video about the positive uses of Tor, what Tor is, or how to use it. Some have already started on <a href="https://media.torproject.org/video/">Tor's Media server</a>, <a href="http://www.howcast.com/videos/90601-How-To-Circumvent-an-Internet-Proxy">Howcast</a>, and <a href="http://www.youtube.com/thetorproject">YouTube</a>.</li> <li>Create a poster, or a set of posters, around a theme, such as "Tor for Freedom!"</li> <li>Create a t-shirt design that incorporates "<a href="https://check.torproject.org/">Congratulations! You are using Tor!</a>" in any language.</li> </ol> <a id="opw"></a> <h2><a class="anchor" href="#opw">Outreach Program for Women</a></h2> <p> Several organisations, including Tor, are taking part in the <a href="https://live.gnome.org/OutreachProgramForWomen">2013 Outreach Program for Women</a>. This is a mentoring program similar to <a href="https://www.google-melange.com/gsoc/homepage/google/gsoc2013">Google Summer of Code</a> targeted at getting more women involved in open source. </p> <p> The program runs in parallel with Google Summer of Code so, if you're eligible for either program, then please <a href="https://live.gnome.org/OutreachProgramForWomen#Is_Google_Summer_of_Code_right_for_you.3F">apply for both</a>! The application deadline is May 1, 2013 and it is best to start as early as possible preparing your application. Like GSoC the program involves a stipend so, if you're a woman interested in fighting surveillance and censorship around the world then let us know! </p> <p> To apply... </p> <ol> <li>Read up on the <a href="https://live.gnome.org/OutreachProgramForWomen">outreach program</a>.</li> <li>Look over our projects and task ideas below. If nothing there strikes your fancy then feel free to make one of your own.</li> <li>Join the <a href="https://www.torproject.org/about/contact.html.en#irc">#tor-dev irc channel</a> and introduce yourself!</li> <li>Contact the maintainer of the project that you're interested in contributing to, and talk with them about how to get started. Maintainers are listed in the table below. Note that you need to submit a patch or contribute in some way before you can apply to the program.</li> <li><a href="https://live.gnome.org/OutreachProgramForWomen#Send_in_an_Application">Send your application</a> to opw-list@gnome.org. Please be available and responsive throughout the application period so we can work with you on improving it.</li> </ol> <a id="gsoc"></a> <h2><a class="anchor" href="#gsoc">Google Summer of Code</a></h2> <p> Tor is also taking part in this year's <a href="https://www.google-melange.com/gsoc/homepage/google/gsoc2013">Google Summer of Code</a>! The criteria for this is a little different - either gender can apply but you need to be either <a href="https://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page#2._Whos_eligible_to_participate_as_a">a present student or just graduated</a>. </p> <p> As mentioned above if you're eligible for either program then please apply for both! Google Summer of Code is a far, far larger program for us than OPW so your chances of being applied that way are considerably better. </p> <p> <b>See our page for <a href="<page about/gsoc>">Google Summer of Code</a> for more information.</b> </p> <a id="Projects"></a> <h2><a class="anchor" href="#Projects">Projects</a></h2> <p> Below are a list of Tor related projects we're developing and/or maintaining. Most discussions happen on IRC so if you're interested in any of these (or you have a project idea of your own), then please <a href="<page about/contact>#irc">join us in #tor-dev</a>. Don't be shy to ask questions, and don't hesitate to ask even if the main contributors aren't active at that moment. </p> <table id="projects"> <tr> <th>Name</th> <th>Category</th> <th>Language</th> <th>Activity</th> <th>Contributors</th> </tr> <tr> <td><a href="#project-tor">Tor</a></td> <td>Core</td> <td>C</td> <td>Heavy</td> <td>nickm, athena, arma</td> </tr> <tr class="alt"> <td>*<a href="#project-jtor">JTor</a></td> <td>Core</td> <td>Java</td> <td>Moderate</td> <td>bleidl</td> </tr> <tr> <td><a href="#project-torbrowser">Tor Browser</a></td> <td>Bundle</td> <td>C, Scripting</td> <td>Moderate</td> <td>mikeperry, Erinn</td> </tr> <tr class="alt"> <td><a href="#project-torbutton">Torbutton</a></td> <td>Browser Add-on</td> <td>Javascript</td> <td>Moderate</td> <td>mikeperry</td> </tr> <tr> <td><a href="#project-httpseverywhere">HTTPS Everywhere</a></td> <td>Browser Add-on</td> <td>Javascript</td> <td>Moderate</td> <td>pde, mikeperry</td> </tr> <tr class="alt"> <td><a href="#project-vidalia">Vidalia</a></td> <td>User Interface</td> <td>C++, Qt</td> <td>None</td> <td>chiiph</td> </tr> <tr> <td><a href="#project-arm">Arm</a></td> <td>User Interface</td> <td>Python, Curses</td> <td>Light</td> <td>atagar</td> </tr> <tr class="alt"> <td><a href="#project-orbot">Orbot</a></td> <td>User Interface</td> <td>Java</td> <td>Light</td> <td>n8fr8</td> </tr> <tr> <td><a href="#project-tails">Tails</a></td> <td>OS image</td> <td>Sys Admin</td> <td>Heavy</td> <td><a href="https://tails.boum.org/">#tails</a></td> </tr> <tr class="alt"> <td><a href="#project-torramdisk">tor-ramdisk</a></td> <td>OS image</td> <td>Sys Admin</td> <td>Light</td> <td>blueness</td> </tr> <tr> <td>*<a href="#project-torouter">Torouter</a></td> <td>OS image</td> <td>Sys Admin</td> <td>None</td> <td>ioerror</td> </tr> <tr class="alt"> <td><a href="#project-torsocks">Torsocks</a></td> <td>Usability</td> <td>C</td> <td>Light</td> <td>ioerror, nickm</td> </tr> <tr> <td><a href="#project-torbirdy">TorBirdy</a></td> <td>Browser Add-on</td> <td>JavaScript</td> <td>Heavy</td> <td>Sukhbir (sukhe), ioerror</td> </tr> <tr class="alt"> <td><a href="#project-obfsproxy">Obfsproxy</a></td> <td>Client Add-on</td> <td>C, Python</td> <td>Moderate</td> <td>asn, nickm</td> </tr> <tr> <td><a href="#project-flash-proxy">Flash Proxy</a></td> <td>Client Add-on</td> <td>Python, JavaScript, Go</td> <td>Heavy</td> <td>dcf, aallai, jct</td> </tr> <tr class="alt"> <td>*<a href="#project-thandy">Thandy</a></td> <td>Updater</td> <td>Python</td> <td>None</td> <td>chiiph, Erinn, nickm</td> </tr> <tr> <td><a href="#project-shadow">Shadow</a></td> <td>Simulator</td> <td>C, Python</td> <td>Heavy</td> <td>robgjansen</td> </tr> <tr class="alt"> <td><a href="#project-stem">Stem</a></td> <td>Library</td> <td>Python</td> <td>Heavy</td> <td>atagar</td> </tr> <tr> <td><a href="#project-txtorcon">Txtorcon</a></td> <td>Library</td> <td>Python, Twisted</td> <td>Heavy</td> <td>meejah</td> </tr> <tr class="alt"> <td><a href="#project-tlsdate">Tlsdate</a></td> <td>Utility</td> <td>C</td> <td>Moderate</td> <td>ioerror</td> </tr> <tr> <td><a href="#project-metrics">Metrics</a></td> <td>Client Service</td> <td>Java</td> <td>Heavy</td> <td>karsten</td> </tr> <tr class="alt"> <td><a href="#project-atlas">Atlas</a></td> <td>Client Service</td> <td>JavaScript</td> <td>Light</td> <td>hellais, karsten</td> </tr> <tr> <td><a href="#project-torstatus">TorStatus</a></td> <td>Client Service</td> <td>Python, Django</td> <td>None</td> <td></td> </tr> <tr class="alt"> <td><a href="#project-compass">Compass</a></td> <td>Client Service</td> <td>Python</td> <td>Light</td> <td>gsathya, karsten, cwacek</td> </tr> <tr> <td><a href="#project-onionoo">Onionoo</a></td> <td>Backend Service</td> <td>Java, Python</td> <td>Light</td> <td>karsten, gsathya</td> </tr> <tr class="alt"> <td><a href="#project-weather">Weather</a></td> <td>Client Service</td> <td>Python</td> <td>None</td> <td>kaner</td> </tr> <tr> <td><a href="#project-gettor">GetTor</a></td> <td>Client Service</td> <td>Python</td> <td>None</td> <td>kaner</td> </tr> <tr class="alt"> <td><a href="#project-torcheck">TorCheck</a></td> <td>Client Service</td> <td>Python, Perl</td> <td>None</td> <td>ioerror</td> </tr> <tr> <td><a href="#project-bridgedb">BridgeDB</a></td> <td>Backend Service</td> <td>Python</td> <td>None</td> <td>kaner, nickm</td> </tr> <tr class="alt"> <td><a href="#project-ooni-probe">Ooni Probe</a></td> <td>Scanner</td> <td>Python</td> <td>Heavy</td> <td>hellais, isis, ioerror</td> </tr> <tr> <td><a href="#project-torflow">TorFlow</a></td> <td>Backend Service</td> <td>Python</td> <td>None</td> <td>aagbsn, mikeperry</td> </tr> <tr class="alt"> <td>*<a href="#project-torbel">TorBEL</a></td> <td>Backend Service</td> <td>Python</td> <td>None</td> <td>Sebastian</td> </tr> <tr> <td><a href="#project-tor2web">Tor2web</a></td> <td>Client Service</td> <td>Python</td> <td>Moderate</td> <td>hellais</td> </tr> <tr class="alt"> <td><a href="#project-anonbib">Anonbib</a></td> <td>Website</td> <td>Python</td> <td>Light</td> <td>arma, nickm</td> </tr> </table> <sub> * Project is still in an alpha state. </sub> <br /><br /> <a id="project-tor"></a> <h3>Tor (<a href="https://gitweb.torproject.org/tor.git">code</a>, <a href="https://trac.torproject.org/projects/tor/report/12">bug tracker</a>)</h3> <p> Central project, providing the core software for using and participating in the Tor network. Numerous people contribute to the project to varying extents, but the chief architects are Nick Mathewson and Roger Dingledine. </p> <p> <b>Project Ideas:</b><br /> <i><a href="#limitCapabilities">Run With Limited Capabilities</a></i><br /> <i><a href="#torCleanup">Tor Codebase Cleanup</a></i><br /> <i><a href="#httpsImpersonation">HTTPS Server Impersonation</a></i><br /> <i><a href="#chutneyExpansion">Make Chutney Do More, More Reliably</a></i> </p> <a id="project-jtor"></a> <h3><a href="https://github.com/brl/JTor/wiki">JTor</a> (<a href="https://gitweb.torproject.org/jtor.git">code</a>, <a href="https://github.com/brl/JTor/issues">bug tracker</a>)</h3> <p> Java implementation of Tor and successor to <a href="http://onioncoffee.sourceforge.net/">OnionCoffee</a>. This project isn't yet complete, and has been inactive since Fall 2010. </p> <a id="project-torbrowser"></a> <h3><a href="<page projects/torbrowser>">Tor Browser Bundle</a> (<a href="https://gitweb.torproject.org/torbrowser.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Tor+bundles/installation&order=priority">bug tracker</a>, <a href="https://www.torproject.org/projects/torbrowser/design/">design doc</a>)</h3> <p> The Tor Browser Bundle is an easy-to-use portable package of Tor, Vidalia, Torbutton, and a Firefox fork preconfigured to work together out of the box. It contains a modified copy of Firefox that aims to resolve the privacy and security issues in mainline version. </p> <a id="project-torbutton"></a> <h3><a href="<page torbutton/index>">Torbutton</a> (<a href="https://gitweb.torproject.org/torbutton.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Torbutton&order=priority">bug tracker</a>)</h3> <p> Firefox addon that addresses many of the client-side threats to browsing the Internet anonymously. Mike has since continued to adapt it to new threats, updated versions of Firefox, and possibly <a href="https://blog.torproject.org/blog/google-chrome-incognito-mode-tor-and-fingerprinting">Chrome as well</a>. </p> <a id="project-httpseverywhere"></a> <h3><a href="https://www.eff.org/https-everywhere">HTTPS Everywhere</a> (<a href="https://gitweb.torproject.org/https-everywhere.git">code</a>, <a href="https://trac.torproject.org/projects/tor/report/19">bug tracker</a>)</h3> <p> HTTPS Everywhere is a Firefox and Chrome extension that encrypts your communications with many major websites, making your browsing more secure. </p> <a id="project-vidalia"></a> <h3><a href="<page projects/vidalia>">Vidalia</a> (<a href="https://gitweb.torproject.org/vidalia.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Vidalia&order=priority">bug tracker</a>)</h3> <p> The most commonly used user interface for Tor. Matt Edman started the project in 2006 and brought it to its current stable state. Development slowed for several years, though Tomás Touceda has since taken the lead with pushing the project forward. </p> <a id="project-arm"></a> <h3><a href="http://www.atagar.com/arm/">Arm</a> (<a href="https://gitweb.torproject.org/arm.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=arm&order=priority">bug tracker</a>)</h3> <p> The anonymizing relay monitor (arm) is a terminal status monitor for Tor, intended for command-line aficionados, ssh connections, and anyone with a tty terminal. This works much like top does for system usage, providing real time statistics for bandwidth, resource usage, connections, and quite a bit more. </p> <a id="project-orbot"></a> <h3><a href="https://guardianproject.info/apps/orbot/">Orbot</a> (<a href="https://gitweb.torproject.org/orbot.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Orbot&order=priority">bug tracker</a>)</h3> <p> Provides Tor on the Android platform. This was under very active development up through Fall 2010, after which things have been quiet. </p> <a id="project-tails"></a> <h3><a href="https://tails.boum.org/">The Amnesic Incognito Live System</a> (<a href="http://git.immerda.ch/?p=amnesia.git;a=summary">code</a>, <a href="https://tails.boum.org/bugs/">bug tracker</a>)</h3> <p> The Amnesic Incognito Live System is a live CD/USB distribution preconfigured so that everything is safely routed through Tor and leaves no trace on the local system. This is a merger of the Amnesia and <a href="http://www.anonymityanywhere.com/incognito/">Incognito</a> projects, and still under very active development. </p> <a id="project-torramdisk"></a> <h3><a href="http://opensource.dyc.edu/tor-ramdisk">Tor-ramdisk</a> (<a href="http://opensource.dyc.edu/gitweb/?p=tor-ramdisk.git;a=summary">code</a>, <a href="http://opensource.dyc.edu/tor-ramdisk-documentation">documentation</a>)</h3> <p> Tor-ramdisk is a uClibc-based micro Linux distribution whose sole purpose is to securely host a Tor server purely in RAM. </p> <a id="project-torouter"></a> <h3><a href="<wiki>doc/Torouter">Torouter</a> (<a href="https://gitweb.torproject.org/torouter.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Torouter&order=priority">bug tracker</a>)</h3> <p> Project to provide an easy-to-use, embedded Tor instance for routers. This had high activity in late 2010, but has since been rather quiet. </p> <a id="project-torsocks"></a> <h3><a href="http://code.google.com/p/torsocks/">Torsocks</a> (<a href="https://gitweb.torproject.org/torsocks.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Torify&order=priority">bug tracker</a>)</h3> <p> Utility for adapting other applications to work with Tor. Development has slowed and compatibility issues remain with some platforms, but it's otherwise feature complete. </p> <a id="project-torbirdy"></a> <h3>TorBirdy (<a href="https://github.com/ioerror/torbirdy">code</a>, <a href="https://trac.torproject.org/projects/tor/wiki/torbirdy/dev">bug tracker</a>)</h3> <p> TorBirdy is Torbutton for Thunderbird and related Mozilla mail clients. </p> <a id="project-obfsproxy"></a> <h3><a href="<page projects/obfsproxy>">Obfsproxy</a> (<a href="https://gitweb.torproject.org/obfsproxy.git">C codebase</a>, <a href="https://gitweb.torproject.org/user/asn/pyobfsproxy.git">python codebase</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Pluggable+transport&order=priority">bug tracker</a>)</h3> <p> A proxy that shapes Tor traffic, making it harder for censors to detect and block Tor. This has both a C and python implementation. </p> <p> <b>Project Ideas:</b><br /> <i><a href="#betterPluggableTransports">Build Better Pluggable Transports</a></i> </p> <a id="project-flash-proxy"></a> <h3><a href="https://crypto.stanford.edu/flashproxy/">Flash Proxy</a> (<a href="https://gitweb.torproject.org/flashproxy.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_information&status=needs_review&status=needs_revision&status=new&status=reopened&component=Flashproxy">bug tracker</a>)</h3> <p> Pluggable transport using proxies running in web browsers to defeat address-based blocking. </p> <a id="project-thandy"></a> <h3>Thandy (<a href="https://gitweb.torproject.org/thandy.git">code</a>)</h3> <p> Updater for Tor. The project <a href="http://google-opensource.blogspot.com/2009/03/thandy-secure-update-for-tor.html">began in the Summer of 2008</a> and produced a functional secure updater. The remaining steps are to deploy a Thandy repository, and integrate Thandy into one of our bundles — which requires UI changes in the bundles, Python packaging on various platforms, etc. Later interest in it was rekindled and many aspects of <a href="http://freehaven.net/~arma/tuf-ccs2010.pdf">its design</a> (including the language it'll be in) are currently in flux. This is related to <a href="https://www.updateframework.com/">TUF</a>. </p> <a id="project-shadow"></a> <h3><a href="https://shadow.cs.umn.edu/">Shadow</a> (<a href="https://github.com/shadow">code</a>, <a href="https://github.com/shadow/shadow/issues">bug tracker</a>)</h3> <p> Shadow is a discrete-event network simulator that runs the real Tor software as a plug-in. Shadow is open-source software that enables accurate, efficient, controlled, and repeatable Tor experimentation. For another simulator, see <a href="http://crysp.uwaterloo.ca/software/exptor/">ExperimenTor</a>. </p> <a id="project-stem"></a> <h3><a href="https://stem.torproject.org/">Stem</a> (<a href="https://gitweb.torproject.org/stem.git">code</a>, <a href="https://trac.torproject.org/projects/tor/wiki/doc/stem/bugs">bug tracker</a>)</h3> <p> Python controller library for scripts and controller applications using Tor. </p> <p> <b>Project Ideas:</b><br /> <i><a href="#txtorcon-stemIntegration">Txtorcon/Stem Integration</a></i><br /> <i><a href="#metrics-pyDoctor">PyDoctor</a></i><br /> <i><a href="#stemUsability">Stem Usability and Porting</a></i><br /> <i><a href="#stemTestingForTor">Stem Tests for Tor</a></i> </p> <a id="project-txtorcon"></a> <h3>Txtorcon (<a href="https://github.com/meejah/txtorcon">code</a>, <a href="https://txtorcon.readthedocs.org">docs</a>)</h3> <p> Twisted-based asynchronous Tor control protocol implementation. Includes unit-tests, examples, state-tracking code and configuration abstraction. Used by OONI and APAF. </p> <p> <b>Project Ideas:</b><br /> <i><a href="#txtorcon-stemIntegration">Txtorcon/Stem Integration</a></i> </p> <a id="project-tlsdate"></a> <h3>Tlsdate (<a href="https://github.com/ioerror/tlsdate">code</a>)</h3> <p> tlsdate: secure parasitic rdate replacement </p> <p> tlsdate sets the local clock by securely connecting with TLS to remote servers and extracting the remote time out of the secure handshake. Unlike ntpdate, tlsdate uses TCP, for instance connecting to a remote HTTPS or TLS enabled service, and provides some protection against adversaries that try to feed you malicious time information. </p> <a id="project-metrics"></a> <h3><a href="https://metrics.torproject.org/">Metrics</a> (code: <a href="https://gitweb.torproject.org/metrics-db.git">db</a>, <a href="https://gitweb.torproject.org/metrics-utils.git">utils</a>, <a href="https://gitweb.torproject.org/metrics-web.git">web</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Metrics&order=priority">bug tracker</a>)</h3> <p> Processing and analytics of consensus data, provided to users via the metrics portal. This has been under active development for several years by Karsten Loesing. See also <a href="https://gitweb.torproject.org/torperf.git">TorPerf</a>. </p> <p> <b>Project Ideas:</b><br /> <i><a href="#metrics-pyDoctor">PyDoctor</a></i><br /> <i><a href="#metricsSearch">Searchable Tor descriptor and Metrics data archive</a></i> (Python/Django?) </p> <a id="project-atlas"></a> <h3><a href="https://atlas.torproject.org/">Atlas</a> (<a href="https://gitweb.torproject.org/atlas.git">code</a>)</h3> <p> Atlas is a web application to discover Tor relays and bridges. It provides useful information on how relays are configured along with graphics about their past usage. This is the third evolution of the TorStatus application. </p> <a id="project-torstatus"></a> <h3><a href="https://trac.torproject.org/projects/tor/wiki/org/roadmaps/TorStatus">TorStatus</a> (<a href="https://gitweb.torproject.org/torstatus.git">code</a>)</h3> <p> Portal providing an overview of the Tor network, and details on any of its current relays. Though very actively used, this project has been unmaintained for a long while. The <a href="https://svn.torproject.org/svn/torstatus/trunk/">original codebase</a> was written in PHP, and students from Wesleyan wrote the new Django counterpart. </p> <a id="project-compass"></a> <h3><a href="https://compass.torproject.org/">Compass</a> (<a href="https://gitweb.torproject.org/compass.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Compass&order=priority">bug tracker</a>)</h3> <p> Compass is a web and command line application that filters and aggregates the Tor relays based on various attributes. </p> <a id="project-onionoo"></a> <h3><a href="<page projects/onionoo>">Onionoo</a> (<a href="https://gitweb.torproject.org/onionoo.git">java codebase</a>, <a href="https://gitweb.torproject.org/pyonionoo.git">python codebase</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Onionoo&order=priority">bug tracker</a>)</h3> <p> Onionoo is a JSON based protocol to learn information about currently running Tor relays and bridges. </p> <a id="project-weather"></a> <h3><a href="https://trac.torproject.org/projects/tor/wiki/org/roadmaps/Weather">Weather</a> (<a href="https://gitweb.torproject.org/weather.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Tor+Weather&order=priority">bug tracker</a>)</h3> <p> Provides automatic notification to subscribed relay operators when their relay's unreachable. This underwent a rewrite by the <a href="http://hfoss.wesleyan.edu/">Wesleyan HFOSS team</a>, which went live in early 2011. </p> <a id="project-gettor"></a> <h3><a href="https://trac.torproject.org/projects/tor/wiki/org/roadmaps/GetTor">GetTor</a> (<a href="https://gitweb.torproject.org/gettor.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=GetTor&order=priority">bug tracker</a>)</h3> <p> E-mail autoresponder providing Tor's packages over SMTP. This has been relatively unchanged for quite a while. </p> <a id="project-torcheck"></a> <h3><a href="https://trac.torproject.org/projects/tor/wiki/org/roadmaps/TorCheck">TorCheck</a> (<a href="https://svn.torproject.org/svn/check/trunk/">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Tor+Check&order=priority">bug tracker</a>)</h3> <p> Provides a simple site for determining if the visitor is using Tor or not. This has been relatively unchanged for quite a while. </p> <a id="project-bridgedb"></a> <h3><a href="https://trac.torproject.org/projects/tor/wiki/org/roadmaps/BridgeDB">BridgeDB</a> (<a href="https://gitweb.torproject.org/bridgedb.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=BridgeDB&order=priority">bug tracker</a>)</h3> <p> Backend bridge distributor, handling the various pools they're distributed in. This was actively developed until Fall of 2010. </p> <a id="project-ooni-probe"></a> <h3><a href="https://ooni.torproject.org/">Ooni Probe</a> (<a href="https://gitweb.torproject.org/ooni-probe.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Ooni&order=priority">bug tracker</a>)</h3> <p> Censorship scanner, checking your local connection for blocked or modified content. </p> <p> <b>Project Ideas:</b><br /> <i><a href="#ooniprobeSimulator">Create an Internet Censorship Virtual Machine Based Simulator</a></i> </p> <a id="project-torflow"></a> <h3><a href="https://trac.torproject.org/projects/tor/wiki/org/roadmaps/TorFlow">TorFlow</a> (<a href="https://gitweb.torproject.org/torflow.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=Torflow&order=priority">bug tracker</a>)</h3> <p> Library and collection of services for actively monitoring the Tor network. These include the Bandwidth Scanners (measuring throughput of relays) and SoaT (scans for malicious or misconfigured exit nodes). SoaT was last actively developed in the Summer of 2010, and the Bandwidth Scanners a few months later. Both have been under active use since then, but development has stopped. </p> <a id="project-torbel"></a> <h3><a href="https://blog.torproject.org/blog/torbel-tor-bulk-exit-list-tools">TorBEL</a> (<a href="https://gitweb.torproject.org/torbel.git">code</a>, <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_review&status=new&status=reopened&component=TorDNSEL/TorBEL&order=priority">bug tracker</a>)</h3> <p> The Tor Bulk Exitlist provides a method of identifying if IPs belong to exit nodes or not. This is a replacement for TorDNSEL which is a stable (though unmaintained) Haskell application for this purpose. The initial version of TorBEL was started in GSOC 2010 but since then the project has been inactive. </p> <p> <b>Project Ideas:</b><br /> <i><a href="#stemUsability">Stem Usability and Porting (this includes an idea for finishing off TorBEL)</a></i> </p> <a id="project-tor2web"></a> <h3><a href="http://wiki.tor2web.org/index.php/Main_Page">Tor2web</a> (<a href="https://github.com/globaleaks/tor2web-3.0/wiki">code</a>)</h3> <p> Tor2web allows Internet users to browse websites running in <a href="<page docs/hidden-services>">Tor hidden services</a>. It trades user anonymity for usability by allowing anonymous content to be distributed to non-anonymous users. </p> <a id="project-anonbib"></a> <h3><a href="http://freehaven.net/anonbib/">Anonymity Bibliography</a> (<a href="https://gitweb.torproject.org/anonbib.git">code</a>)</h3> <p> Anonbib is a list of important papers in the field of anonymity. It's also a set of scripts to generate the website from Latex (bibtex). If we're missing any important papers, please let us know! </p> <a id="Coding"></a> <a id="Summer"></a> <h2><a class="anchor" href="#Coding">Project Ideas</a></h2> <p> You may find some of these projects to be good ideas for <a href="<page about/gsoc>">Google Summer of Code</a> and the <a href="https://live.gnome.org/OutreachProgramForWomen">Outreach Program for Women</a>. We have labelled each idea with how much work we expect it would be (effort level), how much clue you should start with (skill level), and which of our <a href="<page about/corepeople>">core developers</a> would be good mentors. If one or more of these ideas looks promising to you, please <a href="<page about/contact>">contact us</a> to discuss your plans rather than sending blind applications. You may also want to propose your own project idea — which often results in the best applications. </p> <ol> <a id="metrics-pyDoctor"></a> <li> <b>PyDoctor</b> <br> Effort Level: <i>Medium</i> <br> Skill Level: <i>Medium</i> <br> Likely Mentors: <i>karsten, Damian (atagar)</i> <p><a href="https://gitweb.torproject.org/doctor.git">DocTor</a>, also known as the consensus-health checker, is a service that periodically checks the Tor network for consensus conflicts and other hiccups. In order to do so it downloads the Tor consensus and votes from the Tor directory authorities and checks them for consensus problems. DocTor writes its findings to local files which can then be sent to a <a href="https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-consensus-health">mailing list</a> or IRC bot (nsa in #tor-bots on OFTC), or which can be served by an <a href="https://metrics.torproject.org/consensus-health.html">HTTP server</a>.</p> <p>This project would be about rewriting DocTor in Python and using Stem for the descriptor parsing. This would require extending Stem to download consensuses and votes (and later server descriptors for Damian's consensus checker), and it would require rewriting the DocTor code in Python.</p> </li> <a id="txtorcon-stemIntegration"></a> <li> <b>Txtorcon/Stem Integration</b> <br> Effort Level: <i>Medium</i> <br> Skill Level: <i>Medium</i> <br> Likely Mentors: <i>meejah, Damian (atagar)</i> <p>Txtorcon is a Twisted-based Python controller library, and Stem is a synchronous (threaded) one, also in Python. There is no need to have two implementations of (at least) the protocol parsing code. This project would entail eliminating duplication by leveraging Stem's parsing in txtorcon while keeping txtorcon's API the same (or at least close).</p> <p>Besides this you should identify some additional tasks to improve our controller space across these two libraries. Some ideas are...</p> <ul> <li>Write a tutorial for <a href="https://stem.torproject.org/tutorials.html">stem's tutorial page</a> demonstrating cross txtorcon/stem usage.</li> <li>Expand the txtorcon API to include functionality of <a href="https://gitweb.torproject.org/stem.git/blob/HEAD:/stem/control.py">stem's controller</a> that would be of interest to twisted users. All additions should include tests!</li> <li>Come up with some ideas of your own! We'd love to discuss them with you.</li> </ul> <p>This would very likely involve changes to both libraries, although most would be expected to be in txtorcon. meejah is available to mentor txtorcon changes, and Damian (atagar) can help with Stem.</p> <p>It would help if you're already familiar with event-based programming, bonus points if it's Twisted.</p> </li> <a id="httpsImpersonation"></a> <li> <b>HTTPS Server Impersonation</b> <br> Effort Level: <i>Medium to High</i> <br> Skill Level: <i>Medium to High</i> <br> Likely Mentors: <i>Nick (nickm)</i> <p> We have an open proposal for a way to make Tor bridges avoid censorship by impersonating an HTTPS server. Specifically, we need to hack some popular SSL "reverse proxy" (your choice) so that it relays regular web connections to an HTTP server, but certain connections to a local Tor process. <a href="https://gitweb.torproject.org/torspec.git/blob_plain/HEAD:/proposals/203-https-frontend.txt">Proposal 203</a> has a general design sketch. </p> <p> <b>This project is likely trickier than it looks. You should avoid applying for this if you're uncertain about being able to complete it.</b> </p> </li> </li> <a id="chutneyExpansion"></a> <li> <b>Make Chutney Do More, More Reliably</b> <br> Effort Level: <i>Medium to High, depending on scope of project</i> <br> Skill Level: <i>Medium</i> <br> Likely Mentors: <i>Nick (nickm)</i> <p> We have a little Python tool called <a href="https://gitweb.torproject.org/nickm/chutney.git">Chutney</a> for making small local test networks. It's small, not widely used, and not as automated as it could be. </p> <p> It would be great to see chutney extended and a set of supporting tests built to the point where we could use Chutney to exercise various Tor features as an automated integration test. </p> <p> <b>As part of your application for this project please submit a patch that expands Chutney.</b> </p> </li> <a id="limitCapabilities"></a> <li> <b>Run With Limited Capabilities</b> <br> Effort Level: <i>Medium to High</i> <br> Skill Level: <i>High</i> <br> Likely Mentors: <i>Nick (nickm)</i> <p> Many modern operating systems give a running program the ability to drop capabilities that it no longer needs, and other ways for a program to run pieces of itself in a sandbox with diminished privileges. </p> <p> We'd like to do this with Tor, to improve its resistance to attacks. The easiest areas to address would be on systems like <a href="https://lwn.net/Articles/475361/">recent Linux kernels</a> that make it easy to drop or restrict the set of syscalls that a program can invoke. That's a great project, but probably not big enough for an internship just on its own. For that, we'd want to make progress on at least multiple platforms, or look into refactoring Tor into pieces that need more privileges and pieces that don't with an eye towards sandboxing them differently. </p> <p> See tickets <a href="https://trac.torproject.org/7005">#7005</a> and <a href="https://trac.torproject.org/5219">#5219</a>, and their descendants, for more information. </p> </li> <a id="metricsSearch"></a> <li> <b>Searchable Tor descriptor and Metrics data archive</b> <br> Effort Level: <i>Medium</i> <br> Skill Level: <i>Medium</i> <br> Likely Mentors: <i>Karsten</i> <p>The <a href="https://metrics.torproject.org/data.html">Metrics data archive</a> of Tor relay descriptors and other Tor-related network data has grown to over 100G in size, bz2-compressed. We have developed two search interfaces: the <a href="https://metrics.torproject.org/relay-search.html">relay search</a> finds relays by nickname, fingerprint, or IP address in a given month; <a href="https://metrics.torproject.org/exonerator.html">ExoneraTor</a> finds whether a given IP address was a relay on a given day.</p> <p>We'd like to have a more general search application for Tor descriptors and metrics data. There are more <a href="https://metrics.torproject.org/formats.html">descriptor types</a> that we'd like to include in the search. The search application should handle most of them and understand some semantics like what's a timestamp, what's an IP address, and what's a link to another descriptor. Users should then be able to search for arbitrary strings or limit their search to given time periods or IP address ranges. Descriptors that reference other descriptors should contain links, and descriptors should be able to say from where they are linked. The goal is to make the archive easily browsable.</p> <p>The search application shall be separate from the metrics website and shouldn't rely on the metrics website codebase. The search application will contain hourly updated descriptor data from the metrics website via rsync. Programming language and database system are not specified yet, though there's a slight preference for Python/Django and Postgres for maintenance reasons. If there are good reasons to pick something else, e.g, some NoSQL variant or some search application framework, that's fine, too. Further requirements are that lookups should be really fast and that changes to the search application can be implemented in reasonable time.</p> <p>Applications for this project should come with a design of the proposed search application, ideally with a proof-of-concept based on a subset of the available data to show that it will be able to handle the 100G+ of data.</p> </li> <a id="stemUsability"></a> <li> <b>Stem Usability and Porting</b> <br> Effort Level: <i>Medium</i> <br> Skill Level: <i>Medium</i> <br> Likely Mentors: <i>Damian (atagar), Sebastian</i> <p> <a href="https://stem.torproject.org/">Stem</a> is a python controller library for tor. Like it's predecessor, <a href="https://gitweb.torproject.org/pytorctl.git">TorCtl</a>, it uses tor's <a href="https://gitweb.torproject.org/torspec.git/blob/HEAD:/control-spec.txt">control protocol</a> to help developers program against the tor process, enabling them to build things similar to <a href="#project-vidalia">Vidalia</a> and <a href="http://www.atagar.com/arm/">arm</a>. </p> <p> While TorCtl provided a fine first draft for this sort of functionality, it has not proved to be extensible nor maintainable. Stem is a rewrite of TorCtl with a heavy focus on testing, documentation, and providing a developer friendly API. </p> <p> Stem has largely met these goals but there's still plenty of low hanging fruit in terms of usability improvements. Also, we have clients still using TorCtl that need to be ported over. This project would include several subtasks. Some ideas for instance are... </p> <ol> <li>Come up with a better, more developer friendly "Module Overview" for our documentation (<a href="https://stem.torproject.org/api/control.html">example page</a>). For instance, it would be nice to provide interlinking between the overview and the classes/methods that it lists. This will probably involve asking for help from the <a href="http://sphinx-doc.org/">Sphinx user list</a>. (<a href="https://trac.torproject.org/7632">ticket</a>)</li> <li>After getting some exposure to stem it would be time to give using it a try. Tor has a couple clients (<a href="https://trac.torproject.org/8263">TorBEL</a> and <a href="https://trac.torproject.org/8264">Tor Weather</a>) that are ready to be moved to stem. Hopefully porting these will also provide us with some lessons on how we can further improve stem's API. <b>Note that this would also involve polishing off <a href="#project-torbel">TorBEL</a>, including the <a href="https://trac.torproject.org/projects/tor/query?status=accepted&status=assigned&status=needs_information&status=needs_review&status=needs_revision&status=new&status=reopened&group=component&component=TorDNSEL%2FTorBEL&order=priority">issues that prevent us from deploying it</a></b>. This later portion would be primarily mentored by Sebastian.</li> <li><b>... other ideas?</b> The above are just some ideas I've come up with to improve usability and likely not enough to fill the summer. Feel free to suggest some of your own! For instance, one option would be to expand <a href="https://stem.torproject.org/tutorials.html">stem's tutorials</a> with more examples, maybe <a href="https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev/">contacting tor-dev@</a> to brainstorm ideas. This last bit is pretty open so I look forward to seeing what you come up with!</li> </ol> <p> <b>As part of your application for this project please write a script that does something interesting with stem.</b> Bonus points if this is something that we can <a href="https://stem.torproject.org/tutorials.html">make a tutorial</a> around! </p> <a id="stemTestingForTor"></a> <li> <b>Stem Tests for Tor</b> <br> Effort Level: <i>Medium</i> <br> Skill Level: <i>Medium</i> <br> Likely Mentors: <i>Damian (atagar)</i> <p> Stem is a library for interacting with Tor (see '<a href="#stemUsability">Stem Usability and Porting</a>' above for a summary). The library has both <a href="https://gitweb.torproject.org/stem.git/tree/HEAD:/test/unit">unit</a> and <a href="https://gitweb.torproject.org/stem.git/tree/HEAD:/test/integ">integration</a> tests. The unit tests provide a quick, direct test of stem's codebase while the integration test exercises its functionality against a live instance of Tor. </p> <p> Stem's integration tests have thus far been (unsurprisingly) designed to test stem but there's no need for them to be limited to that. Stem is a complete implementation of Tor's <a href="https://gitweb.torproject.org/torspec.git/blob/HEAD:/control-spec.txt">control-spec</a> and <a href="https://gitweb.torproject.org/torspec.git/blob/HEAD:/dir-spec.txt">dir-spec</a>. As such, stem's tests could be easily expanded to more dedicatedly test behavior involved in those portions of Tor's codebase, as well as provide a smoke test for its general functionality. </p> <p> This project would involve several components: </p> <ol> <li>Determine what kind of tests we need. <b>This should be done during the application phase</b> by <a href="https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev/">contacting tor-dev@</a>. Hopefully this will give us an idea of what would be the most useful kind of tests of this nature for Tor development.</li> <li>To be useful our integration tests need to continually run against the present tip of Tor's codebase. To do this we'll want to (1) fetch and compile the latest version of Tor, (2) run our integration tests against it, (3) compose the results as an html formatted email, and send it to a list. (<a href="https://trac.torproject.org/8261">ticket</a>)</li> <li>Implement the new suite of integration tests for Tor. This will likely include expanding Tor to support better testability. One useful candidate, for instance, would be a controller method to fetch our own descriptor. This would let us easily test various configurations to see if they provide valid descriptor content.</li> </ol> <p> <b>As part of your application for this project please write some code to expand stem's tests.</b> Bonus points if it implements one of your suggestions for better testing Tor! </p> <a id="torCleanup"></a> <li> <b>Tor Codebase Cleanup</b> <br> Effort Level: <i>Low to High, depending on subproject chosen</i> <br> Skill Level: <i>Medium to High</i> <br> Likely Mentors: <i>Nick (nickm)</i> <p> The Tor code is almost 10 years old in places, and we haven't always had enough time or wisdom to write things as well as we could have. Our unit test coverage is shamefully low, and the dependency graph of our modules is shamefully convoluted . We could use refactoring and unit tests! Please look through the Tor source code and look for ugly or tricky code or dependencies -- the uglier and trickier the better -- and think about how you could make the code look better, read better, and (subject to testing) work better. </p> <p> If this is for a fun side-project, it would be great for you to work on anything that can be made better and more tested. For an internship-level position, we'd hope that you could find a number of particularly tricky or knotty piece of the code to clean up, and aim for resolving the ugliest problems, not necessarily the easiest. </p> <p> For a big project here, it would be great to pick one of the major "submodules" of Tor -- path selection, node discovery, directory authority operations, directory service -- and refactor its interface completely, to minify and codify its points of contact with the rest of Tor. </p> <p> <b>As part of your application for this project please identify one of the thorniest Tor functions and submit a patch refactoring it to be better. If you find this to be difficult then this likely isn't the project for you.</b> </p> </li> <a id="ooniprobeSimulator"></a> <li> <b>Create an Internet Censorship Virtual Machine Based Simulator</b> <br> Effort Level: <i>Medium</i> <br> Skill Level: <i>Medium</i> <br> Likely Mentors: <i>hellais</i> <p> The purpose of this is to create a virtual machine based environment for recreating censorship. The task of the student will be to document and implement a system that allows you to recreated a censored network with the purpose of testing the proper functioning of ooniprobe tests. </p> <p> Some ideas of things that would be useful to have be emulated by the test lab: </p> <ul> <li>A transparent HTTP proxy (based on squid)</li> <li>NAT traversal</li> <li>HTTP proxy blocking certain sites</li> <li>DNS based censorship</li> </ul> <p> The process of setting up the virtual machines and simulating censorship should be fully automated (<a href="https://trac.torproject.org/projects/tor/ticket/7233">related ticket</a>). </p> </li> <a id="steganographyBrowserAddon"></a> <li> <b>Steganography Browser Addon</b> <br> Effort Level: <i>Medium</i> <br> Skill Level: <i>Medium</i> <br> Likely Mentors: <i>sukhbir, Moritz (gamambel)</i> <p> To facilitate the sharing of bridge addresses and other secrets, we want a browser addon that detects steganographically and asymmetrically encrypted content embedded in website content. It would ship with a set of preconfigured keys, as well as allow users to modify that set. Additionally, it should be able to embed secrets. It must be written in an extensible way, so that other steganography libraries and supported media types can be added to the code easily. </p> <p> As part of your application for this project assess the current state of Javascript steganography libraries, tell us which one you would pick primarily, and why. Ideally, your application comes with some mockups of how parts of the user interface of your addon would look like. </p> <p> For more information see the <a href="http://www.cs.kau.se/philwint/censorbib/#Invernizzi2012">Message In A Bottle: Sailing Past Censorship</a> research paper. </p> </li> <a id="betterPluggableTransports"></a> <li> <b>Build Better Pluggable Transports</b> <br> Effort Level: <i>Medium to High</i> <br> Skill Level: <i>Medium</i> <br> Likely Mentors: <i>Steven (sjmurdoch)</i> <p> For Tor users in censored countries, we currently offer <a href="https://www.torproject.org/projects/obfsproxy.html.en">obfsproxy</a> bridges, which disguise Tor traffic by making it look random. This works for many users, but it has disadvantages: firstly it does not disguise packet size and secondly it looks like no real protocol. These weaknesses may result in obfsproxy being blocked. </p> <p> The goal for this project will be to implement new pluggable transports, which resolve these weaknesses and so can be deployed if/when obfsproxy is blocked. Ideas for doing so include: <ul> <li>Impersonate a voice-over-IP protocol</li> <li>Impersonate HTTP sufficiently well that traffic will go through a HTTP-only proxy</li> <li>Implement <a href="http://cacr.uwaterloo.ca/techreports/2011/cacr2011-21.pdf">scanning resistance</a></a> </ul> </p> <a id="profileUDPTransport"></a> <li> <b>Profile UDP transport protocols</b> <br> Effort Level: <i>Medium to High</i> <br> Skill Level: <i>High</i> <br> Likely Mentors: <i>Steven (sjmurdoch)</i> <p> There are <a href="https://research.torproject.org/techreports/datagram-comparison-2011-11-07.pdf">lots of options</a> as to how Tor could send its data over UDP rather than TCP, and some will likely perform significantly better than others. This project will evaluate these options, so as to decide which should be used in future versions of Tor. A first step will be to benchmark the various transport protocols being considered, in terms of performance and also code quality, including userspace TCP, <a href="https://github.com/bittorrent/libutp">μTP</a>, <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">SCTP</a> and <a href="http://curvecp.org/">CurveCP</a>. Initially these transport protocols will be examined in isolation, but if the project progresses well one or more could be integrated in Tor. </p> </li> <li> <b>Bring up new ideas!</b> <br> Don't like any of these? Look at the <a href="/press/presskit/2008-12-19-roadmap-full.pdf">Tor development roadmap</a> for more ideas, or just try out Tor, Vidalia, and Torbutton, and find out what you think needs fixing. Some of the <a href="<spectree>proposals">current proposals</a> might also be short on developers. </li> </ol> <a id="OtherCoding"></a> <h2><a class="anchor" href="#OtherCoding">Other Coding and Design related ideas</a></h2> <ol> <li>Tor relays don't work well on Windows XP. On Windows, Tor uses the standard <tt>select()</tt> system call, which uses space in the non-page pool. This means that a medium sized Tor relay will empty the non-page pool, <a href="<wiki>doc/WindowsBufferProblems">causing havoc and system crashes</a>. We should probably be using overlapped IO instead. One solution would be to teach <a href="http://www.monkey.org/~provos/libevent/">libevent</a> how to use overlapped IO rather than select() on Windows, and then adapt Tor to the new libevent interface. Christian King made a <a href="https://svn.torproject.org/svn/libevent-urz/trunk/">good start</a> on this in the summer of 2007.</li> <li>We need to actually start building our <a href="<page docs/documentation>#DesignDoc">blocking-resistance design</a>. This involves fleshing out the design, modifying many different pieces of Tor, adapting <a href="<page projects/vidalia>">Vidalia</a> so it supports the new features, and planning for deployment.</li> <li>We need a flexible simulator framework for studying end-to-end traffic confirmation attacks. Many researchers have whipped up ad hoc simulators to support their intuition either that the attacks work really well or that some defense works great. Can we build a simulator that's clearly documented and open enough that everybody knows it's giving a reasonable answer? This will spur a lot of new research. See the entry <a href="#Research">below</a> on confirmation attacks for details on the research side of this task — who knows, when it's done maybe you can help write a paper or three also.</li> <li>Tor 0.1.1.x and later include support for hardware crypto accelerators via OpenSSL. It has been lightly tested and is possibly very buggy. We're looking for more rigorous testing, performance analysis, and optimally, code fixes to OpenSSL and Tor if needed.</li> <li>Write a <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Fuzz_testing">fuzzer</a> for Tor to discover security vulnerabilities. Determine if there are good fuzzing frameworks out there for what we want. Win fame by getting credit when we put out a new release because of you!</li> <li>Tor uses TCP for transport and TLS for link encryption. This is nice and simple, but it means all cells on a link are delayed when a single packet gets dropped, and it means we can only reasonably support TCP streams. We have a <a href="<page docs/faq>#TransportIPnotTCP">list of reasons why we haven't shifted to UDP transport</a>, but it would be great to see that list get shorter. We also have a proposed <a href="<specblob>proposals/100-tor-spec-udp.txt">specification for Tor and UDP</a> — please let us know what's wrong with it.</li> <li>We're not that far from having IPv6 support for destination addresses (at exit nodes). If you care strongly about IPv6, that's probably the first place to start.</li> <li>We need a way to generate the website diagrams (for example, the "How Tor Works" pictures on the <a href="<page about/overview>">overview page</a> from source, so we can translate them as UTF-8 text rather than edit them by hand with Gimp. We might want to integrate this as an wml file so translations are easy and images are generated in multiple languages whenever we build the website.</li> <li>How can we make the various LiveCD/USB systems easier to maintain, improve, and document? One example is <a href="https://tails.boum.org/">The Amnesic Incognito Live System</a>. </li> <li> Another anti-censorship project is to try to make Tor more scanning-resistant. Right now, an adversary can identify <a href="<specblob>proposals/125-bridges.txt">Tor bridges</a> just by trying to connect to them, following the Tor protocol, and seeing if they respond. To solve this, bridges could <a href="<svnprojects>design-paper/blocking.html#tth_sEc9.3">act like webservers</a> (HTTP or HTTPS) when contacted by port-scanning tools, and not act like bridges until the user provides a bridge-specific key. To start, check out Shane Pope's <a href="http://dl.dropbox.com/u/37735/index.html">thesis and prototype</a>. </li> </ol> <a id="Research"></a> <h2><a class="anchor" href="#Research">Research</a></h2> <ol> <li>The "end-to-end traffic confirmation attack": by watching traffic at Alice and at Bob, we can <a href="http://freehaven.net/anonbib/#danezis:pet2004">compare traffic signatures and become convinced that we're watching the same stream</a>. So far Tor accepts this as a fact of life and assumes this attack is trivial in all cases. First of all, is that actually true? How much traffic of what sort of distribution is needed before the adversary is confident he has won? Are there scenarios (e.g. not transmitting much) that slow down the attack? Do some traffic padding or traffic shaping schemes work better than others?</li> <li>A related question is: Does running a relay/bridge provide additional protection against these timing attacks? Can an external adversary that can't see inside TLS links still recognize individual streams reliably? Does the amount of traffic carried degrade this ability any? What if the client-relay deliberately delayed upstream relayed traffic to create a queue that could be used to mimic timings of client downstream traffic to make it look like it was also relayed? This same queue could also be used for masking timings in client upstream traffic with the techniques from <a href="http://www.freehaven.net/anonbib/#ShWa-Timing06">adaptive padding</a>, but without the need for additional traffic. Would such an interleaving of client upstream traffic obscure timings for external adversaries? Would the strategies need to be adjusted for asymmetric links? For example, on asymmetric links, is it actually possible to differentiate client traffic from natural bursts due to their asymmetric capacity? Or is it easier than symmetric links for some other reason?</li> <li>Repeat Murdoch and Danezis's <a href="http://www.cl.cam.ac.uk/~sjm217/projects/anon/#torta">attack from Oakland 05</a> on the current Tor network. See if you can learn why it works well on some nodes and not well on others. (My theory is that the fast nodes with spare capacity resist the attack better.) If that's true, then experiment with the RelayBandwidthRate and RelayBandwidthBurst options to run a relay that is used as a client while relaying the attacker's traffic: as we crank down the RelayBandwidthRate, does the attack get harder? What's the right ratio of RelayBandwidthRate to actually capacity? Or is it a ratio at all? While we're at it, does a much larger set of candidate relays increase the false positive rate or other complexity for the attack? (The Tor network is now almost two orders of magnitude larger than it was when they wrote their paper.) Be sure to read <a href="http://freehaven.net/anonbib/#clog-the-queue">Don't Clog the Queue</a> too.</li> <li>The "routing zones attack": most of the literature thinks of the network path between Alice and her entry node (and between the exit node and Bob) as a single link on some graph. In practice, though, the path traverses many autonomous systems (ASes), and <a href="http://freehaven.net/anonbib/#feamster:wpes2004">it's not uncommon that the same AS appears on both the entry path and the exit path</a>. Unfortunately, to accurately predict whether a given Alice, entry, exit, Bob quad will be dangerous, we need to download an entire Internet routing zone and perform expensive operations on it. Are there practical approximations, such as avoiding IP addresses in the same /8 network?</li> <li>Other research questions regarding geographic diversity consider the tradeoff between choosing an efficient circuit and choosing a random circuit. Look at Stephen Rollyson's <a href="http://swiki.cc.gatech.edu:8080/ugResearch/uploads/7/ImprovingTor.pdf">position paper</a> on how to discard particularly slow choices without hurting anonymity "too much". This line of reasoning needs more work and more thinking, but it looks very promising.</li> <li>Tor doesn't work very well when relays have asymmetric bandwidth (e.g. cable or DSL). Because Tor has separate TCP connections between each hop, if the incoming bytes are arriving just fine and the outgoing bytes are all getting dropped on the floor, the TCP push-back mechanisms don't really transmit this information back to the incoming streams. Perhaps Tor should detect when it's dropping a lot of outgoing packets, and rate-limit incoming streams to regulate this itself? I can imagine a build-up and drop-off scheme where we pick a conservative rate-limit, slowly increase it until we get lost packets, back off, repeat. We need somebody who's good with networks to simulate this and help design solutions; and/or we need to understand the extent of the performance degradation, and use this as motivation to reconsider UDP transport.</li> <li>A related topic is congestion control. Is our current design sufficient once we have heavy use? Maybe we should experiment with variable-sized windows rather than fixed-size windows? That seemed to go well in an <a href="http://www.psc.edu/index.php/hpn-ssh/638">ssh throughput experiment</a>. We'll need to measure and tweak, and maybe overhaul if the results are good.</li> <li>Our censorship-resistance goals include preventing an attacker who's looking at Tor traffic on the wire from <a href="<svnprojects>design-paper/blocking.html#sec:network-fingerprint">distinguishing it from normal SSL traffic</a>. Obviously we can't achieve perfect steganography and still remain usable, but for a first step we'd like to block any attacks that can win by observing only a few packets. One of the remaining attacks we haven't examined much is that Tor cells are 512 bytes, so the traffic on the wire may well be a multiple of 512 bytes. How much does the batching and overhead in TLS records blur this on the wire? Do different buffer flushing strategies in Tor affect this? Could a bit of padding help a lot, or is this an attack we must accept?</li> <li>Tor circuits are built one hop at a time, so in theory we have the ability to make some streams exit from the second hop, some from the third, and so on. This seems nice because it breaks up the set of exiting streams that a given relay can see. But if we want each stream to be safe, the "shortest" path should be at least 3 hops long by our current logic, so the rest will be even longer. We need to examine this performance / security tradeoff.</li> <li>It's not that hard to DoS Tor relays or directory authorities. Are client puzzles the right answer? What other practical approaches are there? Bonus if they're backward-compatible with the current Tor protocol.</li> <li>Programs like <a href="<page torbutton/index>">Torbutton</a> aim to hide your browser's UserAgent string by replacing it with a uniform answer for every Tor user. That way the attacker can't splinter Tor's anonymity set by looking at that header. It tries to pick a string that is commonly used by non-Tor users too, so it doesn't stand out. Question one: how badly do we hurt ourselves by periodically updating the version of Firefox that Torbutton claims to be? If we update it too often, we splinter the anonymity sets ourselves. If we don't update it often enough, then all the Tor users stand out because they claim to be running a quite old version of Firefox. The answer here probably depends on the Firefox versions seen in the wild. Question two: periodically people ask us to cycle through N UserAgent strings rather than stick with one. Does this approach help, hurt, or not matter? Consider: cookies and recognizing Torbutton users by their rotating UserAgents; malicious websites who only attack certain browsers; and whether the answers to question one impact this answer. </li> <li>How many bridge relays do you need to know to maintain reachability? We should measure the churn in our bridges. If there is lots of churn, are there ways to keep bridge users more likely to stay connected? </li> </ol> <p> <a href="<page about/contact>">Let us know</a> if you've made progress on any of these! </p> </div> <!-- END MAINCOL --> <div id = "sidecol"> #include "side.wmi" #include "info.wmi" </div> <!-- END SIDECOL --> </div> <!-- END CONTENT --> #include <foot.wmi>