• Nenhum resultado encontrado

2010.1Monografia-ANDERSONAMORIM

N/A
N/A
Protected

Academic year: 2021

Share "2010.1Monografia-ANDERSONAMORIM"

Copied!
104
0
0

Texto

(1)

UNIVERSIDADE ESTADUAL DE FEIRA DE

SANTANA

Anderson Amorim do Nascimento

PeerRepSim: Simulador de protocolos de reputação

em redes P2P

Feira de Santana 2010

(2)

Anderson Amorim do Nascimento

PeerRepSim: Simulador de protocolos de reputação

em redes P2P

Trabalho de Conclusão de Curso apresentado ao Departa-mento de Tecnologia, Curso de Engenharia de Computação da Universidade Estadual de Feira de Santana, como requi-sito parcial para a obtenção do título de Engenheiro de Computação.

Área de conhecimento: Interdisciplinar

Orientador: Prof. Antônio Augusto Teixeira Ribeiro Cou-tinho

Feira de Santana 2010

(3)
(4)

Resumo

Sistemas Peer-to-Peer (P2P) são uma classe de sistemas distribuídos caracterizados pela descentralização, auto-organização, crescimento em escala e pela simetria de co-municação entre seus participantes. São capazes de acomodar populações transientes e manter níveis satisfatórios de desempenho e conectividade mesmo diante de padrões de comportamento altamente dinâmicos dos nós. Estas características tornam os mo-delos P2P bastante atraentes para uma série de aplicações na Internet, desde troca de mensagens instantâneas até aplicações de computação distribuída e distribuição de conteúdo. Por outro lado, sistemas P2P são vulneráveis à diversas formas de ataque, especialmente aqueles relacionados a comportamentos maliciosos dos integrantes. Tal fato torna a pesquisa de modelos ecientes de segurança crucial para o desenvolvimento da área. Contudo, existe uma grande carência de ferramentas de simulação e análise protocolos P2P, especialmente os relacionados a aspectos de segurança. Esta carência vem limitando o desenvolvimento da pesquisa no setor. Este trabalho aborda o desen-volvimento de um simulador de propósito geral para arquiteturas P2P, que também agregue a simulação de modelos de falhas e protocolos de gerenciamento de reputa-ção: o PeerRepSim. O principal objetivo do sistema é contribuir para a observação da robustez e do desempenho de protocolos de reputação diante de comportamentos agressivos de nós, fornecendo informações relevantes como a quantidade e o tipo de mensagens na rede, o percentual de interações bem sucedidas e o valores de reputação atingidos por cada classe de nós.

(5)

Abstract

Peer-to-Peer Systems (P2P) are a class of distributed systems characterized by decen-tralization, self-organization, scalability and symmetry of communication between par-ticipants. Those systems are able to accommodate transient populations and maintain satisfactory levels of performance and connectivity even with highly dynamic node's behavior patterns. Those characteristics make P2P models very attractive for a variety of Internet applications, from instant messaging applications to distributed computing and content distribution. In the other hand, P2P systems are vulnerable to various forms of attack, especially those related to peers malicious behaviors. Such fact makes the research on ecient security models crucial to the development of the area. Ho-wever, there is a great lack of simulation tools and P2P protocols analysis, especially those related to safety aspects. This shortage has limited the research development in the sector. This paper presents the development of a general purpose simulator for P2P architectures, which also adds a fault simulation models and protocols of management of reputation: the PeerRepSim. The main objective of the system is to contribute to the observation of the robustness and performance of reputation protocols according to the aggressive behavior of nodes, providing relevant information as the amount and type of messages on the network, the percentage of successful interactions and the values of reputation achieved by each class of nodes.

(6)

Sumário

1 Introdução 1 2 Sistemas Peer-to-Peer 7 2.1 Denição e Fundamentos . . . 8 2.2 Caracterização de Redes P2P . . . 10 2.2.1 Grau de Centralização . . . 11 2.2.2 Estrutura do Overlay . . . 13

2.2.3 Mecanismos de Localização e Roteamento . . . 14

2.3 Aplicações P2P . . . 15

3 Segurança e Reputação em Sistemas P2P 18 3.1 Aspectos de Segurança . . . 19 3.1.1 Disponibilidade . . . 19 3.1.2 Autenticidade . . . 21 3.1.3 Autorização . . . 22 3.1.4 Integridade . . . 22 3.1.5 Anonimidade e Negabilidade . . . 23 3.1.6 Reputação e Conança . . . 23

3.2 Sistemas de Reputação para Redes P2P . . . 25

3.2.1 Modelo Conceitual . . . 26

3.2.2 Classicação de Sistemas de Reputação . . . 27

3.2.3 Ameaças e Comportamentos Maliciosos . . . 28

3.2.4 Cálculo de Reputação . . . 29

3.2.5 Incentivos e Penalizações . . . 30

3.3 Protocolos Gerenciamento de Reputação . . . 30

3.3.1 P2PRep . . . 31

3.3.2 XRep . . . 35

3.3.3 Abordagem Bayesiana Combinada . . . 35

3.3.4 EigenTrust . . . 36

3.3.5 STORM . . . 37

4 Aspectos de Simulação P2P 39 4.1 Critérios e Requisitos para Avaliação de Simuladores P2P . . . 41

4.2 Aspectos Arquiteturais . . . 43

4.3 Avaliação de Simuladores . . . 46

5 Requisitos do PeerRepSim 49 5.1 Requisitos Gerais . . . 50

5.2 Requisitos de Protocolos e Estruturas de Rede . . . 51

5.3 Requisitos de Comportamentos de Nós . . . 53

6 Arquitetura do PeerRepSim 56 6.1 Modelo Conceitual . . . 56

6.2 Denições e Conceitos . . . 58

(7)

6.3.1 Modelo de Troca de Mensagens . . . 61

6.3.2 Protocolos, Rede Sobreposta e Sistemas de Reputação . . . 64

6.3.3 Motor de Simulação . . . 67

6.4 Conguração e Interface . . . 69

6.4.1 Estrutura de Conguração . . . 69

6.4.2 Modelo de Interface Gráca de Usuário . . . 70

6.5 Coleta de Resultados . . . 71

6.5.1 Cálculo de Reputação . . . 73

7 Implementação e Análise de Resultados 75 7.1 Descrição do Ambiente Gráco de Simulação . . . 75

7.2 Simulação de Protocolos de Reputação . . . 78

7.2.1 Descrição de Experimentos . . . 78 7.2.2 Análise de Resultados . . . 80 7.3 Análise de Desempenho . . . 83 8 Considerações Finais 87 8.1 Conclusões . . . 88 8.2 Trabalhos Futuros . . . 89 Referências 90

(8)

Lista de Tabelas

3.1 Resumo das características dos protocolos implementados pelo

PeerRep-Sim. Extraído de [Carneiro, Nascimento e Greve 2009] . . . 31

5.1 Resumo dos requisitos para o PeerRepSim . . . 52

7.1 Plataforma de simulação . . . 75

7.2 Parâmetros de Simulação do experimento I . . . 79

7.3 Cenários do experimento I . . . 79

7.4 Cenários do experimento II . . . 79

7.5 Resumo dos Resultados do Experimento I . . . 83

(9)

Lista de Figuras

2.1 Rede sobreposta à Internet . . . 9

2.2 Arquiteturas P2P por grau de centralização . . . 12

2.3 Modelos de busca e roteamento de mensagens . . . 16

3.1 Arquitetura conceitual de sistemas de reputação . . . 26

3.2 Seqüência genérica de operações de protocolos de gerenciamento de re-putação . . . 32

3.3 Seqüência de operações do P2PRep . . . 34

4.1 Arquitetura 3-LS . . . 44

4.2 Simuladores: a) Neurogrid e b) QueryCycle . . . 48

6.1 Arquitetura geral do PeerRepSim . . . 59

6.2 Modelo de ouvintes de eventos . . . 62

6.3 Estrutura de troca de mensagens do PeerRepSim . . . 63

6.4 Estrutura da camada Protocolo do PeerRepSim . . . 66

6.5 Estrutura do Motor de Simulação . . . 67

6.6 Sincronização das threads de simulação . . . 69

6.7 Diagrama de classes do modelo de conguração . . . 70

6.8 Modelo gráco do PeerRepSim . . . 72

6.9 Diagrama de classes do modelo de coleta de resultados . . . 73

7.1 PeerRepSim: interface gráca de usuário . . . 76

7.2 PeerRepSim: estatísticas em tempo de simulação . . . 77

7.3 Experimento I - Médias de Reputação Globais de Peers Honestos . . . 81

7.4 Experimento I - Resultados das transações efetivadas . . . 82

7.5 Experimento II - Médias de Reputação Globais . . . 84

7.6 Experimento II - Médias de Reputação Globais . . . 85

7.7 Experimento II - Resumo de Transações . . . 85

7.8 Experimento II - Tráfego de Mensagens . . . 85

7.9 Experimento II - Tempo de Simulação . . . 86

(10)

Lista de Siglas

P2P . . . Peer-to-Peer

XML . . . Extensible Markup Language TCP . . . Transport Control Protocol IP . . . Internet Protocol

DHT . . . Dynamic Hash Table

CAN . . . Content Addressable Network TTL . . . Time to Live

(11)

1.

Introdução

Sistemas Par-a-Par ou Peer-to-Peer (P2P) são uma categoria de sistemas distribuídos onde os participantes compartilham parte de seus recursos (e.g. capacidade de arma-zenamento, ciclos de processamento, largura de banda de enlace, periféricos, arquivos, etc.) em rede de forma direta, ou seja, sem a necessidade de entidades intermediá-rias [Schollmeier 2001]. Dentre suas principais características estão: auto-organização, simetria de comunicações, crescimento em escala e controle distribuído. Redes P2P se adaptam automaticamente à entradas, saídas e falhas dos nós. A comunicação entre os integrantes é simétrica do ponto de vista de que cada nó age tanto como cliente quanto servidor de recursos na rede. Diferentemente do modelo tradicional de comunicações na Internet, baseado no modelo cliente-servidor, sistemas P2P não apresentam pontos centrais de falhas, ou de controle e distribuição de recursos. Cada par determina seu próprio nível de participação de maneira autônoma, não existindo entidades centrais de controle que determinem o comportamento dos nodos [Roussopoulos et al. 2004]. O crescimento das aplicações P2P é normalmente associado à rápida expansão da Internet e dos computadores pessoais nas últimas décadas. Em meados dos anos 90, os recursos presentes em computadores pessoais passaram a exceder as necessidades de seus usuários, gerando um grande contingente computacional ocioso. A expansão da Internet facilitou o acesso a este excedente de recursos. Originalmente, o modelo P2P se tornou bastante popular em sistemas de compartilhamento de arquivos, como o Napster [Napster 2010], o Kazaa [Kazaa 2010] e o Gnutella [Gnutella 2010]. Atualmente, porém, tem se mostrado uma plataforma bastante atrativa para uma grande variedade de aplicações, desde troca de mensagens instantâneas até distribuição de uxos de vídeo e audio pela Internet. Aplicações famosas como o projeto SETI@Home [SETIHome 2010] demonstraram como é possível, através do uso técnicas simples de P2P, agregar recursos ociosos espalhados por centenas de computadores para realizar, de forma eciente e de baixo custo, análises complexas sobre grandes volumes de dados.

Com grande ênfase em descentralização, auto-organização e colaboração entre usuá-rios, redes P2P tendem a ser mais robustas, escaláveis e adaptáveis que outros sistemas distribuídos. Segundo [Dollimore, Kindberg e Coulouris 2005], o objetivo principal de sistemas P2P é habilitar o compartilhamento de dados e recursos em larga escala, eliminando qualquer necessidade de gerenciamento centralizado e sua infra-estrutura associada. Estas características têm tornado os sistemas P2P cada vez mais atrativos tanto no meio industrial quanto acadêmico. Contudo, o desenvolvimento de protocolos

(12)

e aplicações ainda enfrenta grandes diculdades. Complexas interdependências entre fatores como rede, usuários e protocolos dicultam a compreensão e a realização de aná-lises de comportamento, levando ao lançamento de sistemas muitas vezes "imaturos"no mercado.

Diversos protocolos e aplicações P2P têm surgido em um ritmo cada vez mais intenso. Porém, muitas delas entram em desuso com a mesma velocidade em que aparecem. Problemas diversos relacionados especialmente a desempenho, segurança e escalabili-dade surgem à medida que as aplicações vão sendo expostas à ambientes de larga escala, revelando deciências graves de projeto. Uma das principais causas destes problemas é a diculdade em realizar testes prévios de aplicação em larga escala. Sistemas P2P são normalmente amplos, heterogêneos e com complexas interações entre máquinas, rede física e usuários [Ting 2003 a]. A realização prévia de testes em ambientes reais é pouco factível, uma vez que demanda uma grande infraestrutura.

No meio cientíco, pesquisas em redes P2P enfrentam problemas semelhantes. A va-lidação de qualquer estudo cientíco depende de análises e avaliações. Resultados reproduzíveis devem ser fornecidos para fundamentar qualquer descoberta, de modo que outros pesquisadores possam chegar a conclusões semelhantes seguindo os mesmos métodos aplicados. No entanto, a complexidade inerente a sistemas P2P dicultam a aplicação de abordagens tradicionais que determinem, por exemplo, o comportamento de novos protocolos ou estratégias de segurança e roteamento.

A utilização de abordagens analíticas é uma prática comum na análise de sistemas dinâmicos. Um exemplo de aplicação bem sucedida de modelos analíticos em redes P2P pode ser encontrado em [Qiu e Srikant 2004], onde os autores fornecem uma análise formal de uma rede de compartilhamento de arquivos com entrada e saída concorrente de nós. Contudo, uma abordagem analítica requer a aplicação de um ou mais modelos matemáticos do sistema, os quais normalmente ignoram algumas características presentes em ambientes reais de funcionamento. Para sistemas grandes e com muitas variáveis interdependentes como as redes P2P, a aplicação desta técnica se torna bastante complexa.

A realização de testes de aplicação em sistemas P2P de larga escala, assim como a elaboração de modelos matemáticos sucientemente abrangentes para eles, são nor-malmente impraticáveis. Conseqüentemente, muitos pesquisadores buscam avaliar suas aplicações e protocolos em ambientes controlados de simulação de redes P2P. Estes am-bientes permitem aos pesquisadores focar seus estudos em características especícas de projeto. Em outras palavras, é possível modelar o sistema com a nalidade de abstrair problemas de infra-estrutura, falhas de hardware e comunicação, bem como realizar testes sobre aspectos isolados de arquitetura envolvendo roteamento, distribuição de

(13)

carga, comportamento de usuários e tolerância a falhas.

O uso de simulações é fundamental para avaliar impactos de mudanças em sistemas já existentes, bem como estimar o comportamento de um sistema em fase de projeto. É também bastante útil na identicação de gargalos e módulos defeituosos sem alterar o sistema corrente. O uso de simulação fornece uma visão geral do comportamento do sistema e possibilita a vericação de perguntas do tipo "e se?"sobre eles. Por m, outra vantagem importante da simulação é a possibilidade de testar o comportamento de um sistema diante de cenários críticos, o que pode auxiliar na tomada de decisões de importantes de projeto.

Cabe ressaltar, porém, que o uso de simulações não deve ser visto como estritamente independente de experimentação e abordagens analíticas. Se possível, métodos analí-ticos devem ser empregados e provados com auxílio de simuladores. De forma análoga, resultados de simulação devem ser validados em experimentos com sistemas reais. Para pesquisa e desenvolvimento em P2P a simulação é, por tanto, uma abordagem bastante prática.

Atualmente existem diversos simuladores disponíveis para o estudo e desenvolvimento de protocolos e aplicações P2P. Dentre os mais conhecidos estão: o NeuroGrid [Sam 2010], simulador de eventos discretos com suporte aos protocolos Gnutella, NeuroGrid e FreeNet [Clarke et al. 2001]; o Query-Cycle [Schlosser, Condie e Kamvar 2003] , com foco em compartilhamento de arquivos em redes Gnutella e baseado em ciclos de busca; e o PeerSim [Jelasity et al. 2010], também baseado em ciclos de busca e projetado para permitir uma conguração exível e facilitar a adição de novos componentes.

Em [Dhurandher et al. 2009] e [Naicken et al. 2006], podem ser encontrados critérios para avaliação dos simuladores citados acima. Alguns dos critérios mais relevantes fo-ram quanto à arquitetura dos simuladores, sua usabilidade, seu crescimento em escala, estatísticas geradas, simulação de rede física e limitações do sistema. Além destes, ou-tros fatores como a eciência da simulação, conguração de comportamento de usuário, simulação de hardware heterogêneo e facilidade de adição/remoção de componentes, especialmente protocolos, também são considerados importantes na construção de um simulador P2P.

Avaliações como estas possibilitam aos pesquisadores escolher qual simulador se adapta melhor ao objetivo de pesquisa. No entanto, embora haja uma grande variedade de si-muladores disponíveis, grande parte dos estudiosos ainda opta por desenvolver sistemas especícos [Naicken et al. 2007]. Isso se deve ao fato de cada pesquisa ter necessidades especícas de simulação, uma vez que adaptar os simuladores existentes para utilização se torna mais custoso do que construir seus próprios experimentos.

(14)

Uma conseqüência direta do uso de simuladores de propósito especíco é a diculdade de validar os resultados obtidos em outros sistemas, devido a características intrínsecas de cada projeto. Alguns estudos como [Ting e Deters 2003 b] e [Ting 2003 a] estabe-lecem diretrizes básicas de arquitetura e comportamento para softwares de simulação P2P. Estas orientações representam um esforço para a padronização das técnicas de construção de simuladores. Em [Ting 2003 a], por exemplo, é proposto um modelo arquitetural de três camadas independentes (i.e. Rede, Protocolo e Usuário), levando em consideração características encontradas em alguns dos principais simuladores exis-tentes.

O fator segurança também é um aspecto preocupante no desenvolvimento de tecnolo-gias P2P e vem se tornando um dos principais tópicos de estudo no setor. De acordo com [Wallach 2002], para que sistemas P2P sejam altamente difundidos na Internet eles precisam ser resistentes à ação maliciosa de alguns nós. Um nó mal intencionado pode agir disseminando informações falsas tanto em nível de aplicação, quanto em nível de roteamento. Como exemplo de ataques em nível de aplicação, um nó pode emitir respostas incorretas a pedidos de buscas, ou ainda disseminar recursos danicados ou infectados por programas maliciosos. Em nível de roteamento, um nó mal intencio-nado pode se recusar a encaminhar mensagens, ou encaminhá-las por rotas erradas numa tentativa de particionar a rede. Uma série de outros tipos de ataque podem ser realizados em ambientes P2P, comprometendo a conabilidade da tecnologia e a disponibilidade dos sistemas.

A falta de ferramentas especícas que auxiliem o desenvolvimento e a análise de pro-tocolos P2P, especialmente relativos à segurança, é um dos fatores que dicultam o surgimento de novas soluções. Sistemas de simulação de propósito geral são pouco portáveis para a análise de desempenho de protocolos de segurança. Em decorrência disso, muitos modelos formais de protocolos de segurança carecem de vericação expe-rimental, como em [Ravoaja e Anceaume 2007], que propõe um sistema de reputação baseado em Chord [Stoica et al. 2001], cujo objetivo é reunir um grande número de avaliações honestas que forneçam informações seguras sobre nós provedores de recursos.

Objetivo Geral

Desenvolver um simulador P2P de propósito geral para arquiteturas estruturadas e não estruturadas, que agregue protocolos de gerenciamento de reputação para redes P2P, possibilitando análises de desempenho e segurança da rede.

(15)

Objetivos Especícos

• Analisar diferentes estratégias de simulação de sistemas dinâmicos;

• Compreender características dos modelos P2P quanto à centralização e estrutura da rede lógica, à aplicação de mecanismos de busca para localização de recursos e entidades;

• Analisar a arquitetura e componentes dos principais simuladores do mercado; • Aplicar diretrizes de projeto de simuladores apresentadas na literatura

especiali-zada;

• Compreender mecanismos de reputação em comunidades distribuídas;

• Compreender modelos de ataques de segurança a redes P2P, especialmente os relacionados ao aspecto de reputação de entidades.

Justicativa

Existe uma carência muito grande de simuladores para protocolos de segurança em redes P2P, especialmente quanto ao aspecto de reputação. Alguns dos trabalhos na área, como em [Schlosser, Voss e Brückner 2004], restringem-se a avaliação métricas de reputação, concentrando-se na vericação experimental de modelos formais pro-postos dos sistemas de reputação avaliados. No contexto desta pesquisa, não foram encontrados softwares de simulação que fornecessem, por exemplo, informações sobre a distribuição de carga, quantidade de mensagens trocadas e o percentual de transações bem sucedidas durante a execução de protocolos de reputação. Estas informações são fundamentais para análise de desempenho, custo e viabilidade de aplicação de qualquer mecanismo de computação distribuída, inclusive protocolos de segurança.

A construção de um simulador que forneça este tipo de informação sobre sistemas de reputação é uma contribuição útil para a análise do comportamento das redes P2P, especialmente quanto aos aspectos de segurança. Diversos protocolos de reputação ca-recem de avaliações quanto a quesitos práticos de implementação como, por exemplo, o custo de manutenção de rede lógica e carga de mensagens introduzidas no sistema [ Ra-voaja e Anceaume 2007]. Estas informações são cruciais para a escolha fundamentada de um mecanismo em detrimento de outros para aplicações reais. Em [Carneiro, Nasci-mento e Greve 2009], de posse de informações a respeito do tráfego de rede gerado por sistemas de reputação, os autores puderam avaliar quais mecanismos se adaptariam melhor a ambientes de computação ubíqua. Os quais apresentam severas restrições de

(16)

processamento, comunicação e energia que devem observadas para a aplicação de real de um protocolo.

A simulação é uma alternativa bastante prática no projeto e avaliação de sistemas di-nâmicos, incluindo os de reputação em redes P2P. A falta de sistemas adequados limita o desenvolvimento e a vericação de novas tecnologias em um setor que com grandes possibilidades de crescimento. Este trabalho busca colaborar com o desenvolvimento de pesquisas na área de sistemas P2P, fornecendo informações sobre o comportamento da rede e seus mecanismos de segurança diante de ataques de usuários maliciosos.

Organização da Monograa

Este trabalho está organizado da seguinte forma: no Capítulo 2, são abordados os principais conceitos e características dos sistemas P2P. São apresentados diferentes modelos e classicações de rede, assim como um conjunto de aplicações da tecnologia. No Capítulo 3, são estudados os principais aspectos de segurança em redes P2P, com enfoque em sistemas de reputação. São apresentados modelos de ameaças e os proto-colos de gerenciamento de reputação implementados pelo PeerRepSim. Em seguida, o Capítulo 4 aborda alguns fundamentos de simulação de redes P2P, bem como uma série de critérios e requisitos de avaliação de simuladores. Ainda neste capítulo é feito uma descrição de três dos principais simuladores do mercado, os quais possuem carac-terísticas em comum com o PeerRepSim. Os Capítulos 5e6discutem os requisitos e a arquitetura do simulador respectivamente. O Capítulo7 apresenta o simulador desen-volvido e realiza um conjunto de experimentos de simulação. Finalmente, o Capítulo

8 apresenta as considerações nais do trabalho, indicando também alguns trabalhos futuros.

(17)

2.

Sistemas Peer-to-Peer

Uma rápida observação da literatura especializada revela um considerável número de denições para sistemas P2P. Há uma grande variedade de aplicações claramente identicadas como "peer-to-peer", dentre as quais podemos citar: sistemas de troca mensagens instantâneas, aplicações de distribuição de conteúdo, compartilhamento de arquivos, computação distribuída, compartilhamento de largura de banda, etc. Cada aplicação possui características próprias que as diferenciam das demais. Se-gundo [Androutsellis-theotokis e Spinellis 2004], o conceito de sistemas P2P está ligado à forma como estes sistemas se apresentam externamente aos usuários e não necessa-riamente às características de sua arquitetura e operação interna. Como resultado, diferentes denições de P2P são aplicadas para acomodar as diferentes peculiaridades encontradas em cada sistema. Aparentemente não existe um consenso de denição sucientemente abrangente para todas elas.

Alguns autores, como [Schollmeier 2001], estabeleceram uma denição para sistemas P2P puros, baseada estritamente no princípio de compartilhamento direto de recursos (i.e. sem entidades intermediárias) em uma estrutura totalmente descentralizada. De acordo com esta abordagem, todos os nós seriam equivalentes em termos de funcionali-dades. Denições como esta falham com relação a sistemas que apresentam estruturas semi-centralizadas, ou de supernós, onde alguns nós de maior porte são utilizados para realizar tarefas básicas como a inicialização (bootstrap) da rede, ou a manutenção de índices de busca. Este trabalho concentra-se em duas características básicas para a denição de sistemas P2P:

• O compartilhamento direto de recursos, eliminando a necessidade de fazer requi-sições a servidores centralizados;

• A capacidade de adaptação à transiência da população de nós, assim como à falhas de comunicação e de máquinas.

A primeira característica indica a ausência de um servidor central que determine o comportamento dos nós, ou coordene as trocas de recursos entre eles. Cada nó par-ticipa ativa e independente através da realização de tarefas como busca de recursos, roteamento de informação, conexão com os nós vizinhos, etc. A segunda característica sugere a formação de uma topologia de rede adaptativa e tolerante à falhas, capaz de se reestruturar à medida que os nós entrem ou saiam do sistema.

(18)

Nas próximas seções será apresentada uma denição de sistemas P2P baseada nas ca-racterísticas citadas anteriormente. Alguns dos conceitos fundamentais em computação P2P são apresentados neste capítulo. Tais conceitos servirão de base para discussões futuras quanto ao modelo do simulador proposto. São apresentadas três classicações para sistemas P2P: quanto ao grau de centralização, à estrutura da rede lógica (over-lay network) e quanto aos mecanismos de busca e roteamento de informação. Também são discutidos os impactos de cada tipo estrutura sobre o desempenho das redes P2P. Finalmente, são apresentadas cinco classicações quanto ao tipo de aplicação: comu-nicação e colaboração, distribuição de conteúdo, computação distribuída, transmissão de dados e banco de dados distribuídos.

2.1 Denição e Fundamentos

Sistemas Peer-to-Peer são sistemas distribuídos formados por nós (peers) conectados entre si, com o intuito de compartilhar recursos computacionais sem o intermédio ou suporte de uma autoridade central. Arquiteturas P2P são projetadas para prover o compartilhamento de recursos de forma descentralizada, garantindo níveis satisfatórios de conectividade e desempenho mesmo diante de padrões de comportamento altamente dinâmicos de pares. São caracterizadas pela adaptação à falhas de máquinas e rede, pela capacidade de acomodar populações transientes de nós e pelo crescimento em escala [Androutsellis-theotokis e Spinellis 2004]. Redes P2P são auto-organizáveis, altamente escaláveis e com controle distribuído entre os participantes.

O grupo de pesquisas sobre redes P2P [IRTF 2010] dene como um conceito chave para esta classe de sistemas, a possibilidade de dois nós interagirem de forma que qualquer um possa iniciar a comunicação. Diferentemente da arquitetura cliente/servidor, onde os participantes possuem papéis distintos (e.g. clientes Web vs. servidores Web), no modelo P2P as aplicações são organizadas de maneira que nós individuais tenham papéis simétricos. Isto é, cada nó pode atuar tanto como cliente, quanto como servidor de recursos. O modelo difere do paradigma tradicional da Internet, uma vez que não depende de uma estrutura hierárquica centralizada, estabelecendo que todos os participantes tenham responsabilidades equivalentes.

O perl descentralizado das aplicações P2P se torna economicamente atrativo uma vez que reduz os custos com a implantação de hardware de alto desempenho para servi-dores centrais. A descentralização também estimula a colaboração entre os usuários da rede e torna esta classe de sistemas inerentemente mais resistente à falhas de se-gurança comuns em ambientes centralizados [Rocha et al. 2004]. Dentre as principais características presentes nestes sistemas estão:

(19)

Figura 2.1: Rede sobreposta à Internet

• Nós localizados nos extremos da rede física, como por exemplo: computadores pessoais, dispositivos móveis, sistemas de coletas de dados, servidores locais, etc. • Presença de nós com conectividade temporária e endereços variáveis, que podem

entrar ou sair da rede sem aviso prévio aos demais.

• Comunidade heterogênea de nós, com diferentes taxas de transmissão, poder de processamento, autonomia, com relação a um servidor central, etc.

• Garantia de que cada nó possui capacidades iguais de fornecer e requisitar recursos de seus pares.

• Rede escalável, que permite a entrada e/ou saída de grande quantidade de nós sem perder a desempenho e a conectividade.

• Garantia de comunicação direta entre os nós.

Redes peer-to-peer são redes virtuais sobrepostas (overlay networks) à Internet. Uma rede sobreposta é formada a partir de informações da camada de aplicação, criando um nível mais alto de abstração que possibilita a resolução de problemas difíceis de serem tratados a nível da camada de transporte [Andersen et al. 2001]. A Internet em si, originalmente desenvolvida para operar sobre redes de telefonia, é um exemplo de aplicação do conceito de redes sobrepostas. Uma característica deste modelo é que ele abstrai a estrutura e as políticas de funcionamento da rede física adjacente, possibilitando uma interconexão virtual direta entre os nós. Em uma rede P2P, cada nó tem a impressão de estar diretamente conectado a seus vizinhos, mesmo que estes estejam em redes remotas. A Figura 2.1 ilustra o conceito de rede sobreposta.

(20)

aviso prévio ou conhecimento dos demais. Cada nó entra na rede conectando-se dire-tamente a outro que já esteja presente. O número de nós que podem se conectar a rede pode ser ilimitado. Algumas aplicações utilizam servidores dedicados para realizar pro-cessos de inicialização (servidores de bootstrap), onde estes nós servem como ponto de entrada conhecidos para os demais. A presença de servidores dedicados para realização de tarefas administrativas normalmente produz um impacto positivo no desempenho da rede.

Há diferentes formas de classicar arquiteturas P2P, seja pela estrutura da rede so-breposta, ou pelos seus mecanismos de busca e roteamento de informação. A forma como a rede virtual se organiza tem impacto decisivo no desempenho das aplicações, sendo um dos objetos de estudo deste trabalho. As diferentes arquiteturas encontradas podem inuenciar fatores da rede sobreposta, como o crescimento em escala e a segu-rança dos nós, assim como a autonomia e a tolerância a falhas [Carneiro, Nascimento e Greve 2009]. Redes com certo grau de centralização, por exemplo, otimizam processos administrativos básicos, mas introduzem uma hierarquia entre os peers. Sistemas de busca e localização estruturados reduzem o tempo e o consumo de largura de banda da rede, em comparação com sistemas de busca por inundação. No entanto, também adicionam um custo de manutenção da estrutura que podem ser decisivos em algumas aplicações. A escolha de um modelo P2P sobre outro para uma determinada necessi-dade precisa levar em conta estes detalhes de arquitetura e seus impactos. As diferentes caracterizações para redes P2P serão apresentadas na próxima seção.

2.2 Caracterização de Redes P2P

As redes sobrepostas permitem aos nós interagirem como se estivessem diretamente conectados, mesmo estando em redes físicas separadas. Elas podem ser organizadas de várias formas, a depender da aplicação. Existem duas categorias principais de classicação para redes sobrepostas: estruturadas e não-estruturadas. A forma como o overlay se organiza possui impacto signicante em diversos aspectos do sistema P2P, como o desempenho, a segurança e a forma de localização de nós e recursos. Além destas classicações, sistemas P2P ainda podem ser diferenciados quanto ao grau de centralização do overlay, assim como pela forma de localização e roteamento de objetos distribuídos na rede.

(21)

2.2.1 Grau de Centralização

As redes P2P podem ser caracterizadas de três formas quanto ao seu grau de centrali-zação: puramente descentralizada, parcialmente descentralizada e híbrida. Cada uma das arquiteturas será descrita a seguir.

Puramente Descentralizadas. Neste modelo os nós são totalmente simétricos entre si, isto é, possuem as mesmas responsabilidades da rede e atuam tanto como servidores quanto como clientes de recursos compartilhados. Um exemplo de aplicação desta arquitetura é o Gnutella original [Gnutella 2010], ilustrada na Figura 2.2(a). Em arquiteturas puramente descentralizadas não há nenhum tipo de servidor central para coordenação das atividades dos nós, tampouco para agilizar processos de administração da rede.

Parcialmente Descentralizadas. O modelo parcialmente descentralizado emprega uma arquitetura em dois níveis, com nós e supernós. Os supernós são normalmente máquinas com hardware mais robusto e sua função é desempenhar ações de busca e localização de recursos. Neste modelo, os nós se conectam diretamente a um supernó, os quais se conectam entre si, como ilustrado na Figura2.2(b). Ao entrar na rede, um nó envia ao seu supernó uma lista com a descrição dos arquivos que possui. Quando uma requisição de busca é enviada a um supernó, ele pode responder diretamente, caso saiba a localização do recurso, ou encaminhar o pedido aos seus pares. Em caso de falha de um supernó, os nós órfãos são passados para outro supernó [Barcellos e Gaspary 2006]. Um exemplo de arquitetura parcialmente descentralizada pode ser encontrado em [Liang, Kumar e Ross 2004], que descreve o overlay do sistema Kazaa [Kazaa 2010].

Híbridas. Em uma arquitetura híbrida existe uma entidade central (supernó, ou clus-ter de nós) que facilita a inclus-teração entre os demais, como mostrado na Figura 2.2(c). Neste modelo, todos os peers se conectam a esta entidade central, a qual é responsá-vel pela indexação e localização dos recursos. Quando o servidor central recebe uma requisição de busca, ele responde enviando o endereço do nó que contém o recurso. Em seguida, a interação (e.g. download de arquivo) ocorre diretamente entre os pares. Nesta arquitetura, a entidade central armazena apenas índices de localização dos arqui-vos e informações de controle de banda, mas não armazena o conteúdo em si. O modelo híbrido de arquitetura é mais sujeito a ataques intencionais e possui baixa extensão. Exemplos de arquitetura híbrida são aplicações como o BitTorrent [BitTorrent 2010] e o Napster [Napster 2010].

(22)

(a) Puramente Descentralizada

(b) Parcialmente Descentralizada

(c) Híbrida

(23)

2.2.2 Estrutura do Overlay

Quanto à estrutura da rede sobreposta, sistemas P2P podem ser classicados de duas formas: estruturados e não-estruturados. A organização do overlay determina diretrizes para a conexão dos pares e a localização dos objetos distribuídos na rede, assim como a utilização de algoritmos de busca. O objetivo destas diretrizes é assegurar a integridade da rede sobreposta diante da ocorrência de falhas decorrentes de entradas e/ou saídas repentinas dos nós. A rede deve manter níveis aceitáveis de conectividade, acomodando populações altamente transientes de nós [Barcellos e Gaspary 2006].

Arquiteturas Não Estruturadas. Em sistemas não-estruturados a topologia da rede é determinada de forma ad hoc. Os nós se conectam arbitrariamente entre si à me-dida que vão ingressando na rede. Alguns protocolos, como o Gnutella, estabelecem limites para o número de vizinhos que cada nó pode ter. Neste tipo de arquitetura, o posicionamento de recursos é independente da topologia da rede. Os nós se conec-tam à rede sem observar fatores como ordem de entrada, velocidade de conexão e até mesmo proximidade física, levando à uma topologia aleatória. Apesar do modelo tor-nar a manutenção das conexões mais simples, ele diculta a localização de recursos, uma vez que não há relação entre eles e sua posição na rede. Os protocolos para este tipo de sistema são normalmente obrigados a empregar técnicas de inundação, consu-mindo maior largura de banda. Buscas em redes não estruturadas são normalmente de ordem de complexidade O(N), onde N é o número de saltos dentro do alcance da requisição [Doval e O'Mahony 2003].

Arquiteturas Estruturadas. Overlays estruturados são baseados em uma ou mais funções matemáticas que determinam como os nós são conectados. Os objetos e ser-viços são identicados de forma global e determinística por um esquema de chaves, normalmente através uma função hash como o MD5 ou o SHA1. As chaves são, por sua vez, associadas a um nó especíco na rede, o que contribui para reduzir o tempo necessário para a localização do recurso. Esquemas estruturados normalmente com-partilham quatro características básicas: garantia de retorno de recurso requisitado; tempo de localização de recursos conhecido, normalmente da ordem de O(logN); ba-lanceamento automático de carga; e auto-organização. Quando ocorrem falhas de nós, algoritmos da rede sobreposta provém mecanismos para a reestruturação apropriada da rede [Doval e O'Mahony 2003]. Um exemplo de arquitetura estruturada para sistemas P2P pode ser encontrado em [Stoica et al. 2001].

Uma diferença fundamental entre arquiteturas estruturadas e não-estruturadas é que em redes estruturadas as buscas são baseadas nos identicadores gerados para os

(24)

re-cursos através de funções hash, e não com base em palavras-chave. Isto exige que o requisitante conheça exatamente o que ele deseja buscar, dicultando a aplicação em programas de compartilhamento de arquivos na Internet, onde os usuários normal-mente conhecem apenas trechos dos nomes dos arquivos. Outro aspecto importante é quanto ao custo de manutenção da estrutura da rede. Embora os tempos de localiza-ção de recursos sejam reduzidos em redes estruturadas, os mecanismos necessários para a manutenção da integridade do overlay introduzem um custo adicional de processa-mento, o qual pode ser prejudicial à aplicações com severas restrições de hardware e comunicação (e.g. aplicações em computação ubíqua).

2.2.3 Mecanismos de Localização e Roteamento

Uma outra forma de classicar redes P2P é com relação ao seus mecanismos de busca e roteamento de objetos distribuídos pelo sistema. Esses modelos podem ser de três tipos: modelo centralizado, modelo de inundação e o modelo DHT (i.e. Distributed Hash Table).

Modelo Centralizado. O modelo centralizado é empregado em arquiteturas de rede P2P híbridas, representadas na Figura 2.2(c). Neste modelo, as requisições de busca de um recurso são encaminhadas ao servidor central, que armazena índices com a localização de todos os objetos da rede. O servidor central retorna ao requisitante uma lista dos nós que possivelmente contém o recurso solicitado.

Modelo de Inundação. Mecanismos de inundação buscam localizar um determinado recurso enviando solicitações ao máximo de nós possíveis. O nó que origina a requi-sição de um recurso encaminha uma mensagem de solicitação (query) a todos os nós diretamente conectados a ele. Ao receber uma query, um nó pode responder ao requisi-tante, caso possua o recurso, ou encaminhar a mensagem a todos os seus vizinhos, com exceção daquele de quem recebeu a solicitação. O processo continua indenidamente até que o horizonte da mensagem (Time to Live, TTL) expire. O TTL é um contador decrescente acoplado às mensagens de busca, que indica até quantas vezes uma men-sagem pode ser encaminhada. Cada vez que um nó encaminha uma menmen-sagem ao seu vizinho, o valor do TTL é decrementado. Mensagens com TTL igual a zero não são encaminhadas.

A Figura2.3(a)ilustra o processo de inundação para mensagens de TTL igual a dois. O problema básico do modelo de inundação é que, embora apenas um nó possua o recurso desejado, vários outros pares são afetados pela busca. A inundação de mensagens de

(25)

busca na rede provoca um maior consumo de largura de banda [Doval e O'Mahony 2003] da rede. Além disso, ao chegarem na placa de rede do peer, elas são encaminhadas para as camadas superiores da pilha de protocolos TCP/IP até a camada de aplicação, introduzindo um custo adicional também em processamento. Métodos de inundação são normalmente utilizados em overlays não-estruturados e podem empregar mecanismos de busca por palavras-chave.

Modelo DHT. O modelo de roteamento e localização baseado em DHTs é aplicado em arquiteturas P2P estruturadas. A DHT funciona como uma tabela de roteamento distribuída entre os nós, que permite que um determinado recurso seja encontrado em um pequeno número de passos [Barcellos e Gaspary 2006]. A complexidade da busca baseada em DHTs é normalmente da ordem de O(log N). No modelo DHT, recursos e nós são identicados unicamente através de chaves geradas a partir de seus atributos (e.g. conteúdo, endereço IP, etc.). As chaves de nós e recursos podem ser geradas em um mesmo espaço de endereçamento, ou em espaços diferentes. Cada nó é responsável por manter um subconjunto de chaves. O protocolo de busca deve denir mecanismos de associação de chaves de recursos à nós especícos da rede. O protocolo de roteamento, por sua vez, deve estabelecer mecanismos para a localização de uma determinada chave a partir de informações contidas nas tabelas de roteamento dos nós, além de determinar regras para atualização destas tabelas em casos de entrada e saídas de nós. Dentre os principais protocolos de roteamento baseados em DHT estão o Pastry [Rowstron e Druschel 2001], o Chord [Stoica et al. 2001] e o CAN (Content Addressable Network) [Ratnasamy et al. 2001]. A Figura 2.3(b) ilustra o processo de localização de um recurso em uma estrutura baseada em anel (Chord). Uma desvantagem de sistemas baseados em DHT é o fato de que o nó requisitante precisa conhecer previamente os atributos do recurso solicitado, impossibilitando a busca baseada em palavras-chave, mais comuns em aplicações da Internet.

2.3 Aplicações P2P

Arquiteturas P2P têm sido utilizadas em uma grande variedade de aplicações distri-buídas. Alguns autores como [Androutsellis-theotokis e Spinellis 2004] e [Barcellos e Gaspary 2006] classicam estas aplicações nas seguintes categorias:

Comunicação e Colaboração na Internet. Esta categoria inclui sistemas que provém infraestrutura para comunicação e colaboração em tempo real na internet. Exemplos deste tipo de aplicação são os sistemas de troca de mensagens instantâneas, como o

(26)

(a) Modelo de Inundação

(b) Modelo DHT

(27)

IRC, MSN, Skype, Yahoo Messenger, etc.

Computação Distribuída. Inclui sistemas cujo objetivo é aproveitar excedentes de processamento disponíveis nos peers. Através do emprego de técnicas P2P, estas apli-cações conseguem realizar processamentos sobre grandes volumes de dados de forma distribuída entre milhares de computadores na rede. Tarefas de grande porte são divididas em pequenas unidades e, em seguida, distribuídas entre os nós. Cada nó executa sua porção de trabalho e retorna os resultados obtidos. Uma entidade central é necessária para dividir as tarefas em pequenas unidades de trabalho e coletar o resul-tados. Exemplos deste tipo de aplicação são os projetos Seti@Home [SETIHome 2010] e Genome@Home [Pande 2010]

Distribuição de Conteúdo. Engloba a maior parte das aplicações P2P. São sistemas que provém infraestrutura para a troca e compartilhamento de conteúdo digital entre os usuários. Variam desde aplicações simples de compartilhamento direto, até sistemas mais sosticados de armazenamento distribuído. Exemplos de aplicações nesta cate-goria são o Napster [Napster 2010], o Gnutella [Gnutella 2010], o Kazaa [Kazaa 2010], o BitTorrent [BitTorrent 2010], o FreeNet [Clarke et al. 2001], dentre outros. Um característica importante destes sistemas é que eles permitem apenas que os usuários publiquem arquivos na rede, mantendo seu conteúdo imutável.

Bancos de Dados Distribuídos. Diferentemente da categoria anterior, esta classe de sistemas fornece mecanismos para modicação do conteúdo, sendo necessário o controle de operações de leitura e escrita sobre os dados. Estes sistemas possibilitam a realização de operações leitura, escrita, indexação, organização e busca de conteúdo distribuído em vários nós. Exemplos deste modelo são os projetos OceanStore [OceanStore 2010] e Ivy [Ivy 2010].

Transmissão de Dados (Overlay Data Streaming). Neste tipo de aplicação, o over-lay é utilizado para prover uma estrutura de suporte a multicast, ausente na arquitetura TCP/IP, possibilitando a um nó transmitir conteúdo (e.g. vídeos, áudio, apresentações, etc.) a um grande número de pares espalhados pela rede. Exemplos desta tecnologia são as transmissões de eventos ao vivo pela Internet através do projeto ESM (End System Multicast) [ESM 2010].

(28)

3.

Segurança e Reputação em Sistemas P2P

As redes P2P ganharam popularidade como mecanismos de compartilhamento de re-cursos sem a necessidade de servidores centralizados. Dentre as características que as tornam um modelo atrativo para uma grande variedade de aplicações estão o cresci-mento em escala e a autonomia. Redes P2P são escaláveis, isto é, funcionam de forma eciente com pequenos e grandes números de nós. Além disso, seus participantes podem entrar e sair da rede de acordo com seu interesse e disponibilidade. Como men-cionado no capítulo anterior, uma rede P2P mantém níveis aceitáveis de desempenho e conectividade mesmo diante de uma população de nós altamente dinâmica.

Devido à ausência de um servidor centralizado e à presença de um grande número de participantes, os recursos e objetos de uma rede P2P podem ser largamente replicados, proporcionando alta disponibilidade e crescimento em escala. Outro fator importante é a ausência de pontos centrais de falhas, o que torna a arquitetura mais resistente a ataques intencionais como os de negação de serviço.

No entanto, apesar destas qualidades, manter uma rede P2P "segura"representa um grande desao. Arquiteturas P2P, sobretudo as estruturadas, têm boas propriedades quando seus algoritmos são executados de forma correta, mas enfrentam sérios proble-mas diante de ambientes com nós de comportamento mal intencionado [Sit e Morris 2002].

Uma alternativa para a eliminação de entidades maliciosas é o emprego de uma auto-ridade conável e centralizada de certicação, responsável por barrar o acesso destes participantes ao sistema, como é proposto pelo Pastry [Rowstron e Druschel 2001]. Entretanto, a restrição de acesso a um sistema P2P nem sempre é uma abordagem de-sejável. Na maioria das situações, o ideal é que o sistema seja capaz de operar mesmo que alguns de seus participantes sejam agressivos.

Existem diversas formas de ataque a um sistema P2P, desde a a emissão de respostas falsas a solicitações de busca, até o fornecimento de informações incorretas de rotea-mento. Um nó malicioso, por exemplo, pode realizar análises de tráfego sobre a rede, visando burlar sistemas que buscam fornecer anonimato aos seus usuários. Outras for-mas de ataques mais brandas incluem também a tentativa de usufruir mais da rede do que oferecer em troca, o que pode prejudicar seriamente a operação de redes P2P, onde a colaboração de seus participantes é fundamental.

(29)

Este capítulo aborda a questão da segurança em redes P2P, enfatizando modelos de ataque e mecanismos de defesas. A Seção 3.1 apresenta os principais aspectos de segurança e suas implicações em ambientes P2P, bem como algumas das principais formas de ataque. Em seguida, a Seção3.2descreve o funcionamento geral dos sistemas de reputação e seu emprego em redes P2P. Ainda nesta seção são apresentados alguns modelos de ameaça e comportamentos de agentes maliciosos em sistemas de reputação P2P. Finalemente, a Seção3.3faz uma breve descrição dos protocolos de gerenciamento de reputação suportados pelo PeerRepSim: o P2PRep [Cornelli et al. 2002], o XRep [Damiani et al. 2002], a Abordagem Bayesiana Combinada [Buchegger e Boudec 2004], o EingenTrust [Kamvar, Schlosser e Molina 2003] e o STORM [Ravoaja e Anceaume 2007].

3.1 Aspectos de Segurança

Esta seção aborda os principais aspectos relacionados à segurança de sistemas P2P, apresentando conceitos fundamentais, desaos e impactos de sua aplicação. Os aspectos abordados são: disponibilidade, autenticidade, autorização, integridade, anonimidade, negabilidade e reputação ( e conança) [Barcellos e Gaspary 2006]. Cada um destes tópicos são discutidos a seguir.

3.1.1 Disponibilidade

O conceito de disponibilidade em ambientes P2P está relacionado à garantia de que um objeto ou serviço estará acessível aos demais integrantes da rede [Barcellos e Gaspary 2006]. Em outras palavras, a disponibilidade de um objeto ou serviço é a fatia de tempo em que ele está disponível no sistema. A principal técnica para aumentar a disponibilidade de recursos em ambientes P2P é através da replicação. Em um ambiente de troca de arquivos, por exemplo, a disponibilidade de um arquivo especíco é maior quando ele é replicado em vários nós da rede. O objetivo da replicação é evitar pontos únicos de falhas, não permitindo que exista um único integrante responsável por um recurso, ou acesso às suas replicas.

Um ataque à disponibilidade da rede P2P visa impedir o acesso a um determinado recurso, ou evitar que um determinado grupo de nós ingressem na rede. Ainda segundo [Barcellos e Gaspary 2006], os ataques à disponibilidade podem assumir duas formas: negação de serviço (Denial of Service, DoS) e ataques de roteamento.

(30)

aplica-ção P2P. Em nível de rede, um ataque DoS consiste em realizar sobrecarregas em nós especícos através de técnicas de negação de serviço convencionais. A comunicação do nó atacado ca comprometida, fazendo com que os demais integrantes o eliminem da rede sobreposta. Em nível de aplicação, uma forma de ataque DoS acontece quando um nó atacante recusa-se a fornecer recursos ou informações que estão sob sua respon-sabilidade [Sit e Morris 2002].

Um outro tipo de ataque a nível de aplicação, especialmente em sistemas de alta disponibilidade, é a realização de entradas e saídas aceleradas de nós. Este tipo de sistema busca manter seus objetos sempre disponíveis na rede, apesar da ausência de alguns nós. Sempre que um nó entra ou sai da rede é preciso copiar os objetos em sua responsabilidade para evitar perdas por falhas. A entrada e saída acelerada de um grupo de nós pode gerar uma sobrecarga signicativa devido a estas operações de replicação, comprometendo o funcionamento do sistema.

Os ataques de roteamento, por sua vez, buscam particionar a rede fornecendo infor-mações falsas de roteamento. Em [Sit e Morris 2002] são consideradas três formas de ataque de roteamento. A primeira delas ocorre quando nós maliciosos emitem respo-stas falsas a requisições de busca, ou encaminham mensagens para longe de seu destino. Essa forma de ataque aumenta as chances de falhas nas buscas, prejudicando o desem-penho do sistema. A segunda forma de ataque ocorre quando nós mal intencionados emitem atualizações falsas de roteamento para seus vizinhos honestos. O objetivo deste ataque é gerar inconsistência nas tabelas de roteamentos dos nós. A terceira forma de ataque de roteamento é o particionamento. Este tipo de ataque ocorre quando nós corretos, ao entrarem na rede, conectam-se a servidores bootstrap controlados por nós maliciosos. Ao entrarem na rede, os nós carregam sua tabela de roteamento inicial a partir das informações fornecidas pelo servidor, as quais podem estar "contaminadas". Neste momento o nó ca vulnerável a ser alocado em uma rede incorreta, controlada exclusivamente pelo atacante.

Finalmente, uma outra forma de ataque de roteamento é quando os atacantes buscam assumir o controle da comunicação na rede P2P. Um exemplo deste tipo de ataque é o Eclipse [Singh et al. 2006], onde um conjunto de nós maliciosos buscam "ludibriar"os nós honestos fazendo com que estes os enxerguem como seus pares. Seu objetivo é controlar as áreas vizinhas a todos os nós honestos da rede. Quando bem sucedido, um ataque Eclipse permite mediar a maior parte do tráfego entre os nós honestos, literalmente sobrepondo ("eclipsando") a visão uns dos outros. Em casos extremos, um atacante pode assumir o controle de todo o tráfego da rede, sendo capaz promover censura e/ou negação de serviço a qualquer participante dela.

(31)

objetos em uma rede P2P. Os ataques podem ser empregados em ambientes estrutura-dos e não estruturaestrutura-dos, comprometendo consideravelmente a segurança e o desempenho do sistema.

3.1.2 Autenticidade

O aspecto da autenticidade está relacionado ao problema da identicação conável dos nós. Em outras palavras, está ligado à questão de como vericar se um nó é realmente quem ele diz que é. Este problema surge em ambientes onde os nós são capazes de assumir diversas identidades. Assumindo a identidade de um nó valido da rede, um nó malicioso pode tentar disseminar recursos ilegítimos ou diminuir a disponibilidade dos objetos. Sobretudo em sistemas que empregam mecanismos de replicação, esta falha de segurança permite a um atacante tomar o controle de parte signicativa do recursos replicados, comprometendo a redundância da rede [Douceur 2002].

De acordo com [Barcellos e Gaspary 2006] existem três formas de um nó obter informa-ções sobre a identidade de um outro nó: através do próprio nó, através de informainforma-ções de outros nós, ou através de uma agência certicadora. Na primeira abordagem, um nó qualquer pode aceitar a identicação apenas de nós que ele já vericou anteriormente (forma direta). A segunda abordagem consiste em aceitar a identicação de nós reco-mendados por outros nós que ele já tenha validado (forma indireta). Contudo, tanto a forma direta quanto a indireta de autenticação estão sujeitas a ação de pares não conáveis, o que ainda representa uma vulnerabilidade. A terceira abordagem, por sua vez, consiste em recorrer a uma autoridade de certicação conável para autenticação dos participantes da rede.

Em [Douceur 2002], os autores argumentam que, em um ambiente de computação distribuída de larga escala, é praticamente impossível garantir que os participantes apresentem identicadores únicos de forma conável. Ainda segundo os autores, sem o emprego de uma autoridade conável de certicação que verique a relação unívoca entre entidades e identicadores, é sempre possível para uma entidade qualquer assumir mais de uma identicação.

Embora o problema da autenticação possa ser atendido com emprego de uma agência de certicação centralizada e conável, esta alternativa não é desejável em um sistema distribuído cuja principal característica é o crescimento em escala. Outras alternativas incluem a utilização de esquemas identicação fraca, baseados na aplicação de funções hash sobre o endereço IP do nó, ou ainda evitar que o nó gere seu próprio identicador, obrigando-o a obtê-los em um servidor de bootstrap que os gera aleatoriamente. No

(32)

entanto, estas abordagens não eliminam a vulnerabilidade, mas apenas dicultam a ação de um nó mal intencionado.

3.1.3 Autorização

O aspecto de autorização em ambientes P2P está ligado ao emprego de mecanismos que garantam o controle de acesso aos recursos da rede. Embora as aplicações P2P de compartilhamento de arquivos geralmente não empreguem mecanismos de acesso, especialmente devido à premissa de acesso direto entre os pares, a sua integração é indispensável em ambientes onde é necessário determinar quem, quando e o que pode ser acessado.

O emprego de mecanismos de controle de acesso em ambientes P2P precisa levar em consideração alguns requisitos fundamentais, dentre eles: não comprometer a escala-bilidade, apesar de que a maioria das propostas é baseada no uso de servidores cen-tralizados de controle de acesso; não afetar o anonimato inerente às aplicações P2P, caracterizado pelo fraco acoplamento entre seus participantes e pelo fornecimento de pouca informação de identicação; e manter sempre o incentivo ao compartilhamento, mesmo diante das políticas de acesso impostas pelo mecanismo de autorização [Tran et al. 2005].

3.1.4 Integridade

Em sistemas P2P de compartilhamento de arquivos, o conceito de integridade está relacionado à identicação de arquivos corrompidos, ou infectados por programas ma-liciosos. Normalmente, a corrupção destes objetos ocorre em dois momentos: durante o seu armazenamento na rede, ou durante o transito entre os nós.

Esquemas para prover integridade em ambientes P2P são geralmente baseados em criptograa e no emprego de chaves de identicação geradas a partir de funções hash, aplicadas sobre o conteúdo dos arquivos. Uma vez que a violação de mecanismos de criptograa é computacionalmente custosa, os ataques de integridade mais comuns são: o ataque de poluição de arquivos, onde um nó malicioso anuncia uma cópia corrompida de um arquivo e a distribui à medida que recebe solicitações de busca; e o ataque de respostas falsas, onde um nó malicioso intercepta e modica mensagens de resposta de buscas, indicando a si próprio como detentor da cópia desejada [Barcellos e Gaspary 2006].

(33)

3.1.5 Anonimidade e Negabilidade

Devido às medidas de censura impostas aos primeiros sistemas de compartilhamento de arquivos, a busca por mecanismos de anonimidade é um dos aspectos de segurança mais almejados em aplicações P2P [Androutsellis-theotokis e Spinellis 2004]. Segundo [Dingledine, Freedman e Molnar 2001], o anonimato em sistemas de compartilhamento de arquivos refere-se à proteger a identidade dos autores de conteúdos, dos usuários que os armazenam, aos conteúdos em si e também às informações contidas em transações de busca e transferência.

Por sua vez, o conceito de negabilidade em aplicações P2P pode ser entendido como a habilidade que um usuário deve ter de negar conhecimento sobre o conteúdo armaze-nado em seu nó [Androutsellis-theotokis e Spinellis 2004]. Esta característica garante que os usuários não sejam responsabilizados por tal conteúdo. Há, no entanto, uma certa diculdade em prover negabilidade em sistemas estruturados, uma vez que as chaves de objetos são associadas aos endereços dos nós que os possuem. De forma que, é possível determinar a localização e de qualquer objeto disponível no sistema.

A principal forma de ataque contra mecanismos de anonimidade em uma rede P2P é o ataque passivo, onde o atacante procede escutas e análises de tráfego na rede, buscando identicar os elementos envolvidos nas comunicações. Sobretudo em aplicações de troca de arquivos, há o interesse de identicar quem publicou, quem armazena e quem solicita determinados objetos.

3.1.6 Reputação e Conança

No contexto de sistemas P2P, o conceito de reputação está relacionado à opinião for-mada por outros agentes sobre uma determinada entidade, baseada no seu histórico de transações na rede [Schlosser, Voss e Brückner 2004]. Ao passo que conança pode ser denida como o quanto um agente acredita que outra entidade pode agir de forma conável e segura [Grandison e Sloman 2000]. Os conceitos de reputação e conança estão relacionados, uma vez que a formação da conança em um determinado agente normalmente depende das informações sobre a sua reputação.

Como a colaboração é um dos principais requisitos para o bom funcionamento das redes P2P, é necessário implementar mecanismos que responsabilizem nós que se recusam a colaborar, enquanto recompensam os que colaboram adequadamente. Sistemas de gerenciamento de reputação buscam promover a reciprocidade entre os integrantes da rede, garantindo o máximo de colaboração possível.

(34)

Em um esquema de conança e reputação, cada nó possui uma reputação associada. Ela parte de um estado inicial e é construída de acordo com suas interações na rede. A informação de reputação auxilia os nós a escolherem parceiros para as próximas inter-ações de forma a buscar reciprocidade [Feldman et al. 2004a]. A conança de um nó em outro justica-se a partir da opinião que o primeiro forma em virtude da reputação do segundo. Ao escolher um parceiro para uma interação, um nó normalmente dá prioridade aos que possuem melhor reputação. Cada nó pode adquirir boa reputação a medida que realiza transações bem sucedidas, sendo bem avaliado pelos demais. Um nó pode conhecer a reputação de um determinado agente normalmente de duas formas: através do seu histórico local de interações com este agente especíco, ou atra-vés de opiniões emitidas por outros nós. Existe uma relação de troca entre as duas abordagens. Se as opiniões de outros nós são consideradas na escolha de um provedor de recursos, o sistema ca sujeito a ação de pares que emitem opiniões falsas. No entanto, se somente o histórico local de transações é considerado, um nó perde a capa-cidade de aprender a partir da experiência dos demais. Um dos principais problemas enfrentados por esquemas de reputação é equilibrar estas duas abordagens de forma eciente [Buchegger e Boudec 2004].

Existem diferentes formas de ataque a um sistema de gerenciamento de reputação, três das mais importantes são: o whitewashing, o ataque em conluio e ataque de um nó traidor [Barcellos e Gaspary 2006].

O primeiro tipo de ataque, o whitewashing, ocorre em ambientes onde os participantes podem trocar de identidade facilmente. Neste caso, um nó malicioso pode assumir um nova identidade sempre que desejar se livrar de um histórico de transações ruins, onde tenha acumulado uma má reputação. Caso o sistema seja "permissivo", isto é, permita o uso do estado inicial de reputação), um nó pode usá-la para obter preferência em transações, sair da rede e em seguida retornar com nova reputação inicial [Feldman et al. 2004b].

A segunda forma de ataque ocorre quando um grupo de nós em conluio provê falsos testemunhos sobre si próprio, com o intuito de aumentar sua reputação no sistema. O ataque explora uma característica em comum a muitos sistemas de reputação, que obrigam um nó a consultar a opinião de outros sobre a reputação de um provedor de recursos especíco. Como muitos sistemas P2P não possuem esquemas rigorosos de autenticação, um grupo relativamente pequeno de nós maliciosos pode assumir um grande número de identidades diferentes, não sendo necessário dispor de muitos recursos para realizar este tipo de ataque [Feldman et al. 2004a].

(35)

com-porta honestamente por um tempo, receber boas avaliações. Em seguida ele passa a explorar o sistema valendo-se da boa reputação acumulada. A mudança de comporta-mento pode surgir de forma intencional pelo usuário, ou de forma involuntária, quando, por exemplo, a máquina do usuário é infectada por "Cavalos de Tróia".

Construir um esquema de reputação de conança resistente a estas formas de ataque e capaz de determinar de forma segura os valores de conança dos nós, é um grande desao em segurança de redes P2P [Barcellos e Gaspary 2006]. O problema consiste em manter valores de reputação sempre atualizados e disponíveis em um ambiente descentralizado, de larga escala e com altas taxas de entrada de saída de nós. Existem diversas soluções propostas para este problema na literatura e algumas delas serão apresentadas nas seções seguintes.

3.2 Sistemas de Reputação para Redes P2P

Um sistema de reputação é um conjunto de mecanismos responsável por coletar, com-putar e distribuir valores de reputação de um objeto (e.g. provedores de recursos, serviços, arquivos, etc.) dentro de uma comunidade [Jøsang, Ismail e Boyd 2007]. Os valores de reputação são relacionados às opiniões de outras entidades sobre os objetos, construído com base no histórico de interações entre eles. Recentemente, os sistemas de reputação representam uma tendência importante de suporte a transações realizadas na Internet, especialmente em serviços de comércio eletrônico com o eBay [eBay 2010] e o MercadoLivre [MercadoLivre 2010]. Nestes ambientes, os usuários geralmente inter-agem com parceiros não conhecidos previamente. Os sistemas de reputação auxiliam a decisão de conar ou não em um possível parceiro de transação, disponibilizando informações sobre sua reputação.

Ao escolherem bons provedores de recursos, os participantes da rede contribuem para aumentar a qualidade das interações realizadas. Isolando parceiros que não cooperam, ou agem de forma inadequada, o sistema estimula a colaboração segura e a reciproci-dade.

Esta seção descreve os sistemas de reputação e sua aplicação em redes P2P. Inicialmente são apresentados um modelo conceitual dos mecanismos de reputação e uma taxono-mia básica dos diversos tipos de sistema. Em seguida são abordados os principais modelos ameaças, métodos de cálculo de reputação e políticas de incentivo à colabo-ração. A seção fornece uma fundamentação básica para a compreensão dos protocolos de gerenciamento de reputação implementados pelo PeerRepSim.

(36)

Figura 3.1: Arquitetura conceitual de sistemas de reputação

3.2.1 Modelo Conceitual

Conceitualmente, um sistema de reputação é normalmente composto de três atividades fundamentais: coleta, processamento e distribuição [Schlosser, Voss e Brückner 2004] de informações de conança. Na Figura 3.1, cada atividade é relacionada a um módulo especíco do sistema (i.e. coletor, processador, emissor). Uma avaliação é uma opinião a respeito de uma interação entre duas entidades: o avaliador e o avaliado. Em ambientes de distribuição de conteúdo, por exemplo, uma interação pode representar as ações de solicitação e transferência de um arquivo. Neste caso, o nó que requisita o arquivo é chamado de "cliente", enquanto o nó que fornece o arquivo é dito "provedor", ou servent.

O módulo de coleta de um sistema de reputação é responsável por coletar as diversas avaliações emitidas pelos avaliadores. Uma vez coletadas, as informações são agregadas pelo módulo de processamento. Os algoritmos usados para agregar as avaliações são chamados de métricas do sistema de reputação. Diferentes sistemas implementam diferentes métricas de reputação, e elas podem ser usadas para comparar a resposta dos sistemas em determinadas comunidades, como em [Schlosser, Voss e Brückner 2004]. Após a agregação das avaliações, o módulo de distribuição garante que os valores de reputação estejam disponíveis para toda a rede.

(37)

3.2.2 Classicação de Sistemas de Reputação

Se houver apenas um pequeno número de entidades de processamento, o sistema de reputação é dito centralizado. Exemplos deste tipo de sistema são os utilizados em provedores de serviço comercial na Internet, como o eBay, onde as unidades de coleta, processamento e distribuição concentram-se nos servidores da empresa. Em ambientes P2P, por outro lado, as ações de coleta, agregação e distribuição de avaliações são distribuídas por todos os integrantes da rede. Neste caso, o sistema de reputação é dito distribuído.

Sistemas centralizados são normalmente localizados em uma única entidade conável, o que simplica bastante o seu projeto e implementação, podendo também aumentar sua eciência. Algumas características importantes, como mecanismos de defesa contra ataques whitewashers, exigem as capacidades de gerenciamento e auditoria disponíveis somente em estruturas centralizadas. Contudo, em ambientes P2P nem sempre é de-sejável manter tal estrutura. Um servidor centralizado representa um ponto único de falhas, pouco escalável e suscetível a ataques de negação de serviço, além de represen-tarem como um "gargalo"operacional. Além do mais, prover performance e robustez para estruturas centralizadas de sistemas geralmente requer grandes investimentos em hardware e conectividade [Marti e Garcia-Molina 2006].

Em um ambiente descentralizado, os pares mais cautelosos tendem a conar somente no seu histórico local de avaliações, não aceitando opiniões vindas de outros integrantes da rede. Conseqüentemente, para uma entidade qualquer no sistema podem existir diversos valores de reputação a depender de quem a avaliou. Em outros sistemas, os pares podem aceitar opiniões sobre um determinado provedor de recursos vindas de algum subconjunto conável (i.e. previamente avaliado) de nós, ou até mesmo da rede inteira.

Os valores de reputação de uma entidade podem ser calculadas por toda a rede através do repasse de informações, ou permanecerem com valores locais dependendo dos pesos aplicados por cada avaliador. Sistemas onde conjuntos diferentes de pares possuem diferentes valores de reputação são ditos sistemas locais de reputação. Por outro lado, quando os valores de reputação são calculados por todos os pares sobre todos os pares (e.g. o algoritmo EigenTrust [Kamvar, Schlosser e Molina 2003]) e existe apenas um valor de reputação disponível para cada conjunto de nós, o sistema de reputação é dito global [Schlosser, Voss e Brückner 2004]. Sistemas globais de reputação são normal-mente mais complexos de implementar, porém, aumentam a conabilidade dos valores das avaliações. Nestes casos, embora a probabilidade de uma avaliação individual seja alta, a soma das avaliações na rede tende a ser mais precisa, mesmo em cenários com alto percentual de agentes maliciosos [Marti e Garcia-Molina 2006].

(38)

Por m, sistemas de reputação podem também ser classicados como proativos e rea-tivos. Nos sistemas reativos os nós emitem suas avaliações sobre outros pares somente quando são solicitados. Já nos sistemas proativos, os nós publicam suas avaliações na rede assim que nalizam uma transação.

3.2.3 Ameaças e Comportamentos Maliciosos

De maneira geral, um sistema de reputação deve lidar com um conjunto de ameaças, com o intuito preservar a colaboração e o bom funcionamento do sistema. Estas amea-ças surgem principalmente a partir da ação mal intencionada de alguns integrantes da rede. Em [Marti e Garcia-Molina 2006] são denidos dois tipos básicos de com-portamentos agressivos em redes P2P: o comportamento egoísta e o malicioso. A diferença básica entre eles está no objetivo que cada um possui na rede. Nós egoístas buscam usufruir o máximo do serviços oferecidos na rede, mas contribuindo o mínimo possível, ou até mesmo em nada, com recursos próprios. Um exemplo deste tipo de participante são os chamados "free-riders" em redes de compartilhamento de arquivos como o Kazaa e Gnutella. Os free-riders normalmente não compartilham seus próprios arquivos com o objetivo de reduzir o consumo de largura de banda e processamento em suas máquinas. Os nós maliciosos, por sua vez, buscam causar algum tipo de dano a algum grupo especíco de usuários ou ao sistema como um todo.

Sistemas que estimulam sobretudo a colaboração tendem a ser mais ecazes contra a ação de agentes egoístas [Marti e Garcia-Molina 2006], no entanto, ainda estão vul-neráveis a ataques maliciosos. Um peer malicioso pode agir de diversas formas com o intuito de minar o sistema. Cada tipo de comportamento assumido por eles, por sua vez, exige uma estratégia especíca de combate e anulação. Alguns dos principais comportamentos assumidos por agentes maliciosos são descritos a seguir:

Traição. Neste tipo de ação maliciosa, alguns nós agem de forma adequada e par-ticipativa durante um certo período de tempo. Em seguida, após acumularem boa reputação, eles começam agir de forma maliciosa. Este comportamento é efetivo em sistemas que oferecem grandes privilégios a usuários que adquirem boa reputação. Um exemplo prático deste tipo de ameaça são os usuários de sistema de comércio eletrô-nico como o Mercado Livre, que adquirem boa reputação na realização de inúmeras transações pequenas e, logo em seguida, aplicam golpes em transações de alto custo.

Conspiração/Conluio. A idéia por trás desta ameaça é a de que um grupo de agentes mal intencionados pode causar mais estragos juntos do que agindo separadamente.

Referências

Documentos relacionados

Acaso não seja possível o pagamento de todos os credores titulares de créditos entre R$ 5.000,01 (cinco mil e um centavo) até R$ 7.500,00, em razão de o valor adquirido com

Por outro lado, quando se fala em pequenas e médias empresas, onde o número de funcionários é maior, é mais bem dividida e o uso da Intranet se torna

Sem desconsiderar as dificuldades próprias do nosso alunado – muitas vezes geradas sim por um sistema de ensino ainda deficitário – e a necessidade de trabalho com aspectos textuais

De acordo com a nutricionista Rosilma Mara Salamoni, qualquer agradável dica é investir nos chás relaxantes um pouco antes de dormir, que tem o poder de aliviar a tensão e preparar

Se o incumprimento diz respeito a não-pagamento da renda em relação a um contrato de Arrendamento de 6 meses ou mais, deve ser emitido um aviso, informando o inquilino que está

RODOLFO – Júlia, dizer quando eu não saberia porque acredito que sempre fui apaixonado por você?. Não tenho receio de dizer que você sempre foi a mulher da

(Uma casa vazia, as paredes com um papel de parede importado, muito clássico e caro, mostrando toda a opulência do local a anos atrás, atualmente a velhice do papel

Os motins na América Portuguesa tanto quanto na Espanhola derivam do colapso das formas acomodativas - como será melhor explicado à frente -, ou melhor dizendo, do rompimento