Universidade Federal de São Carlos Departamento de Computação Tópicos em Sistemas Distribuídos e Redes: Privacidade e Personalização CROWDS Wenceslau Elias Marcomino Prof. Dr. Sergio Donizetti Zorzo Agenda • Aspectos de Anonimato • Crowds • Funcionamento • Análise de Segurança • Segurança na Implementação • Riscos e Limitações • Aspectos Políticos de Uso • Tor / Anonymizer / Mix-Net / Crowd • Bibliografia Aspectos de Anonimato • [Reiter & Rubin, 1998] Consideram três aspectos em comunicações anônimas • Anonimato de Comunicação • • • • Atacantes • • Emissor anônimo Receptor anônimo Emissor e Receptor sem relação Buscam quebrar o anonimato Grau de anonimato Aspectos de Anonimato • Grau de anonimato • Absolute privacy – não identifica a presença de comunicação • Beyond suspicion – identifica presença de mensagem • Probable innocence – igualmente ser ou não o emissor • Possible innocence – probabilidade do emissor ser outro qualquer • Exposed – probabilidade de quem é o emissor • Provably Exposed – identifica e prova o emissor absolute privacy beyond suspicion probable innocence possible innocence exposed provably exposed Crowds • Crowds – Multidão • Coleção dinâmica de usuários que trabalham de forma cooperativa para auxiliar cada um dos seus membros a se manter anônimo • Cada usuário no sistema é identificado por um “Jondo” (John Doe) • Mensagem viaja por um conjunto de usuários até atingir o servidor final Crowds • Ataques considerados • Escuta local • • • Membros da Crowd • • Atacante observa completamente a comunicação. Desprotegido quando servidor final está dentro da LAN Membros que não obedecem ao protocolo Servidor final • • Servidor para a qual a comunicação está direcionada Não pode conhecer a comunicação estre os membros Crowds • Ataques não atendidos • Denial-of-service • O membro não retransmite a mensagem e interrompe a comunicação. São identificáveis, não oferecem risco ao sistema e o membro é eliminado da lista do emissor. • • • • Comportamento Falha Abandono Alteração de informação • O membro recebe a mensagem de outros membros ou do servidor final e altera seu conteúdo. O anonimato não é quebrado. Difícil detecção. Crowds - Composição • Jondo – membro da crowd • Representa o usuário na crowd; • Executado localmente na maquina do usuário; • Configurado no browser como web proxy; • Passando a controlar a comunicação HTTP; Crowds - Composição • Blender – administrador da crowd • Concede liberação para novos membros; • Concentra a lista dos membros; • Fornece chaves para a comunicação entre os membros; • Por medida de segurança pode ser replicado; • Não participa como membro da crowd; • Seu comprometimento não leva ao colapso da rede; Crowds • Lista de Membros • Todo jondo possuí uma lista de membros; • No aceite da participação do jondo na crowd, o blender envia ao jondo a lista de membros; • Tal lista pode ser atualizada mediante aviso do blender; • A medida que o jondo verifica a não existência de um outro membro este é eliminado da lista; • Com isso as litas dos jondos podem diferir entre si; Crowds • Funcionamento 1/3 • O usuário inicia o jondo localmente; • Jondo solicita admissão ao blender na crowd; • O jondo ao ser aceito recebe • • • A atual sociedade da crowd; Uma lista dos membros da crowd; Conjunto de chaves comuns; • Aguarda liberação do blender para iniciar sua participação na crowd; • Uma vez admitido o usuário informa nas configurações de proxy de seu web browser o nro. ip e a porta onde o jondo está funcionando; Crowds • Funcionamento 2/3 • Requisições subsequentes do usuário são encaminhadas ao jondo; • Para cada requisição o jondo escolhe de forma randômica um outro membro e encaminha a mensagem. O próprio membro iniciador pode ser selecionado aleatoriamente e receber a mensagem; • Cada membro ao receber a mensagem define aleatoriamente se a mensagem será encaminhada a outro jondo ou ao servidor final; • Se a mensagem tiver que ser enviada a outro jondo, o sistema sorteia aleatoriamente um jondo para o envio da mensagem; Crowds • Funcionamento 3/3 • A comunicação entre dois membros é encriptada usando uma chave conhecida somente entre eles; • O jondo que encaminhar a mensagem ao servidor final aguarda pela resposta e a retransmite; • O caminho formado no envio da mensagem é o mesmo utilizado para o retorno; • O caminho permanece estático para futuras requisições do mesmo emissor; • Eventualmente os caminhos são recriados; Crowds • Definição do Caminho Jondo recebe requisição Lança moeda Escolhe outro Jondo aleatórimente Sim Novo jondo ? Não Envia requisição servidor final Seleciona-se jondos até a mensagem ser enviada ao servidor final. O retorno é feito pelo mesmo caminho de forma inversa. O caminho é gravado e reutilizado para novas requisições do iniciador. Comunicação encriptada com chave única entre os jondos. Crowds Definição do Caminho • • • • Jondos são selecionados aleatoriamente até a mensagem ser enviada ao servidor final; O lançamento da moeda é tendencioso ao envio da requisição ao servidor final. pf > ½ Probabilidade de forward (pf) é um parâmetro definido no sistema; Crowds • Impactos da probabilidade de forward • Tamanho do caminho. • pf -> 1 = caminho pequeno • • pf -> ½ = caminho longo Propriedades de anonimato oferecidas pelo sistema • pf -> 1 = aumenta o número de membros em colaboração suportado • pf -> ½ = diminui o número de membros em colaboração suportado (1) client,request receive_request() (2) if (client = browser) (3) sanitize(request) /* strip cookies and identifying headers */ (4) if (my_path_id = _|_) /* if my path id is not initialized ... */ (5) my_path_id new_path_id() (6) next[my_path_id] R Jondos (7) forward_request(my_path_id) (8) else /* client is a jondo */ (9) path_id remove_path_id(request) /* remove “incoming" path id */ (10) if (translate[path_id] = _|_) /* “incoming" path id is new */ (11) coin coin_flip(pf ) /* tails with probability pf */ (12) if (coin = heads) (13) translate[path_id] ‘submit' (14) else (15) translate[path_id] new_path_id() /* set “outgoing" path id */ (16) next[translate[path_id]] R Jondos /* select next jondo at random */ (17) if (translate[path_id] = ‘submit') (18) submit_request() (19) else (20) forward_request(translate[path_id]) (21) subroutine forward_request(out_path_id) (22) send out_path_id || request to next[out_path_id] (23) reply await_reply() /* wait for reply or recognizable jondo failure */ (24) if (reply = ‘jondo failed') /* jondo failed */ (25) Jondos Jondos \ {next[out_path_id]} /* remove the jondo */ (26) next[out_path_id] R Jondos /* assign a new random jondo for this path */ (27) forward_request(out_path_id) /* try again */ (28) else /* received reply from jondo */ (29) send reply to client (30) subroutine submit_request () (31) send request to destination(request) /* send to destination web server */ (32) reply await reply(timeout) /* wait for reply, timeout, or server failure */ (33) send reply to client /* send reply or error message to client */ Crowds Exemplo de Caminhos 1 -> 5 -> Server(1) 2 -> 6 -> 2 -> Server(2) 3 -> 1 -> 6 -> Server(3) 4 -> 4 -> Server(4) 5 -> 4 -> 6 -> Server(5) 6 -> 3 -> Server(6) Análise de Segurança • Escuta Local • O emissor está exposto ao atacante; • O atacante observa o envio da mensagem(cifrada); • Não é capaz de determinar o receptor; • A probabilidade do iniciador enviar a mensagem ao servidor final é de 1/n (nro. elementos na crowd quando o caminho foi criado); P(beyond syspicion) -> 1 n -> Análise de Segurança • Servidor Final • O anonimato do servidor é impossível; • O anonimato do emissor é forte; • Tanto o servidor final quanto membros da crowd tem igual probabilidade de receber a mensagem do iniciador; • Desta maneira crowd garante beyond suspicion ao iniciador; • O aumento de membros na crowd não oferece segurança adicional de anonimato do ponto de vista do servidor final; Análise de Segurança • Membros em Colaboração • Membros corrompidos infiltrados na crowd; • Todo conteúdo da mensagem pode ser analisada; • Objetiva identificar o iniciador da mensagem; • Todos os membros não colaborantes possuem igual probabilidade de ser o iniciador. Porém o predecessor de um colaborante possuí uma chance maior de ser o iniciador; Análise de Segurança • Ataques de tempo • Resultado da estrutura HTML; • URL's contidas em web pages são requisitadas; • Ataques de tempo pelos jondos em colaboração; • Aguarda o pedido da URL e verifica o tempo; • Solução • O iniciador não requisita URL's o jondo final se encarrega de verificar as URL's requisitá-las e transmiti-las; Análise de Segurança • Caminhos dinâmicos x estáticos • Dinâmicos • • • Balanceamento de carga entre os membros; Caminhos dinâmicos diminuem segurança ( ligação de caminhos distintos com mesmo conteúdo ) Estáticos • • Oferece segurança de anonimato Caminhos são alterados com frequência • • Falhas são detectadas no caminho; Novos jondos se juntam a crowd; Se os caminhos permanecerem estáticos o novo caminho criado pode ser associado ao novo membro; join commits Propriedades de Anonimato Segurança na Implementação • • Novos membros não podem ser acrescentados de forma arbitrária; • Permite a criação de grande número de jondos colaboradores; • Definição de novos caminhos; Join-commit, parâmetro configurável; Eventualmente o blender envia esta mensagem aos seu membros • Membros eliminam caminhos antigos; • Permite a entrada de novos membros; Segurança na Implementação • Controlar a quantidade de membros na crowd; • Criação de crowd com pequena quantidade de membros conhecidos e dispostos a participar da crowd; • Crowd pública. Fazer a identificação individual de cada membro através de uma conta junto ao blender; E cada conta poderá ter apenas um jondo participante na crowd (ip); Atacantes deverão ter diferentes identidades junto ao blender e sendo executados em locais distintos; Riscos e Limitações • • • Qualquer membro pode enviar a mensagem ao servidor final que por sua vez pode armazenar o IP do jondo como o iniciador; Crowds não oferecem proteção ao conteúdo da mensagem. Algumas comunicações expõe dados do usuário. Deve-se desabilitar o jondo para realizar tais comunicações. Usuário pode baixar e executar programas que conectam diretamente a outros servidores. Não passam pelo jondo e expõe o usuário. Ex: Applet e ActiveX; Recomenda-se desabilitar estas opções no browser; Riscos e Limitações • • • • Códigos Javascript oferecem abertura para ataques de tempo; SSL; Último jondo deve manter a conexão SSL com o servidor; Crowds elevam modestamente o tráfego de dados na rede; O desempenho está relacionado com a quantidade de imagens no conteúdo das mensagens; Jondo é executado na máquina do cliente consumindo recursos; Riscos e Limitações • Firewalls • Jondos são identificados pelo ip e porta; • Firewalls limitam o número de portas que podem receber conexões; A principio não permitirão a comunicação de jondos; • Caso permita a saída, um jondo externo pode tentar conectar novamente com seu predecessor e caso a conexão falhe, conclui-se que o iniciador da mensagem deve pertencer a este domínio; • Crowd rodando atrás de firewall não possuem o mesmo grau de anonimidade que os que não usam; Aspectos Políticos no Uso • • • Com anonymizer, servidores de e-commerce passam a recusar as requisições destes clientes; Devido a não identificação do iniciador, crowds possuí restrições com servidores de aplicações de e-commerce; Clientes utilizam de números de cartões de crédito roubados; Não identificação do IP de origem; Companhias proíbem o uso de Crowds, pois desejam e tem o direito de monitorar o acesso de seus funcionários; TOR ● ● Tor é um conjunto de ferramentas para um amplo grupo de organizações e particulares que desejam aumentar a sua segurança na Internet. Usar Tor pode ajudar a tornar anónima a navegação e publicação na Web, instant messaging, IRC, SSH, e outras aplicações que usem o protocolo TCP. Tor também disponibiliza uma plataforma para os programadores de software, criarem novas aplicações com funções de anonimato, segurança e privacidade já incorporadas http://tor.eff.org/index.html.pt TOR TOR TOR Anonymizer • Anonymizer • Web site com proxy para requisições WEB; • A requisição do usuário passa pelo proxy; • O proxy faz a requisição ao servidor final e repassa ao requisitante; • Proteção contra o servidor final que não identifica o emissor; Crowds - Anonymizer • Considerações • Anonymizer • • • Único ponto onde um ataque ou uma falha compromete todos os usuários; Anonymizer tem acesso a toda comunicação do usuário; Sistema deve ser confiável, não divulgar/utilizar a informação; Crowds • Crowds possuí diversos pontos para o encaminhamento das requisições; Atacante deve monitorar todas comunicações entre todos os jondos ou a maquina de determinado usuário; Crowds – Mix-Net • Considerações • Mix-Net • • • • • Coleção de servidores dedicados; Encripta a mensagem em cada nó; Envio desordenado da mensagem; Não indicado para aplicações de tempo-real; Crowds • • Melhor adaptação em comunicações síncronas ( Web transactions ); Membros dinâmicos; Referências • • • • • Chaum, D., "Untraceable Electronic Mail, Return Addresses, and Digital Pseudonyms", Communications of the ACM, 24 (2). 1981, pp. 84-88, http://world.std.com/~franl/crypto/chaum-acm1981.html Denning, D. et.al. To tap or not to tap. Commun ACM 36, 3 (Mar. 1993), 24-44. Diffie, W., and Landau, S. Privacy on the Line: The Politics of Wiretapping and Encryption. MIT Pres, Cambridge, Mass., 1998. Droms, R. Dynamic Host Configuration Protocol. RFC-1541, Oct. 27, 1993. Gabber, E., Gibbons, P., Matias, Y., and Mayer, A. How to make personalized Web browsing simple, secure, and anonymous. In Proceedings of Financial Cryptography '97 (1997). Referências • • • • Garfinkel, S. and Spafford, G. Web Security and Commerce. O'Reilly, 1997. Reiter, M.K., Anupam, V., and Mayer, A. Detecting hit-shaving in click-through payment schemes. In Proceedings of the 3rd USENIX Workshop on Eletronic Commerce. (Aug. 1998), 155166. Reiter , M., Rubin, A., "Anonymous Web Transactions with Crowds", Communications of the ACM, Vol.42, No.2, February 1999, pp. 32-38. Syverson, D., Goldschlag, M., and Reed, M.G. Anonymous connections and onion routing. In Proceedings of the 1997 IEEE Symposium on Security and Privacy. (May 1997).