Pierwsze stabilne wydanie Arti, oficjalnej implementacji Tor w języku Rust

Programiści anonimowej sieci Tor opracowali pierwszą stabilną wersję (1.0.0) projektu Arti, rozwijającego klienta Tor, napisanego w języku Rust. Wersja 1.0 została oznaczona jako gotowa do użytku przez zwykłych użytkowników oraz zapewnia ten sam poziom prywatności, użyteczności i stabilności, co główna implementacja w języku C. Zostało również ustabilizowane API, które ma być używane do funkcjonalności Arti w innych aplikacjach. Kod jest rozpowszechniany na licencjach Apache 2.0 i MIT.

W przeciwieństwie do realizacji w C, która najpierw została zaprojektowana jako proxy SOCKS, a dopiero później dostosowana do innych potrzeb, Arti jest rozwijane od podstaw jako modułowa, wbudowana biblioteka, którą będą mogły wykorzystywać różne aplikacje. Co więcej, w trakcie rozwoju nowego projektu uwzględniono całe dotychczasowe doświadczenie związane z rozwojem Tor, co pozwala uniknąć znanych problemów architektonicznych, czyniąc projekt bardziej modularnym i efektywnym.

Powodem przepisywania Tor na Rust było dążenie do uzyskania wyższego poziomu zabezpieczenia kodu dzięki użyciu języka, który zapewnia bezpieczne zarządzanie pamięcią. Z perspektywy programistów Tor, przynajmniej połowa wszystkich zgłaszanych przez projekt podatności zostanie wyeliminowana w realizacji na Rust, o ile w kodzie nie będą stosowane bloki "unsafe". Rust również umożliwi osiągnięcie większej prędkości rozwoju w porównaniu do C, dzięki ekspresyjności języka oraz ścisłym gwarancjom, które pozwalają uniknąć nich potrójnych weryfikacji i pisania zbędnego kodu.

Z danych uzyskanych na koniec prac nad pierwszą wersją wynika, że użycie języka Rust okazało się uzasadnione. Na przykład, zauważono, że na każdym etapie kodu w Rust popełniano mniej błędów niż podczas porównywalnego rozwoju w C — ujawnione błędy były głównie związane z logiką i semantyką. Nadmierna wymagającość kompilatora rustc, postrzegana przez niektórych jako wada, okazała się w rzeczywistości zaletą, ponieważ jeśli kod jest kompilowany i przechodzi testy, znacznie zwiększa się prawdopodobieństwo jego poprawności.

Praca nad nową wersją potwierdziła również zwiększenie prędkości rozwoju, co jest związane nie tylko z tym, że funkcjonalność była odtwarzana na podstawie istniejącego szablonu, ale także z bardziej wyrazistą semantyką Rust, wygodnymi bibliotekami funkcji oraz zastosowaniem możliwości Rust do zapewnienia bezpieczeństwa kodu. Wśród wad wyróżnia się duży rozmiar wynikowych pakietów — ponieważ standardowa biblioteka Rust nie jest domyślnie dostarczana w systemach, trzeba ją dołączyć do pakietów dostępnych do pobrania.

Wydanie 1.0 koncentruje się głównie na podstawowym działaniu jako klient. W wersji 1.1 planowane jest wdrożenie wsparcia dla podłączanego transportu i mostów do omijania blokad. W wersji 1.2 oczekiwane jest wsparcie dla usług onion i towarzyszących możliwości, takich jak protokół kontroli przeciążenia (RTT Congestion Control) oraz środki ochrony przed atakami DDoS. Osiągnięcie parytetu z klientem w języku C planowane jest w gałęzi 2.0, która także zaproponuje powiązania do użycia Arti w kodzie w różnych językach programowania.

W ciągu najbliższych kilku lat prace będą skierowane na wdrożenie funkcjonalności niezbędnej do działania relacji oraz serwerów katalogów. Gdy kod w Rust osiągnie poziom, który będzie w stanie w pełni zastąpić wersję w C, deweloperzy zamierzają nadać Arti status głównej realizacji Tor i zaprzestać wsparcia dla implementacji w C. Wsparcie dla wersji w języku C będzie stopniowo wygaszane z zapewnieniem możliwości płynnej migracji.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster