Onion routing (roteamento cebola)

Onion routing é uma técnica para comunicação anônima através de uma rede de computadores. Mensagens são repetidamente criptografadas e enviadas através de diversos nós de rede, chamados "roteadores cebola". Cada roteador cebola remove uma cada de encriptação para ler instruções de roteamento, e envia a mensagem para o próximo roteador, onde o processo é repetido. Este procedimento previne que os nós intermediários saibam a origem, destino e conteúdo da mensagem.

A técnica de onion routing foi desenvolvida por Michael G. Reed, Paul F. Syverson, e David M. Goldschlag, e patenteada pela Marinha dos Estados Unidos da América em 1998. Até o presente momento, a tecnologia predominante que implementa esta técnica é o projeto Tor.

Recursos

A ideia de onion routing (OR) é proteger a privacidade do remetente e do destinatário de uma mensagem, enquanto também proporciona proteção para o conteúdo da mensagem ao atravessar a rede.

O onion routing consegue isso seguindo o princípio de "cascatas de mistura" (David Chaum, anos 1980): mensagens seguem da origem para o destino através de uma sequência de proxies (roteadores cebola), que reencaminham as mensagens por um caminho imprevisível. Para impedir que algum atacante malicioso espione o conteúdo da mensagem, as mensagens são criptografadas entre os roteadores. A vantagem de onion routing (e "cascatas de mistura" em geral) é que não é necessário confiar em cada roteador da rede: mesmo que um ou mais roteadores sejam comprometidos, ainda é possível ter comunicação anônima. Isso se deve ao fato que cada roteador em uma rede OR aceita mensagens, recriptografa-as e transmite para outro roteador. Um atacante que monitora todos os roteadores de uma rede OR pode ser capaz de rastrear o caminho de uma mensagem através da rede, mas um atacante com maiores limitações terá dificuldade mesmo caso ele controle um ou mais roteadores no caminho da mensagem.

Onion routing não fornece anonimato perfeito do remetente ou do receptor contra todas as possíveis formas de espionagem, ou seja, é possível que um intruso local saiba que um indivíduo enviou ou recebeu uma mensagem. Ele fornece um forte grau de desvinculamento (unlinkability), isto é, a noção de que um intruso não pode determinar facilmente tanto o remetente quanto o destinatário de uma determinada mensagem. Nessas condições, o onion routing não dá nenhuma garantia absoluta de privacidade, mas sim de que o grau de privacidade é geralmente uma função do número de roteadores participantes pelo número de roteadores comprometidos ou maliciosos.

Cebolas

Cebolas de roteamento

Cebolas de roteamento são estruturas de dados usadas para criar caminhos através dos quais mensagens podem ser transmitidas. Para criar uma cebola, o roteador que inicia uma transmissão seleciona aleatoriamente alguns roteadores cebola. Para cada roteador define o roteador seguinte e criptografa a mensagem a cada iteração usando a chave pública do roteador de destino. Isso gera uma estrutura em camadas, em que para chegar na mensagem original (camada interna) é necessário decodificar todas as camadas externas, o que só pode ser feito na ordem predeterminada usando a chave privada de cada roteador do caminho.

Diagrama do Onion RoutingDiagrama do Onion Routing - Imagem externa sob licença Creative Commons

Uma vez que o caminho tenha sido estabelecido, ele permanece ativo para transmitir dados por um certo período de tempo. Enquanto o caminho está ativo, o remetente pode transmitir mensagens que ao passar por cada roteador cebola são "descascadas", descriptografadas pela chave privada do roteador, dificultando a vinculação entre mensagens que entram e mensagens que saem do roteador.

Fraquezas

Onion routing tem alguns pontos fracos. Por exemplo, ele não fornece muita defesa contra análise temporal. Se um atacante observa um roteador cebola com relativamente pouco tráfego, ele pode associar mensagens de entrada e saída observando quanto tempo leva entre uma recepção e um reenvio. No entanto, este problema pode ser resolvido armazenando várias mensagens antes transmiti-las usando um algoritmo de reordenação pseudoaleatório.

Redes OR também são vulneráveis a ataques de intersecção e ataques de predecessor. Ataques de intersecção se baseiam no fato de que os roteadores cebola periodicamente falham ou saem da rede; assim, qualquer caminho de comunicação em funcionamento não pode ter utilizado quaisquer dos roteadores que saíram, e também não podem envolver roteadores que entraram na rede recentemente. Em um ataque de predecessor, um atacante que controla um roteador cebola mantém um registro de uma sessão enquanto esta ocorre ao longo de várias "reformulações de caminho" (caminhos são periodicamente destruídos e reconstruídos). Se um atacante observa a mesma sessão em reformulações suficientes, ele tenderá a ver o primeiro roteador na cadeia com mais frequência do que qualquer outro roteador, o que põe em risco a privacidade do remetente.

Os nós de saída das redes OR dão acesso completo ao conteúdo transmitido (via sniffing) e, portanto, a rede OR não deve ser utilizada para transmitir informações confidenciais sem o uso de criptografia fim-a-fim, como SSL.

Aplicações

Tor

Em 13 de agosto de 2004, no 13° Simpósio de Segurança USENIX, Roger Dingledine, Nick Mathewson, e Paul Syverson apresentaram o Tor, "O Roteador Cebola de Segunda Geração"

Tor não fere as patentes do onion routing original. Tor fornece sigilo perfeito adiante e move a limpeza de protocolo para fora da camada de roteamento cebola, tornando-o um transporte TCP de propósito geral. Ele também oferece baixa latência, servidores de diretório, verificação de integridade fim-a-fim e as políticas de saída variável para roteadores. Existe um sistema que permite serviços e websites ocultos. O pseudo domínio de topo (TLD) .onion é usado para endereços na rede Tor.

O código-fonte do Tor é publicado sob a licença BSD. Em outubro de 2009, existiam cerca de 1500 roteadores cebola acessíveis publicamente.

Cifra armadilha

O elo mais fraco na decodificação é o ser humano. Computação humana é lenta e cara. Sempre que uma cifra precisa ser enviada a um humano para ser processada semanticamente, isto aumenta substancialmente o custo da decodificação.

Uma cifra armadilha pode assumir a forma de ruído - enviando inúmeras mensagens de texto inútil criptografadas. Isso diminui a relação sinal-ruído para os seres humanos que tentem interpretar mensagens de texto decodificadas.

O objetivo é enganar um atacante que decifre uma mensagem, e posteriormente tome ações contra o seu interesse, como por exemplo sinalizando que ele está espionando a mensagem, ou causando suspeita a entidades erradas. Uma mensagem verdadeira pode estar contida em algum nível da cebola, preferencialmente não no nível mais baixo, que pode conter uma mesagem inócua que faça parecer que todas as camadas guardavam apenas uma mensagem inocente.