Primeira versão estável do Arti, a implementação oficial do Tor em Rust

Os desenvolvedores da rede anônima Tor criaram a primeira versão estável (1.0.0) do projeto Arti, que desenvolve um cliente Tor escrito em Rust. A versão 1.0 está marcada como adequada para uso por usuários em geral e fornece o mesmo nível de privacidade, usabilidade e estabilidade que a implementação C principal. A API oferecida para utilização da funcionalidade Arti em outras aplicações também foi estabilizada. O código é distribuído sob as licenças Apache 2.0 e MIT.

Ao contrário da implementação C, que foi inicialmente projetada como um proxy SOCKS e depois adaptada para outras necessidades, o Arti é inicialmente desenvolvido na forma de uma biblioteca modular incorporável que pode ser usada por vários aplicativos. Além disso, ao desenvolver um novo projeto, toda a experiência anterior de desenvolvimento do Tor é levada em consideração, o que evita problemas arquitetônicos conhecidos e torna o projeto mais modular e eficiente.

A razão para reescrever o Tor em Rust foi o desejo de alcançar um nível mais alto de segurança de código usando uma linguagem segura para memória. Segundo os desenvolvedores do Tor, pelo menos metade de todas as vulnerabilidades monitoradas pelo projeto serão eliminadas em uma implementação do Rust se o código não usar blocos “inseguros”. Rust também permitirá atingir velocidades de desenvolvimento mais rápidas do que em C, devido à expressividade da linguagem e às garantias estritas que permitem evitar perda de tempo com dupla verificação e escrita de código desnecessário.

Com base nos resultados do desenvolvimento da primeira versão, o uso da linguagem Rust se justificou. Por exemplo, notou-se que em cada estágio, foram cometidos menos erros no código Rust do que no desenvolvimento comparável em C - os erros que surgiram durante o processo de desenvolvimento estavam principalmente relacionados à lógica e à semântica. O compilador Rustc excessivamente exigente, apontado por alguns como uma desvantagem, na verdade acabou sendo uma bênção, pois se o código for compilado e aprovado nos testes, a probabilidade de sua correção aumenta significativamente.

Trabalhar na nova variante também confirmou um aumento na velocidade de desenvolvimento, que se deve não apenas ao fato de a funcionalidade ter sido recriada com base em um modelo existente, mas também à semântica mais expressiva do Rust, bibliotecas de funções convenientes e ao uso da segurança de código do Rust. capacidades. Uma das desvantagens é o grande tamanho dos assemblies resultantes - como a biblioteca Rust padrão não é fornecida nos sistemas por padrão, ela deve ser incluída nos pacotes oferecidos para download.

A versão 1.0 concentra-se principalmente no trabalho básico na função de cliente. Na versão 1.1 está prevista a implementação de suporte para transporte plug-in e pontes para contornar o bloqueio. Espera-se que a versão 1.2 suporte serviços cebola e recursos relacionados, como o protocolo de controle de congestionamento (RTT Congestion Control) e proteção contra ataques DDoS. Alcançar a paridade com o cliente C está planejado para o branch 2.0, que também oferecerá ligações para uso do Arti em código em diversas linguagens de programação.

Nos próximos anos, o trabalho se concentrará na implementação da funcionalidade necessária para executar retransmissores e servidores de diretório. Quando o código Rust atingir um nível que possa substituir completamente a versão C, os desenvolvedores pretendem dar ao Arti o status de implementação principal do Tor e parar de manter a implementação C. A versão C será descontinuada gradualmente para permitir uma migração tranquila.

Fonte: opennet.ru

Adicionar um comentário