Utvecklarna av det anonyma nÀtverket Tor har skapat den första stabila versionen (1.0.0) av projektet Arti, som utvecklar en Tor-klient skriven i Rust. Version 1.0 Àr mÀrkt som anvÀndbar för vanliga anvÀndare och erbjuder samma nivÄ av sekretess, anvÀndbarhet och stabilitet som huvudimplementationen pÄ C. API:et som erbjuds för att anvÀnda Arti-funktionalitet i andra applikationer har ocksÄ stabiliserats. Koden distribueras under licenserna Apache 2.0 och MIT.
Till skillnad frÄn implementationen pÄ C, som frÄn början designades som en SOCKS-proxy och sedan anpassades för andra behov, utvecklas Arti frÄn grunden som ett modulÀrt inbÀddat bibliotek som olika applikationer kan anvÀnda. Dessutom beaktas all tidigare erfarenhet frÄn Tor-utvecklingen nÀr det nya projektet utvecklas, vilket gör det möjligt att undvika kÀnda arkitekturproblem och göra projektet mer modulÀrt och effektivt.
Anledningen till att Tor skrivs om i Rust var ambitionen att uppnÄ en högre kodsÀkerhet genom att anvÀnda ett sprÄk som sÀkerstÀller sÀker minneshantering. Enligt Tor-utvecklarna kommer minst hÀlften av alla sÄrbarheter som projektet övervakar att elimineras i Rust-implementationen, om det inte anvÀnds "unsafe"-block i koden. Rust gör det ocksÄ möjligt att uppnÄ en högre utvecklingshastighet jÀmfört med att anvÀnda C, tack vare sprÄkets uttryckskraft och strikta garantier som gör att man slipper dubbelkontroller och onödig kod.
Efter utvecklingen av den första versionen har anvÀndningen av Rust-sprÄket visat sig vara framgÄngsrik. Till exempel har det noterats att det gjordes fÀrre fel i koden pÄ Rust i varje steg jÀmfört med en jÀmförbar utveckling pÄ C - de fel som uppstod under utvecklingen var huvudsakligen relaterade till logik och semantik. Den överdrivna kraven frÄn kompilatorn rustc, som vissa betraktar som en nackdel, har i sjÀlva verket visat sig vara en fördel, eftersom om koden kompileras och passerar tester, ökar sannolikheten för dess korrekthet avsevÀrt.
Arbetet med den nya versionen har ocksÄ bekrÀftat en ökning av utvecklingshastigheten, vilket inte bara beror pÄ att funktionaliteten Äterskapades utifrÄn den befintliga mallen, utan Àven pÄ den mer uttrycksfulla semantiken i Rust, anvÀndarvÀnliga funktionsbibliotek och utnyttjandet av Rusts möjligheter för att sÀkerstÀlla kodens sÀkerhet. En av nackdelarna Àr den stora storleken pÄ de resulterande paketen, dÄ Rusts standardbibliotek inte ingÄr i system som standard, vilket innebÀr att det mÄste inkluderas i de nedladdningsbara paketen.
Version 1.0 fokuserar huvudsakligen pÄ basfunktionalitet som klient. I version 1.1 planeras det att implementera stöd för anslutningsbara transportsystem och bryggor för att kringgÄ blockerade sidor. I version 1.2 förvÀntas stöd för onion-tjÀnster och relaterade funktioner, sÄsom RTT överbelastningskontroll och medel för skydd mot DDoS-attacker. MÄlet Àr att nÄ paritet med klienten pÄ C i version 2.0, dÀr bindningar för att anvÀnda Arti i olika programmeringssprÄk ocksÄ kommer att erbjudas.
Under de kommande Ären kommer arbetet att fokusera pÄ att implementera den funktionalitet som krÀvs för att driva relÀer och servrar kataloger. NÀr koden i Rust nÄr en nivÄ dÀr den fullt ut kan ersÀtta C-versionen, avser utvecklarna att ge Arti status som den primÀra implementationen av Tor och avsluta stöd för C-implementationen. Stödet för C-versionen kommer gradvis att upphöra med möjligheten för smidig migrering.
KĂ€lla: opennet.ru
