Adding tails' new gsoc projects
Damian Johnson

Damian Johnson commited on 2012-03-05 17:06:24
Zeige 1 geänderte Dateien mit 134 Einfügungen und 8 Löschungen.


Couple projects sent by intrigeri...
* Petname system for Tor hidden services (ague)
* Tails server: Self-hosted services behind Tails-powered Tor hidden services
    (intrigeri, anonym)


... ...
@@ -347,17 +347,13 @@ meetings around the world.</li>
347 347
     and still under very active development.
348 348
     </p>
349 349
     
350
-    <!--
351 350
     <p>
352 351
     <b>Project Ideas:</b><br />
353
-    <i><a href="#tailsStartMenu">Custom GDM3 startup menu, aka.
354
-    tails-greeter</a></i><br />
355
-    <i><a href="#tailsMetadataAnonymizing">Meta-data anonymizing toolkit for
356
-    file publication</a></i><br />
357
-    <i><a href="#tailsDebianLive">Improve Debian Live support for
358
-    persistence</a></i>
352
+    <i><a href="#tailsHiddenServicePetnames">Petname system for Tor hidden
353
+    services</a></i><br />
354
+    <i><a href="#tailsServer">Tails server: Self-hosted services behind
355
+    Tails-powered Tor hidden services</a></i>
359 356
     </p>
360
-    -->
361 357
     
362 358
     <a id="project-torsocks"></a>
363 359
     <h3><a href="http://code.google.com/p/torsocks/">Torsocks</a> (<a
... ...
@@ -862,6 +858,49 @@ meetings around the world.</li>
862 858
     robustness.</p>
863 859
     </li>
864 860
     
861
+    <a id="tailsHiddenServicePetnames"></a>
862
+    <li>
863
+    <b>Petname system for Tor hidden services</b>
864
+    <br>
865
+    Priority: <i>Medium</i>
866
+    <br>
867
+    Effort Level: <i>High</i>
868
+    <br>
869
+    Skill Level: <i>High</i>
870
+    <br>
871
+    Likely Mentors: <i>ague</i>
872
+    <p>Tor provides hidden services. These services are only reachable through
873
+    Tor itself, and provide greater anonymity both for the providers of the
874
+    service and for its users.</p>
875
+    <p>One current downside of Tor hidden services is that they are addressed
876
+    using 80-bit base32-encoded addresses such as "v2cbb2l4lsnpio4q.onion".
877
+    These addresses are hard to remember; this makes them hard to use
878
+    within amnesic environment like Tails.</p>
879
+    <p>The project is to implement a petname system for Tor hidden services:
880
+    a way for users or providers of Tor hidden services to add a simple
881
+    'nickname' to a central database. Users could then query this central
882
+    database to retrieve a full hidden service address by giving
883
+    a nickname.</p>
884
+    <p>Adding petnames to the database could be done using a web interface or
885
+    automated fetch like those described in the <a
886
+    href="https://gitweb.torproject.org/torspec.git/blob/HEAD:/proposals/ideas/xxx-onion-nyms.txt">&quot;.onion
887
+    nym system&quot; proposal</a>.</p>
888
+    <p>Querying the database could be done using a web interface, a REST API and
889
+    a DNS interface.</p>
890
+    <p>In order not to grow indefinitely, the software should make regular tests to
891
+    see if hidden services are still reachable and, depending on the last time
892
+    a nickname was accessed, cleanup the database as necessary.</p>
893
+    <p>The software should allow a distributed, fault-tolerant setup.
894
+    All nodes should have a synchronized copy of the database, should be
895
+    ready to answer queries and should coordinate the tests for hidden
896
+    service availability.</p>
897
+    <p>The resulting codebase must be easy to deploy: it should not be hard to
898
+    setup new databases.</p>
899
+    <p>It is expected that the volunteer will be using Behaviour Driven
900
+    Development methods. Either in Ruby using Cucumber and RSpec, or in
901
+    Python using similar tools.</p>
902
+    </li>
903
+    
865 904
     <a id="stemPathsupport"></a>
866 905
     <li>
867 906
     <b>Stem PathSupport Capabilities</b>
... ...
@@ -919,6 +958,93 @@ meetings around the world.</li>
919 958
       be TorBEL.</p></li>
920 959
     </ol>
921 960
     
961
+    <a id="tailsServer"></a>
962
+    <li>
963
+    <b>Tails server: Self-hosted services behind Tails-powered Tor hidden services</b>
964
+    <br>
965
+    Priority: <i>Medium</i>
966
+    <br>
967
+    Effort Level: <i>High</i>
968
+    <br>
969
+    Skill Level: <i>Medium, but wide-scoped</i>
970
+    <br>
971
+    Likely Mentors: <i>intrigeri, anonym</i>
972
+    <p>Let's talk about group collaboration, communication and data sharing
973
+    infrastructure, such as chat servers, wikis, or file repositories.</p>
974
+    <p>Hosting such data and infrastructure <b>in the cloud</b> generally
975
+    implies to trust the service providers not to disclose content, usage or
976
+    users location information to third-parties. Hence, there are many threat
977
+    models in which cloud hosting is not suitable.</p>
978
+    <p>Tor partly answers the <b>users location</b> part; this is great, but
979
+    <b>content</b> is left unprotected.</p>
980
+    <p>There are two main ways to protect such content: either to encrypt it
981
+    client-side (<b>security by design</b>), or to avoid putting it into
982
+    untrusted hands in the first place.</p>
983
+    <p>Cloud solutions that offer security by design are rare and generally
984
+    not mature yet. The <b>Tails server</b> project is about exploring the
985
+    other side of the alternative: avoiding to put private data into
986
+    untrusted hands in the first place.</p>
987
+    <p>This is made possible thanks to Tor hidden services, that allow users
988
+    to offer location-hidden services, and make self-hosting possible in
989
+    many threat models. Self-hosting has its own lot of problems, however,
990
+    particularly in contexts where the physical security of the hosting
991
+    place is not assured. Combining Tor hidden services with Tails'
992
+    amnesia property and limited support for persistent encrypted data
993
+    allows to protect content, to a great degree, even in such contexts.</p>
994
+    <p>In short, setting up a new Tails server would be done by:</p>
995
+    
996
+    <ol style="list-style-type: decimal">
997
+      <li>Alice plugs a USB stick into a running desktop Tails system.</li>
998
+      <li>Alice uses a GUI to easily configure the needed services.</li>
999
+      <li>Alice unplugs the USB stick, that now contains encrypted services
1000
+      configuration and data storage space.</li>
1001
+      <li>Alice plugs that USB stick (and possibly a Tails Live CD) into the
1002
+      old laptop that was dedicated to run Tails server.</li>
1003
+      <li>Once booted, Alice enters the encryption passphrase either
1004
+      directly using the keyboard or through a web interface listening on the
1005
+      local network.</li>
1006
+      <li>Then, Bob can use the configured services once he gets a hold on
1007
+      the hidden service address. (The <b>petname system for Tor hidden
1008
+      services</b> project would be very complementary to this one, by the
1009
+      way.)</li>
1010
+    </ol>
1011
+    
1012
+    <p>Tails server should content itself with hardware that is a bit old
1013
+    (such as a PIII-450 laptop with 256MB of RAM) and/or half broken (e.g.
1014
+    non-functional hard-disk, screen or keyboard).</p>
1015
+    <p>The challenges behind this project are:</p>
1016
+    
1017
+    <ul>
1018
+      <li>Design and write the services configuration GUI [keywords: edit
1019
+      configuration files, upgrade between major Debian versions,
1020
+      debconf].</li>
1021
+      <li>How to create the hidden service key? [keywords: Vidalia, control
1022
+      protocol].</li>
1023
+      <li>Adapt the Tails boot process to allow switching to &quot;server
1024
+      mode&quot; when appropriate.</li>
1025
+      <li>Add support, to the Tails persistence setup process, for asking an
1026
+      encryption passphrase without X, and possibly with a broken keyboard
1027
+      and/or screen [keywords: local network, SSL/TLS?, certificate?].</li>
1028
+    </ul>
1029
+    
1030
+    <p>This project can easily grow quite large, so the first task would
1031
+    probably be to clarify what it would need to get an initial (minimal
1032
+    but working) implementation ready to be shipped to users.</p>
1033
+    <p>This project does not require to be an expert in one specific field,
1034
+    but it requires to be experienced and at ease with a large scope of
1035
+    software development tools, processes, and operating system knowledge.</p>
1036
+    <p>Undertaking this project requires in-depth knowledge of Debian-like
1037
+    systems (self-test: do the "dpkg conffile" and "debconf preseeding"
1038
+    words sound new to your ear?); the Debian Live persistence system
1039
+    being written in shell, being at ease with robust shell scripting is
1040
+    a must; to end with, at least two pieces of software need to be
1041
+    written from scratch (a GUI and a webapp): the preferred languages for
1042
+    these tasks would be Python and Perl. Using Behaviour Driven
1043
+    Development methods to convey expectations and acceptance criteria
1044
+    would be most welcome.</p>
1045
+    <p>For more information see https://tails.boum.org/todo/server_edition/</p>
1046
+    </li>
1047
+    
922 1048
     <a id="geoIPUpgrade"></a>
923 1049
     <li>
924 1050
     <b>Improve our GeoIP file format</b>
925 1051