Gli sviluppatori della rete anonima Tor hanno presentato il progetto Arti, che lavora alla creazione di un'implementazione del protocollo Tor nel linguaggio Rust. A differenza dell'implementazione in C, originariamente progettata come un proxy SOCKS e successivamente adattata ad altre esigenze, Arti si sviluppa inizialmente come una libreria modulare integrabile, che varie applicazioni potranno utilizzare. Il lavoro è in corso da oltre un anno con finanziamenti del programma di sovvenzioni Zcash Open Major Grants (ZOMG). Il codice è distribuito sotto le licenze Apache 2.0 e MIT.
Tra le ragioni per riscrivere Tor in Rust c'è il desiderio di ottenere un livello più elevato di sicurezza del codice grazie all'uso di un linguaggio che garantisce una gestione sicura della memoria. Secondo le stime degli sviluppatori di Tor, almeno la metà di tutte le vulnerabilità monitorate dal progetto saranno eliminate nell'implementazione in Rust, a condizione che nel codice non siano utilizzati blocchi 'unsafe'. Rust consentirà anche di ottenere una maggiore velocità di sviluppo rispetto all'uso del C, grazie all'espressività del linguaggio e alle rigorose garanzie, che evitano di perdere tempo in controlli doppi e nella scrittura di codice superfluo. Inoltre, nello sviluppo del nuovo progetto si tiene conto di tutta l'esperienza acquisita nello sviluppo di Tor, evitando così di incorrere in problemi architetturali noti e rendendo il progetto più modulare ed efficiente.
Nello stato attuale, Arti può già connettersi alla rete Tor e garantire l'interazione con server directory e creare connessioni anonime tramite Tor fornendo un proxy basato sul protocollo SOCKS. Attualmente, lo sviluppo non è raccomandato per sistemi di produzione, poiché non tutte le funzionalità per garantire la riservatezza sono state implementate e non viene garantita la retrocompatibilità a livello di API. La prima versione del client, conforme ai criteri di sicurezza, che supporta nodi di guardia e isolamento dei flussi, è prevista per ottobre.
Nel marzo 2022 è prevista la prima versione beta con un'implementazione sperimentale di una libreria integrata e ottimizzazioni delle prestazioni. Il primo rilascio stabile, con API stabili, CLI e formato di configurazione, nonché un audit programmato, è fissato per metà settembre 2022. Questo rilascio sarà adatto all'uso iniziale da parte degli utenti comuni. Alla fine di ottobre 2022 è previsto un aggiornamento 1.1 con supporto per trasporti plug-in e bridge per eludere le restrizioni. Il supporto per i servizi onion è previsto per il rilascio 1.2, mentre il raggiungimento della parità con il client in linguaggio C è atteso per il rilascio 2.0, i cui tempi non sono ancora definiti.
In seguito, gli sviluppatori prevedono una graduale diminuzione dell'attività legata allo sviluppo del codice in C e un aumento del tempo dedicato all'editing in Rust. Quando l'implementazione in Rust raggiungerà un livello in grado di sostituire la versione in C, gli sviluppatori smetteranno di aggiungere nuove funzionalità all'implementazione in C e, dopo un certo periodo, interromperanno completamente il suo supporto. Ma ciò non accadrà presto e finché l'implementazione in Rust non raggiungerà il livello di una sostituzione completa, lo sviluppo del client e del relay Tor in C continuerà.
Fonte: opennet.ru
