<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Oct 9, 2013 at 9:44 PM, Philipp Winter <span dir="ltr"><<a href="mailto:identity.function@gmail.com" target="_blank">identity.function@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I am working on a Python-based exit relay scanner which should detect malicious<br>
and misbehaving exits.  The design should have a reasonable balance between<br>
being fast/parallel and stressing the network as little as possible.<br>
<br>
I came up with the following three steps:<br>
<br>
1.  Spawn a "parent" Tor process to get an up-to-date consensus.<br>
<br>
2.1 For every selected exit relay, spawn a lightweight Tor process.<br>
<br>
2.2 The consensus is copied from the "parent" process to the lightweight<br>
    process' data directory.  That way, the consensus has to be downloaded only<br>
    once.<br>
<br>
2.3 Every lightweight Tor process has the following configuration:<br>
<br>
    ---<br>
    SOCKSPort auto<br>
    ControlPort 0<br>
    __DisablePredictedCircuits 1<br>
    UseEntryGuards 0<br>
    FetchServerDescriptors 0<br>
    DataDirectory <data_directory><br>
    ExitNodes <exit_relay><br>
    ---<br>
<br>
    Entry guards are not used to distribute the load.  Predicted circuits are<br>
    disabled to prevent expensive creation of circuits which would not be used<br>
    anyway.  In addition, I am considering adding "EntryNodes" or "Bridge" to<br>
    concentrate the first hop's load on machines under my control.<br>
<br>
3.  torsocks is then used to establish decoy connections over the respective<br>
    exit relay.  After that, the process is terminated.<br>
<br>
Any thoughts on how to further improve the design or ideas for a better one?<br>
<br></blockquote><div><br></div><div>Hi Phillip,<br><br></div><div>I'm excited to hear you're interested in working on an exit scanner.<br><br>I have some thoughts regarding the design that might interest you.<br>
<br>I have been working on adding a "Tor Network Test Template" to ooni-probe; the basic concept is to extend the Tor controller library we use (txtorcon) to be able to build and attach circuits to specific streams, and iterate over the exits in the consensus. That is, we'll provide primitives that will allow you to specify a network interference test and tell ooni to run that test against every exit we know about (or a subset, a specific exit, or what have you). ooni-probe features a concurrency-based scheduler, so as to limit the impact on the network, and we've designed it to support plug-in rate limiting hooks if you want to do something fancier.<br>
<br></div><div>My intent is to provide Tor network tests as part of ooni-probe's standard set of tests, so that many individuals will measure the Tor network and automatically publish their results, and so that current and future network interference tests can be easily adapted to running on the Tor network. Future ideas include adding signing support to ooni reports so that reliable reporters can build trust, and automatically parsing submitted reports to generate BadExit after a threshold of reporters is reached.<br>
<br>Hope this interests you,<br><br></div><div>--Aaron<br></div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Cheers,<br>
Philipp<br>
_______________________________________________<br>
tor-dev mailing list<br>
<a href="mailto:tor-dev@lists.torproject.org">tor-dev@lists.torproject.org</a><br>
<a href="https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev" target="_blank">https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev</a><br>
</blockquote></div><br></div></div>