Prvo stabilno izdanje Artija, službena implementacija Tora u Rustu

Programeri anonimne Tor mreže stvorili su prvo stabilno izdanje (1.0.0) projekta Arti, koji razvija Tor klijent napisan u Rustu. Izdanje 1.0 označeno je kao prikladno za korištenje općim korisnicima i pruža istu razinu privatnosti, upotrebljivosti i stabilnosti kao glavna C implementacija. API ponuđen za korištenje Arti funkcionalnosti u drugim aplikacijama također je stabiliziran. Kod se distribuira pod licencama Apache 2.0 i MIT.

Za razliku od C implementacije, koja je prvo osmišljena kao SOCKS proxy, a zatim prilagođena drugim potrebama, Arti je inicijalno razvijen u obliku modularne knjižnice koja se može ugraditi i koju mogu koristiti različite aplikacije. Osim toga, prilikom razvoja novog projekta, sva dosadašnja iskustva u razvoju Tor-a uzimaju se u obzir, čime se izbjegavaju poznati arhitektonski problemi i čini projekt modularnijim i učinkovitijim.

Razlog ponovnog pisanja Tor-a u Rustu bila je želja da se postigne viša razina sigurnosti koda korištenjem jezika koji je siguran za memoriju. Prema programerima Tor-a, najmanje polovica svih ranjivosti koje prati projekt bit će eliminirana u implementaciji Rusta ako kod ne koristi "nesigurne" blokove. Rust će također omogućiti postizanje većih brzina razvoja od korištenja C-a, zbog izražajnosti jezika i strogih jamstava koja vam omogućuju da izbjegnete gubljenje vremena na dvostruku provjeru i pisanje nepotrebnog koda.

Na temelju rezultata razvoja prve verzije, korištenje Rust jezika se opravdalo. Na primjer, primijećeno je da je u svakoj fazi napravljeno manje pogrešaka u Rust kodu nego u usporedivom razvoju u C-u - pogreške koje su se pojavile tijekom procesa razvoja bile su uglavnom povezane s logikom i semantikom. Pretjerano zahtjevan prevodilac rustc-a, koji su neki spominjali kao nedostatak, zapravo se pokazao kao blagoslov, jer ako se kod kompajlira i prođe testove, vjerojatnost njegove ispravnosti se znatno povećava.

Rad na novoj varijanti također je potvrdio povećanje brzine razvoja, što je posljedica ne samo činjenice da je funkcionalnost ponovno stvorena na temelju postojećeg predloška, ​​već i izražajnije Rustove semantike, praktičnih biblioteka funkcija i korištenja sigurnosti Rustovog koda mogućnostima. Jedan od nedostataka je velika veličina rezultirajućih sklopova - budući da standardna biblioteka Rust nije standardno isporučena na sustavima, mora biti uključena u pakete ponuđene za preuzimanje.

Izdanje 1.0 uglavnom se fokusira na osnovni rad u ulozi klijenta. U verziji 1.1 planira se implementirati podrška za plug-in transport i mostove za zaobilaženje blokada. Očekuje se da će verzija 1.2 podržavati onion usluge i srodne značajke, kao što je protokol kontrole zagušenja (RTT Congestion Control) i zaštita od DDoS napada. Postizanje pariteta s C klijentom planirano je za granu 2.0, koja će također nuditi povezivanja za korištenje Artija u kodu u različitim programskim jezicima.

Tijekom sljedećih nekoliko godina rad će se usredotočiti na implementaciju funkcionalnosti potrebne za pokretanje releja i direktorijskih poslužitelja. Kada Rust kod dosegne razinu koja može u potpunosti zamijeniti C verziju, programeri Artiju namjeravaju dati status glavne implementacije Tora i prestati održavati C implementaciju. C verzija će se postupno ukidati kako bi se omogućila glatka migracija.

Izvor: opennet.ru

Dodajte komentar