Tor ("C Tor") vs Arti: What?!

The state of the two primary Tor implementations

For software projects with recurring bugs, efficiency or security issues there’s a joke making the rounds in the software industry: “Let’s re-write it in Rust!” It’s a fairly new low-level programming language with the declared goal to help developers avoid entire classes of bugs, security issues and other pitfalls. Re-writing software is very time consuming, so it rarely happens, especially when just one more fix will keep a project up and running.

Tor-Project was started in 2001 using the C programming lanugage. However a few years ago they set out to actually re-write their project in Rust. That projects codename is Arti and it was first released in 2022. While Arti is working great, it doesn’t have all features of the original Tor implementation yet. However, they are steadily working on getting there. For example, rough Pluggable Transports support was added to Arti in the recent 1.1.0 release.

We already have early test builds of Arti running on both Android and iOS. The integration we came up with is pretty basic, but so far it seems to work reliable for accessing the Tor network. Maintaining code for both iOS and Android in the same project will hopefully simplify shipping new Arti releases for us, make integrating Tor capabilities into any app simpler. To make it useful for the broader mobile developer community, we’re also investigating whether we can provide easy to use API bindings. We’ve created a sample app on Android to test and illustrate what a minimalistic integration of Arti looks like. It’s as simple as adding a few lines of code.

Support for features like advanced censorship circumvention or onion services is not exactly straight forward on mobile operating systems, because they tend to be way more locked down than traditional computers. Currently, we can successfully test pluggable transports in “managed” mode on old versions of Android. However this technique will likely not work on the latest version of Android and never worked on iOS to begin with. We have shared our findings with the Arti developer team and hope they’ll work on getting us to full Pluggable Transports support, integraing with our existing IPtProxy Library soon.

Last updated