Pierwsze stabilne wydanie Arti, oficjalna implementacja Tora w Rust

Twórcy anonimowej sieci Tor stworzyli pierwszą stabilną wersję (1.0.0) projektu Arti, który rozwija klienta Tor napisanego w języku Rust. Wersja 1.0 jest oznaczona jako odpowiednia do użytku przez zwykłych użytkowników i zapewnia ten sam poziom prywatności, użyteczności i stabilności, co główna implementacja C. Ustabilizowano także API umożliwiające wykorzystanie funkcjonalności Arti w innych aplikacjach. Kod jest rozpowszechniany na licencji Apache 2.0 i MIT.

W przeciwieństwie do implementacji w języku C, która została najpierw zaprojektowana jako proxy SOCKS, a następnie dostosowana do innych potrzeb, Arti jest początkowo rozwijany w postaci modułowej, osadzanej biblioteki, z której można korzystać w różnych aplikacjach. Ponadto podczas opracowywania nowego projektu brane są pod uwagę wszystkie dotychczasowe doświadczenia związane z tworzeniem Tora, co pozwala uniknąć znanych problemów architektonicznych i sprawia, że ​​projekt jest bardziej modułowy i wydajny.

Powodem przepisania Tora w Ruście była chęć osiągnięcia wyższego poziomu bezpieczeństwa kodu poprzez użycie języka bezpiecznego dla pamięci. Według twórców Tora, co najmniej połowa wszystkich luk monitorowanych przez projekt zostanie wyeliminowana w implementacji Rusta, jeśli kod nie będzie korzystał z „niebezpiecznych” bloków. Rust umożliwi również osiągnięcie większych prędkości programowania niż przy użyciu C, ze względu na wyrazistość języka i ścisłe gwarancje, które pozwalają uniknąć marnowania czasu na podwójne sprawdzanie i pisanie niepotrzebnego kodu.

Na podstawie wyników rozwoju pierwszej wersji uzasadnione było użycie języka Rust. Przykładowo zauważono, że na każdym etapie w kodzie Rusta popełniono mniej błędów niż w porównywalnym rozwoju w C - błędy, które wyszły na jaw w trakcie procesu rozwoju, dotyczyły głównie logiki i semantyki. Nadmiernie wymagający kompilator rustc, przez niektórych uważany za wadę, w rzeczywistości okazał się błogosławieństwem, ponieważ jeśli kod się skompiluje i przejdzie testy, prawdopodobieństwo jego poprawności znacznie wzrasta.

Prace nad nowym wariantem potwierdziły także wzrost szybkości rozwoju, który wynika nie tylko z faktu, że funkcjonalność została odtworzona w oparciu o istniejący szablon, ale także z bardziej wyrazistej semantyki Rusta, wygodnych bibliotek funkcji i zastosowania zabezpieczeń kodu Rusta możliwości. Jedną z wad jest duży rozmiar powstałych złożeń - ponieważ standardowa biblioteka Rust nie jest domyślnie dostarczana w systemach, należy ją uwzględnić w pakietach oferowanych do pobrania.

Wersja 1.0 skupia się głównie na podstawowej pracy w roli klienta. W wersji 1.1 planowane jest wdrożenie obsługi transportu typu plug-in oraz mostów omijających blokady. Oczekuje się, że wersja 1.2 będzie obsługiwać usługi cebulowe i powiązane funkcje, takie jak protokół kontroli zatorów (RTT Congestion Control) i ochronę przed atakami DDoS. Osiągnięcie parytetu z klientem C planowane jest dla gałęzi 2.0, która będzie oferować także powiązania umożliwiające wykorzystanie Arti w kodzie w różnych językach programowania.

Przez najbliższe kilka lat prace skupią się na zaimplementowaniu funkcjonalności potrzebnej do uruchomienia przekaźników i serwerów katalogowych. Kiedy kod Rusta osiągnie poziom, który będzie w stanie całkowicie zastąpić wersję C, programiści zamierzają nadać Artiemu status głównej implementacji Tora i zaprzestać utrzymywania implementacji C. Wersja C będzie wycofywana stopniowo, aby umożliwić płynną migrację.

Źródło: opennet.ru

Dodaj komentarz