In this repository, we experiment with Tor. With these experiments we try to:
- First, validate our understanding of the Tor protocol since sometimes what is in code is not in the specs and variations of implementation can exist.
- Set up a small test case to see the feasibility of distributing and serving data using the Tor client and onion services. We can reuse this test case for evaluating other protocols e.g. Tribler or Mixnets.
- Benchmark the Tor client. We can benchmark each component separately or run the test case and report the findings.
- Understand the limitations that this Tor client has and can we extend the implementation to avoid them? If not, then document these limitations to assess later if we are willing to accept them or go for another protocol.
- Finally, assess if the Tor implementation is suitable for inclusion in the new design.
The Tor client codebase: The stable Tor client codebase is written in C, however, there is a re-implementation in Rust which claims to be (1) faster, (2) modular. We will try to experiment with both, starting with the rust implementation.