Deweloperzy anonimowej sieci Tor zaprezentowali wydanie projektu Arti 0.2.0, rozwijającego klienta Tor, napisanego w języku Rust. Projekt ma status eksperymentalnego rozwoju, odstaje funkcjonalnością od podstawowego klienta Tor napisanego w języku C i obecnie nie jest gotowy do pełnego zastąpienia go. We wrześniu planowane jest wydanie 1.0 z stabilizacją API, CLI i ustawień, które będzie odpowiednie do wstępnego użycia przez zwykłych użytkowników. W dłuższej perspektywie, gdy kod w Rust osiągnie poziom zdolny do całkowitego zastąpienia wersji w C, deweloperzy zamierzają nadać Arti status głównej implementacji Tor i zaprzestać utrzymywania implementacji w C.
W odróżnieniu od implementacji w C, która początkowo została zaprojektowana jako proxy SOCKS, a następnie dostosowana do innych potrzeb, Arti rozwija się od samego początku w formie modułowej biblioteki do wbudowywania, z której będą mogły korzystać różne aplikacje. Ponadto przy tworzeniu nowego projektu uwzględniane jest całe dotychczasowe doświadczenie w tworzeniu Tor, co pozwoli uniknąć znanych problemów architektonicznych, a także uczynić projekt bardziej modułowym i efektywnym. Kod jest dystrybuowany na licencjach Apache 2.0 i MIT.
Za powody przepisania Tor na Rust uznaje się chęć osiągnięcia wyższego poziomu bezpieczeństwa kodu dzięki użyciu języka, który zapewnia bezpieczną obsługę pamięci. Według oceny twórców Tor, co najmniej połowa wszystkich śledzonych przez projekt podatności zostanie wyeliminowana w implementacji w Rust, jeśli w kodzie nie są używane bloki „unsafe”. Rust również umożliwi osiągnięcie wyższej szybkości rozwoju niż przy użyciu C, dzięki ekspresywności języka i ścisłym gwarancjom, które pozwalają zaoszczędzić czas na podwójne kontrole i pisanie zbędnego kodu.
Najbardziej zauważalne zmiany w wydaniu 0.2.0 związane są z pracami nad poprawą wydajności i niezawodności. Ulepszono działanie w sieciach obsługujących tylko IPv6. Zredukowano zużycie pamięci do przechowywania danych z serwerów katalogów. Dodano opcję dns_port, za pomocą której można skonfigurować wysyłanie zapytań DNS przez Tor. Zaproponowano nowy kod do pracy z konfiguracją. Dodano API do określania zasad izolacji strumieni oraz włączenia trybu uśpienia (wstrzymanie działania dla nieaktywnych klientów). Zapewniono możliwość podłączenia alternatywnych implementacji kodu do pracy z serwerami katalogami.
Przed publikacją wydania 1.0.0 deweloperzy planują zapewnić w Arti pełne wsparcie dla działania jako klient Tor, umożliwiającego dostęp do internetu (wsparcie dla serwisów onion zostało odłożone na przyszłość). Planowane jest również osiągnięcie parytetu z główną implementacją w języku C w takich obszarach jak wydajność sieciowa, obciążenie CPU i niezawodność, a także zapewnienie wsparcia dla wszystkich funkcji związanych z bezpieczeństwem.
Źródło: opennet.ru
