Die Entwickler des anonymen Netzwerks Tor haben die erste stabile Version (1.0.0) des Projekts Arti veröffentlicht, das einen in Rust geschriebenen Tor-Client entwickelt. Die Version 1.0 wird als fĂŒr die Nutzung durch gewöhnliche Benutzer geeignet angesehen und bietet dasselbe MaĂ an Vertraulichkeit, Benutzerfreundlichkeit und StabilitĂ€t wie die Hauptimplementierung in C. Auch die API, die fĂŒr die Nutzung der FunktionalitĂ€t von Arti in anderen Anwendungen angeboten wird, wurde stabilisiert. Der Code wird unter den Lizenzen Apache 2.0 und MIT verbreitet.
Im Gegensatz zur Implementierung in C, die zunĂ€chst als SOCKS-Proxy konzipiert und spĂ€ter fĂŒr andere BedĂŒrfnisse angepasst wurde, entwickelt sich Arti von Anfang an in Form einer modularen eingebetteten Bibliothek, die von verschiedenen Anwendungen genutzt werden kann. DarĂŒber hinaus wird bei der Entwicklung des neuen Projekts die gesamte bisherige Erfahrung in der Tor-Entwicklung berĂŒcksichtigt, was hilft, bekannte architektonische Probleme zu vermeiden und das Projekt modularer und effizienter zu gestalten.
Ein Grund fĂŒr die Neuentwicklung von Tor in Rust war der Wunsch, ein höheres MaĂ an Code-Sicherheit zu erreichen, indem eine Sprache verwendet wird, die sicheren Umgang mit Speicher gewĂ€hrleistet. Nach SchĂ€tzung der Tor-Entwickler werden mindestens die HĂ€lfte aller vom Projekt verfolgten Schwachstellen in der Rust-Implementierung ausgeschlossen, wenn im Code keine 'unsafe'-Blöcke verwendet werden. Rust ermöglicht es zudem, eine schnellere Entwicklung zu erreichen als bei der Verwendung von C, dank der Ausdruckskraft der Sprache und strengen Garantien, die es ermöglichen, keine Zeit mit doppelten ĂberprĂŒfungen und der Erstellung ĂŒberflĂŒssigen Codes zu verschwenden.
Am Ende der Entwicklung der ersten Version hat sich die Verwendung der Sprache Rust als gerechtfertigt erwiesen. Beispielsweise wurde festgestellt, dass es in jedem Schritt des Codes in Rust weniger Fehler gab als bei vergleichbarer Entwicklung in C â die wĂ€hrend der Entwicklung aufgetretenen Fehler waren hauptsĂ€chlich mit Logik und Semantik verbunden. Die als Nachteil empfundene hohe Anforderungen des Compilers rustc erwiesen sich in Wirklichkeit als Vorteil, denn wenn der Code kompiliert und die Tests bestanden hat, erhöht sich die Wahrscheinlichkeit seiner Korrektheit erheblich.
Bei der Arbeit an der neuen Version bestĂ€tigte sich auch die erhöhte Entwicklungsgeschwindigkeit, was nicht nur damit zusammenhĂ€ngt, dass die FunktionalitĂ€ten auf Basis des vorhandenen Templates rekonstruiert wurden, sondern auch mit der ausdrucksvolleren Semantik von Rust, den praktischen Funktionsbibliotheken und der Nutzung der Sicherheitsmechanismen von Rust zur GewĂ€hrleistung der Code-Sicherheit. Ein Nachteil ist die groĂe GröĂe der resultierenden Builds â da die Standardbibliothek von Rust nicht standardmĂ€Ăig in Systemen mitgeliefert wird, muss sie in die angebotenen Download-Pakete aufgenommen werden.
Die Version 1.0 konzentriert sich hauptsĂ€chlich auf die grundlegende FunktionalitĂ€t als Client. In der Version 1.1 ist geplant, die UnterstĂŒtzung fĂŒr anpassbaren Transport und BrĂŒcken zur Umgehung von Blockierungen zu implementieren. In der Version 1.2 wird UnterstĂŒtzung fĂŒr Onion-Dienste und verwandte Funktionen, wie das Protokoll zur Steuerung der Ăberlastung (RTT Congestion Control) und DDoS-SchutzmaĂnahmen, erwartet. Die Erreichung der ParitĂ€t mit dem Client in der Programmiersprache C ist fĂŒr den Branch 2.0 angestrebt, in dem auch Bindungen fĂŒr die Verwendung von Arti in verschiedenen Programmiersprachen angeboten werden.
In den kommenden Jahren wird die Arbeit darauf ausgerichtet sein, die FunktionalitĂ€ten umzusetzen, die fĂŒr den Betrieb von Relais erforderlich sind, und Server Verzeichnissen. Wenn der Code in Rust ein Niveau erreicht, das in der Lage ist, die Implementierung in C vollstĂ€ndig zu ersetzen, beabsichtigen die Entwickler, Arti den Status der Hauptimplementierung von Tor zu verleihen und die UnterstĂŒtzung fĂŒr die Implementierung in C einzustellen. Die UnterstĂŒtzung der C-Version wird schrittweise eingestellt, um eine sanfte Migration zu ermöglichen.
Quelle: opennet.ru
