Skip to content
Snippets Groups Projects
Forked from The Tor Project / Core / Arti
12345 commits behind the upstream repository.
  • Nick Mathewson's avatar
    6f3f3511
    Increase our MSRV to 1.56. · 6f3f3511
    Nick Mathewson authored
    Our support policy says that we can update to any Rust released at
    least 6 months ago; 1.56 came out on 21 October 2021.
    
    This doesn't yet change any code: it just increases the version
    we say we need in our README, and the version we test against in
    CI.
    
    Our main justification for this change is to be able to upgrade to
    newer versions of our dependencies, including `async_executors` >=
    0.5, `aes` >= 0.8, and `cipher` >= 0.4.
    6f3f3511
    History
    Increase our MSRV to 1.56.
    Nick Mathewson authored
    Our support policy says that we can update to any Rust released at
    least 6 months ago; 1.56 came out on 21 October 2021.
    
    This doesn't yet change any code: it just increases the version
    we say we need in our README, and the version we test against in
    CI.
    
    Our main justification for this change is to be able to upgrade to
    newer versions of our dependencies, including `async_executors` >=
    0.5, `aes` >= 0.8, and `cipher` >= 0.4.
README.md 6.89 KiB

Crates.io

Arti: reimplementing Tor in Rust

Arti is a project to produce an embeddable, production-quality implementation of the Tor anonymity protocols in the Rust programming language.

Arti is not ready for production use; see below for more information.

Links:

Why rewrite Tor in Rust?

Rust is more secure than C. Despite our efforts, it's all too simple to mess up when using a language that does not enforce memory safety. We estimate that at least half of our tracked security vulnerabilities would have been impossible in Rust, and many of the others would have been very unlikely.

Rust enables faster development than C. Because of Rust's expressiveness and strong guarantees, we've found that we can be far more efficient and confident writing code in Rust. We hope that in the long run this will improve the pace of our software development.

Arti is more flexible than our C tor implementation. Unlike our C tor, which was designed as SOCKS proxy originally, and whose integration features were later "bolted on", Arti is designed from the ground up to work as a modular, embeddable library that other applications can use.

Arti is cleaner than our C tor implementation. Although we've tried to develop C tor well, we've learned a lot since we started it back in 2002. There are lots of places in the current C codebase where complicated "spaghetti" relationships between different pieces of code make our software needlessly hard to understand and improve.

Current status

Arti is a work-in-progress. It can connect to the Tor network, bootstrap a view of the Tor directory, and make anonymized connections over the network.

We're not aware of any critical security features missing in Arti; but however, since Arti is comparatively new software, you should probably be cautious about using it in production.

Now that Arti has reached version 0.1.0, we believe it is suitable for experimental embedding within other Rust applications. We will try to keep the API as exposed by the top-level arti_client crate more or less stable over time. (We may have to break existing programs from time to time, but we will try not to do so without a very good reason. Either way, we will try to follow Rust's semantic versioning best practices.)

Trying it out today

Arti can act as a SOCKS proxy that uses the Tor network.

To try it out, run the demo program in arti as follows. It will open a SOCKS proxy on port 9150.

% cargo run --release -- proxy

Again, do not use this program yet if you seriously need anonymity, privacy, security, or stability.