The Tor project developers have released Arti 2.0.0, the officially developed version of the Tor toolkit, written in Rust. The implementation is noted as suitable for use by regular users, providing the same level of privacy, usability, and stability as the main implementation in C. Once the Rust code reaches a level capable of fully replacing the C version, the developers plan to give Arti the status of the main Tor implementation and gradually discontinue support for the C version. The code is distributed under the Apache 2.0 and MIT licenses.
Arti is originally developed as a modular, embeddable library that various applications can use. During the design of Arti, past experiences from Tor's development were taken into account, which helped to avoid known architectural problems related to the fact that the C implementation was initially designed as a SOCKS proxy and later adjusted for other needs.
In addition to modernizing the architecture, the reason for rewriting Tor in Rust was the desire to enhance code security by using a language that ensures safe memory handling. According to the Tor developers, using Rust without 'unsafe' blocks will prevent at least half of all typical vulnerabilities in the project. Furthermore, it is expected that Rust will speed up development due to the language's expressiveness and strict guarantees that allow avoiding redundant checks and unnecessary code writing.
A significant version number change has been made in accordance with the project's semantic versioning model and is related to changes that break backward compatibility. Support for the settings proxy.socks_port and proxy.dns_port, previously declared deprecated, has been discontinued, replaced by the settings proxy.socks_listen and proxy.dns_listen. Support for the old directory definition syntax has also been discontinued. servers All APIs of the crate package arti that are planned to be moved to other crate packages or removed have been marked as experimental.
The new functionality includes support for a new type of sockets "inet-auto" for the automatic assignment of unused TCP ports for the RPC server. The implementation of features for relays and directory servers has been continued. Work has been done on managing certificates for directory servers, including the addition of certificate upload, verification, and storage capabilities. A new modular architecture for managing node chains has been implemented for relays, supporting the creation of communication channels with other relays, handling connection agreement request processing, and enabling relay operation. server when establishing a TLS connection.
Source: opennet.ru
