Adding Weather and Stegotorus project ideas
Damian Johnson

Damian Johnson commited on 2014-03-06 17:52:25
Zeige 1 geänderte Dateien mit 106 Einfügungen und 0 Löschungen.


Well, that's odd. I added Karsten's Weather idea and even published it quite
some time ago, but looks like I didn't commit it. Oh well.

Adding that, and a new project idea vmon just sent to improve Stegotorus.


... ...
@@ -774,6 +774,11 @@ meetings around the world.</li>
774 774
     in early 2011.
775 775
     </p>
776 776
 
777
+    <p>
778
+    <b>Project Ideas:</b><br />
779
+    <i><a href="#rewriteWeather">Rewrite Tor Weather</a></i><br />
780
+    </p>
781
+
777 782
     <a id="project-gettor"></a>
778 783
     <h3><a href="https://trac.torproject.org/projects/tor/wiki/org/roadmaps/GetTor">GetTor</a> (<a
779 784
     href="https://gitweb.torproject.org/gettor.git">code</a>, <a
... ...
@@ -1776,6 +1781,107 @@ Note: Please do not submit an application without talking to the mentors: #sukhe
1776 1781
     </p>
1777 1782
     </li>
1778 1783
 
1784
+    <a id="rewriteWeather"></a>
1785
+    <li>
1786
+    <b>Rewrite Tor Weather</b>
1787
+    <br>
1788
+    Effort Level: <i>Medium</i>
1789
+    <br>
1790
+    Skill Level: <i>Medium</i>
1791
+    <br>
1792
+    Likely Mentors: <i>Karsten (karsten)</i>
1793
+    <p>
1794
+<a href="https://weather.torproject.org/">Tor Weather</a> provides an
1795
+email notification service to any users who want to monitor the status
1796
+of a Tor node.  Its favorite feature is to notify relay operators when
1797
+their relay has earned them a Tor t-shirt.  Tor Weather is written in
1798
+Python/Django.
1799
+    </p>
1800
+
1801
+    <p>
1802
+The Tor Weather codebase is pretty much unmaintained these days.  The
1803
+first part of this project would be to simplify the code by fetching Tor
1804
+network status data from <a
1805
+href="https://onionoo.torproject.org/">Onionoo</a> rather than running a
1806
+local tor client and keeping an own relay history database.  See the
1807
+related <a
1808
+href="https://trac.torproject.org/projects/tor/wiki/doc/weather-in-2014">community
1809
+effort to rewrite Weather</a> that started in January 2014.  After that,
1810
+there's a <a
1811
+href="https://trac.torproject.org/projects/tor/query?status=!closed&component=Tor+Weather">long
1812
+list of open tickets</a> to be resolved.
1813
+    </p>
1814
+
1815
+    <p>
1816
+Ideally, the student would become the new Weather maintainer after the
1817
+summer.  If that doesn't work out, the codebase should have become a lot
1818
+smaller by end of summer, so that it becomes easier to find somebody
1819
+else as new maintainer.
1820
+    </p>
1821
+    </li>
1822
+
1823
+    <a id="improveStegotorus"></a>
1824
+    <li>
1825
+    <b>Improve Stegotorus</b>
1826
+    <br>
1827
+    Effort Level: <i>Medium</i>
1828
+    <br>
1829
+    Skill Level: <i>Medium</i>
1830
+    <br>
1831
+    Likely Mentors: <i>vmon</i>
1832
+    <p>
1833
+Stegotorus is a fork of obfsproxy which helps developers to write more intelligent pluggable transports which can hide easier from deep packet inspector (DPI) system.
1834
+    </p>
1835
+
1836
+    <p>
1837
+For example, Stegotorus is equipped with a "chopper module" which takes care of following aspects:
1838
+    </p>
1839
+
1840
+    <ol>
1841
+      <li>It randomize the packet size so it is harder for the DPI system to detect the traffic base on the distribution of the packet size.</li>
1842
+      <li>It makes sure that it only handle as much (or as less) information as the transport module can handle.</li>
1843
+      <li>Chopper is equipped with it is own acknowledge/retransmit protocol. If the censor trying to disturb the connection by dropping or disturbing some of packets, it can recover the data by sending them many times.</li>
1844
+    </ol>
1845
+
1846
+    <p>
1847
+More importantly, Stegotorus is coming with its own HTTP transport module which obfuscates Tor or any other encrypted traffic in HTTP content such as Javascript code or images. HTTP transport module is also written in a way which new module developers can easily add new obfuscation modules for new contents or improve current obfuscation algorithms without the need of dealing with networking aspect of the problem.
1848
+    </p>
1849
+
1850
+    <p>
1851
+Stegotorus is written in C++. you can find the latest code <a href="https://github.com/zackw/stegotorus/tree/tor-improve">here</a>.
1852
+    </p>
1853
+
1854
+    <p>
1855
+In this regard, Stegotorus is offering one of the most complete and sophisticated platforms for writing stealthy pluggable transports.
1856
+    </p>
1857
+
1858
+    <p>
1859
+If you know C++ and interested in Stegotorus and excited about battling censorship, there are many ways that you can contribute to Stegotorus. Here are few important tasks. Your proposal might contain a good number of them:
1860
+    </p>
1861
+
1862
+    <ol>
1863
+      <li>Currently Stegotorus handshake is encrypted using the symmetric secret key of the Stegotorus bridge. However, we would like to implement a totally random handshake and considering that some transports suffer badly from "bandwidth shortage", our best choice currently is to implement <a href="http://elligator.cr.yp.to/">this algorithm</a>.</li>
1864
+      <li>Stegotorus defense against active probing is to authenticate the header of the received packet. If the authentication fails Stegotorus turns into a transparent proxy. The capability of Stegotorus as a transparent proxy needs improvement and further testing.</li>
1865
+      <li>Stegotorus has a new framework for writing Steg module. However some of the Steg modules (PDF, SWF and JS) are written in the old framework, we need to refactor their code in the new framework.</li>
1866
+      <li>As writting new Steg modules in python is easier and safer, it is desirable to write an Steg module interface for Stegotorus which can accept and interact with Steg modules written in python/cython.</li>
1867
+      <li>To make detection of anomalies in the traffic harder, Stegotorus hands a noise-to-signal ratio to each Steg modules. Steg modules' algorithms need to use more intelligent way of embedding to use this ratio.</li>
1868
+      <li>Stegotorus has several parameters to tweak its behavior. Currently all these parameters are given in command line. We would like to have a config file to store these parameters as an alternative method.</li>
1869
+      <li>The general security of the code needs to be reviewed and audited for buffer overflow, memory leak etc.</li>
1870
+      <li>Steg modules for new file format for the HTTP transport are always welcome to reflect the actual traffic of the Internet.</li>
1871
+      <li>Packaging Stegotorus for windows.</li>
1872
+      <li>There is a parallel efforts to improve Stegotorus at SRI. We would like to merge the useful feature developed by SRI in our branch of Stegotorus.</li>
1873
+      <li>Stegotorus needs to support SOCKS protocol to be able to receive the initial parameters from Tor through SOCKS handshake.</li>
1874
+    </ol>
1875
+
1876
+    <p>
1877
+You can find a list of open issues concerning Stegotorus <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=Stegotorus&order=priority">here</a>.
1878
+    </p>
1879
+
1880
+    <p>
1881
+You also can think of lots of other awesome creative ways of improving Stegotorus and include those in your proposal.
1882
+    </p>
1883
+    </li>
1884
+
1779 1885
 <!--
1780 1886
     <a id=""></a>
1781 1887
     <li>
1782 1888