Die Entwickler des anonymen Netzwerks Tor haben die erste stabile Version (1.0.0) des Projekts Arti veröffentlicht, das einen auf Rust basierenden Tor-Client entwickelt. Die Version 1.0 wird als für den Einsatz durch normale Benutzer geeignet angesehen und bietet das gleiche Maß an Datenschutz, Benutzerfreundlichkeit und Stabilität wie die Hauptimplementierung in C. Auch die API, die zur Nutzung der Arti-Funktionalität 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 wurde und später für andere Bedürfnisse angepasst wurde, entwickelt sich Arti von Anfang an als modulare, einbettbare Bibliothek, die von verschiedenen Anwendungen genutzt werden kann. Zudem wird bei der Entwicklung des neuen Projekts das gesamte frühere Wissen aus der Tor-Entwicklung berücksichtigt, wodurch bekannte architektonische Probleme vermieden und das Projekt modularer und effizienter gestaltet werden kann.
Ein Grund für die Neuentwicklung von Tor in Rust ist das Bestreben, ein höheres Maß an Code-Sicherheit durch die Verwendung einer Sprache zu erreichen, die eine sichere Arbeit mit dem Speicher gewährleistet. Laut den Entwicklern von Tor wird mindestens die Hälfte aller vom Projekt verfolgten Sicherheitsanfälligkeiten in der Rust-Implementierung ausgeschlossen, es sei denn, es werden „unsafe“-Blöcke im Code verwendet. Rust ermöglicht auch eine schnellere Entwicklung im Vergleich zur Verwendung von C, dank der Ausdrucksfähigkeit der Sprache und strengen Garantien, die es ermöglichen, keine Zeit mit doppelten Überprüfungen und dem Schreiben von überflüssigem Code zu verschwenden.
Die Entwicklung der ersten Version hat gezeigt, dass die Verwendung der Programmiersprache Rust sinnvoll ist. Beispielsweise wurde festgestellt, dass in jedem Entwicklungsstadium im Rust-Code weniger Fehler auftraten als bei vergleichbarer Entwicklung in C – die während des Entwicklungsprozesses aufgetretenen Fehler waren hauptsächlich auf Logik und Semantik zurückzuführen. Die hohe Ansprüchlichkeit des Compilers rustc, die von einigen als Nachteil angesehen wird, hat sich in der Tat als Vorteil erwiesen, da wenn der Code kompiliert wird und die Tests bestehen, die Wahrscheinlichkeit der Korrektheit signifikant steigt.
Bei der Arbeit an der neuen Version wurde auch eine gesteigerte Entwicklungsgeschwindigkeit bestätigt, was nicht nur darauf zurückzuführen ist, dass die Funktionalität aus einer bestehenden Vorlage rekonstruiert wurde, sondern auch auf die ausdrucksstärkere Semantik von Rust, die komfortablen Funktionsbibliotheken und die Möglichkeiten von Rust zur Sicherstellung der Code-Sicherheit. Zu den Nachteilen gehört die große Größe der resultierenden Builds – da die Standardbibliothek von Rust nicht standardmäßig in Systemen geliefert wird, muss sie in die zum Download angebotenen Pakete aufgenommen werden.
Die Version 1.0 konzentriert sich hauptsächlich auf die Grundfunktionen als Client. In Version 1.1 ist die Implementierung von unterstützenden Transportarten und Brücken zur Umgehung von Blockaden geplant. Version 1.2 wird die Unterstützung von Onion-Diensten sowie begleitenden Funktionen wie dem Protokoll zur Kontrolle der Überlastung (RTT Congestion Control) und DDoS-Schutzmaßnahmen erwarten. Das Ziel, mit dem Client in C gleichzuziehen, ist für den Branch 2.0 vorgesehen, in dem auch Bindings zur Verwendung von Arti in verschiedenen Programmiersprachen angeboten werden.
In den nächsten Jahren wird die Arbeit darauf abzielen, die für den Betrieb von Relais notwendigen Funktionen umzusetzen und Server Sobald der Rust-Code das Niveau erreicht hat, das notwendig ist, um die C-Variante vollständig zu ersetzen, planen die Entwickler, Arti als die primäre Implementierung von Tor zu etablieren und die Unterstützung der C-Implementierung schrittweise einzustellen. Die Unterstützung der C-Version wird nach und nach reduziert, um eine reibungslose Migration zu ermöglichen.
Quelle: opennet.ru
