Prima versione stabile di Arti, l'implementazione ufficiale di Tor in Rust

Gli sviluppatori della rete anonima Tor hanno creato la prima versione stabile (1.0.0) del progetto Arti, che sviluppa un client Tor scritto in Rust. La versione 1.0 è contrassegnata come adatta all'uso da parte di utenti generici e fornisce lo stesso livello di privacy, usabilità e stabilità dell'implementazione C principale. Anche l'API offerta per l'utilizzo della funzionalità Arti in altre applicazioni è stata stabilizzata. Il codice è distribuito sotto le licenze Apache 2.0 e MIT.

A differenza dell'implementazione C, originariamente progettata come proxy SOCKS e poi personalizzata per soddisfare altre esigenze, Arti è inizialmente sviluppata come libreria di plug-in modulare che può essere utilizzata da varie applicazioni. Inoltre, quando si sviluppa un nuovo progetto, viene presa in considerazione tutta l'esperienza passata di sviluppo Tor, evitando i problemi architetturali noti, rendendo il progetto più modulare ed efficiente.

Il motivo per cui Tor è stato riscritto in Rust è stato il desiderio di raggiungere un livello più elevato di sicurezza del codice utilizzando un linguaggio sicuro per la memoria. Secondo gli sviluppatori Tor, almeno la metà di tutte le vulnerabilità monitorate dal progetto verranno eliminate in un'implementazione Rust se il codice non utilizza blocchi "non sicuri". Rust consentirà inoltre di raggiungere velocità di sviluppo più elevate rispetto all'utilizzo di C, grazie all'espressività del linguaggio e alle rigorose garanzie che consentono di evitare di perdere tempo in doppi controlli e scrivendo codice non necessario.

Sulla base dei risultati dello sviluppo della prima versione, l'uso del linguaggio Rust si è giustificato. Ad esempio, è stato notato che in ogni fase sono stati commessi meno errori nel codice Rust rispetto allo sviluppo comparabile in C: gli errori emersi durante il processo di sviluppo erano principalmente legati alla logica e alla semantica. Il compilatore rusticc eccessivamente esigente, notato da alcuni come uno svantaggio, in realtà si è rivelato una benedizione, poiché se il codice viene compilato e superato i test, la probabilità della sua correttezza aumenta in modo significativo.

Il lavoro sulla nuova variante ha confermato anche un aumento della velocità di sviluppo, dovuto non solo al fatto che la funzionalità è stata ricreata sulla base di un modello esistente, ma anche alla semantica più espressiva di Rust, alle comode librerie di funzioni e all'uso della sicurezza del codice di Rust. capacità. Uno degli svantaggi è la grande dimensione degli assembly risultanti: poiché la libreria Rust standard non è fornita di default sui sistemi, deve essere inclusa nei pacchetti offerti per il download.

La versione 1.0 si concentra principalmente sul lavoro di base nel ruolo cliente. Nella versione 1.1 si prevede di implementare il supporto per il trasporto plug-in e i bridge per aggirare il blocco. Si prevede che la versione 1.2 supporti i servizi Onion e le funzionalità correlate, come il protocollo di controllo della congestione (RTT Congestion Control) e la protezione contro gli attacchi DDoS. Per il ramo 2.0 è previsto il raggiungimento della parità con il client C, che offrirà anche collegamenti per l'utilizzo di Arti in code in vari linguaggi di programmazione.

Nei prossimi anni il lavoro si concentrerà sull'implementazione delle funzionalità necessarie per eseguire relè e server di directory. Quando il codice Rust raggiungerà un livello tale da poter sostituire completamente la versione C, gli sviluppatori intendono dare ad Arti lo status di implementazione principale di Tor e smettere di mantenere l'implementazione C. La versione C verrà gradualmente eliminata per consentire una migrazione senza intoppi.

Fonte: opennet.ru

Aggiungi un commento