Projeto Tor está migrando para Rust
(itsfoss.com)- O código central da rede Tor está sendo migrado da linguagem C para o Arti, baseado em Rust
- O código existente em C tem vulnerabilidades como buffer overflow, use-after-free e corrupção de memória
- A nova versão Arti 1.8.0 remove padrões previsíveis e reduz o risco de rastreamento por meio de uma reformulação do timeout de circuitos
- Foi adicionado um novo comando para que operadores de serviços onion possam migrar chaves automaticamente do Tor baseado em C para o Arti
- Esta transição é um importante avanço técnico do projeto Tor para melhorar segurança e estabilidade
Principais mudanças no Arti 1.8.0
-
O destaque desta versão é a aplicação da reformulação do timeout de circuitos (circuit timeout rework)
- No Tor anterior, o Circuit Dirty Timeout (CDT) controlava o momento de encerramento do circuito com um único temporizador
- Esse método era previsível, permitindo que observadores de tráfego identificassem padrões
- O Arti 1.8.0 introduz timeouts baseados em uso e temporizadores individuais, fazendo com que os circuitos sejam encerrados em momentos aleatórios quando aceitam novas conexões ou ficam ociosos
- Isso reduz o risco de fingerprinting
-
Adição do novo comando experimental
arti hsc ctor-migrate- Operadores de serviços onion podem migrar restricted discovery keys do Tor baseado em C para o keystore do Arti
- Essas chaves são usadas para autenticação de clientes, e o novo comando permite a migração automática sem trabalho manual
-
Melhorias adicionais
- Vários componentes internos foram aprimorados, como a arquitetura de roteamento, a implementação de protocolos, o suporte a cache de diretório e a configuração do listener da porta OR
- Os detalhes completos das mudanças podem ser consultados no changelog oficial do Arti 1.8.0
Contexto da migração para Rust
- A rede Tor é operada com base na linguagem C desde o início dos anos 2000
- Porém, a base de código em C tem gerado vulnerabilidades de segurança de forma contínua devido a problemas de segurança de memória
- Por isso, o projeto Tor está promovendo o projeto de reescrita Arti, aproveitando a segurança de memória do Rust
- O Arti reimplementa as funcionalidades do Tor em Rust com o objetivo de reforçar segurança, estabilidade e manutenção
Significado técnico
- A migração para Rust aponta para um fortalecimento fundamental da estrutura de garantia de anonimato do Tor
- A eliminação de comportamentos previsíveis dos circuitos e a automação do gerenciamento de chaves contribuem para elevar o nível de proteção da privacidade dos usuários
- As atualizações contínuas do Arti são vistas como um sinal de aceleração da substituição gradual do Tor baseado em C
2 comentários
Lançamento do Arti 1.0.0 - implementação do Tor escrita em Rust
Comentários do Hacker News
Recentemente fiz o teste do EFF Cover Your Tracks e só o Tor Browser com o JS desativado apareceu como totalmente resistente a fingerprinting
Até mesmo o Tor com JS ativado foi avaliado como apenas “parcialmente” resistente, e no Firefox o resultado nem aparecia mesmo com JS desativado. Foi um resultado bem assustador, então fiquei curioso com os testes de outras pessoas
Por outro lado, ferramentas como fingerprinting.com/demo, que testam só persistência, também têm problema.
O verdadeiro sinal de risco é falhar nos dois testes
Ainda assim, embora o Tor Browser certamente se destaque, é difícil concluir por esse teste sozinho que seja fácil distinguir fingerprints entre usuários do Tor
Quanto mais eu aumentava o nível de segurança, mais os bits de identificação subiam, mas ao desativar totalmente o JS eles voltavam a cair.
Ou seja, desativar o JS oferece o maior anonimato
Seria bom se a Mozilla tivesse levado mais adiante a transição para Rust (oxidizing) no Firefox. Isso também teria sido positivo para o ecossistema Rust
Se Rust tivesse permanecido como a “arma secreta” da Mozilla, talvez sua adoção tivesse até demorado mais para se espalhar
Se usar Rust ajuda a resolver os problemas deles, então parece uma escolha racional.
Linguagem é uma ferramenta que se ajusta de formas diferentes conforme o projeto, a equipe e o problema
Isso não é papo de fanboy de Rust, e sim um problema de resistência parecido com a época em que médicos ou pilotos rejeitavam checklists
Em UI, iteração rápida e GC são importantes, e desempenho importa menos. Fazer UI em Rust pode virar um inferno de manutenção
Isso porque o Tor roda em um ambiente multithread em que segurança e desempenho importam ao mesmo tempo.
Zig também pode ser uma alternativa, mas ainda não está maduro. Abordagens como a do Tigerbeetle, que priorizam determinismo (determinism), também são interessantes
A maior reclamação sobre o projeto Tor é a queda de velocidade. Não parece que migrar para Rust vai deixá-lo mais rápido
Essa transição para Rust aconteceu com apoio do Zcash Community Grants. Até P&D com criptomoedas pode gerar bons resultados
Embora venha a piada de que criptomoeda talvez seja pior do que urina
Fico preocupado com o risco jurídico de operar um nó de saída do Tor. Será que existe uma forma de permitir isso só com base em whitelist?
Se possível, recomenda-se registrar em nome de uma organização, e se você quiser ajudar com mais segurança, é melhor operar um relay
Ou então rodar um guard/middle relay, o que também ajuda bastante a rede
Só que é preciso bloquear alguns ASNs da China. Há muito tráfego falso de download
A adoção de Rust parece o processo de substituir pilares de madeira por aço em uma fortaleza antiga.
O código em C do Tor carrega décadas de concessões de segurança e marcas de desempenho, então uma rustificação gradual é a forma mais realista de aumentar a segurança
O ponto principal não é uma “reescrita total”, e sim reduzir as áreas sem memory safety.
Se apenas as partes mais arriscadas — parsing, criptografia e fronteiras de protocolo — forem migradas para Rust, o Tor ficará mais robusto
Também é interessante pensar que no futuro isso pode evoluir para pluggable transports em Rust ou um runtime híbrido
Na verdade, essa decisão não é recente. O Tor iniciou em 2020 o projeto Arti, baseado em Rust, e em 2022 anunciou o Arti 1.0
Eles concluíram que seria difícil refatorar gradualmente a base em C e disseram estar satisfeitos com a velocidade de desenvolvimento, portabilidade e entrada de novos contribuidores proporcionadas por Rust
Mesmo recentemente, o changelog do Arti mostra que o desenvolvimento segue ativo
Por exemplo, um app de mensagens poderia usar a rede sem precisar de um daemon Tor separado. Acho que essa é uma mudança ainda maior
Tor não é só um conceito, mas um nome que engloba o protocolo (onion routing), a rede e também a implementação de referência
Houve até uma sugestão em tom de brincadeira de que talvez bastasse compilar o Tor com Fil-C para ganhar memory safety de graça