Os desenvolvedores do projeto Tor publicaram a versão 1.4.0 do Arti, uma implementação do cliente Tor escrita na linguagem Rust. A ramificação 1.x é considerada adequada para uso por usuários comuns e oferece o mesmo nível de privacidade, usabilidade e estabilidade que a implementação principal em C. Atingir paridade com o cliente em C está previsto na ramificação 2.0. Quando o código em Rust alcançar um nível capaz de substituir completamente a versão em C, os desenvolvedores pretendem dar ao Arti o status de implementação principal do Tor e gradualmente descontinuar o suporte à implementação em C. O código é distribuído sob as licenças Apache 2.0 e MIT.
O Arti inicialmente se desenvolve na forma de uma biblioteca modular embutida, que pode ser utilizada por diferentes aplicativos. Ao projetar o Arti, foram levados em consideração experiências anteriores no desenvolvimento do Tor, o que permitiu evitar problemas arquitetônicos conhecidos relacionados ao fato de que a implementação em C foi inicialmente projetada como um proxy SOCKS e só depois ajustada para outras necessidades.
Além da modernização da arquitetura, o desejo de reescrever o Tor em Rust surgiu da vontade de aumentar a segurança do código ao usar uma linguagem que oferece gerenciamento seguro de memória. De acordo com os desenvolvedores do Tor, o uso da linguagem Rust sem blocos 'unsafe' deve prevenir a ocorrência de pelo menos metade de todas as vulnerabilidades típicas no projeto. Além disso, acredita-se que o Rust aumentará a velocidade de desenvolvimento devido à expressividade da linguagem e às garantias rigorosas que evitam que o tempo seja desperdiçado em verificações duplas e na escrita de código desnecessário.
Na nova versão, um novo interface RPC foi finalizado, substituindo o protocolo de gerenciamento através da porta TCP definida pelo parâmetro ControlPort. O RPC pode ser utilizado para integrar aplicativos e serviços ao Arti sem a necessidade de embutir a biblioteca com a funcionalidade do Arti no aplicativo.
As principais diferenças do novo protocolo:
- Uso do formato JSON em vez de um formato específico que requer seu próprio parser;
- Simplicidade na extensão do protocolo. Formalização de como o cliente e servidor devem lidar com mensagens, parâmetros e dados não suportados;
- Mecanismo para determinar a disponibilidade do RPC;
- Suporte à transmissão simultânea de várias solicitações em uma única conexão de rede;
- A disponibilidade de bibliotecas de cliente prontas para C, Python e Rust.
Entre outras mudanças no Arti 1.4.0, destaca-se o trabalho preparatório para o suporte a relés e a continuação da implementação de recursos para proteger serviços onion contra ataques DDoS.
Fonte: opennet.ru
