Roger Dingledine commited on 2008-03-18 06:35:49
Zeige 2 geänderte Dateien mit 261 Einfügungen und 257 Löschungen.
| ... | ... |
@@ -36,7 +36,11 @@ a thriving community of interested developers on the IRC channel and |
| 36 | 36 |
mailing lists, and we're eager to work with you, brainstorm about design, |
| 37 | 37 |
and so on, but you need to be able to manage your own time, and you |
| 38 | 38 |
need to already be familiar with how free software development on the |
| 39 |
-Internet works. In addition to hoping to get some more development work |
|
| 39 |
+Internet works. |
|
| 40 |
+</p> |
|
| 41 |
+ |
|
| 42 |
+<p> |
|
| 43 |
+In addition to hoping to get some more development work |
|
| 40 | 44 |
done on Tor and related applications, Google and Tor are most interested |
| 41 | 45 |
in getting students involved in the project in a way that keeps them |
| 42 | 46 |
involved after the summer too. As such, we will give priority to students |
| ... | ... |
@@ -104,7 +104,7 @@ people>#Core">core developers</a> would be good mentors. |
| 104 | 104 |
<ol> |
| 105 | 105 |
|
| 106 | 106 |
<li> |
| 107 |
-<b>Tor/Polipo/Vidalia Auto-Update Framework</b> |
|
| 107 |
+<b>Tor Exit Scanner improvements</b> |
|
| 108 | 108 |
<br /> |
| 109 | 109 |
Priority: <i>High</i> |
| 110 | 110 |
<br /> |
| ... | ... |
@@ -112,75 +112,167 @@ Effort Level: <i>High</i> |
| 112 | 112 |
<br /> |
| 113 | 113 |
Skill Level: <i>High</i> |
| 114 | 114 |
<br /> |
| 115 |
-Likely Mentors: <i>Matt, Jacob</i> |
|
| 115 |
+Likely Mentors: <i>Mike</i> |
|
| 116 | 116 |
<br /> |
| 117 |
-We're in need of a good authenticated-update framework. |
|
| 118 |
-Vidalia already has the ability to notice when the user is running an |
|
| 119 |
-outdated or unrecommended version of Tor, using signed statements inside |
|
| 120 |
-the Tor directory information. Currently, Vidalia simply pops |
|
| 121 |
-up a little message box that lets the user know they should manually |
|
| 122 |
-upgrade. The goal of this project would be to extend Vidalia with the |
|
| 123 |
-ability to also fetch and install the updated Tor software for the |
|
| 124 |
-user. We should do the fetches via Tor when possible, but also fall back |
|
| 125 |
-to direct fetches in a smart way. Time permitting, we would also like |
|
| 126 |
-to be able to update other |
|
| 127 |
-applications included in the bundled installers, such as Polipo and |
|
| 128 |
-Vidalia itself. |
|
| 117 |
+The Tor exit node scanner 'SoaT', part of the <a |
|
| 118 |
+href="<svnsandbox>torflow/">Torflow project</a>, makes connections out |
|
| 119 |
+of each Tor exit node and compares the content it gets back with what it |
|
| 120 |
+"should" get back. The goal is to notice misconfigured, broken, and even |
|
| 121 |
+malicious exit relays. Alas, the code is |
|
| 122 |
+currently written in rather rickety perl and relies on MD5sums of |
|
| 123 |
+entire documents in order to determine if exit nodes are modifying |
|
| 124 |
+content. The problem with this is threefold: 1) Perl sucks at life. |
|
| 125 |
+2) The scanner can't verify pages that are dynamic, and attackers can |
|
| 126 |
+focus malicious content injection on only those dynamic pages. 3) |
|
| 127 |
+Pages change after a while (or based on GeoIP) and begin generating |
|
| 128 |
+false positives. |
|
| 129 | 129 |
<br /> |
| 130 |
-To complete this project, the student will first need to first investigate |
|
| 131 |
-the existing auto-update frameworks (e.g., Sparkle on OS X) to evaluate |
|
| 132 |
-their strengths, weaknesses, security properties, and ability to be |
|
| 133 |
-integrated into Vidalia. If none are found to be suitable, the student |
|
| 134 |
-will design their own auto-update framework, document the design, and |
|
| 135 |
-then discuss the design with other developers to assess any security |
|
| 136 |
-issues. The student will then implement their framework (or integrate |
|
| 137 |
-an existing one) and test it. |
|
| 130 |
+Ideally, soat.pl would be reimplemented in a sane language with a |
|
| 131 |
+robust html parser library (since the rest of Torflow is in Python |
|
| 132 |
+that would be nice, but it is not required), and calculate signatures only for |
|
| 133 |
+tags and content likely to be targeted by a malicious attacker (script |
|
| 134 |
+tags, object links, images, css). It should also be robust in the face of |
|
| 135 |
+changes to content outside of Tor, and ultimately even GeoIP localized |
|
| 136 |
+content. |
|
| 137 |
+<br /> |
|
| 138 |
+This scanner would likely be run by the Directory Authorities and |
|
| 139 |
+report its results to the control port via the AuthDirBadExit config |
|
| 140 |
+setting. |
|
| 138 | 141 |
<br /> |
| 139 |
-A student undertaking this project should have good C++ development |
|
| 140 |
-experience. Previous experience with Qt is helpful, but not required. The |
|
| 141 |
-student should also have a good understanding of common security |
|
| 142 |
-practices, such as package signature verification. Good writing ability |
|
| 143 |
-is also important for this project, since a vital step of the project |
|
| 144 |
-will be producing a design document for others to review and discuss |
|
| 145 |
-with the student prior to implementation. |
|
| 146 | 142 |
</li> |
| 147 | 143 |
|
| 148 | 144 |
<li> |
| 149 |
-<b>An Improved and More Usable Network Map in Vidalia</b> |
|
| 145 |
+<b>Tor Node Scanner improvements</b> |
|
| 150 | 146 |
<br /> |
| 151 |
-Priority: <i>Medium</i> |
|
| 147 |
+Priority: <i>High</i> |
|
| 152 | 148 |
<br /> |
| 153 |
-Effort Level: <i>Medium</i> |
|
| 149 |
+Effort Level: <i>Medium to High</i> |
|
| 154 | 150 |
<br /> |
| 155 | 151 |
Skill Level: <i>Medium to High</i> |
| 156 | 152 |
<br /> |
| 157 |
-Likely Mentors: <i>Matt</i> |
|
| 153 |
+Likely Mentors: <i>Mike</i> |
|
| 158 | 154 |
<br /> |
| 159 |
-One of Vidalia's existing features is a network map that shows the user |
|
| 160 |
-the approximate geographic location of relays in the Tor network and |
|
| 161 |
-plots the paths the user's traffic takes as it is tunneled through the |
|
| 162 |
-Tor network. The map is currently not very interactive and has rather |
|
| 163 |
-poor graphics. Instead, we would like to leverage KDE's Marble widget |
|
| 164 |
-that gives us a better quality map and enables improved interactivity, |
|
| 165 |
-such as allowing the user to click on individual relays or circuits to |
|
| 166 |
-display additional information. We might also consider adding the ability |
|
| 167 |
-for users to click on a particular relay or a country containing one or |
|
| 168 |
-more Tor exit relays and say, "I want my connections to foo.com to exit |
|
| 169 |
-from here." |
|
| 155 |
+Similar to the exit scanner (or perhaps even during exit scanning), |
|
| 156 |
+statistics can be gathered about the reliability of nodes. Nodes that |
|
| 157 |
+fail too high a percentage of their circuits should not be given |
|
| 158 |
+Guard status. Perhaps they should have their reported bandwidth |
|
| 159 |
+penalized by some ratio as well, or just get marked as Invalid. In |
|
| 160 |
+addition, nodes that exhibit a very low average stream capacity but |
|
| 161 |
+advertise a very high node bandwidth can also be marked as Invalid. |
|
| 162 |
+Much of this statistics gathering is already done, it just needs to be |
|
| 163 |
+transformed into something that can be reported to the Directory |
|
| 164 |
+Authorities to blacklist/penalize nodes in such a way that clients |
|
| 165 |
+will listen. |
|
| 170 | 166 |
<br /> |
| 171 |
-This project will first involve the student getting familiar with Vidalia |
|
| 172 |
-and the Marble widget's API. The student will then integrate the widget |
|
| 173 |
-into Vidalia and customize Marble to be better suited for our application, |
|
| 174 |
-such as making circuits clickable, storing cached map data in Vidalia's |
|
| 175 |
-own data directory, and customizing some of the widget's dialogs. |
|
| 167 |
+In addition, these same statistics can be gathered about the traffic |
|
| 168 |
+through a node. Events can be added to the <a |
|
| 169 |
+href="https://www.torproject.org/svn/torctl/doc/howto.txt">Tor Control |
|
| 170 |
+Protocol</a> to |
|
| 171 |
+report if a circuit extend attempt through the node succeeds or fails, and |
|
| 172 |
+passive statistics can be gathered on both bandwidth and reliability |
|
| 173 |
+of other nodes via a node-based monitor using these events. Such a |
|
| 174 |
+scanner would also report information on oddly-behaving nodes to |
|
| 175 |
+the Directory Authorities, but a communication channel for this |
|
| 176 |
+currently does not exist and would need to be developed as well. |
|
| 177 |
+</li> |
|
| 178 |
+ |
|
| 179 |
+<li> |
|
| 180 |
+<b>Help track the overall Tor Network status</b> |
|
| 176 | 181 |
<br /> |
| 177 |
-A student undertaking this project should have good C++ development |
|
| 178 |
-experience. Previous experience with Qt and CMake is helpful, but not |
|
| 179 |
-required. |
|
| 182 |
+Priority: <i>High</i> |
|
| 183 |
+<br /> |
|
| 184 |
+Effort Level: <i>Medium</i> |
|
| 185 |
+<br /> |
|
| 186 |
+Skill Level: <i>Medium</i> |
|
| 187 |
+<br /> |
|
| 188 |
+Likely Mentors: <i>Roger, Nick, Mike</i> |
|
| 189 |
+<br /> |
|
| 190 |
+It would be great to set up an automated system for tracking network |
|
| 191 |
+health over time, graphing it, etc. Part of this project would involve |
|
| 192 |
+inventing better metrics for assessing network health and growth. Is the |
|
| 193 |
+average uptime of the network increasing? How many relays are qualifying |
|
| 194 |
+for Guard status this month compared to last month? What's the turnover |
|
| 195 |
+in terms of new relays showing up and relays shutting off? Periodically |
|
| 196 |
+people collect brief snapshots, but where it gets really interesting is |
|
| 197 |
+when we start tracking data points over time. |
|
| 198 |
+<br /> |
|
| 199 |
+Data could be collected from the "Tor Node Scanner" item above, from |
|
| 200 |
+the server descriptors that each relay publishes, and from other |
|
| 201 |
+sources. Results over time could be integrated into one of the <a |
|
| 202 |
+href="https://torstatus.blutmagie.de/">Tor Status</a> web pages, or be |
|
| 203 |
+kept separate. Speaking of the Tor Status pages, take a look at Roger's |
|
| 204 |
+<a href="http://archives.seul.org/or/talk/Jan-2008/msg00300.html">Tor |
|
| 205 |
+Status wish list</a>. |
|
| 206 |
+</li> |
|
| 207 |
+ |
|
| 208 |
+<li> |
|
| 209 |
+<b>Tor path selection improvements</b> |
|
| 210 |
+<br /> |
|
| 211 |
+Priority: <i>High</i> |
|
| 212 |
+<br /> |
|
| 213 |
+Effort Level: <i>Low to Medium</i> |
|
| 214 |
+<br /> |
|
| 215 |
+Skill Level: <i>High</i> |
|
| 216 |
+<br /> |
|
| 217 |
+Likely Mentors: <i>Roger, Nick, Mike</i> |
|
| 218 |
+<br /> |
|
| 219 |
+Some simple improvements can be made to Tor's path selection to vastly |
|
| 220 |
+improve Tor speed. For instance, some of the (unofficial) <a |
|
| 221 |
+href="http://wiki.noreply.org/noreply/TheOnionRouter/FireFoxTorPerf">Tor |
|
| 222 |
+Performance Recommendations</a> on the wiki are to increase the number of |
|
| 223 |
+guards and decrease the CircuitBuildTimeout. Ideally, the client would |
|
| 224 |
+<a href="http://archives.seul.org/or/talk/Feb-2008/msg00012.html">learn |
|
| 225 |
+these values by gathering statistics on circuit construction |
|
| 226 |
+time</a> (and/or using values gained from Torflow), and set the timeouts |
|
| 227 |
+low enough such that some high percentile (75%, 90%, 1-stddev?) of |
|
| 228 |
+circuits succeed, yet extremely slow nodes are avoided. This would |
|
| 229 |
+involve some statistics gathering+basic research, and some changes to |
|
| 230 |
+Tor path selection code. |
|
| 231 |
+<br /> |
|
| 232 |
+In addition, to improve path security, some elements from the <a |
|
| 233 |
+href="http://www.torproject.org/svn/trunk/doc/spec/proposals/115-two-hop-paths.txt">Two |
|
| 234 |
+Hop Paths proposal</a> could be done as part of this (since it will |
|
| 235 |
+likely touch the same code anyways), regardless of the adoption of |
|
| 236 |
+that proposal. In particular, clients probably should avoid guards that |
|
| 237 |
+seem to fail an excessive percentage of their circuits through them, |
|
| 238 |
+and non-firewalled clients should issue a warning if they are only able |
|
| 239 |
+to connect to a limited set of guard nodes. See also |
|
| 240 |
+<a href="http://archives.seul.org/or/dev/Feb-2008/msg00003.html">this |
|
| 241 |
+or-dev post</a>. |
|
| 180 | 242 |
</li> |
| 181 | 243 |
|
| 182 | 244 |
<li> |
| 183 |
-<b>Better Debian Packaging for Tor+Vidalia</b> |
|
| 245 |
+<b>Translation Wiki</b> |
|
| 246 |
+<br /> |
|
| 247 |
+Priority: <i>High</i> |
|
| 248 |
+<br /> |
|
| 249 |
+Effort Level: <i>Medium</i> |
|
| 250 |
+<br /> |
|
| 251 |
+Skill Level: <i>Medium</i> |
|
| 252 |
+<br /> |
|
| 253 |
+Likely Mentors: <i>Jacob</i> |
|
| 254 |
+<br /> |
|
| 255 |
+We need a way to edit and translate sections of the website. Currently |
|
| 256 |
+the website is made up of a bunch of <a href="<svnwebsite>en/">wml |
|
| 257 |
+files</a>, and <a href="<page translation>">translators</a> fetch these |
|
| 258 |
+wml files, translate them in an editor, and either send us the translation |
|
| 259 |
+or use svn to commit them back. The current "cost" of publication of |
|
| 260 |
+website changes is quite high even for English language users. For a |
|
| 261 |
+single word change or any type of |
|
| 262 |
+minor change, the page may never be corrected or translated. It would |
|
| 263 |
+be nice to have a wiki that was specifically geared towards translation |
|
| 264 |
+and would somehow track the upstream (English) versions to indicate when |
|
| 265 |
+a fresh translation is needed, like our current |
|
| 266 |
+<a href="<page translation-status>">translation status page</a>. This |
|
| 267 |
+seems mostly like a job for a wiki |
|
| 268 |
+integrator or wiki software author. Certainly the person would need to |
|
| 269 |
+be interested in human languages and translation. They should at least |
|
| 270 |
+be minimally familiar with what Tor is; but they would not have to interact |
|
| 271 |
+with the software, only the documentation and the website. |
|
| 272 |
+</li> |
|
| 273 |
+ |
|
| 274 |
+<li> |
|
| 275 |
+<b>Better Debian/Ubuntu Packaging for Tor+Vidalia</b> |
|
| 184 | 276 |
<br /> |
| 185 | 277 |
Priority: <i>High</i> |
| 186 | 278 |
<br /> |
| ... | ... |
@@ -231,6 +323,117 @@ Debian package management and some C++ development experience. Previous |
| 231 | 323 |
experience with Qt is helpful, but not required. |
| 232 | 324 |
</li> |
| 233 | 325 |
|
| 326 |
+<li> |
|
| 327 |
+<b>Improving Tor's ability to resist censorship</b> |
|
| 328 |
+<br /> |
|
| 329 |
+Priority: <i>High</i> |
|
| 330 |
+<br /> |
|
| 331 |
+Effort Level: <i>High</i> |
|
| 332 |
+<br /> |
|
| 333 |
+Skill Level: <i>High</i> |
|
| 334 |
+<br /> |
|
| 335 |
+Likely Mentors: <i>Nick</i> |
|
| 336 |
+<br /> |
|
| 337 |
+The Tor 0.2.0.x series makes <a |
|
| 338 |
+href="<svnsandbox>doc/design-paper/blocking.html">significant |
|
| 339 |
+improvements</a> in resisting national and organizational censorship. |
|
| 340 |
+But Tor still needs better mechanisms for some parts of its |
|
| 341 |
+anti-censorship design. For example, current Tors can only listen on a |
|
| 342 |
+single address/port combination at a time. There's |
|
| 343 |
+<a href="<svnsandbox>doc/spec/proposals/118-multiple-orports.txt">a |
|
| 344 |
+proposal to address this limitation</a> and allow clients to connect |
|
| 345 |
+to any given Tor on multiple addresses and ports, but it needs more |
|
| 346 |
+work. Another anti-censorship project (far more difficult) is to try |
|
| 347 |
+to make Tor more scanning-resistant. Right now, an adversary can identify |
|
| 348 |
+<a href="<svnsandbox>doc/spec/proposals/125-bridges.txt">Tor bridges</a> |
|
| 349 |
+just by trying to connect to them, following the Tor protocol, and |
|
| 350 |
+seeing if they respond. To solve this, bridges could |
|
| 351 |
+<a href="<svnsandbox>doc/design-paper/blocking.html#tth_sEc9.3">act like |
|
| 352 |
+webservers</a> (HTTP or HTTPS) when contacted by port-scanning tools, |
|
| 353 |
+and not act like bridges until the user provides a bridge-specific key. |
|
| 354 |
+<br /> |
|
| 355 |
+This project involves a lot of research and design. One of the big |
|
| 356 |
+challenges will be identifying and crafting approaches that can still |
|
| 357 |
+resist an adversary even after the adversary knows the design, and |
|
| 358 |
+then trading off censorship resistance with usability and robustness. |
|
| 359 |
+</li> |
|
| 360 |
+ |
|
| 361 |
+<li> |
|
| 362 |
+<b>Tor/Polipo/Vidalia Auto-Update Framework</b> |
|
| 363 |
+<br /> |
|
| 364 |
+Priority: <i>Medium</i> |
|
| 365 |
+<br /> |
|
| 366 |
+Effort Level: <i>High</i> |
|
| 367 |
+<br /> |
|
| 368 |
+Skill Level: <i>High</i> |
|
| 369 |
+<br /> |
|
| 370 |
+Likely Mentors: <i>Matt, Jacob</i> |
|
| 371 |
+<br /> |
|
| 372 |
+We're in need of a good authenticated-update framework. |
|
| 373 |
+Vidalia already has the ability to notice when the user is running an |
|
| 374 |
+outdated or unrecommended version of Tor, using signed statements inside |
|
| 375 |
+the Tor directory information. Currently, Vidalia simply pops |
|
| 376 |
+up a little message box that lets the user know they should manually |
|
| 377 |
+upgrade. The goal of this project would be to extend Vidalia with the |
|
| 378 |
+ability to also fetch and install the updated Tor software for the |
|
| 379 |
+user. We should do the fetches via Tor when possible, but also fall back |
|
| 380 |
+to direct fetches in a smart way. Time permitting, we would also like |
|
| 381 |
+to be able to update other |
|
| 382 |
+applications included in the bundled installers, such as Polipo and |
|
| 383 |
+Vidalia itself. |
|
| 384 |
+<br /> |
|
| 385 |
+To complete this project, the student will first need to first investigate |
|
| 386 |
+the existing auto-update frameworks (e.g., Sparkle on OS X) to evaluate |
|
| 387 |
+their strengths, weaknesses, security properties, and ability to be |
|
| 388 |
+integrated into Vidalia. If none are found to be suitable, the student |
|
| 389 |
+will design their own auto-update framework, document the design, and |
|
| 390 |
+then discuss the design with other developers to assess any security |
|
| 391 |
+issues. The student will then implement their framework (or integrate |
|
| 392 |
+an existing one) and test it. |
|
| 393 |
+<br /> |
|
| 394 |
+A student undertaking this project should have good C++ development |
|
| 395 |
+experience. Previous experience with Qt is helpful, but not required. The |
|
| 396 |
+student should also have a good understanding of common security |
|
| 397 |
+practices, such as package signature verification. Good writing ability |
|
| 398 |
+is also important for this project, since a vital step of the project |
|
| 399 |
+will be producing a design document for others to review and discuss |
|
| 400 |
+with the student prior to implementation. |
|
| 401 |
+</li> |
|
| 402 |
+ |
|
| 403 |
+<li> |
|
| 404 |
+<b>An Improved and More Usable Network Map in Vidalia</b> |
|
| 405 |
+<br /> |
|
| 406 |
+Priority: <i>Medium</i> |
|
| 407 |
+<br /> |
|
| 408 |
+Effort Level: <i>Medium</i> |
|
| 409 |
+<br /> |
|
| 410 |
+Skill Level: <i>Medium to High</i> |
|
| 411 |
+<br /> |
|
| 412 |
+Likely Mentors: <i>Matt</i> |
|
| 413 |
+<br /> |
|
| 414 |
+One of Vidalia's existing features is a network map that shows the user |
|
| 415 |
+the approximate geographic location of relays in the Tor network and |
|
| 416 |
+plots the paths the user's traffic takes as it is tunneled through the |
|
| 417 |
+Tor network. The map is currently not very interactive and has rather |
|
| 418 |
+poor graphics. Instead, we would like to leverage KDE's Marble widget |
|
| 419 |
+that gives us a better quality map and enables improved interactivity, |
|
| 420 |
+such as allowing the user to click on individual relays or circuits to |
|
| 421 |
+display additional information. We might also consider adding the ability |
|
| 422 |
+for users to click on a particular relay or a country containing one or |
|
| 423 |
+more Tor exit relays and say, "I want my connections to foo.com to exit |
|
| 424 |
+from here." |
|
| 425 |
+<br /> |
|
| 426 |
+This project will first involve the student getting familiar with Vidalia |
|
| 427 |
+and the Marble widget's API. The student will then integrate the widget |
|
| 428 |
+into Vidalia and customize Marble to be better suited for our application, |
|
| 429 |
+such as making circuits clickable, storing cached map data in Vidalia's |
|
| 430 |
+own data directory, and customizing some of the widget's dialogs. |
|
| 431 |
+<br /> |
|
| 432 |
+A student undertaking this project should have good C++ development |
|
| 433 |
+experience. Previous experience with Qt and CMake is helpful, but not |
|
| 434 |
+required. |
|
| 435 |
+</li> |
|
| 436 |
+ |
|
| 234 | 437 |
<li> |
| 235 | 438 |
<b>Tor Controller Status Event Interface</b> |
| 236 | 439 |
<br /> |
| ... | ... |
@@ -274,36 +477,6 @@ be understandable by non-technical users. Bonus points for some graphic |
| 274 | 477 |
design/Photoshop fu, since we might want/need some shiny new icons too. |
| 275 | 478 |
</li> |
| 276 | 479 |
|
| 277 |
-<li> |
|
| 278 |
-<b>Translation Wiki</b> |
|
| 279 |
-<br /> |
|
| 280 |
-Priority: <i>High</i> |
|
| 281 |
-<br /> |
|
| 282 |
-Effort Level: <i>Medium</i> |
|
| 283 |
-<br /> |
|
| 284 |
-Skill Level: <i>Medium</i> |
|
| 285 |
-<br /> |
|
| 286 |
-Likely Mentors: <i>Jacob</i> |
|
| 287 |
-<br /> |
|
| 288 |
-We need a way to edit and translate sections of the website. Currently |
|
| 289 |
-the website is made up of a bunch of <a href="<svnwebsite>en/">wml |
|
| 290 |
-files</a>, and <a href="<page translation>">translators</a> fetch these |
|
| 291 |
-wml files, translate them in an editor, and either send us the translation |
|
| 292 |
-or use svn to commit them back. The current "cost" of publication of |
|
| 293 |
-website changes is quite high even for English language users. For a |
|
| 294 |
-single word change or any type of |
|
| 295 |
-minor change, the page may never be corrected or translated. It would |
|
| 296 |
-be nice to have a wiki that was specifically geared towards translation |
|
| 297 |
-and would somehow track the upstream (English) versions to indicate when |
|
| 298 |
-a fresh translation is needed, like our current |
|
| 299 |
-<a href="<page translation-status>">translation status page</a>. This |
|
| 300 |
-seems mostly like a job for a wiki |
|
| 301 |
-integrator or wiki software author. Certainly the person would need to |
|
| 302 |
-be interested in human languages and translation. They should at least |
|
| 303 |
-be minimally familiar with what Tor is; but they would not have to interact |
|
| 304 |
-with the software, only the documentation and the website. |
|
| 305 |
-</li> |
|
| 306 |
- |
|
| 307 | 480 |
<li> |
| 308 | 481 |
<b>Improvements on our active browser configuration tester</b> - |
| 309 | 482 |
<a href="https://check.torproject.org/">https://check.torproject.org/</a> |
| ... | ... |
@@ -395,41 +568,6 @@ channels. The student should be closely familiar with using Tor and how |
| 395 | 568 |
to prevent Tor information leakage. |
| 396 | 569 |
</li> |
| 397 | 570 |
|
| 398 |
-<li> |
|
| 399 |
-<b>Improving Tor's ability to resist censorship</b> |
|
| 400 |
-<br /> |
|
| 401 |
-Priority: <i>High</i> |
|
| 402 |
-<br /> |
|
| 403 |
-Effort Level: <i>High</i> |
|
| 404 |
-<br /> |
|
| 405 |
-Skill Level: <i>High</i> |
|
| 406 |
-<br /> |
|
| 407 |
-Likely Mentors: <i>Nick</i> |
|
| 408 |
-<br /> |
|
| 409 |
-The Tor 0.2.0.x series makes <a |
|
| 410 |
-href="<svnsandbox>doc/design-paper/blocking.html">significant |
|
| 411 |
-improvements</a> in resisting national and organizational censorship. |
|
| 412 |
-But Tor still needs better mechanisms for some parts of its |
|
| 413 |
-anti-censorship design. For example, current Tors can only listen on a |
|
| 414 |
-single address/port combination at a time. There's |
|
| 415 |
-<a href="<svnsandbox>doc/spec/proposals/118-multiple-orports.txt">a |
|
| 416 |
-proposal to address this limitation</a> and allow clients to connect |
|
| 417 |
-to any given Tor on multiple addresses and ports, but it needs more |
|
| 418 |
-work. Another anti-censorship project (far more difficult) is to try |
|
| 419 |
-to make Tor more scanning-resistant. Right now, an adversary can identify |
|
| 420 |
-<a href="<svnsandbox>doc/spec/proposals/125-bridges.txt">Tor bridges</a> |
|
| 421 |
-just by trying to connect to them, following the Tor protocol, and |
|
| 422 |
-seeing if they respond. To solve this, bridges could |
|
| 423 |
-<a href="<svnsandbox>doc/design-paper/blocking.html#tth_sEc9.3">act like |
|
| 424 |
-webservers</a> (HTTP or HTTPS) when contacted by port-scanning tools, |
|
| 425 |
-and not act like bridges until the user provides a bridge-specific key. |
|
| 426 |
-<br /> |
|
| 427 |
-This project involves a lot of research and design. One of the big |
|
| 428 |
-challenges will be identifying and crafting approaches that can still |
|
| 429 |
-resist an adversary even after the adversary knows the design, and |
|
| 430 |
-then trading off censorship resistance with usability and robustness. |
|
| 431 |
-</li> |
|
| 432 |
- |
|
| 433 | 571 |
<li> |
| 434 | 572 |
<b>Libevent and Tor integration improvements</b> |
| 435 | 573 |
<br /> |
| ... | ... |
@@ -636,144 +774,6 @@ project is one part about identifying requirements to such a |
| 636 | 774 |
tool and designing its interface, and one part lots of coding. |
| 637 | 775 |
</li> |
| 638 | 776 |
|
| 639 |
-<li> |
|
| 640 |
-<b>Tor Exit Scanner improvements</b> |
|
| 641 |
-<br /> |
|
| 642 |
-Priority: <i>High</i> |
|
| 643 |
-<br /> |
|
| 644 |
-Effort Level: <i>High</i> |
|
| 645 |
-<br /> |
|
| 646 |
-Skill Level: <i>High</i> |
|
| 647 |
-<br /> |
|
| 648 |
-Likely Mentors: <i>Mike</i> |
|
| 649 |
-<br /> |
|
| 650 |
-The Tor exit node scanner 'SoaT', part of the <a |
|
| 651 |
-href="<svnsandbox>torflow/">Torflow project</a>, makes connections out |
|
| 652 |
-of each Tor exit node and compares the content it gets back with what it |
|
| 653 |
-"should" get back. The goal is to notice misconfigured, broken, and even |
|
| 654 |
-malicious exit relays. Alas, the code is |
|
| 655 |
-currently written in rather rickety perl and relies on MD5sums of |
|
| 656 |
-entire documents in order to determine if exit nodes are modifying |
|
| 657 |
-content. The problem with this is threefold: 1) Perl sucks at life. |
|
| 658 |
-2) The scanner can't verify pages that are dynamic, and attackers can |
|
| 659 |
-focus malicious content injection on only those dynamic pages. 3) |
|
| 660 |
-Pages change after a while (or based on GeoIP) and begin generating |
|
| 661 |
-false positives. |
|
| 662 |
-<br /> |
|
| 663 |
-Ideally, soat.pl would be reimplemented in a sane language with a |
|
| 664 |
-robust html parser library (since the rest of Torflow is in Python |
|
| 665 |
-that would be nice, but it is not required), and calculate signatures only for |
|
| 666 |
-tags and content likely to be targeted by a malicious attacker (script |
|
| 667 |
-tags, object links, images, css). It should also be robust in the face of |
|
| 668 |
-changes to content outside of Tor, and ultimately even GeoIP localized |
|
| 669 |
-content. |
|
| 670 |
-<br /> |
|
| 671 |
-This scanner would likely be run by the Directory Authorities and |
|
| 672 |
-report its results to the control port via the AuthDirBadExit config |
|
| 673 |
-setting. |
|
| 674 |
-<br /> |
|
| 675 |
-</li> |
|
| 676 |
- |
|
| 677 |
-<li> |
|
| 678 |
-<b>Tor Node Scanner improvements</b> |
|
| 679 |
-<br /> |
|
| 680 |
-Priority: <i>High</i> |
|
| 681 |
-<br /> |
|
| 682 |
-Effort Level: <i>Medium to High</i> |
|
| 683 |
-<br /> |
|
| 684 |
-Skill Level: <i>Medium to High</i> |
|
| 685 |
-<br /> |
|
| 686 |
-Likely Mentors: <i>Mike</i> |
|
| 687 |
-<br /> |
|
| 688 |
-Similar to the exit scanner (or perhaps even during exit scanning), |
|
| 689 |
-statistics can be gathered about the reliability of nodes. Nodes that |
|
| 690 |
-fail too high a percentage of their circuits should not be given |
|
| 691 |
-Guard status. Perhaps they should have their reported bandwidth |
|
| 692 |
-penalized by some ratio as well, or just get marked as Invalid. In |
|
| 693 |
-addition, nodes that exhibit a very low average stream capacity but |
|
| 694 |
-advertise a very high node bandwidth can also be marked as Invalid. |
|
| 695 |
-Much of this statistics gathering is already done, it just needs to be |
|
| 696 |
-transformed into something that can be reported to the Directory |
|
| 697 |
-Authorities to blacklist/penalize nodes in such a way that clients |
|
| 698 |
-will listen. |
|
| 699 |
-<br /> |
|
| 700 |
-In addition, these same statistics can be gathered about the traffic |
|
| 701 |
-through a node. Events can be added to the <a |
|
| 702 |
-href="https://www.torproject.org/svn/torctl/doc/howto.txt">Tor Control |
|
| 703 |
-Protocol</a> to |
|
| 704 |
-report if a circuit extend attempt through the node succeeds or fails, and |
|
| 705 |
-passive statistics can be gathered on both bandwidth and reliability |
|
| 706 |
-of other nodes via a node-based monitor using these events. Such a |
|
| 707 |
-scanner would also report information on oddly-behaving nodes to |
|
| 708 |
-the Directory Authorities, but a communication channel for this |
|
| 709 |
-currently does not exist and would need to be developed as well. |
|
| 710 |
-</li> |
|
| 711 |
- |
|
| 712 |
-<li> |
|
| 713 |
-<b>Help track the overall Tor Network status</b> |
|
| 714 |
-<br /> |
|
| 715 |
-Priority: <i>High</i> |
|
| 716 |
-<br /> |
|
| 717 |
-Effort Level: <i>Medium</i> |
|
| 718 |
-<br /> |
|
| 719 |
-Skill Level: <i>Medium</i> |
|
| 720 |
-<br /> |
|
| 721 |
-Likely Mentors: <i>Roger, Nick, Mike</i> |
|
| 722 |
-<br /> |
|
| 723 |
-It would be great to set up an automated system for tracking network |
|
| 724 |
-health over time, graphing it, etc. Part of this project would involve |
|
| 725 |
-inventing better metrics for assessing network health and growth. Is the |
|
| 726 |
-average uptime of the network increasing? How many relays are qualifying |
|
| 727 |
-for Guard status this month compared to last month? What's the turnover |
|
| 728 |
-in terms of new relays showing up and relays shutting off? Periodically |
|
| 729 |
-people collect brief snapshots, but where it gets really interesting is |
|
| 730 |
-when we start tracking data points over time. |
|
| 731 |
-<br /> |
|
| 732 |
-Data could be collected from the "Tor Node Scanner" item above, from |
|
| 733 |
-the server descriptors that each relay publishes, and from other |
|
| 734 |
-sources. Results over time could be integrated into one of the <a |
|
| 735 |
-href="https://torstatus.blutmagie.de/">Tor Status</a> web pages, or be |
|
| 736 |
-kept separate. Speaking of the Tor Status pages, take a look at Roger's |
|
| 737 |
-<a href="http://archives.seul.org/or/talk/Jan-2008/msg00300.html">Tor |
|
| 738 |
-Status wish list</a>. |
|
| 739 |
-</li> |
|
| 740 |
- |
|
| 741 |
-<li> |
|
| 742 |
-<b>Tor path selection improvements</b> |
|
| 743 |
-<br /> |
|
| 744 |
-Priority: <i>High</i> |
|
| 745 |
-<br /> |
|
| 746 |
-Effort Level: <i>Low to Medium</i> |
|
| 747 |
-<br /> |
|
| 748 |
-Skill Level: <i>High</i> |
|
| 749 |
-<br /> |
|
| 750 |
-Likely Mentors: <i>Roger, Nick, Mike</i> |
|
| 751 |
-<br /> |
|
| 752 |
-Some simple improvements can be made to Tor's path selection to vastly |
|
| 753 |
-improve Tor speed. For instance, some of the (unofficial) <a |
|
| 754 |
-href="http://wiki.noreply.org/noreply/TheOnionRouter/FireFoxTorPerf">Tor |
|
| 755 |
-Performance Recommendations</a> on the wiki are to increase the number of |
|
| 756 |
-guards and decrease the CircuitBuildTimeout. Ideally, the client would |
|
| 757 |
-<a href="http://archives.seul.org/or/talk/Feb-2008/msg00012.html">learn |
|
| 758 |
-these values by gathering statistics on circuit construction |
|
| 759 |
-time</a> (and/or using values gained from Torflow), and set the timeouts |
|
| 760 |
-low enough such that some high percentile (75%, 90%, 1-stddev?) of |
|
| 761 |
-circuits succeed, yet extremely slow nodes are avoided. This would |
|
| 762 |
-involve some statistics gathering+basic research, and some changes to |
|
| 763 |
-Tor path selection code. |
|
| 764 |
-<br /> |
|
| 765 |
-In addition, to improve path security, some elements from the <a |
|
| 766 |
-href="http://www.torproject.org/svn/trunk/doc/spec/proposals/115-two-hop-paths.txt">Two |
|
| 767 |
-Hop Paths proposal</a> could be done as part of this (since it will |
|
| 768 |
-likely touch the same code anyways), regardless of the adoption of |
|
| 769 |
-that proposal. In particular, clients probably should avoid guards that |
|
| 770 |
-seem to fail an excessive percentage of their circuits through them, |
|
| 771 |
-and non-firewalled clients should issue a warning if they are only able |
|
| 772 |
-to connect to a limited set of guard nodes. See also |
|
| 773 |
-<a href="http://archives.seul.org/or/dev/Feb-2008/msg00003.html">this |
|
| 774 |
-or-dev post</a>. |
|
| 775 |
-</li> |
|
| 776 |
- |
|
| 777 | 777 |
<li> |
| 778 | 778 |
<b>Torbutton improvements</b> |
| 779 | 779 |
<br /> |
| 780 | 780 |