Prvo stabilno izdanje Artija, zvanična implementacija Tora u Rustu

Programeri anonimne Tor mreže kreirali su prvo stabilno izdanje (1.0.0) Arti projekta, koji razvija Tor klijent napisan na Rustu. Izdanje 1.0 je označeno kao pogodno za upotrebu od strane korisnika i pruža isti nivo privatnosti, upotrebljivosti i stabilnosti kao glavna implementacija C. API koji se nudi za korištenje Arti funkcionalnosti u drugim aplikacijama je također stabiliziran. Kod se distribuira pod licencama Apache 2.0 i MIT.

Za razliku od implementacije C, koja je prvobitno bila dizajnirana kao SOCKS proxy, a zatim prilagođena drugim potrebama, Arti je prvobitno razvijen kao modularna biblioteka dodataka koju mogu koristiti različite aplikacije. Osim toga, prilikom razvoja novog projekta uzima se u obzir svo dosadašnje iskustvo razvoja Tor, čime se izbjegavaju poznati arhitektonski problemi, čineći projekt modularnijim i efikasnijim.

Razlog za prepisivanje Tora u Rust bila je želja da se postigne viši nivo sigurnosti koda korištenjem jezika koji je siguran u memoriju. Prema Tor programerima, najmanje polovina svih ranjivosti koje prati projekat biće eliminisana u Rust implementaciji ako kod ne koristi „nebezbedne“ blokove. Rust će također omogućiti postizanje većih brzina razvoja od korištenja C-a, zbog izražajnosti jezika i strogih garancija koje vam omogućavaju da izbjegnete gubljenje vremena na dvostruku provjeru i pisanje nepotrebnog koda.

Na osnovu rezultata razvoja prve verzije, upotreba Rust jezika se opravdala. Na primjer, primjećeno je da je u svakoj fazi napravljeno manje grešaka u Rust kodu nego u usporedivom razvoju u C-u - greške koje su se pojavile tokom procesa razvoja uglavnom su se odnosile na logiku i semantiku. Previše zahtjevan rustc kompajler, koji su neki označili kao nedostatak, zapravo se pokazao kao blagoslov, jer ako se kod kompajlira i prođe testove, vjerovatnoća njegove ispravnosti značajno raste.

Rad na novoj varijanti također je potvrdio povećanje brzine razvoja, što je posljedica ne samo činjenice da je funkcionalnost ponovo kreirana na osnovu postojećeg predloška, ​​već i Rustove ekspresivnije semantike, praktičnih biblioteka funkcija i korištenja Rustove sigurnosti koda. sposobnosti. Jedan od nedostataka je velika veličina rezultirajućih sklopova - budući da se standardna Rust biblioteka ne isporučuje na sistemima po defaultu, ona mora biti uključena u pakete koji se nude za preuzimanje.

Izdanje 1.0 uglavnom se fokusira na osnovni rad u ulozi klijenta. U verziji 1.1 planirana je implementacija podrške za plug-in transport i mostove za zaobilaženje blokiranja. Očekuje se da će verzija 1.2 podržavati usluge luka i srodne karakteristike, kao što je protokol kontrole zagušenja (RTT Congestion Control) i zaštita od DDoS napada. Postizanje pariteta sa C klijentom planirano je za granu 2.0, koja će takođe nuditi vezivanja za korišćenje Artija u kodu u različitim programskim jezicima.

U narednih nekoliko godina rad će se fokusirati na implementaciju funkcionalnosti potrebne za pokretanje releja i servera direktorija. Kada Rust kod dostigne nivo koji može u potpunosti zamijeniti C verziju, programeri namjeravaju dati Artiju status glavne implementacije Tor-a i prestati održavati C implementaciju. C verzija će se postepeno ukidati kako bi se omogućila glatka migracija.

izvor: opennet.ru

Dodajte komentar