The Tor network developers have released version 1.2.0 of the Arti project, which is an advancement of the Tor client written in Rust. The 1.x branch is marked as suitable for use by regular users and provides the same level of privacy, usability, and stability as the main implementation in C. The code is distributed under the Apache 2.0 and MIT licenses.
Unlike the C implementation, which was initially designed as a SOCKS proxy and later adapted for other needs, Arti is being developed as a modular, embeddable library that various applications can use from the outset. Additionally, the entire past experience of Tor development is taken into account in the development of this new project, allowing known architectural issues to be avoided and making the project more modular and efficient. When the Rust code reaches a level capable of fully replacing the C version, the developers plan to promote Arti to the status of the main Tor implementation and discontinue support for the C version.
The reason for rewriting Tor in Rust is the desire to achieve a higher level of code security by using a language that ensures safe memory handling. According to the Tor developers, using Rust without ‘unsafe’ blocks will help prevent at least half of all typical vulnerabilities in the project. Rust will also enable faster development compared to C, thanks to the expressiveness of the language and strict guarantees that eliminate the need for double-checking and writing unnecessary code.
The release of Arti 1.2 is notable for implementing stable support for onion services. With Arti, it is now possible not only to connect to existing onion services but also to create your own onion services.
Work has begun, but is not yet completed, on implementing accompanying features related to privacy and the protection of onion services, such as the round-trip time (RTT) Congestion Control protocol, DDoS attack protection measures, bandwidth regulation, client authorization, and the ‘Vanguard’ mechanism to prevent the identification of Guard nodes. Until these features are fully implemented, the creation of onion services based on Arti is not recommended for production deployments.
The new version also fixes a vulnerability in the code for processing messages from relays caused by the ability to send empty DATA messages, which could be used to inject undeclared traffic indicators. This issue has been assigned a low severity level, as DATA packets are only accepted for already open streams.
Achieving parity with the client in C language is planned in branch 2.0, which will also propose bindings for using Arti in code across various programming languages. Once the Rust code reaches a level capable of fully replacing the C variant, developers intend to elevate Arti to the status of the primary Tor implementation and cease support for the C implementation. Support for the C version will be gradually phased out, allowing for a smooth migration.
Source: opennet.ru
