Vývojáři anonymní sítě Tor vytvořili první stabilní vydání (1.0.0) projektu Arti, který vyvíjí Tor klienta napsaného v jazyce Rust. Vydání 1.0 je označeno jako vhodné pro běžné uživatele a poskytuje stejnou úroveň ochrany soukromí, použitelnosti a stability, kterou má základní implementace v jazyce C. Stabilizováno bylo také API, které se nabízí pro použití funkčnosti Arti v jiných aplikacích. Kód je šířen pod licencemi Apache 2.0 a MIT.
Na rozdíl od implementace v C, která byla nejprve navržena jako SOCKS proxy a teprve poté přizpůsobena jiným potřebám, se Arti od samého začátku vyvíjí jako modulární integrovaná knihovna, kterou mohou využívat různé aplikace. Kromě toho při vývoji nového projektu je zohledněna veškerá předchozí zkušenost s vývojem Tor, což umožňuje vyhnout se známým architektonickým problémům a učinit projekt modulárnějším a efektivnějším.
Hlavním důvodem přepracování Tor do Rustu bylo dosažení vyšší úrovně zabezpečení kódu díky použití jazyka, který zajišťuje bezpečné nakládání s pamětí. Podle odhadů vývojářů Tor bude minimálně polovina všech sledovaných zranitelností v rámci projektu v implementaci v Rustu vyloučena, pokud v kódu nejsou použity bloky „unsafe“. Rust také umožní dosáhnout rychlejšího vývoje než při použití C díky výstižnosti jazyka a přísným zárukám, které ušetří čas na dvojí kontroly a psaní nadbytečného kódu.
Na základě vývoje první verze se ukazuje, že použití jazyka Rust se vyplatilo. Například bylo zjištěno, že v každé fázi bylo v kódu psaném v Rustu méně chyb než při srovnatelné implementaci v C — chyby, které se objevily během vývoje, byly většinou spojeny s logikou a sémantikou. Přílišná náročnost kompilátoru rustc, kterou někteří považují za nevýhodu, se ve skutečnosti ukázala být přínosem, protože pokud se kód kompiluje a prochází testy, výrazně se zvyšuje pravděpodobnost jeho správnosti.
Při práci na nové verzi se potvrdilo zvýšení rychlosti vývoje, což souvisí nejen s tím, že funkcionalita byla znovu vytvořena na základě existující šablony, ale také s výraznější sémantikou Rust, pohodlnými funkcemi knihoven a využitím možností Rust pro zajištění bezpečnosti kódu. Mezi nevýhody patří velká velikost výsledných sestavení – jelikož standardní knihovna Rust není ve výchozích systémech dodávána, musí být zahrnuta do nabízených balíčků ke stažení.
Verze 1.0 se zaměřuje především na základní funkce v roli klienta. V verzi 1.1 je plánována podpora připojitelné dopravy a mostů pro obcházení blokací. Verze 1.2 by měla podporovat onion služby a související funkce, jako je protokol pro řízení přetížení (RTT Congestion Control) a prostředky na ochranu proti DDoS útokům. Dosažení parity s klientem napsaným v jazyce C je plánováno ve větvi 2.0, která také nabídne vazby pro použití Arti v kódu napsaném v různých programovacích jazycích.
V následujících letech se práce zaměří na implementaci funkčnosti potřebné pro práci relé a servery adresářů. Jakmile kód napsaný v Rustu dosáhne úrovně schopné zcela nahradit variantu napsanou v C, mají vývojáři v úmyslu udělit Arti statut hlavní implementace Tor a ukončit podporu implementace v C. Podpora verze napsané v jazyce C bude postupně ukončena s možnosti plynulé migrace.
Zdroj: opennet.ru
