The developers of the anonymous Tor network have released version 0.2.0 of the Arti project, which is developing a Tor client written in Rust. The project is in an experimental development stage, falling short of the functionality of the main Tor client written in C, and is not yet ready to fully replace it. A version 1.0 is planned for release in September, aimed at stabilizing the API, CLI, and settings, making it suitable for initial use by regular users. In the more distant future, when the Rust code reaches a level that can fully replace the C version, the developers intend to designate Arti as the primary implementation of Tor and discontinue support for the C implementation.
Unlike the C implementation, which was initially designed as a SOCKS proxy and then adapted to other needs, Arti is being developed from the start as a modular embeddable library that various applications can use. Additionally, the development of the new project takes into account all past experiences in Tor development, which will help avoid known architectural problems and make the project more modular and efficient. The code is distributed under the Apache 2.0 and MIT licenses.
The reasons for rewriting Tor in Rust include the desire to achieve a higher level of code security by using a language that ensures safe memory operations. According to the developers of Tor, at least half of all vulnerabilities tracked by the project will be eliminated in the Rust implementation, provided that 'unsafe' blocks are not used in the code. Rust will also enable a higher speed of development compared to using C, due to the expressiveness of the language and strict guarantees that allow avoiding double checks and unnecessary code.
The most notable changes in release 0.2.0 are related to work on improving performance and reliability. The functionality in networks that only support IPv6 has been enhanced. Memory usage for data storage has been reduced, servers directory. An option, dns_port, has been added to configure sending DNS requests through Tor. New code has been proposed for configuration management. APIs have been added to define stream isolation rules and enable sleep mode (pausing for inactive clients). The possibility of connecting alternative code implementations for working with servers directory.
Before the release of version 1.0.0, the developers intend to ensure full support in Arti for functioning as a Tor client, providing access to the internet (the implementation of onion service support has been postponed for the future). They also plan to achieve parity with the main implementation in C in areas such as network performance, CPU load, and reliability, while ensuring support for all security-related features.
Source: opennet.ru
