Damian Johnson commited on 2014-02-27 18:19:03
Zeige 1 geänderte Dateien mit 433 Einfügungen und 1 Löschungen.
Yikes, between Nick and Nathan there's quite a few! Adding GSoC project ideas from them both for Tor and Orbot.
| ... | ... |
@@ -425,7 +425,13 @@ meetings around the world.</li> |
| 425 | 425 |
<p> |
| 426 | 426 |
<b>Project Ideas:</b><br /> |
| 427 | 427 |
<i><a href="#torCleanup">Tor Codebase Cleanup</a></i><br /> |
| 428 |
- <i><a href="#chutneyExpansion">Make Chutney Do More, More Reliably</a></i> |
|
| 428 |
+ <i><a href="#chutneyExpansion">Make Chutney Do More, More Reliably</a></i><br /> |
|
| 429 |
+ <i><a href="#improveTorTestCoverage">Improve test coverage in Tor</a></i><br /> |
|
| 430 |
+ <i><a href="#useMoreCores">Have the Tor daemon use more cores</a></i><br /> |
|
| 431 |
+ <i><a href="#improveHiddenServices">Help improve Tor hidden services</a></i><br /> |
|
| 432 |
+ <i><a href="#consensusDiffs">Implement consensus diffs</a></i><br /> |
|
| 433 |
+ <i><a href="#improvedDnsSupport">Improved DNS support for Tor</a></i><br /> |
|
| 434 |
+ <i><a href="#torSandboxing">Help improve Tor sandboxing</a></i> |
|
| 429 | 435 |
</p> |
| 430 | 436 |
|
| 431 | 437 |
<a id="project-orchid"></a> |
| ... | ... |
@@ -516,6 +522,12 @@ meetings around the world.</li> |
| 516 | 522 |
date with all changes in Android and mobile threats. |
| 517 | 523 |
</p> |
| 518 | 524 |
|
| 525 |
+ <p> |
|
| 526 |
+ <b>Project Ideas:</b><br /> |
|
| 527 |
+ <i><a href="#orbotVPN">Orbot Android VPN</a></i><br /> |
|
| 528 |
+ <i><a href="#orfox">Orfox - Firefox/Gecko-based Android Browser for Tor</a></i> |
|
| 529 |
+ </p> |
|
| 530 |
+ |
|
| 519 | 531 |
<a id="project-tails"></a> |
| 520 | 532 |
<h3><a href="https://tails.boum.org/">The Amnesic Incognito Live System</a> (<a |
| 521 | 533 |
href="https://git-tails.immerda.ch/tails/">code</a>, <a |
| ... | ... |
@@ -1306,6 +1318,426 @@ information see ticket 7416.</a></b> |
| 1306 | 1318 |
</p> |
| 1307 | 1319 |
</li> |
| 1308 | 1320 |
|
| 1321 |
+ <a id="orbotVPN"></a> |
|
| 1322 |
+ <li> |
|
| 1323 |
+ <b>Orbot Android VPN</b> |
|
| 1324 |
+ <br> |
|
| 1325 |
+ Effort Level: <i>Medium</i> |
|
| 1326 |
+ <br> |
|
| 1327 |
+ Skill Level: <i>High</i> |
|
| 1328 |
+ <br> |
|
| 1329 |
+ Likely Mentors: <i>Nathan (n8fr8)</i> |
|
| 1330 |
+ <p> |
|
| 1331 |
+Android offers the ability for any application to establish a |
|
| 1332 |
+VPNService through which all traffic on the device is sent. We want to |
|
| 1333 |
+implement this type of service in order to route all traffic through |
|
| 1334 |
+the Tor network. This is a feature that will be implemented directly |
|
| 1335 |
+into Orbot: Tor for Android if successfully implemented. |
|
| 1336 |
+ </p> |
|
| 1337 |
+ |
|
| 1338 |
+ <p> |
|
| 1339 |
+The deliverables for the project will be a working Android VPN |
|
| 1340 |
+implementation that routes traffic through Tor, and integration of VPN |
|
| 1341 |
+code into the Orbot app. There must also be time made for reporting on |
|
| 1342 |
+the project through blog posts, network auditing of tracking to ensure |
|
| 1343 |
+leakage is not occurring. |
|
| 1344 |
+ </p> |
|
| 1345 |
+ |
|
| 1346 |
+ <p> |
|
| 1347 |
+Useful links and documentation to study: |
|
| 1348 |
+ </p> |
|
| 1349 |
+ |
|
| 1350 |
+ <ul> |
|
| 1351 |
+ <li><a href="https://gitweb.torproject.org/orbot.git">Orbot</a></li> |
|
| 1352 |
+ <li><a href="http://developer.android.com/reference/android/net/VpnService.html">Android VPNService API</a></li> |
|
| 1353 |
+ <li><a href="https://github.com/guardianproject/OrbotVPN">Existing work on Orbot VPN</a></li> |
|
| 1354 |
+ </ul> |
|
| 1355 |
+ |
|
| 1356 |
+ <p> |
|
| 1357 |
+Applicant should have the ability to build Orbot application from |
|
| 1358 |
+source using Android SDK and NDK tools. A solid understanding of IP |
|
| 1359 |
+routing, iptables, netfilter and VPN protocols would also be very |
|
| 1360 |
+helpful. The ability to use Wireshark or other network monitoring |
|
| 1361 |
+software to test and verify solution is something that can be taught, |
|
| 1362 |
+but if you already know how, bonus! Finally, understanding how the |
|
| 1363 |
+exiting Tor software can be used with various transparent proxying |
|
| 1364 |
+configurations is a good first step to understanding this problem. |
|
| 1365 |
+ </p> |
|
| 1366 |
+ </li> |
|
| 1367 |
+ |
|
| 1368 |
+ <a id="orfox"></a> |
|
| 1369 |
+ <li> |
|
| 1370 |
+ <b>Orfox - Firefox/Gecko-based Android Browser for Tor</b> |
|
| 1371 |
+ <br> |
|
| 1372 |
+ Effort Level: <i>High</i> |
|
| 1373 |
+ <br> |
|
| 1374 |
+ Skill Level: <i>Medium</i> |
|
| 1375 |
+ <br> |
|
| 1376 |
+ Likely Mentors: <i>Nathan (n8fr8)</i> |
|
| 1377 |
+ <p> |
|
| 1378 |
+With almost 1 million downloads, our Orweb browser has been a popular |
|
| 1379 |
+solution for easily accessing the web via Tor or any other HTTP or |
|
| 1380 |
+SOCKS proxy, while also ensuring local data caches are cleared and |
|
| 1381 |
+cookies are properly managed. Orweb is based on WebView, which has its |
|
| 1382 |
+limitations unfortunately. We would like to move to a |
|
| 1383 |
+Firefox/Fennec/GeckoView based browser, and have created a prototype |
|
| 1384 |
+for it. Mozilla has begun releasing GeckoView as a standalone |
|
| 1385 |
+component, as well, but it needs more testing, debugging and work on |
|
| 1386 |
+integration into our streamlined browser app model. Our end goal is to |
|
| 1387 |
+have a mobile browser that matches Tor Browser in terms of privacy |
|
| 1388 |
+enhancing features and security. |
|
| 1389 |
+ </p> |
|
| 1390 |
+ |
|
| 1391 |
+ <p> |
|
| 1392 |
+The deliverables for the project are expected to be the creation of a |
|
| 1393 |
+alpha quality release of Orfox, a GeckoView-based browser with feature |
|
| 1394 |
+parity of Orweb browser. A bonus goal is to implement additional |
|
| 1395 |
+features and capabilities based on Tor Browser patches for |
|
| 1396 |
+Fennec/Mozilla core. Finally, as always, a required activity is a |
|
| 1397 |
+network audit testing of implemented solution with write-ups, reports |
|
| 1398 |
+posted publicly. |
|
| 1399 |
+ </p> |
|
| 1400 |
+ |
|
| 1401 |
+ <p> |
|
| 1402 |
+Useful links to review: |
|
| 1403 |
+ </p> |
|
| 1404 |
+ |
|
| 1405 |
+ <ul> |
|
| 1406 |
+ <li><a href="https://github.com/guardianproject/orfox">Orfox (gecko prototype)</a></li> |
|
| 1407 |
+ <li><a href="https://github.com/guardianproject/orweb">Orweb (production browser on WebView)</a></li> |
|
| 1408 |
+ <li><a href="http://starkravingfinkle.org/blog/2013/10/geckoview-embedding-gecko-in-your-android-application/">GeckoView info</a></li> |
|
| 1409 |
+ <li><a href="https://www.torproject.org/projects/torbrowser.html.en">Tor Browser (desktop)</a></li> |
|
| 1410 |
+ </ul> |
|
| 1411 |
+ |
|
| 1412 |
+ <p> |
|
| 1413 |
+Applicant should have the ability to build Fennec and GeckoView |
|
| 1414 |
+libraries from source using Android SDK and NDK. Some experince with |
|
| 1415 |
+browser security models and threats would be a useful background to |
|
| 1416 |
+have. Ability to do network audits to ensure browser proxying is not |
|
| 1417 |
+leaking DNS, media streams or other network traffic, as well as tests |
|
| 1418 |
+against common browser de-anonymizing attacks are necessary. |
|
| 1419 |
+ </p> |
|
| 1420 |
+ </li> |
|
| 1421 |
+ |
|
| 1422 |
+ <a id="improveTorTestCoverage"></a> |
|
| 1423 |
+ <li> |
|
| 1424 |
+ <b>Improve test coverage in Tor</b> |
|
| 1425 |
+ <br> |
|
| 1426 |
+ Effort Level: <i>Medium</i> |
|
| 1427 |
+ <br> |
|
| 1428 |
+ Skill Level: <i>Medium</i> |
|
| 1429 |
+ <br> |
|
| 1430 |
+ Likely Mentors: <i>Nick (nickm)</i> |
|
| 1431 |
+ <p> |
|
| 1432 |
+Right now, our unit test coverage with the tests we ship is around 30% |
|
| 1433 |
+-- only 30% of the executable lines in our source are reached by the |
|
| 1434 |
+unit tests. Improving this test coverage could make Tor development |
|
| 1435 |
+much more reliable. |
|
| 1436 |
+ </p> |
|
| 1437 |
+ |
|
| 1438 |
+ <p> |
|
| 1439 |
+So we need better unit tests, and we need better integration tests too. |
|
| 1440 |
+ </p> |
|
| 1441 |
+ |
|
| 1442 |
+ <p> |
|
| 1443 |
+Improving unit tests would would involve refactoring functions to be more |
|
| 1444 |
+testable, and writing a bunch of unit tests. |
|
| 1445 |
+ </p> |
|
| 1446 |
+ |
|
| 1447 |
+ <p> |
|
| 1448 |
+Improving integratino tests would involve refactoring and improving |
|
| 1449 |
+the "chutney" program that launches a test tor network, and writing a |
|
| 1450 |
+bunch of tests to see what works and what doesn't work on such a |
|
| 1451 |
+network. It could also involve writing tests using the library "<a |
|
| 1452 |
+href="https://stem.torproject.org/">stem</a>" to script individual clients on a |
|
| 1453 |
+Chutney network. |
|
| 1454 |
+ </p> |
|
| 1455 |
+ |
|
| 1456 |
+ <p> |
|
| 1457 |
+To get a feel for how testing works in Tor today, download Tor and |
|
| 1458 |
+Chutney, and make sure you can build Tor and use Chutney. See how the |
|
| 1459 |
+unit tests work by skimming some of the test code in the src/test |
|
| 1460 |
+subdirectory. Try computing test coverage (according to the |
|
| 1461 |
+instructions in the doc/HACKING file. |
|
| 1462 |
+ </p> |
|
| 1463 |
+ |
|
| 1464 |
+ <p> |
|
| 1465 |
+Also, have a look at the one current integration test that works on |
|
| 1466 |
+chutney today: it is a shell script distributed with Tor as |
|
| 1467 |
+src/test/test-tor-network.sh . We probably don't want to have all of |
|
| 1468 |
+our integration tests be written as shell scripts, but it's interesting |
|
| 1469 |
+to see how one works. |
|
| 1470 |
+ </p> |
|
| 1471 |
+ |
|
| 1472 |
+ <p> |
|
| 1473 |
+If working on designs for an improved or refactored Chutney, watch out for <a |
|
| 1474 |
+href="http://www.joelonsoftware.com/articles/fog0000000018.html">"archicture |
|
| 1475 |
+astronautics"</a>: while it's important that we have a well-designed and |
|
| 1476 |
+maintainable Chutney architecture, it wouldn't be very useful if a good |
|
| 1477 |
+architecture were the <em>only</em> outcome here: we need tests too. |
|
| 1478 |
+ </p> |
|
| 1479 |
+ |
|
| 1480 |
+ <p> |
|
| 1481 |
+As part of the application process, please contribute a patch that makes |
|
| 1482 |
+a non-trivial improvement to chutney, and/or include a new test for some |
|
| 1483 |
+interesting Tor function. (Please pick a function that isn't completely |
|
| 1484 |
+easy to test.) |
|
| 1485 |
+ </p> |
|
| 1486 |
+ </li> |
|
| 1487 |
+ |
|
| 1488 |
+ <a id="useMoreCores"></a> |
|
| 1489 |
+ <li> |
|
| 1490 |
+ <b>Have the Tor daemon use more cores</b> |
|
| 1491 |
+ <br> |
|
| 1492 |
+ Effort Level: <i>Medium</i> |
|
| 1493 |
+ <br> |
|
| 1494 |
+ Skill Level: <i>Medium</i> |
|
| 1495 |
+ <br> |
|
| 1496 |
+ Likely Mentors: <i>Nick (nickm)</i> |
|
| 1497 |
+ <p> |
|
| 1498 |
+Right now, if you run a busy Tor server on a multicore computer, most of |
|
| 1499 |
+the cores are mostly unused. We have a "cpuworker" mechanism to move |
|
| 1500 |
+expensive computations into worker threads, but that mechanism is |
|
| 1501 |
+currently only used for a small fraction of our cryptography. Moving |
|
| 1502 |
+more work into the worker threads could improve performance immensely. |
|
| 1503 |
+ </p> |
|
| 1504 |
+ |
|
| 1505 |
+ <p> |
|
| 1506 |
+So it would be great to parallelize our cryptography more in order to |
|
| 1507 |
+better handle more cores. See |
|
| 1508 |
+<a href="https://trac.torproject.org/projects/tor/wiki/org/projects/Tor/MultithreadedCrypto">MultithreadedCrypto</a> |
|
| 1509 |
+for some background info, and |
|
| 1510 |
+<a href="https://trac.torproject.org/projects/tor/ticket/7572">ticket 7572</a> for some subtickets |
|
| 1511 |
+on our tracker. |
|
| 1512 |
+ </p> |
|
| 1513 |
+ |
|
| 1514 |
+ <p> |
|
| 1515 |
+(If you're reading through the code to see how it works today, you will |
|
| 1516 |
+also want to have a look at the new implementation for cpuworkers |
|
| 1517 |
+described in <a href="https://trac.torproject.org/projects/tor/ticket/9682">9682</a>.) |
|
| 1518 |
+ </p> |
|
| 1519 |
+ |
|
| 1520 |
+ <p> |
|
| 1521 |
+Completing the implementation of ticket #7572 --which would move our |
|
| 1522 |
+circuit crypto onto separate threads-- could be a good summer project. |
|
| 1523 |
+Alternatively, moving all of the signature generation and verification |
|
| 1524 |
+code onto the cpuworkers could be fun. In either case, you will have |
|
| 1525 |
+some important architectural decisions to make about how to minimize |
|
| 1526 |
+shared data between the main thread and the workers, how to avoid |
|
| 1527 |
+race conditions between them, and how to test it all to make sure it has |
|
| 1528 |
+no hidden failure cases. |
|
| 1529 |
+ </p> |
|
| 1530 |
+ |
|
| 1531 |
+ <p> |
|
| 1532 |
+As part of the application process for this project, please contribute a |
|
| 1533 |
+nontrivial patch to Tor -- ideally, one that will affect some part of |
|
| 1534 |
+the codebase that you want to work on. |
|
| 1535 |
+ </p> |
|
| 1536 |
+ </li> |
|
| 1537 |
+ |
|
| 1538 |
+ <a id="improveHiddenServices"></a> |
|
| 1539 |
+ <li> |
|
| 1540 |
+ <b>Help improve Tor hidden services</b> |
|
| 1541 |
+ <br> |
|
| 1542 |
+ Effort Level: <i>Medium</i> |
|
| 1543 |
+ <br> |
|
| 1544 |
+ Skill Level: <i>Medium</i> |
|
| 1545 |
+ <br> |
|
| 1546 |
+ Likely Mentors: <i>Nick (nickm)</i> |
|
| 1547 |
+ <p> |
|
| 1548 |
+We're working on a revamp of the entire Tor hidden service design to |
|
| 1549 |
+improve the security and reliability of the hidden service system. |
|
| 1550 |
+ </p> |
|
| 1551 |
+ |
|
| 1552 |
+ <p> |
|
| 1553 |
+This is a big project: see |
|
| 1554 |
+<a href="https://gitweb.torproject.org/torspec.git/blob_plain/refs/heads/master:/proposals/224-rend-spec-ng.txt">proposal |
|
| 1555 |
+224</a> for the latest design. Are you interested in implementing some |
|
| 1556 |
+part of that? |
|
| 1557 |
+ </p> |
|
| 1558 |
+ |
|
| 1559 |
+ <p> |
|
| 1560 |
+This is a very ambitious project, so we're deliberately not suggesting |
|
| 1561 |
+particular sub-topics. If you're interested in participating, try to |
|
| 1562 |
+read and understand the <a |
|
| 1563 |
+href="https://gitweb.torproject.org/torspec.git/blob_plain/refs/heads/master:/rend-spec.txt">existing |
|
| 1564 |
+design</a> and the design proposal for the new design, and then talk to |
|
| 1565 |
+us about what part you want to work on. |
|
| 1566 |
+ </p> |
|
| 1567 |
+ |
|
| 1568 |
+ <p> |
|
| 1569 |
+As part of the application process for this project, please contribute a |
|
| 1570 |
+nontrivial patch to Tor -- ideally, one that will affect some part of |
|
| 1571 |
+the codebase that you want to work on. |
|
| 1572 |
+ </p> |
|
| 1573 |
+ </li> |
|
| 1574 |
+ |
|
| 1575 |
+ <a id="consensusDiffs"></a> |
|
| 1576 |
+ <li> |
|
| 1577 |
+ <b>Implement consensus diffs</b> |
|
| 1578 |
+ <br> |
|
| 1579 |
+ Effort Level: <i>Medium</i> |
|
| 1580 |
+ <br> |
|
| 1581 |
+ Skill Level: <i>Medium</i> |
|
| 1582 |
+ <br> |
|
| 1583 |
+ Likely Mentors: <i>Nick (nickm)</i> |
|
| 1584 |
+ <p> |
|
| 1585 |
+Right now, every few hours, a Tor client downloads a new signed "consensus |
|
| 1586 |
+document" that describes the state of the network. Even though these |
|
| 1587 |
+documents are compressed, thisstill takes almost half a megabyte. |
|
| 1588 |
+ </p> |
|
| 1589 |
+ |
|
| 1590 |
+ <p> |
|
| 1591 |
+<a |
|
| 1592 |
+href="https://gitweb.torproject.org/torspec.git/blob_plain/refs/heads/master:/proposals/140-consensus-diffs.txt">Proposal |
|
| 1593 |
+140</a> describes a design to save a lot of bandwidth by transferring |
|
| 1594 |
+compressed <a href="http://en.wikipedia.org/wiki/Diff">diff</a>s instead |
|
| 1595 |
+of transferring the entire consensus document. |
|
| 1596 |
+ </p> |
|
| 1597 |
+ |
|
| 1598 |
+ <p> |
|
| 1599 |
+That's an attractive idea, but it presents some programming challenges. |
|
| 1600 |
+We probably don't want to ship a 'diff' and 'patch' along with Tor. Is |
|
| 1601 |
+there a free, <strong>safe</strong>, robust implementation of one of the |
|
| 1602 |
+good diff algorithms that we can use? |
|
| 1603 |
+ </p> |
|
| 1604 |
+ |
|
| 1605 |
+ <p> |
|
| 1606 |
+Alternatively, can we take advantage of regularities in the descriptor |
|
| 1607 |
+format in order to generate diffs more simply? |
|
| 1608 |
+ </p> |
|
| 1609 |
+ |
|
| 1610 |
+ <p> |
|
| 1611 |
+As part of the application process for this project, please contribute a |
|
| 1612 |
+nontrivial patch to Tor -- ideally, one that will affect some part of |
|
| 1613 |
+the codebase that you want to work on. Make sure that your application |
|
| 1614 |
+describes which implementations of the diff and patch algorithms you |
|
| 1615 |
+intend to use, and that your coding samples show strong evidence that |
|
| 1616 |
+you can do secure string manipulation in C. |
|
| 1617 |
+ </p> |
|
| 1618 |
+ </li> |
|
| 1619 |
+ |
|
| 1620 |
+ <a id="improvedDnsSupport"></a> |
|
| 1621 |
+ <li> |
|
| 1622 |
+ <b>Improved DNS support for Tor</b> |
|
| 1623 |
+ <br> |
|
| 1624 |
+ Effort Level: <i>Medium</i> |
|
| 1625 |
+ <br> |
|
| 1626 |
+ Skill Level: <i>Medium</i> |
|
| 1627 |
+ <br> |
|
| 1628 |
+ Likely Mentors: <i>Nick (nickm)</i> |
|
| 1629 |
+ <p> |
|
| 1630 |
+Right now, you can only use Tor's DNS support to look up IPv4 and IPv6 |
|
| 1631 |
+addresses, and to fetch PTR records. But DNS can do so much more! |
|
| 1632 |
+ </p> |
|
| 1633 |
+ |
|
| 1634 |
+ <p> |
|
| 1635 |
+<a |
|
| 1636 |
+href="https://gitweb.torproject.org/torspec.git/blob_plain/refs/heads/master:/proposals/219-expanded-dns.txt">Proposal |
|
| 1637 |
+219</a> describes some new cell types that Tor could use to support |
|
| 1638 |
+more types of DNS over Tor. |
|
| 1639 |
+ </p> |
|
| 1640 |
+ |
|
| 1641 |
+ <p> |
|
| 1642 |
+To see how Tor implements its existing DNS lookups, start by tracing the |
|
| 1643 |
+the connection_exit_begin_resolve() function in src/or/connection_edge.c , |
|
| 1644 |
+and see how we pass these requests downwards through src/or/dns.c to the |
|
| 1645 |
+underlying resolver. It's not too complicated, but there are some |
|
| 1646 |
+tricky parts to understand. |
|
| 1647 |
+ </p> |
|
| 1648 |
+ |
|
| 1649 |
+ <p> |
|
| 1650 |
+As part of the application process for this project, please contribute a |
|
| 1651 |
+nontrivial patch to Tor -- ideally, one that will affect some part of |
|
| 1652 |
+the codebase that you want to work on. |
|
| 1653 |
+ </p> |
|
| 1654 |
+ </li> |
|
| 1655 |
+ |
|
| 1656 |
+ <a id="torSandboxing"></a> |
|
| 1657 |
+ <li> |
|
| 1658 |
+ <b>Help improve Tor sandboxing</b> |
|
| 1659 |
+ <br> |
|
| 1660 |
+ Effort Level: <i>Medium</i> |
|
| 1661 |
+ <br> |
|
| 1662 |
+ Skill Level: <i>Medium</i> |
|
| 1663 |
+ <br> |
|
| 1664 |
+ Likely Mentors: <i>Nick (nickm)</i> |
|
| 1665 |
+ <p> |
|
| 1666 |
+The seccomp2 mechanism on Linux lets programs improve their robustness |
|
| 1667 |
+against unforseen bugs by running with restrictions on which system |
|
| 1668 |
+calls they can invoke and how they can call them. This can help |
|
| 1669 |
+security a lot. |
|
| 1670 |
+ </p> |
|
| 1671 |
+ |
|
| 1672 |
+ <p> |
|
| 1673 |
+Thanks to a GSOC student from last year, we now have seccomp2 support on |
|
| 1674 |
+Linux, which we use to restrict the capabilities of the entire Tor |
|
| 1675 |
+process. (For implementation details, see src/commmon/sandbox.c in the |
|
| 1676 |
+Tor source.) |
|
| 1677 |
+ </p> |
|
| 1678 |
+ |
|
| 1679 |
+ <p> |
|
| 1680 |
+But since the restrictions are done over the whole process, all pieces |
|
| 1681 |
+of the Tor code have permission to do things that only small parts of |
|
| 1682 |
+the Tor program need to do. Also, since we use seccomp2, these |
|
| 1683 |
+restrictions only work on Linux. |
|
| 1684 |
+ </p> |
|
| 1685 |
+ |
|
| 1686 |
+ <p> |
|
| 1687 |
+It would be great to instead divide the main Tor program into multiple |
|
| 1688 |
+processes with a robust IPC mechanism and assign each process its own |
|
| 1689 |
+minimal set of privileges; and to have this work (as best we can) on |
|
| 1690 |
+systems that don't have seccomp2 (eg Windows, Mac). |
|
| 1691 |
+ </p> |
|
| 1692 |
+ |
|
| 1693 |
+ <p> |
|
| 1694 |
+Either of these could be a whole GSOC project. |
|
| 1695 |
+ </p> |
|
| 1696 |
+ |
|
| 1697 |
+ <p> |
|
| 1698 |
+To get started, make sure you understand the existing sandboxing code. |
|
| 1699 |
+If you're interested in splitting Tor into multiple processes, think |
|
| 1700 |
+about the architecture, and think about how we could reach this |
|
| 1701 |
+architecture without completely rewriting the codebase. (Remember that |
|
| 1702 |
+even if you're focusing on Linux, Tor still needs to work on other |
|
| 1703 |
+operating systems.) |
|
| 1704 |
+ </p> |
|
| 1705 |
+ |
|
| 1706 |
+ <p> |
|
| 1707 |
+If you're interested in supporting more platforms, make sure you |
|
| 1708 |
+understand and can explain what sandboxing mechansisms you want to use, |
|
| 1709 |
+and what they're capable of. (You might want to investigate the way |
|
| 1710 |
+that other open-source programs, like the Chrome web browser, do their |
|
| 1711 |
+sandboxing on different platforms.) |
|
| 1712 |
+ </p> |
|
| 1713 |
+ |
|
| 1714 |
+ <p> |
|
| 1715 |
+As part of the application process for this project, please contribute a |
|
| 1716 |
+nontrivial patch to Tor -- ideally, one that will affect some part of |
|
| 1717 |
+the codebase that you want to work on. |
|
| 1718 |
+ </p> |
|
| 1719 |
+ </li> |
|
| 1720 |
+ |
|
| 1721 |
+<!-- |
|
| 1722 |
+ <a id=""></a> |
|
| 1723 |
+ <li> |
|
| 1724 |
+ <b></b> |
|
| 1725 |
+ <br> |
|
| 1726 |
+ Effort Level: <i>Medium</i> |
|
| 1727 |
+ <br> |
|
| 1728 |
+ Skill Level: <i>Medium</i> |
|
| 1729 |
+ <br> |
|
| 1730 |
+ Likely Mentors: <i>Damian (atagar)</i> |
|
| 1731 |
+ <p> |
|
| 1732 |
+ |
|
| 1733 |
+ </p> |
|
| 1734 |
+ |
|
| 1735 |
+ <p> |
|
| 1736 |
+ |
|
| 1737 |
+ </p> |
|
| 1738 |
+ </li> |
|
| 1739 |
+--> |
|
| 1740 |
+ |
|
| 1309 | 1741 |
<li> |
| 1310 | 1742 |
<b>Bring up new ideas!</b> |
| 1311 | 1743 |
<br> |
| 1312 | 1744 |