Title Tor exit scanner improvements
Student Aleksei Gorny
Mentor Mike Perry
Abstract
Tor is a software project intended to provide a level of anonymity for internet users. This is achieved by onion-routing communications over a dynamic network of volunteer-run relays (nodes), making common adversaries unaware of the origin and destination of traffic. To coordinate the network, Tor holds a list of nodes and their states on its central directory servers. It is clear that for optimal routing decisions information regarding capacity, reliability and other relevant parameters of nodes should be kept up-to-date. This issue has been addressed by the Torflow script collection, which includes the 'SoaT' scanner that initiates various types of connections out of exit nodes to check whether they modify content.

The goal of my project will be rewriting the scanner in python and adding some improvements along the way:
1) support for scanning pages with dynamic content
2) verifying checksums for certain possibly malicious tags
3) introducing some way to cope with changing pages
4) improvements to gathering and reporting basic statistics about the reliability of nodes
5) including a possibility to schedule automated test runs

Since most of Torflow is already written in python, my changes to the scanner will make the collection more unified as more code from shared modules can be reused. The new functionality will also get unit-test coverage and a reasonable documentation, so it is easier to maintain in the future. The main benefits of the project will be lower latency and stronger security guarantees for Tor users as broken and malicious nodes will get noticed and filtered out more accurately.