O Guia Definitivo do I2P

A internet invisível

tl;dr – I2P é uma rede própria (uma darknet); – É muito fácil de instalar e rodar;

1- O que é o I2P

“I2P” é a sigla de “The Invisible Internet Project” ou “O Projeto da Internet Invisível”. Trata-se de uma darknet, ou seja, é uma rede per si, isolada da clearnet (a internet que as “pessoas normais” usam).

1.1- Anonimato

O objetivo principal do I2P é o anonimato: se usado da maneira correta é muito difícil que você seja (a) identificado e (b) tenha seu tráfego monitorado. Entretanto, ao contrário do Tor (The Onion Router), cujo objetivo é “anonimato para acessar o Facebook”, por exemplo, o I2P simplesmente não serve para acessar nada da clearnet: I2P é uma rede em si mesmo, isolada de outras redes.

1.2- Isolamento

Esse isolamento é bom? É ruim? Um pouco dos dois. Talvez a maior vantagem de a rede ser isolada é o fato de que tanto clientes quanto servidores são, via de regra, anônimos, ao contrário do Tor, em que o cliente é anônimo, mas nem o “ponto de saída” nem o servidor o são.

2- Como funciona o I2P

2.1- Pouca coisa muda na arquitetura cliente-servidor

Ao contrário de projetos como ZeroNet ou DAT, o projeto I2P não tem como objetivo criar aplicações distribuídas. Isso é, sim, possível, mas na mesma medida que é possível criar-se aplicações distribuídas na “internet comum”.

Isso porque, apesar de haver um pequeno ecossistema em torno, o cerne real do I2P é uma espécie de substituto dos protocolos IP e TCP. O que se constrói em cima disso, portanto, acaba sendo (em questões conceituais, pelo menos) pouquíssimo diferente das aplicações “tradicionais”.

2.2- É praticamente igual o Tor

Não se deixe enganar quando ler sobre “garlic routing” (“roteamento tipo alho”), como se fosse muito diferente do “onion routing” (“roteamento tipo cebola”). Há alguma diferença de nomenclatura, assim como as questões de propósito de cada tecnologia (darknet versus interface com a clearnet), mas os princípios de funcionamento são bem parecidos.

Basicamente, as mensagens trafegam envolvidas em várias camadas de roteamento. A mensagem “Alfa, entregue este pacote para Beta” contém uma mensagem “Beta, entregue este pacote para Gama”, que por sua vez contém a mensagem “Gama, entregue este pacote para Delta”, sendo que cada mensagem é assinada e criptografada de maneira que só possa ser lida pelo seu devido destinatário no processo.

Se os “túneis” são unidirecionais ou bidirecionais não importa muito se você não tem um perfil mais técnico. O que importa é saber que, ao invés de seguir uma rota “direta”, os pacotes de dados trafegam por diversos intermediários razoavelmente aleatórios, de maneira a tornar inviável fazer um “profiling” da comunicação (seria necessário “espionar” muitíssimos nós) e praticamente impossível ler o que está sendo enviado: as mensagens são criptografadas dentro de mensagens criptografadas dentro de mensagens criptografadas e nem se sabe direito quantos níveis há e, no caso do I2P, nem quantas mensagens cada pacote contém (daí o termo “garlic routing”).

2.3- É necessário ter software específico rodando em user space

A implementação principal do I2P foi escrita em Java e, acredite, isso acabou sendo muito bom: a versão para Android funciona muito bem.

A interface da versão desktop é até bem agradável (baseado somente no website eu tinha minhas desconfianças de que seria…), fácil de usar e parece ter traduções de boa qualidade.

2.4- Não existe um servidor central de DNS

O que você tem são “livros de endereços” e estes são locais. Cada um mantém o seu e os usuários podem “trocar figurinhas” uns com os outros.

Isso não quer dizer, claro, que no seu primeiro acesso não haverá nenhum nome de domínio “decente” disponível. O I2P já vem com um address book preenchido com muitos valores “default”.

Isso me lembra muito os primórdios da internet, quando os nomes eram todos resolvidos via /etc/hosts de cada computador…

3- Usando I2P

3.1- Instalando

Você pode baixar a versão mais adequada ao seu dispositivo aqui:

https://geti2p.net/en/download

No Linux, eu rodei o instalador assim:

java -jar i2pinstall_0.9.34.jar

E instalei o I2P em ~/Apps/i2p . A instalação em si é do tipo “wizard” e não tem muito segredo.

Para rodar:

cd ~/Apps/i2p
./i2prouter start

3.2- Usando

Eu criei um perfil do Firefox somente para usar o I2P, já que é recomendado usar o i2prouter como proxy. Se você não usa perfis, como eu, pode usar uma extensão, como “foxyproxy”, que permite usar várias configurações de proxy no Firefox e alternar entre elas baseado em padrões de URLs. Procure na internet sobre como fazer isso e você logo achará.

O endereço de proxy é 127.0.0.1:4444 para HTTP e FTP e 127.0.0.1:4445 para HTTPS.

3.2.1- Console

Acesse 127.0.0.1:7657 para acessar o console do I2P. De lá há muitos links para documentação, algumas aplicações, opções de configuração, exibição de status do software, etc.

3.2.2- Lentidão

Lembra que eu mencionei que, ao invés de os pacotes irem “diretamente” para os destinos eles passam por N intermediários, que vão descriptografando as mensagens? Pois é. Esse processo é lento e você sente isso enquanto navega pelos “eepsites” (os sites que habitam a rede I2P). Há algumas opções de configuração que melhoram isso, mas deixo para você pesquisar.

O aviso, aqui, é esse mesmo: não se assuste, é meio lento, mesmo.

4- Conteúdos interessantes

4.1- Cliente de bittorrent

http://localhost:7657/i2psnark/

Mas é apenas um cliente: não há busca integrada.

4.2- Cliente ed2k

http://echelon.i2p/imule/

Ainda não rodei, mas é interessante saber que existe.

4.3- Cliente de “e-mail” seguro

http://i2pwiki.i2p/index.php?title=I2P-Bote

O I2P-Bote é um plugin do I2P que permite o envio de mensagens tipo “e-mail” entre usuários da rede (não vai rolar mandar e-mails para seus amigos “@bol.com.br”, desculpaê) de forma distribuída (não há servidor central) e segura (entre outras coisas, as mensagens são criptografadas de ponta-a-ponta).

Não acho que eu vá usar para enviar e-mails para a minha mãe, mas se você vive trocando receitas de bombas e teme que a “ABIN” apareça na tua casa (uuuh!), pode ser interessante espalhar a palavra do I2P para seus colegas confeiteiros…

4.4- Fórum distribuído

http://i2pwiki.i2p/index.php?title=Syndie

O nome “Syndie” vem de “syndication”: as mensagens vão sendo copiadas de usuário para usuário, ao estilo do Secure Scuttlebutt. Ea implementação não é exclusiva do I2P: o software também roda sobre Tor, clearnet (ou seje: “a internet comum”) e Freenet.

5- Apelo visual

Talvez o maior “problema” do I2P seja justamente o fato de não ser uma tecnologia amplamente adotada: é bem perceptível que há mais programadores do que designers usando-o. O mascote é bizarro, nunca vi uma versão SVG do logo (que também não é assim muito lindo), o website evoca um sentimento de “era moderno nos anos 90”, o console é “estilo Java”, o instalador para Linux usa uma skin estilo “Aqua antigão”…

E isso é algo que tenho reparado: o apelo visual é muito importante para a divulgação e adoção de novas tecnologias. Um dia quero escrever um artigo inteiro a respeito disso.

Eu mesmo, por exemplo, nessa jornada por tecnologias “livre de censura” e distribuídas comecei testando a ZeroNet e depois o IPFS, em grande parte porque os websites de ambos tem maior apelo visual.

Então fica um apelo aos designers de bom coração: que tal se voluntariar para ajudar a melhorar esse quesito do I2P? Não é necessário saber programar para colaborar com projetos open source!

Resumo

Eu deixei de lado a parte “não-HTML” do I2P, mas é possível, por exemplo, usar outros tipos de aplicações, como o SSH, sobre esse protocolo.

É fácil instalar e começar a usar o I2P. Não é nada de outro mundo e “usuários normais” conseguem usar com apenas um pouco de esforço e boa vontade. E, até onde anonimato é importante, é uma tecnologia que pode ajudar muita gente em países em que ter uma opinião diferente (e falar sobre isso) pode acabar te deixando um tanto quanto… morto.