Um Estudo sobre Plataformas de Anonimato Ricardo Marx Costa Soares de Jesus, Augusto Jun Devegili Curso de Sistemas de Informação – Centro Universitário Luterano de Palmas (CEULP) Palmas, TO, Brasil {rmarx, devegili}@ulbra-to.br Resumo. Plataformas de anonimato provêm uma comunicação sem que se revele a real identidade das partes que se comunicam. Este artigo procura estudar e mostrar o funcionamento de quatro plataformas de anonimato, a saber: Redes de Misturadores de Chaum, Roteamento de Cebolas, Web MIXes e Crowds. O estudo objetiva fornecer um panorama geral do que existe em termos plataformas de anonimato, bem como suas características e funcionalidades. 1 Introdução O surgimento da Internet trouxe consigo várias facilidades, e entre elas, estão as aplicações Web, como webmail e a própria navegação na Internet. As aplicações Web são baseadas na arquitetura Internet e, portanto, utilizam o protocolo IP para a realização da comunicação. Entre os campos que existem no cabeçalho de um pacote IP, estão os endereços do remetente e do destinatário do datagrama. Com estas informações, é possível fazer o rastreamento da comunicação de uma aplicação Web e revelar conteúdo, origem e destino de uma mensagem, resultando em violação de privacidade e anonimato. Privacidade e anonimato não são caracterizados somente pela ocultação de conteúdos de mensagens. Além disso, não deve ser possível saber quem gerou uma mensagem e nem a quem esta é digida. Uma forma de se obter a privacidade na Web é utilizando uma plataforma de anonimato, que provê a comunicação na Internet sem revelar a identidade das partes envolvidas na comunicação, bem como o seu conteúdo. O anonimato existe para que não seja possível relacionar uma ação ou informação à sua fonte geradora como, por exemplo, quais páginas Web um determinado usuário visita na Internet. A revelação do conteúdo ou da origem e destino de uma mensagem pode comprometer um indivíduo em algum aspecto, seja este pessoal, profissional ou social. E como pode ser feito com ligações telefônicas, por exemplo, informações enviadas e recebidas por aplicações Web podem ser interceptadas e utilizadas para fins duvidosos ou criminosos, como chantagem e extorsão. Além da revelação do conteúdo e das partes envolvidas na comunicação, a interceptação pode resultar ainda na identificação dos perfis de tais partes. Assim, a interceptação pode resultar não só em danos materiais, como roubo de número de cartão de crédito, mas pode também arruinar reputações e provocar perdas de credibilidade, que não são facilmente recuperáveis. A utilização de plataformas de anonimato pode ser vista como um instrumento de manifestação de liberdade de expressão, caracterizando uma das bases da sociedade da informação. Em alguns países, o uso de comunicações anônimas é considerado um direito constitucional [Berthold, Federrath & Köpsell 2001]. Um exemplo que pode ser citado como desejável utilização de conexões anônimas é a realização de votações digitais ou orientação psicológica. Por outro lado, se uma plataforma de anonimato é utilizada para fins ilícitos, como ataques digitais, terrorismo ou contrabando, os responsáveis por tais crimes podem não ser identificados, resultando em impunidade. Assim, do ponto de vista do usuário, não utilizar conexões anônimas pode ser arriscado pela possibilidade deste estar sendo espionado digitalmente. Já na visão de um governante, a existência de pessoas utilizando-se de comunicações anônimas pode oferecer risco ao bem estar político e social de uma nação, pois não se sabe o real propósito ou o fim para o qual a plataforma de anonimato está sendo utilizada. 2 Redes de Misturadores Em [Chaum, 1981], é proposto o sistema de e-mail não rastreável, o qual permite o envio de emails mantendo anônima a identidade do remetente. Esta proposta consiste na utilização de um misturador (mix), o qual faz o intermédio entre o remetente e o destinatário de uma mensagem. Quando um usuário deseja enviar uma mensagem, esta é encriptada com as chaves públicas do destinatário e do misturador que irá encaminhá-la. Tendo realizado isso, a mensagem é então enviada ao misturador, o qual decripta-a com sua chave privada e gera como resultado a mensagem encriptada com a chave pública do destinatário. Feito isso, o misturador então realiza a permutação de forma a não mais relacionar a mensagem à sua origem. Logo após, é feito o encaminhamento da mensagem ao destinatário. Recebendo-a do misturador, o destinatário decripta a mensagem e consegue ler o seu conteúdo. Na figura 1, é exibido um exemplo de misturador. entrada saída Figura 1. Um exemplo de misturador Uma forma de tornar o processo mais robusto é a utilização de uma cascata ou rede de misturadores (mix net) [Chaum, 1981]. Da mesma forma que no processo normal, em uma rede de misturadores a mensagem é encriptada com a chave pública do destinatário. A mudança é que a mensagem é sucessivamente encriptada com as chave públicas dos misturadores que compõem a cascata à qual se deseja submeter a mensagem. Portanto, o número de encriptações deve ser igual à quantidade de misturadores. Sendo então submetida à cascata, cada misturador faz a decriptação com sua chave privada, permuta e encaminha a mensagem para o próximo misturador. A saída final é a mensagem encriptada com a chave pública do destinatário. O encaminhamento da mensagem ao destinatário é feito pelo último misturador. A decriptação da mensagem pelo destinatário é feita da mesma forma. Na figura 2, é ilustrado um exemplo de rede de misturadores composta de três misturadores. Quando um usuário envia uma mensagem para outro utilizando o sistema de e-mail anônimo, para que o receptor da mensagem consiga responder ao remetente, é necessário utilizar endereços de retorno. Endereços de retorno permitem a um destinatário enviar uma resposta ao remetente de uma mensagem anônima de forma que a identidade deste último seja ainda mantida em segredo. Embora a proposta seja para sistemas de e-mail não rastreável, as redes de misturadores podem ser utilizadas para aplicações de propósito geral que exijam e desvinculação entre uma informação e a sua fonte geradora. Ainda em [Chaum, 1981], é apresentada a definição de pseudônimo digital, que é uma chave pública que serve para verificar assinaturas feitas pelo proprietário anônimo da chave privada correspondente. Desta forma, a validação dessas assinaturas é feita considerando-se o pseudônimo, e não o proprietário em si. EKUm1(EKUm2(EKUm3(EKUdest(M)))) misturador1 EKUm2(EKUm3(EKUdest(M))) misturador2 EKUm3(EKUdest(M)) misturador3 EKUdest(M) Figura 2. Rede de Misturades com três misturadores 3 Roteamento de Cebolas O Roteamento de Cebolas é uma infra-estrutura de anonimato baseada em redes de misturadores. No Roteamento de Cebolas, o conceito de misturador (mix) foi substituído por roteador. O processamento de uma requisição no Roteamento de Cebolas é feito em três fases: configuração da conexão, transmissão de dados e encerramento da conexão [Goldschlag, Reed & Syverson 1999]. O processo inicia quando um remetente (iniciador) deseja enviar uma mensagem a um destinatário. É neste ponto que é feita a configuração da conexão. O iniciador elabora a rota por onde os dados a serem enviados irão passar; para tanto, ele deve conhecer a chave pública de cada roteador. O iniciador começa então a construir uma estrutura recursiva (“cebola”) contendo informações de controle que serão utilizadas por cada roteador. A figura 3 mostra uma cebola preparada para três roteadores. A cebola é dividida em camadas. Cada camada é o resultado da encriptação das informações de controle dirigidas a cada roteador. Ao ser enviada à rede de roteadores, a cebola então tem sua camada (“casca”) mais externa retirada pelo roteador que a recebeu. Para que a cebola sempre se mantenha com um tamanho fixo, a camada que é removida por cada roteador é preenchida de forma a manter o tamanho da cebola constante. Fazendo isso, a cebola então é encaminhada ao próximo roteador (cada camada inclui o endereço do roteador responsável por ela). Um exemplo de descascamento de cebola é exibido na figura 4. informação de controle criptográfico dados (destinatário) Figura 3. Cebola preparada para três roteadores roteador1 roteador2 roteador3 Figura 4. Cebola preparada para três roteadores 4 Web MIXes Web MIXes são baseadas em redes de misturadores e têm por objetivo obter anonimato e não observação em acessos à Internet. O sistema é composto por três partes: JAP (Java Anon Proxy), que é executado na estação do usuário, uma rede de misturadores e um cacheproxy, que ficam do lado do servidor [Berthold, Federrath & Köpsell 2001]. As requisições anônimas são feitas através do JAP, que as encaminha ao primeiro misturador. Chegando a este misturador, a requisição está então na rede de misturadores. A rede faz o seu processamento e, saindo da rede, a requisição é então repassada ao cache-proxy, que a encaminha ao servidor Web de destino. A resposta do servidor faz o mesmo trajeto da requisição, só que no sentido inverso. A arquitetura das Web MIXes é mostrada na figura 5. Figura 5. Funcionamento das Web MIXes O JAP é um software instalado nas máquinas dos usuários que se conecta ao primeiro misturador e lhe encaminha as requisições de conexões anônimas. Portanto, todas as requisições de conexões anônimas passam pelo JAP. As funcionalidades do JAP são: ?? registro de usuários nos misturadores; ?? configuração periódica de canais de comunicação; ?? envio e recebimento de dados por canais de comunicação. Se o usuário não estiver enviando dados, mensagens aleatórias são enviadas automaticamente; ?? espera de requisições vindas do navegador e dos programas do usuário que desejam se comunicar de forma anônima; ?? filtragem de conteúdos que podem ser perigosos para o anonimato, tais como JavaScript, ActiveX e outros objetos embutidos; ?? transformação de dados para o formato do misturador e seu envio por um canal anônimo; ?? recebimento de dados vindos do canal ativo do misturador e seu encaminhamento à aplicação de origem; ?? utilização periódica de um serviço que informa ao usuário o seu nível atual de anonimato. O tipo de misturador utilizado é o mesmo idealizado em [Chaum, 1981], tendo como objetivo desvincular dados e requisições entre a sua fonte geradora e a entidade receptora. Para isso, são feitas permutações nos fluxos dados e mudanças de codificação em seus conteúdos utilizando criptografia. Os misturadores estão dispostos sob a forma de cascata e o último misturador envia dados ao cache-proxy, e não diretamente ao seu destino, ao contrário da proposta original de Chaum. O cache-proxy faz encaminhamentos das requisições aos servidores e recebe as suas respostas. Estas respostas são enviadas de volta às aplicações do usuário através dos misturadores, só que no caminho contrário ao percorrido pela requisição. Uma vez que uma conexão anônima é estabelecida, a comunicação está limitada à transmissão de um certo número de bytes. Esgotando-se esse número, a conexão é encerrada. Se mais dados necessitam ser transmitidos, novas conexões devem ser estabelecidas. Uma funcionalidade proposta inicialmente em [Reiter & Rubin 1998] é a procura de objetos embutidos em páginas HTML, tais como apontadores para imagens. Tanto o JAP quanto o cache-proxy realizam esta busca. Se o cache-proxy encontra um objeto embutido na resposta de um servidor Web, ele automaticamente faz a requisição desse objeto e encaminha-o ao JAP via misturador. Como o cache-proxy já faz a busca e a requisição, o JAP não faz novas requisições quando recebe a página que possui objetos embutidos. Quando JAP encontra estes objetos, ele já fica à espera dos mesmos, pois já foram requisitados pelo cache-proxy. Uma funcionalidade tradicional do cache-proxy é, de fato, fazer o armazenamento de páginas que são requisitadas, diminuindo assim a quantidade de requisições enviadas à Internet. O usuário utiliza o serviço anônimo das Web MIXes mediante fatias de tempo fornecidas pelos misturadores. Essas permissões são emitidas sob a forma de bilhetes (tickets). A obtenção desses bilhetes deve ser feita junto a cada misturador. Os passos que são realizados quando um usuário deseja fazer um acesso anônimo à Internet são descritos a seguir. 1. Uma conexão é estabelecida com um misturador. Esta conexão deve garantir confidencialiade e integridade e autentica tanto o misturador quanto o usuário (possível uso de SSL). O usuário possui um certificado que autentica-o no misturador. Através deste certificado, o misturador verifica se já não existe uma outra conexão para o usuário. Caso exista, o usuário é impossibilitado de obter mais de um bilhete reconectando-se ao misturador, evitando assim ataques por inundação. A autoridade certificadora (que é independente) garante que cada usuário obtenha um e somente um certificado ou que deve ser verificável se um mesmo usuário possui mais de um certificado. 2. O JAP envia uma mensagem ocultada ao misturador, a qual ele deve assinar. A mensagem consiste em uma chave para um cifrador simétrico e alguns bits formando uma redundância. 3. O misturador assina a mensagem usando uma chave especial, a qual é somente válida por um certo intervalo de tempo. 4. O JAP remove a ocultação da mensagem e verifica a assinatura. A partir deste momento, ele possui um bilhete válido, o qual não é relacionado ao usuário. 5. O JAP repete todos os passos anteriores para cada misturador. 6. O JAP gera uma mensagem. Na hipótese de que existam misturadores, o JAP concatena o bilhete que ele obteve do misturador com os dados que ele quer transmitir. O resultado dessa concatenação forma a mensagem que é por ele encriptada com a chave pública do misturador . A encriptação é feita somente com a primeira parte da mensagem. Para o resto da mensagem, é utilizada a chave simétrica incluída no bilhete. A seguir, ele concatena o bilhete emitido pelo misturador com a mensagem gerada para o misturador . Ele encripta a mensagem da mesma forma utilizando a chave pública do misturador e assim por diante até que ele encripte o bilhete emitido pelo primeiro misturador. 7. O JAP envia a mensagem gerada no passo anterior através da rede de misturadores. Um serviço auxiliar que existe nas Web MIXes é o Info-service (serviço de informação). O serviço de informação fornece dados para manutenção e operação das conexões anônimas. Os dados fornecidos são: endereços e chaves públicas de misturadores, informações sobre a situação do tráfego da rede e disponibilidade dos misturadores. 5 Crowds O projeto Crowds (multidões) [Reiter & Rubin 1998] é uma plataforma de anonimato que se baseia na utilização de um conjunto de proxies (jondos) para fazer o intermédio entre navegador e servidor Web. Este conjunto de jondos é chamado de multidão. O blender1 é quem gerencia a junção e disjunção de jondos na multidão. Quando um jondo é iniciado, ele então contacta o blender e faz um pedido de junção. Se o pedido é aceito, o blender então retorna ao jondo uma lista contendo os jondos ativos naquele momento. Na primeira requisição do navegador do usuário, o jondo cria um caminho aleatório de jondos, os quais serão utilizados para fazer o envio de requisições e recebimento de respostas junto ao servidor Web. Na verdade, o que o jondo faz é escolher um jondo da multidão (possivelmente ele mesmo) de forma aleatória e encaminha a requisição a este último. Quando este jondo recebe a requisição, ele lança uma “moeda viciada” para determinar se será feito ou não o encaminhamento da requisição para outro jondo. Se o resultado dado pela moeda é de encaminhamento, então um jondo da multidão é escolhido de forma aleatória e a requisição é encaminhada para o mesmo. Do contrário, o jondo envia a requisição ao servidor Web ao qual se destina tal requisição. As demais requisições feitas ao jondo seguirão o mesmo trajeto que a primeira, podendo diferenciar-se somente quanto ao servidor de destino. As respostas do servidor também são transmitidas pelo mesmo caminho das requisições, só que no sentido contrário. Um exemplo de situação do Crowds pode ser visto na figura 6. Uma funcionalidade que um jondo possui é a de buscar objetos embutidos dentro de páginas HTML, tais como apontadores para figuras. Quando um jondo recebe a requisição de uma página HTML, ele verifica se existem objetos embutidos. Se ele é o último jondo, ou seja, o jondo que vai encaminhar a requisição ao servidor Web, então ele já faz as requisições desses objetos junto ao servidor Web. Quando os objetos são recebidos por esse jondo, ele faz o encaminhamento dos mesmos à origem da requisição. Se o primeiro jondo (o que faz o primeiro encaminhamento da requisição) encontra objetos embutidos, então ele não faz novas requisições para esses objetos. Ele já fica à espera desses objetos, pois o jondo que ficar encarregado de fazer a entrega da requisição ao servidor Web ficará encarregado de fazer as requisições desses objetos. navegador Web servidor Web Figura 6. Exemplo de rota percorrida por uma requisição 6 Considerações Finais A construção de plataformas de anonimato não necessariamente exige apenas conhecimentos técnicos de computação. Aspectos tais como políticos e sociais devem ser considerados a fim de que se encontre justificativas de utilização da plataforma. Deve ficar claro que esta utilização não é limitada somente à realização de comunicações secretas em uma rede de computadores. Implica mudanças de hábitos e atitudes por parte dos seus usuários. Antes que se institua a utilização de uma plataforma de anonimato, é importante que sejam estudadas quais as conseqüências que podem resultar deste processo. Assim como ocorre com outras ferramentas, uma plataforma de anonimato pode ser utilizada em prol do crime, podendo acarretar na não identificação dos mal feitores, o que não é um propósito desejável pelos seus idealizadores. Referências [Berthold, Federrath & Köpsell 2001] Berthold, O., Federrath, H. and Köpsell, S. “Web MIXes: A system for anonymous and unobservable Internet access”, In: Designing Privacy Enhancing de Technologies -- International Workshop on Design Issues in Anonymity and Unobservability, p. 115--129, 2001. [Chaum, 1981] David C. “Untraceable Electronic Mail, Return Addresses, and Digital Pseudonyms. Communications of the ACM 24/2, p. 84-88, 1981. [Goldschlag, Reed & Syverson 1999] Goldschlag, D., Reed, M. Syverson, P., “Onion Routing for Anonymous and Private Internet Connections”, Communications of the ACM (USA), p. 39--41, 1999, http://citeseer.nj.nec.com/goldschlag99onion.html. [Reiter & Rubin 1998] Reiter, M. K., Rubin, A. D. “Crowds: anonymity for Web transactions”, ACM Transactions on Information and System Security, p. 66-92, 1998.