Vývojári anonymnej siete Tor vytvorili prvú stabilnú verziu (1.0.0) projektu Arti, ktorý vyvíja Tor-klient napísaný v jazyku Rust. Verzia 1.0 je označená ako pripravená na používanie bežnými používateľmi a zabezpečuje rovnakú úroveň ochrany súkromia, použiteľnosti a stability ako základná implementácia v jazyku C. Stabilizované je aj API, ktoré je navrhnuté na použitie funkčnosti Arti v iných aplikáciách. Kód je uvoľnený pod licenciami Apache 2.0 a MIT.
Na rozdiel od implementácie v C, ktorá bola najprv navrhnutá ako SOCKS proxy a neskôr prispôsobená iným potrebám, Arti sa pôvodne vyvíja ako modulárna zabudovateľná knižnica, ktorú môžu používať rôzne aplikácie. Okrem toho sa pri vývoji nového projektu zohľadňuje celá predchádzajúca skúsenosť vývoja Tor, čo umožňuje vyhnúť sa známym architektonickým problémom a spraviť projekt modulárnejším a efektívnejším.
Hlavným dôvodom na prepisovanie Tor do Rustu bolo dosiahnutie vyššej úrovne bezpečnosti kódu vďaka použitiu jazyka, ktorý zabezpečuje bezpečné zaobchádzanie s pamäťou. Podľa odhadov vývojárov Tor bude aspoň polovica všetkých zraniteľností sledovaných projektom v implementácii v Rustu vylúčená, pokiaľ sa v kóde nepoužívajú bloky „unsafe“. Rust tiež umožní dosiahnuť vyššiu rýchlosť vývoja, než pri používaní C, vďaka výstižnosti jazyka a prísnym zárukám, ktoré umožňujú nestrácať čas na dvojité kontroly a písanie zbytočného kódu.
Na základe výsledkov vývoja prvej verzie použitie jazyka Rust potvrdilo svoju správnosť. Napríklad bolo pozorované, že v každom kroku v kóde v Rust bolo vykonaných menej chýb ako pri porovnateľnom vývoji v C — chyby, ktoré sa objavili počas vývoja, boli väčšinou spojené s logikou a sémantikou. Prehnaná náročnosť kompilátora rustc, ktorá bola niektorými považovaná za nedostatok, sa v skutočnosti ukázala ako požehnanie, pretože ak sa kód zkompiluje a prejde testami, výrazne sa zvyšuje pravdepodobnosť jeho správnosti.
Pri práci na novej verzii sa tiež potvrdilo zvýšenie rýchlosti vývoja, čo súvisí nielen s tým, že funkčnosť bola znovu vytvorená na základe existujúcej šablóny, ale aj s výraznejšou sémantikou Rust, pohodlnými knihovnami funkcií a využívaním možností Rust na zabezpečenie bezpečnosti kódu. Medzi nevýhody patrí veľká veľkosť výsledných zostáv — keďže štandardná knižnica Rust nie je dodávaná v systémoch ako predvolená, je potrebné ju zahrnúť do ponúkaných balíkov na stiahnutie.
Vydanie 1.0 je väčšinou zamerané na základnú prácu v úlohe klienta. Vo verzii 1.1 sa plánuje implementácia podpory pripojiteľného transportu a mostov na obídenie blokád. Vo verzii 1.2 sa očakáva podpora onion služieb a súvisiacich funkcií, ako je protokol riadenia preťaženia (RTT Congestion Control) a prostriedky na ochranu pred DDoS útokmi. Dosiahnutie parity s klientom napísaným v jazyku C je naplánované v verzii 2.0, v ktorej budú tiež ponúknuté väzby na použitie Arti v kóde v rôznych programovacích jazykoch.
V nasledujúcich niekoľkých rokoch bude práca zameraná na realizáciu funkcionality potrebnej pre prevádzku relé a serverov adresárov. Keď kód napísaný v Rust dosiahne úroveň, ktorá dokáže plne nahradiť variant napísaný v jazyku C, vývojári majú v úmysle priradiť Arti status hlavnej implementácie Tor a ukončiť podporu implementácie v C. Podpora verzie napísanej v jazyku C bude postupne ukončená s poskytnutím možnosti plynulej migrácie.
Zdroj: opennet.ru
