db86a2d0ace9aae632f56fae0cbdd24b963043cf
Andrew Lewman new-contribute.html: This...

Andrew Lewman authored 19 years ago

1) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2) "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3) 
4) <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
5) <head>
6)   <title>Tor: Contribute</title>
7)   <meta name="Author" content="Roger Dingledine" />
8)   <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
9)   <link rel="stylesheet" type="text/css" href="stylesheet.css" />
10)   <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
11) </head>
12) <body>
13) 
14) <!-- TITLE BAR & NAVIGATION -->
15) 
16) <table class="banner" border="0" cellpadding="0" cellspacing="0">
17)     <tr>
18)         <td class="banner-left"></td>
19)         <td class="banner-middle">
20)             <a href="index.html">Home</a>
21)           | <a href="howitworks.html">How It Works</a>
22)           | <a href="download.html">Download</a>
23)           | <a href="documentation.html">Docs</a>
24)           | <a href="users.html">Users</a>
25)           | <a href="faq.html">FAQs</a>
26)           | <a class="current">Contribute</a>
27)           | <a href="developers.html">Developers</a>
28)           | <a href="research.html">Research</a>
29)           | <a href="people.html">People</a>
30)         </td>
31)         <td class="banner-right"></td>
32)     </tr>
33) </table>
34) 
35) <!-- END TITLE BAR & NAVIGATION -->
36) 
37) <div class="center">
38) 
39) <div class="main-column">
40) 
41) <!-- PUT CONTENT AFTER THIS TAG -->
42) <pre>
Andrew Lewman re-arranged to new categori...

Andrew Lewman authored 19 years ago

43)     Six Easy Pieces:
44)     - We need users like you to try Tor out, and let the Tor developers know about bugs you find or features you don't find.
45)     - Please consider running a server to help the Tor network grow.
46)     - We especially need people with Windows programming skills to run an exit server on Windows, to help us debug.
47)     - Run a Tor hidden service and put interesting content on it.
48)     - Tell your friends! Get them to run servers. Get them to run hidden services. Get them to tell their friends.
49)     - Consider joining the Electronic Frontier Foundation. More EFF donations means more freedom in the world, including more Tor development.
50) 
51) ****coding challenges****
52) 	**easy**
53) 	**medium**
54) 	**hard**
55)   - use openssl aes when available
Andrew Lewman new-contribute.html: This...

Andrew Lewman authored 19 years ago

56)   - do the kernel buffer style design
Andrew Lewman re-arranged to new categori...

Andrew Lewman authored 19 years ago

57)   - how do ulimits work on win32, anyway?  (We should handle WSAENOBUFS as needed, look at the MaxConnections registry entry, look at the MaxUserPort entry, and look at the TcpTimedWaitDelay entry. We may also want to provide a way to set them as needed. See bug 98.)
Andrew Lewman new-contribute.html: This...

Andrew Lewman authored 19 years ago

58)   - Implement reverse DNS (already specified)
Andrew Lewman re-arranged to new categori...

Andrew Lewman authored 19 years ago

59)   - It would be nice to have a FirewalledIPs thing that works like FirewallPorts.
Andrew Lewman new-contribute.html: This...

Andrew Lewman authored 19 years ago

60)   - Make configure.in handle cross-compilation
61)     - Have NULL_REP_IS_ZERO_BYTES default to 1.
62)     - Make with-ssl-dir disable search for ssl.
Andrew Lewman re-arranged to new categori...

Andrew Lewman authored 19 years ago

63)   - Have clients and dirservers preserve reputation info over reboots.
Andrew Lewman new-contribute.html: This...

Andrew Lewman authored 19 years ago

64)   - Support egd or other non-OS-integrated strong entropy sources
65)   - password protection for on-disk identity key
66)   - Possible to get autoconf to easily install things into ~/.tor?
Andrew Lewman re-arranged to new categori...

Andrew Lewman authored 19 years ago

67)   - server descriptor declares min log level, clients avoid servers that are too loggy.
Andrew Lewman new-contribute.html: This...

Andrew Lewman authored 19 years ago

68)   - Separate node discovery from routing to allow neat extensions. [Goodell?]
Andrew Lewman re-arranged to new categori...

Andrew Lewman authored 19 years ago

69)     - Add SetServerStatus control event to adjust verified/running status of nodes.
70)     - Add NoDownload config option to prevent regular directory downloads from happening.
Andrew Lewman new-contribute.html: This...

Andrew Lewman authored 19 years ago

71)   - Choosing exit node by meta-data, e.g. country.
72)   - Use cpuworker for more heavy lifting.
73)     - Signing (and verifying) hidserv descriptors
74)     - Signing (and verifying) intro/rend requests
75)     - Signing (and verifying) router descriptors
76)     - Signing (and verifying) directories
77)     - Doing TLS handshake (this is very hard to separate out, though)
Andrew Lewman re-arranged to new categori...

Andrew Lewman authored 19 years ago

78)   - Buffer size pool: allocate a maximum size for all buffers, not a maximum size for each buffer. So we don't have to give up as quickly (and kill the thickpipe!) when there's congestion.
79)   - Congestion control. Is our current design sufficient once we have heavy use? Need to measure and tweak, or maybe overhaul.
80)   - Add alternative versions of crypto.c and tortls.c to use libnss or libgcrypt+gnutls.
81)   - If we have a trusted directory on port 80, optionally stop falling back to forbidden ports when fascistfirewall blocks all good dirservers.
82)   - We're always looking for better Windows installers. Specifically, it would be great if somebody were to extend our NSIS-based windows installer to include FreeCap and Privoxy.
83)     - Our OS X installer can't be uninstalled. Are there non-sucky OS X packagers that have uninstall capabilities? This is becoming an increasing bother.
84)     - We need somebody to code up a GUI or other controller program, to do configuration, etc. See our control specification for details, and the rudimentary demonstration Python control script. No, we don't know what the interface should look like. You can use any license you want, but we'd recommend 3-clause BSD or maybe GPL; and we can only help out if your license conforms to the DFSG.
85)     - Periodically people running servers tells us they want to have one BandwidthRate during some part of the day, and a different BandwidthRate at other parts of the day. Rather than coding this inside Tor, we should have a little script that speaks via the Tor Controller Interface, and does a setconf to change the bandwidth rate. Perhaps it would run out of cron, or perhaps it would sleep until appropriate times and then do its tweak (that's probably more portable). Can somebody write one for us and we'll put it inside tor/contrib/?
86)     - Does somebody want to do up a patch so we can be an NT service? Or so we can go in the system tray?
87)     - A good (portable, fast, clean, BSD-free) asynchronous DNS library would be really handy, so we don't have to keep forking DNS worker threads to do gethostbyname.
88)     - We're always looking for better Windows installers. Specifically, it would be great if somebody were to extend our NSIS-based windows installer to include FreeCap and Privoxy.
89)     - Our OS X installer can't be uninstalled. Are there non-sucky OS X packagers that have uninstall capabilities? This is becoming an increasing bother.
90)     - We need somebody to code up a GUI or other controller program, to do configuration, etc. See our control specification for details, and the rudimentary demonstration Python control script. No, we don't know what the interface should look like. You can use any license you want, but we'd recommend 3-clause BSD or maybe GPL; and we can only help out if your license conforms to the DFSG.
91)     - Periodically people running servers tells us they want to have one BandwidthRate during some part of the day, and a different BandwidthRate at other parts of the day. Rather than coding this inside Tor, we should have a little script that speaks via the Tor Controller Interface, and does a setconf to change the bandwidth rate. Perhaps it would run out of cron, or perhaps it would sleep until appropriate times and then do its tweak (that's probably more portable). Can somebody write one for us and we'll put it inside tor/contrib/?
92)     - Does somebody want to do up a patch so we can be an NT service? Or so we can go in the system tray?
93)     - A good (portable, fast, clean, BSD-free) asynchronous DNS library would be really handy, so we don't have to keep forking DNS worker threads to do gethostbyname.
94) 
95) ****documentation challenges****
96) 	**easy**
97) 	**medium**
98) 	**hard**
99) 
100)   - Server instructions for OSX and Windows operators.
101)   - Improve and clarify the wiki entry on port forwarding.
102)    - Exit node caching: tie into squid or other caching web proxy.
103)     - Does somebody want to help maintain this website, or help with documentation, or help with managing our TODO and handling bug reports?
104)     - We may have too much documentation. It's spread out too far and duplicates itself in places. Can you help us consolidate?
105)     - Please help translate the web page and documentation into other languages. See the translation guidelines if you want to help out. (Examples: French , Persian and Vietnamese.)
106)     - Please fix up the FAQ Wiki, and if you know the answer to a question in the "unanswered FAQs" list, please answer it.
107)     - Can somebody take a look at Martin's Squid and Tor page, and update it to reflect Tor's RedirectExit config option?
108) 
109) ****testing challenges****
110) 	**easy**
111) 	**medium**
112) 	**hard**
113) 
114)   - web proxy gateways to let normal people browse hidden services.  (This has been done a few times, but nobody has sent us code.)
Andrew Lewman added volunteer todo of pri...

Andrew Lewman authored 19 years ago

115)   - investigate privoxy vs. freecap for win32 clients
Andrew Lewman re-arranged to new categori...

Andrew Lewman authored 19 years ago

116)     - We've got a list of potentially useful programs you might run with Tor here. We also have the Torify howto. Can somebody try them out, simplify the explanations, expand them where they need it, document them better, and make them all-around more useful?
117)     - We need somebody to fuzz Tor. Are there good libraries out there for what we want? What are the first steps? Win fame by getting credit when we put out a new release because of you!
118)     - Website volume fingerprinting attacks (Back et al, Hintz). Defenses include a large cell size, defensive dropping, etc. How well does each approach work?
119)     - The end-to-end traffic confirmation attack. We need to study long-range dummies more, along with traffic shaping. How much traffic of what sort of distribution is needed before the adversary is confident he has won?
120)     - What sensitive info squeaks by privoxy? Are other html scrubbers better?
Andrew Lewman new-contribute.html: This...

Andrew Lewman authored 19 years ago

121) 
Andrew Lewman re-arranged to new categori...

Andrew Lewman authored 19 years ago

122) ****research challenges****
123) 	**easy**
124) 	**medium**
125) 	**hard**
Andrew Lewman new-contribute.html: This...

Andrew Lewman authored 19 years ago

126) 
127)   - Arranging membership management for independence.
128)     Sybil defenses without having a human bottleneck.
129)     How to gather random sample of nodes.
130)     How to handle nodelist recommendations.
131)     Consider incremental switches: a p2p tor with only 50 users has
132)       different anonymity properties than one with 10k users, and should
133)       be treated differently.
134)   - Incentives to relay; incentives to exit.
135)   - Allowing dissidents to relay through Tor clients.
136)   - Experiment with mid-latency systems. How do they impact usability,
137)     how do they impact safety?
138)   - Understand how powerful fingerprinting attacks are, and experiment
139)     with ways to foil them (long-range padding?).
140)   - Come up with practical approximations to picking entry and exit in
141)     different routing zones.
142)   - Find ideal churn rate for helper nodes; how safe is it?
143)   - Attacking freenet-gnunet/timing-delay-randomness-arguments.
144)   - Is exiting from the middle of the circuit always a bad idea?
145)   - IPv6 support (For exit addresses)
146)     - Spec issue: if a resolve returns an IP4 and an IP6 address,
147)       which to use?
148)     - Add to exit policy code
149)     - Make tor_gethostbyname into tor_getaddrinfo
150)     - Make everything that uses uint32_t as an IP address change to use
151)       a generalize address struct.
152)     - Change relay cell types to accept new addresses.
153)     - Add flag to serverdescs to tell whether IPv6 is supported.
154)   - patch tsocks with our current patches + gethostbyname, getpeername, etc.
155)   - make freecap (or whichever) do what we want.
156)   - scrubbing proxies for protocols other than http.
157)   - We need better default privoxy configs to ship.
158)   - We need a good scrubbing HTTP proxy; privoxy is unmaintained and sucky.
159)   - A DNS proxy would let unmodified socks4/socks5 apps to work well.
160)   - Add SOCKS support to more applications
161)   - store hidden service information to disk: dirservers forget service
162)     descriptors when they restart; nodes offering hidden services forget
163)     their chosen intro points when they restart.
Andrew Lewman re-arranged to new categori...

Andrew Lewman authored 19 years ago

164)   - It's not that hard to DoS Tor servers or dirservers. Are puzzles the right answer? What other practical approaches are there?
165)     - Server CPU load is high because clients keep asking to make new circuits, which uses public key crypto. Possible defenses include: using helper nodes (fixed entry nodes); rate limiting the number of create cells handled per second; having clients retry failed extensions a few times; implementing ssl sessions; and using hardware crypto when available.
166)     - We fear we might not work very well when servers have asymmetric bandwidth. 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? We need somebody who's good with networks to simulate this and help design solutions.
167)     - Right now the hidden service descriptors are being stored on the dirservers, but any reliable distributed storage system would do (for example, a DHT that allows authenticated updates). Can somebody figure out our best options and decide if they're good enough?
168)     - How hard is it to patch bind or a DNS proxy to redirect requests to Tor via our tor-resolve socks extension? What about to convert UDP DNS requests to TCP requests and send them through Tor?
169)     - Tor provides anonymous connections, but if you want to keep multiple pseudonyms in practice (say, in case you frequently go to two websites and if anybody knew about both of them they would conclude it's you), we don't support that well yet. We should find a good approach and interface for handling pseudonymous profiles in Tor. See this post and followup for details.