Tor #1 - Entendendo o projeto

posted Mar 16, 2013, 12:23 PM by rcaf@okibrasil.cin.ufpe.br   [ updated Mar 18, 2013, 4:31 AM ]
Inicialmente, minha equipe (embat, licf, rcaf) decidiu contribuir com o projeto Django. Todos da equipe tiveram algum contato com este framework, então achamos que seria um projeto fácil de contribuir, já que não haveria grande overhead em aprender sobre a ferramenta. No entanto, de nós três, apenas Lucas havia trabalhado com ele 'de verdade' e o conhecia a fundo. Já eu e Eduardo tivemos pouco contato, e o overhead que imaginávamos que não existiria, acabou por se apresentar e dificultar nossa entrada nas contribuições. Tivemos dificuldade em encontrar tickets para contribuir, e enquanto isso, Lucas desenrolou bem e contribuiu com dois patches.

Como haveria de enfrentar o overhead de entender algum projeto de qualquer forma, optei por tentar contribuir com um projeto que realmente me interessa. Frameworks Web são legais e economizam tempo de desenvolvedores, mas não me atraem tanto, já que não desenvolvo para a Web. O projeto que resolvi contribuir foi o mesmo que tinha em mente desde o início da disciplina, mas acabei desistindo por achar que teria muita dificuldade, e o Django seria mais fácil.

Este projeto se chama Tor, e é uma ferramenta de anonimidade na Internet. Serve tanto para evitar rastreabilidade (o que o usuário transmite e com quem se comunica na rede), como também para contornar censura, muitas vezes empregada por países de regimes não democráticos, mas também por países com democracia (!).

Após baixar a sua versão mais recente do código (link) e não entender muita coisa, fui atrás de ajuda, algum guia para eu entender a ferramenta e em seguida entender seu código, para de repente começar a contribuir com ele. Em https://www.torproject.org/getinvolved/volunteer.html.en há uma lista legal de que projetos você pode contribuir, mas não encontrei o "guia para entender a ferramenta" que eu desejava. Então fui no IRC.


A partir deste arquivo que o arma (Roger Dingledine, líder do projeto Tor) me indicou, acabei chegando em um vídeo excelente sobre a ferramenta, que explica como ela funciona, assim como os seus usos (quem se beneficia dela). O vídeo é uma apresentação do próprio Roger e me motivou bastante a continuar com o projeto.

Anti-Censorship & Transparency - Roger Dingledine



O Tor basicamente funciona como um Proxy. Ou seja, se você visitar um site através dele, o web server pensará que os pacotes foram originados de outro host (o Proxy), então não haverá registros do seu IP nos logs do servidor. Mas o Tor vai além disso.

Imagine que você é um cidadão da Birmânia, país que até 2011 estava sob regime militar (desde 1962), oprimindo fortemente qualquer manifestação pró-democracia. Então você decide postar algum manifesto contra o governo anonimamente, utilizando um Proxy nacional. Tudo que o governo precisa é mandar uma ordem judicial para a empresa responsável pelo proxy olhar seus logs e revelar quem postou o manifesto, acabando com a anonimidade do cidadão.

Qual a alternativa, então? O Tor permite que qualquer pessoa funcione como um Proxy, basta baixar o software e ativar a opção que o torna um relay ou bridge. Isto já dificulta um pouco a vida dos governos censores. Mas além disso, mesmo se alguns relays do Tor estiverem comprometidos, ou seja, se o governo resolver hospedar relays Tor para ficar vigiando os pacotes que trafegam por eles, não será uma estratégia muito útil. O design do protocolo Tor previne que qualquer relay saiba quem está se comunicando com quem, e muito menos o conteúdo da mensagem. Os pacotes que trafegam pelos relays são como cebolas. Cada relay só é capaz de remover uma "camada" de encriptação do pacote e repassa o restante para outro relay, que irá remover outra camada. Apenas o relay final (ou de saída), que irá remover a última camada, saberá quem é o destino e o conteúdo do pacote, mas não saberá quem o enviou. (se o usuário utilizar um protocolo como https, o relay de saída também não conseguirá saber o conteúdo)

O Tor é distribuído juntamente com um Firefox, pré-configurado para se comunicar com a web anonimamente. Mas o Tor também pode ser utilizado com outras ferramentas que envolvem comunicação, não apenas browsers.

Após entender melhor o protocolo do Tor, me sinto mais seguro em ver o código da aplicação. Nesta semana tentarei ver outros guias, enquanto analiso o código, para daí começar a procurar tickets para resolver algum bug/issue.

Eduardo Tenório - embat
Lucas Inojosa - licf
Rodolfo Ferraz - rcaf
Comments