• Nenhum resultado encontrado

2012.1_Monografia - Versão final (Rodrigo Ribeiro)

N/A
N/A
Protected

Academic year: 2021

Share "2012.1_Monografia - Versão final (Rodrigo Ribeiro)"

Copied!
71
0
0

Texto

(1)

UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA BACHARELADO EM ENGENHARIA DE COMPUTAÇÃO

RODRIGO MARTINS RIBEIRO

MODELO PEER-TO-PEER HÍBRIDO PARA AMBIENTES UBÍQUOS

FEIRA DE SANTANA 2012

(2)

RODRIGO MARTINS RIBEIRO

MODELO PEER TO PEER HÍBRIDO PARA AMBIENTES UBÍQUOS

Trabalho de Conclusão de Curso apresentado ao Curso de Engenharia de Computação da Universidade Estadual de Feira de Santana, como requisito parcial à obtenção do grau de Bacharel em Engenharia de Computação. Orientador (a): Elisângela Oliveira Carneiro

Feira de Santana 2012

(3)
(4)
(5)

RESUMO

Sistemas Peer-to-Peer (P2P) são formados por um tipo de rede que tem como características principais descentralização, escalabilidade e auto-organização. Além disso, este tipo de sistema permite a colaboração direta entre usuários, sem depender de servidores administrados por terceiros. Estas características fazem com que sistemas P2P sejam bastante utilizados por serviços de compartilhamento de arquivos e troca de mensagens instantâneas. Além disso, por possuir características desejáveis a ambientes ubíquos, este tipo de rede pode se adequar muito bem nestes ambientes. Dessa forma, este trabalho propõe identificar um tipo de arquitetura que melhor se ajuste a sistemas ubíquos. Será feita uma análise, avaliando a quantidade de mensagens disseminadas na rede, o consumo de energia, o gasto de processamento e capacidade de armazenamento. Espera-se que assim, seja possível identificar uma arquitetura peer-to-peer a ser utilizada em ambientes ubíquos.

(6)

ABSTRACT

Systems Peer-to-Peer (P2P) are formed by a type of network that has as its main features decentralization, allowing growth in scale, self-organization. Moreover, this type of system allows for direct collaboration between users, without relying on servers run by third parties. These characteristics make P2P systems are widely used for file-sharing services and instant messaging. This paper aims to analyze the performance of systems Peer-to-Peer architecture using the concept of super- peers. This analysis will be done by assessing the amount of messages disseminated in the network, the results of consultations, the robustness of the system, etc.. From this analysis it will be possible to verify the possibility of using peer-to-peer networks in ubiquitous environments.

(7)

LISTA DE TABELAS

Tabela 1- Comparativo entre Arquiteturas P2P ... 30

Tabela 2 – Plataforma de Simulação ... 54

Tabela 3 - Parâmetros de Simulação ... 56

(8)

LISTA DE FIGURAS

Figura 1 - Dimensões da Computação Ubíqua ... 15

Figura 2- Relação entre Computação Ubíqua, Móvel e Pervasiva ... 16

Figura 3- Modelo de Busca Centralizado ... 21

Figura 4- Modelo de Busca Por Inundação ... 23

Figura 5 –Modelo de Busca Utilizando Tabela Hash (DHT) ... 24

Figura 6- Arquitetura Descentralizada. ... 25

Figura 7- Arquitetura Híbrida ... 26

Figura 8 Arquitetura Super-peer ... 28

Figura 9- Simulador Refatorado ... 47

Figura 10- Arquitetura da Rede anterior a Refatoração ... 49

Figura 11- Arquitetura da Rede após a Refatoração ... 50

Figura 12– Interface de Configuração do Simulador ... 55

Figura 13– Tempo Médio Gasto na Execução dos Ticks do Cenário 1... 57

Figura 14– Consumo de Memória ... 58

Figura 15 -Total de Mensagens Trafegadas na Rede Gnutella ... 59

Figura 16 - Quantidade de Mensangens Trafegadas na Rede SupePeer ... 60

Figura 17 - Total de Mensagens Disseminadas na Rede ... 61

Figura 18 – Reputação dos Peers Honestos na Arquitetura Super-peer ... 63

(9)

SUMÁRIO

1 INTRODUÇÃO ...11

2 COMPUTAÇÃO UBÍQUA ... 14

2.1 CONTEXTO HISTÓRICO E DEFINIÇÕES ... 14

2.2 RELAÇÃO ENTRE COMPUTAÇÃO MÓVEL, PERVAISVA E UBÍQUA ... 15

2.2 PROBLEMAS EXISTENTES NESSE MODELO DE COMPUTAÇÃO ... 16

3 SISTEMA PEER TO PEER (P2P) ... 18

3.1 PEER-TO-PPER ... 18

3.2 ESTRUTURA DA REDE ... 19

3.2.1 REDE ESTRUTURADA ... 20

3.2.1 REDE NÃO ESTRUTURADA ... 20

3.3 MÉTODOS DE BUSCA E ROTEAMENTO ... 20

3.3.1 BUSCA CENTRALIZADA ... 21

3.3.2 BUSCA POR INUNDAÇÃO ... 21

3.3.3 BUSCA POR TABELA HASH (DHT) ... 23

3.4 GRAU DE CENTRALIZAÇÃO ... 24 3.4.1 DESCENTRALIZADA ... 24 3.4.2 HÍBRIDA DESCENTRALIZADA ... 25 3.4.3 PARCIALMENTE CENTRALIZADA ... 26 3.5 SUPER- PEERS ... 27 3.5.1 REDES SUPER-PEER ... 27

3.5.2 PROPRIEDADES DOS SUPER-PEER ... 28

4 SEGUNRANÇA EM REDES PEER TO PEER (P2P) ... 31

4.1 ASPECTOS DE SEGURANÇA ... 31

(10)

4.1.2 AUTENTICIDADE ... 32 4.1.3 AUTORIZAÇÃO ... 33 4.1.4 INTEGRIDADE ... 33 4.1.5 ANONIMIDADE E NEGABILIDADE ... 34 4.1.6 REPUTAÇÃO E CONFIANÇA ... 35 4.2 SISTEMAS DE REPUTAÇÃO ... 36

4.3 SISTEMAS DE REPUTAÇÃO PARA REDES P2P ... 37

4.4 AMEAÇAS E COMPORTAMENTOS EM SISTEMAS P2P ... 38

4.5 PROTOCOLOS DE GERENCIAMENTO DE REPUTAÇÃO ... 39

4.5.1 ABORDAGEM BAYESIANA COMBINADA ... 40

5 METODOLOGIA ... 42

5.1 SIMULADORES PARA REDES P2P ... 42

5.1.1 SIMULADOR PEERREPSIM... 43

5.1.2 PLANO DE ALTERAÇÕES DO PEERREPSIM ... 44

5.2.3 IMPLEMENTAÇÕES DA ARQUITETURA SUPER-PEER ... 45

5.1.4 RESULTADO DAS ALTERAÇÕES. ... 47

5.2 PARÂMETROS INICIAIS DE CONFIGURAÇÃO DO SISTEMA... 51

5.3 MÉTRICAS DE AVALIAÇÃO ... 52

6 ANALISE DOS RESULTADOS ... 53

6.1 AMBIENTE DE SIMULAÇÃO ... 54

6.2 RESULTADO DAS SIMULAÇÕES. ... 55

6.2.1 PROCESSAMENTO ... 57

6.2.2 COMPLEXIDADE DAS MENSAGENS ... 58

6.2.3 CONSUMO DE ENERGIA ... 60

6.2.4 ARMAZENAMENTO ... 61

(11)

1 INTRODUÇÃO

Com a crescente evolução dos computadores e desenvolvimento de novos produtos eletrônicos, a computação deixou de ser utilizada somente nos computadores pessoais e estações de trabalho e tornou-se constante no cotidiano das pessoas. Atualmente, os computadores estão presentes em diversos tipos de objetos, tais como: celulares, televisores, eletrodomésticos, entre outros, de forma invisível para o usuário.

Diante da variedade de objetos computacionais imersos no cotidiano das pessoas, surge-se a idéia de colaboração e comunicação entre os mesmos, resultando num ambiente onde é possível coexistir uma interação muito grande entre pessoas e os computadores. A partir desta idéia, nasce o conceito de computação ubíqua. A computação ubíqua traz a junção de computação móvel e computação pervasiva. A primeira baseia-se na nossa capacidade de mover fisicamente os serviços computacionais. Já a segunda, implica que os computadores estão embarcados no ambiente de forma invisível para o usuário (ARAUJO, 2003).

Nesse sentido, a grande dificuldade da computação ubíqua é prover, ao mesmo tempo, mobilidade e interação entre os dispositivos presentes na rede. Espera-se que os dispositivos e suas aplicações se mantenham conectados mesmo que estes estejam em redes heterogêneas, tais como; rede sem fio de curto e longo alcance. Além disso, a rede que forma este ambiente deve ser descentralizada, onde todos os integrantes devem colaborar entre si, fazendo com que as responsabilidades sejam distribuídas e não havendo uma unidade centralizadora. (ARAUJO, 2003).

Os sistemas peer-to-peer têm como principais características serem descentralizadas, possuírem alta escalabilidade, já que não existe sobrecarga em único ponto e também pelo fato deste tipo de sistema ser auto-organizável, pois não depende de uma unidade externa ou centralizadora para manter a organização. Essas três característica fazem com que as redes p2p se tornem muito atrativa para ambientes ubíquos (ROCHA et al. 2004).

No desenvolvimento de ambientes com computação ubíqua, deve-se analisar as limitações dos dispositivos que fazem parte desse meio, visto que alguns deles possuem restrição quanto à capacidade de processamento, bateria e

(12)

armazenamento. Por esse motivo, os modelos P2P tradicionais podem necessitar de alterações para cuidar da dinamicidade e imprevisibilidade da computação ubíqua.

As redes peer-to-peer tem o propósito de suportar sistemas e aplicações distribuídas utilizando os recursos computacionais disponíveis em computadores pessoais, como estações de trabalho, celulares e notebooks (ARAUJO 2003). Deste modo, os recursos não ficam localizados num único nó centralizado e sim espalhados por todos os nós da rede. Isso exige que sejam utilizados algoritmos para distribuição e recuperação, onde o balanceamento de carga é feito automaticamente e o processamento é dinâmico entre todos os participantes a medida que entram e saem da rede (LEITE, 2010).

Os sistemas P2P podem ser classificados de duas formas quanto à organização da rede sobreposta (overlay) estruturada e não estruturada. O tipo de organização tem influência em diversos aspectos, tais como: robustez, segurança, busca e desempenho. Essencialmente, a organização determina as regras para alocação de objetos (ou suas chaves e peers) e os algoritmos de buscas empregados (BARCELLOS e GASPARY, 2006). Estes sistemas também podem ser classificados quanto ao grau de centralização da rede, de forma que o nível de centralização determina o método de busca e tolerância a falhas.

Dentre as classificações quanto à forma de overlay, os sistemas p2p estruturados são caracterizados por terem um método de busca bastante eficiente. Entretanto, este tipo de rede tem dificuldade em manter a sua organização, com a constante entrada e saída dos peers. Já as redes não estruturadas, conseguem manter a organização da rede, mesmo com uma alta transiência dos peers. Porem, o seu método de busca não é muito eficiente, além de propagar uma quantidade de mensagens muito grande na rede. Neste sentido surge-se a idéia de se criar uma arquitetura híbrida, baseada em super- peers.

O modelo híbrido pode se adequar satisfatoriamente aos sistemas de computação ubíqua. Nesse tipo de arquitetura, os super- peers possuem papéis diferenciados por possuírem maior poder de processamento e armazenamento, realizando algumas funções de gerenciamento. Desse modo, em ambientes ubíquos, os super- peers podem gerenciar as interações que ocorrem na rede, além de realizar funções mais complexas, ajudando os dispositivos com mais restrições em capacidade de armazenamento, processamento e bateria.

(13)

Neste contexto, o objetivo deste trabalho é analisar e identificar uma arquitetura de rede peer-to-peer(P2P) que melhor se adéqüe aos ambientes ubíquos. Para isso, serão avaliados alguns fatores tais como consumo de bateria, processamento, armazenamento, busca, tolerâncias a falhas e escalabilidade. Estas características serão analisadas nas redes Gnutella original (GNUTELLA, 2003),

Chord (STOICA et al., 2003) e super-peers.

As análises deste trabalho serão feitas através de simulações, que é uma alternativa bastante utilizada para avaliar o desempenho de sistemas complexos e dinâmicos. A partir das simulações é possível ter uma visão geral do comportamento de um determinado sistema, além da possibilidade de testar como o sistema se comporta para cenários diferentes. O simulador utilizado neste trabalho é o PeerRepSim (CARNEIRO, 2010).

O PeerRepSim tem suporte apenas as redes Gnutella original (não estruturada) e Chord (estruturada). Por esse motivo, para alcançar os objetivos deste trabalho, foi necessário adicionar a arquitetura de rede baseada em

super-peers ao simulador.

Este trabalho está organizado da seguinte forma: O capitulo 2, apresenta as principais características da computação ubíqua. Inicialmente é exposto um breve histórico e a relação existente entre computação móvel, pervasiva e ubíqua. Também são apresentados alguns problemas existentes neste tipo de tecnologia. O capitulo 3 apresenta os principais conceitos de redes P2P. São descritos as estruturas de redes, métodos de busca e classificação quanto ao grau de centralização. Também é apresentado as características e propriedades das redes baseadas em super-peer. O capitulo 4, trata dos aspectos de segurança e ameaças existentes em redes p2p. É apresentado também o sistema de reputação utilizado no simulador. O capitulo 5, apresenta o simulador, as métricas utilizadas para analise dos resultados e as alterações feitas no simulador. O capitulo 6 são apresentados os resultados alcançados. Por fim o capitulo 7, apresenta as devidas conclusões do traballho.

(14)

2 COMPUTAÇÃO UBÍQUA

Este capítulo aborda os conceitos e características da computação ubíqua, além de apresentar a relação existente entre computação ubíqua, móvel e pervasiva. Alguns problemas existentes nesse tipo de computação também serão tratados.

2.1 CONTEXTO HISTÓRICO E DEFINIÇÕES

Nos últimos 50 anos, a computação pode ser dividida em duas tendências: a dos mainframes e a dos computadores pessoais. A primeira ocorreu na década de 60 e 70 e foi chamada de “Era dos Mainframes”. Nessa época, os computadores eram gigantescos e ocupavam praticamente uma sala inteira, pois a idéia era um computador para várias pessoas. A segunda tendência veio com o surgimento dos computadores pessoais em 1981 e foi chamada de “Era dos Pcs”. Nesse tempo, quem tivesse condições de pagar poderia ter seu próprio computador em casa, onde o intuito era um computador para cada usuário (VAZ, 2008).

Com a evolução da relação homem e computadores nasceu à idéia da computação ubíqua, considerada por muitos como a terceira era da computação. Essa idéia surgiu em 1988, através de Marc Weiser, que na época era o cientista e chefe do centro de pesquisa da Xerox Parc. Segundo Weiser (1991), uma das principais características dos ambientes ubíquos é que a interação entre o usuário e os dispositivos, deve acontecer de forma natural. O usuário não deve perceber que está interagindo com máquinas, apenas utilizar os benefícios que elas trazem, tornando-as imperceptível ao seu cotidiano (GOMES, 2007).

No futuro, a computação ubíqua pode facilitar as tarefas do cotidiano, de maneira que sejam realizadas com mais praticidade. A onipresença e adaptabilidade dos dispositivos ajudariam na “sobrecarga de informação”, problema rotineiro que atualmente existe na vida da maioria das pessoas. Em ambientes ubíquos, ao invés da preocupação em lembrar-se de fazer as coisas, tais coisas lembrariam o quê e quando teriam que ser executadas. Por exemplo, uma pessoa seria lembrada da hora de fazer a troca do óleo do carro, ou que está faltando alguns alimentos na geladeira. Indo mais além, por que não, a própria geladeira fazer as compras do que esta faltando, através da Internet num supermercado.

(15)

Inicialmente, pode ser intimidador essa idéia de computadores por toda parte, assim como foi, há muito tempo atrás, a de fios passando eletricidade por toda casa. Porém, da mesma maneira que a eletricidade se tornou onipresente, os computadores se tornariam invisíveis à percepção dos usuários comuns, sendo usados inconscientemente nas atividades do dia a dia.

2.2 RELAÇÃO ENTRE COMPUTAÇÃO MÓVEL, PERVASIVA E UBÍQUA

Muitas pessoas acreditam que computação pervasiva e computação ubíqua referem-se ao mesmo segmento de pesquisa e desenvolvimento tecnológico, o que na prática não é verdade. A computação ubíqua é a junção dos avanços da computação móvel e da computação pervasiva. Enquanto a primeira tem como finalidade manter os serviços, mesmo que o dispositivo computacional esteja em movimento, o segundo conceito trata da capacidade dos dispositivos computacionais estarem embarcados no ambiente de forma invisível para o usuário, com a capacidade de obter informações do ambiente gerando automaticamente modelos computacionais para controlar, configurar e ajustar as aplicações conforme a necessidade dos usuários e dos demais dispositivos. A figura 1 ilustra o quanto cada uma dessas tecnologias pode ser considerada móvel e acoplada no ambiente ao mesmo tempo. Como se pode observar, a computação ubíqua está no quadrante onde o nível de imersão computacional e mobilidade são altos, diferente da pervasiva, que tem uma baixa mobilidade e da móvel que tem baixa imersão computacional (GOMES, 2007).

Figura 1 - Dimensões da Computação Ubíqua

(16)

Dessa maneira, o grande esforço da computação ubíqua é tentar agregar a mobilidade da computação móvel com a capacidade de integração ao ambiente da computação pervasiva. Em termos práticos, o objetivo da computação ubíqua é fazer com que dispositivos computacionais, independentemente de sua forma, possam se deslocar com o usuário e comunicar-se com os dispositivos do ambiente. Os serviços devem ser configurados dinamicamente e, assim, satisfazer as necessidades do usuário de forma transparente e natural. A figura 2 apresenta a computação ubíqua como à união das características presentes na computação móvel e computação pervasiva (GOMES, 2007).

Figura 2- Relação entre Computação Ubíqua, Móvel e Pervasiva

Fonte: Gomes (2007, apud LYYTINEN and YOUNGJIN, 2002)

Outro tipo de equívoco que pode acontecer é a confusão entre os conceitos de realidade virtual e computação ubíqua. Na verdade são conceitos opostos, já que na realidade virtual o mundo real é criado por cenários imaginários gerados computacionalmente. Na computação ubíqua, a tecnologia deve ser incorporada ao mundo real por naturalidade (GOMES, 2007).

2.2 PROBLEMAS EXISTENTES NESSE MODELO DE COMPUTAÇÃO

Como em toda tecnologia existem aspectos positivos e negativos, na computação ubíqua, alguns dos problemas podem ser previstos e devem ser tratados com bastante cuidado, um deles refere-se à segurança e privacidade.

(17)

Em sistemas voláteis como a computação ubíqua, os usuários esperam que seus dados e recursos estejam seguros. No entanto, a confiança, que é um fator determinante no quesito segurança, é bastante inferior nesse tipo de sistema. Isso ocorre devido ao pouco ou nenhum conhecimento existente entre os participantes. Além disso, existe a questão da invasão de privacidade, já que as informações irão trafegar e podem ficar armazenadas nos mais diversos tipos de espaços inteligentes pelos quais os usuários passarem (COULOURIS, 2007).

Apesar desses problemas, as medidas para garantir a segurança e privacidade devem ser leves, já que a espontaneidade das interações, que é uma característica desejável nesse tipo de sistema, deve ser preservada. Uma pessoa, por exemplo, não vai optar por fazer login em uma caneta inteligente, antes de usá-la num escritório onde seja um visitante (COULOURIS, 2007).

Outro aspecto a ser levado em consideração, é a heterogeneidade dos dispositivos. Haverá todo tipo de dispositivo, que varia em termos de poder de processamento, largura de banda na rede, memória e capacidade de energia. Além disso, as partes de hardware e software serão de diversos tipos de fabricantes. Isso faz com que o processo de integração, segurança e comunicação se torne mais complexo.

Dessa maneira, faz-se necessário uma pesquisa em busca de soluções para esses problemas, já que são aspectos importantes para o bom funcionamento dos ambientes ubíquos, caso contrário, a segurança e especialmente a privacidade podem se tornar barreiras para o sucesso desses ambientes.

(18)

3 SISTEMA PEER TO PEER (P2P)

Este capítulo apresenta a definição do que são sistemas peer to peer, os tipos de arquitetura e a classificação quanto à rede overlay, além de descrever o funcionamento dos métodos de busca e roteamento nessas redes. Também é abordado o conceito de super-peer que é de fundamental importância no desenvolvimento deste trabalho.

3.1 PEER-TO-PPER

Não existe uma definição ou consenso na literatura para o conceito ou caracterização dos sistemas P2P. Como tradução direta, o termo refere-se à interação entre dois ou mais pares. Sendo assim, esse paradigma pode ser observado em outros sistemas de redes de comunicação, como por exemplo, uma conversa entre duas pessoas.

As duas características principais presentes em sistemas peer to peer são o compartilhamento de recursos de forma direta entre as partes envolvidas, sem envolvimento de servidores centrais e a capacidade de tratar a instabilidade e variação de conectividade, adaptando-se de forma automática a falhas nas conexões de redes e computadores, bem como comportamento transitório de peer. Em relação à existência de servidores centrais, em alguns sistemas P2P existem unidades centralizadoras que executam tarefas relacionadas à localização e autenticação de usuários, o que não descaracteriza o paradigma P2P (REZENDE, 2009).

Com base nas características apresentadas, pode-se chegar à seguinte definição: Sistemas peer-to-peer são constituídos por peer interconectados, com habilidade para auto- organização, que funcionam sobre redes sobrepostas onde o objetivo principal é compartilhar recursos como conteúdo, ciclos de CPU, armazenamento e largura de banda sem exigir uma unidade controladora, onde que por princípio não há diferenciação entre os participantes (ROCHA et al, 2004).

Além das características apresentadas, sistemas P2P possuem outras, como a garantia que todos os usuários do sistema poderão compartilhar os seus recursos e que o sistema será escalável, já que os nós possuem as mesmas responsabilidades e capacidades. Outra particularidade, é que o sistema pode ser

(19)

projetado de forma a garantir que os usuários e recursos compartilhados tenham certo grau de anonimato. Um fator que deve ser levado em conta nos projetos desse tipo de sistema é o algoritmo de arranjo dos dados nos hosts, para que exista um balanceamento na carga de trabalho (COULOURIS, DOLLIMORE, KINDBERG, 2007).

A história do peer to peer pode ser dividida basicamente em três gerações. A primeira surgiu com o sistema de compartilhamento de arquivos mp3 Napster (OpenNap, 2001). Esse sistema possuía uma arquitetura mista, onde todos os clientes se conectavam a um servidor central e informam as listas de arquivos que seriam compartilhados. Com isso, quando um peer desejasse encontrar um arquivo, ele enviava a requisição ao servidor central e este informava qual peer possuía o arquivo, a partir deste momento, a conexão se dava diretamente entre os peers. A segunda geração surgiu com os aplicativos Freenet (CLARKE et al. 2011), Gnutella (GNUTELLA, 2003), Kazaa (LEIBOWITZ, RIPEANU, WIERZBICKI. 2003) que corrigiu algumas falhas do Napster, oferecendo maior escalabilidade, anonimato e tolerância a falhas. A terceira geração veio com os middleware, que são responsáveis pelo gerenciamento de recursos distribuídos independente de aplicativos. Como sistemas dessa geração temos Pastry (ROWSTRON et al. 2001),

Tapestry (GOMES, D. S. et al. 2007) e CAN (LEITE, 2010).

Os sistemas P2P são usados basicamente em três categorias de aplicações: computação distribuída, compartilhamento de arquivos e colaboração P2P. Na computação distribuída o objetivo principal é aproveitar o poder de processamento dos peers. Já no compartilhamento de arquivo, que é a categoria onde se encaixa a maioria dos sistemas P2P, o foco é permitir a interação entre os vários peers da rede para obtenção e disponibilização dos arquivos. Por fim, na colaboração P2P a finalidade é a colaboração e comunicação direta entre os computadores e usuários. As aplicações dessa categoria incluem chats, mensagens instantâneas e aplicações compartilhadas.

3.2 ESTRUTURA DA REDE

Os sistemas peer to peer podem ser classificados quanto a sua organização em estruturados e não estruturados. A organização da rede influencia em aspectos

(20)

como segurança, desempenho e robustez, além de determinar quais algoritmos de busca serão utilizados.

3.2.1 Rede Estruturada

Em sistemas peer-to-peer que possuem este tipo de arquitetura, a topologia da rede é formada de maneira determinística. É utilizado um esquema de alocação de chaves e ids de peer, para que possa associar um objeto ou um serviço a um

peer da rede (BARCELLOS e GASPARY, 2006). A maneira mais utilizada para fazer

essas associações nesse tipo de rede, é organizar os processos em uma DHT (Distributed Hash Table). A DHT funciona como uma tabela de roteamento, onde um objeto pode ser encontrado num número pequeno de passos. A desvantagem desse tipo de rede sobreposta, é que se faz necessário uma correlação perfeita entre a chave buscada e a chave oferecida como parâmetro da busca. Além disso, é muito difícil manter o roteamento eficiente de mensagens em redes com participantes altamente transientes (Leite, 2010). Várias implementações e protocolos baseados em DHT foram desenvolvidos. Dentre eles, os mais populares são: Chord (STOICA et al. 2003), Pastry (ROWSTRON et al. 2001) e Tapestry (STRIBLING et al.2004).

3.2.1 Rede Não Estruturada

Em uma rede peer-to-peer não estruturada, não há uma topologia definida. À medida que os nós entram e saem da rede, são feitas ligações com peers arbitrários. Isso faz com que os serviços e objetos estejam posicionados de maneira aleatória, independente da topologia formada. Por funcionar dessa maneira, o processo de busca se torna ineficiente. Para se fazer um busca nesse tipo de rede, deve-se fazer uma inundação na rede até que se encontre o serviço ou objeto desejado (BARCELLOS e GASPARY, 2006).

3.3 MÉTODOS DE BUSCA E ROTEAMENTO

Existem basicamente três métodos de busca em sistemas peer-to-peer: busca centralizada, busca por inundação e busca por tabela hash (DHT). Cada um desses métodos será descrito a seguir.

(21)

3.3.1 Busca Centralizada

Neste tipo de busca existe um servidor central, responsável por gerenciar todas as buscas realizadas no sistema. Inicialmente, o peer se conecta ao servidor central e disponibiliza informações sobre os recursos que oferecem para compartilhamento. Para obter o recurso, o peer faz uma requisição ao servidor e este indica qual o peer na rede tem o serviço ou objeto requisitado. A partir daí a conexão será realizada diretamente entre os dois peers. Este processo pode ser observado na figura 3, onde o peer “X” faz uma requisição ao servidor para saber onde se encontra um determinado recurso. Logo após obter a informação do servidor, “X” se conecta diretamente ao peer que possui o recurso, nesse caso o peer “Z” e a transação é feita ente “X” e “Z”(REZENDE, 2009).

Por depender de uma unidade central, este modelo pode gerar limites de escalabilidade, uma vez que requer servidores maiores quando o número de requisições aumenta, sendo necessário mais espaço para guardar as informações quando o número de usuários cresce (ROCHA et al. 2004). O serviço mais conhecido que utiliza este tipo de busca é o Napster (Opennap, 2001).

Figura 3- Modelo de Busca Centralizado

Fonte: Rezende (2009)

3.3.2 Busca por Inundação

O método de inundação consiste em inundar toda a rede com a consulta e retornar o resultado ao peer solicitante (BRITO, 2005). Quando é feita uma busca, esta se propaga por toda a vizinhança do peer solicitante. O processo é repetido

(22)

pelos vizinhos e assim sucessivamente, até encontrar o objeto ou serviço buscado. Quando o objeto for encontrado, é propagada uma mensagem positiva pelo caminho inverso até o peer solicitante. Assim, o compartilhamento é feito diretamente entre os

peers. Esse processo é ilustrado na figura 4, onde o peer “A” solicita o recurso e os

seus vizinhos propagam a mensagem até a encontrar o recurso no peer “B”. Depois que o recurso é encontrado, a conexão é feita diretamente entre os dois peers (REZENDE, 2009).

A busca por inundação tende a causar um grave problema na escalabilidade da rede, pelo grande número de mensagens enviadas durante o processo de busca. Mesmo utilizando a técnica time-to-live (TTL) que consiste em definir um número máximo de propagação da mensagem pela rede, a escalabilidade continua comprometida. Além disso, este tipo de busca só oferece bons resultados para objetos populares (VIGNATTI, 2009). Este modelo é utilizado na versão original do

gnutella.

Gnutella. O sistema gnutella representa a primeira geração das aplicações

peer-to-peer com arquitetura totalmente descentralizada e que permitia o acesso anônimo aos arquivos compartilhados. Em uma rede Gnutella os nós são conectados através do protocolo TCP/IP, sendo que cada nó atua como cliente, servidor e também como roteador. Por utilizar arquitetura descentralizada, esse protocolo é altamente tolerante a falhas (SILVA e REZENDE, 2007).

Para que uma aplicação cliente se conecte a uma rede gnutella, é necessário que ele encontre primeiramente um nó que já esteja na rede. A partir desse nó, ele poderá se conectar aos outros participantes da rede. Existem alguns métodos para que o software cliente encontre um nó já ativo na rede. Uma técnica é a partir do envio de uma lista de nós ativos junto com o software, outra é através de sites na web. Ao se conectar na rede, os clientes poderão enviar e receber mensagens. Estas mensagens devem seguir o formato Gnutella, onde terão cabeçalho e corpo definido pelo protocolo.

(23)

Figura 4- Modelo de Busca Por Inundação

Fonte: Rezende (2009)

3.3.3 Busca por Tabela Hash (DHT)

Na tentativa de melhorar o desempenho dos algoritmos de roteamento de consultas em sistemas P2P baseados em topologias não-estruturadas, foram desenvolvidos os sistemas estruturados que utilizam tabelas de hash distribuídas (DHT). Can, Chord, Tapestry e Pastry são exemplos de sistemas que utilizam esse modelo de busca. (PIRES, 2008)

No modelo DHT, um ID randômico é associado a cada peer da rede que conhece um determinado número de peer. Como podemos observar na figura 5, quando um documento é publicado (compartilhado) em tal sistema, um ID é associado ao documento como resultado da aplicação de uma função hash sobre o nome do documento. Cada peer, então, encaminha o documento ao peer cujo ID é mais próximo do ID do documento. Esse processo é repetido até que o ID do peer atual seja o mais próximo do ID do documento. Quando um peer solicita o documento de um sistema P2P, a requisição irá até o peer com ID mais semelhante ao ID do documento. Esse processo continua até que uma cópia do documento seja encontrada. A partir daí, o documento é transferido ao peer que originou a requisição, enquanto cada peer que participou do roteamento permanecerá com uma cópia local do documento (ROCHA et al. 2004). O modelo de busca aqui descrito é implementado pelo protocolo Chord.

(24)

Figura 5 –Modelo de Busca Utilizando Tabela Hash (DHT)

Fonte: (ROCHA ET AL, 2004)

Um dos problemas encontrados nesse tipo de busca é que o ID do recurso a ser encontrado deve ser conhecido antes que requisição seja feita, o que torna a implementação bem mais complicada diante dos outros modelos já discutidos. Além disso, geralmente esses sistemas só possibilitam o compartilhamento de arquivos.

3.4 GRAU DE CENTRALIZAÇÃO

Existem três tipos de classificação quanto ao grau de centralização para sistema P2P: descentralizada, híbrida descentralizada e parcialmente centralizada. Nas próximas seções será descrito o funcionamento de cada uma.

3.4.1 Descentralizada

Neste tipo de rede, não existe um peer central com alguma funcionalidade especial como gerenciamento de busca ou manutenção do sistema. Dessa maneira, a rede torna-se totalmente descentralizada. Assim, todos os participantes são independentes, possuindo as mesmas funções e responsabilidades (BRITO, 2005).

O fato de não existir uma unidade centralizadora, traz vantagens e desvantagens. A grande vantagem é que essa arquitetura possui baixa

(25)

vulnerabilidade, já que todos os peers têm as mesmas funcionalidades. Por outro lado, a busca por recursos não é muito eficiente, já que eles ficam espalhados por todo o sistema. O sistema de compartilhamento Gnutella baseia-se em uma organização descentralizada (GODOI, 2007).

Nesse tipo de arquitetura, cada peer tem a função de manter as informações sobre os recursos que dispõem. Quando uma busca é realizada, o peer deve responder com o próprio recurso ou repassar esse pedido aos outros peers a ele conectado. A figura 6 ilustra o funcionamento deste tipo de arquitetura.

Figura 6- Arquitetura Descentralizada.

Fonte: BRITO (2005)

3.4.2 Híbrida Descentralizada

É uma rede peer-to-peer que contém um servidor central ou um conjunto de servidores, com responsabilidade de gerenciar as buscas, deixando a função de compartilhamento de recursos e serviços para os peers.

(26)

Figura 7- Arquitetura Híbrida

Fonte: Brito(2005)

O sistema peer-to-peer mais conhecido que utiliza este tipo de arquitetura é o

Napster. Nele existia um servidor central, onde os peers informavam quais dos seus

arquivos seriam compartilhados. Dessa maneira, quando um peer realizasse uma busca, uma solicitação era encaminhada ao servidor e este informava qual peer tinha o objeto procurado. Com isso, o processo de busca era altamente eficiente. A partir daí o compartilhamento do dado se dava diretamente entre os dois peers (BRITO, 2005). A figura 7 ilustra o funcionamento deste tipo de arquitetura.

A vantagem deste tipo de arquitetura é a facilidade de implementação e sua eficácia na localização de recursos. No entanto, o sistema é mais vulnerável, devido a unidade centralizadora, com baixa tolerância a falhas, além de serem considerados inerentemente não escaláveis.

3.4.3 Parcialmente Centralizada

É baseado na arquitetura descentralizada, acrescida de alguns peers diferenciados chamados de super- peers. Estes peers especiais realizam algumas funções extras, como autenticação de novos peers na rede, gerenciamento de índices e conteúdos dos peers a ele conectado, entre outros. A figura 8 descreve o funcionamento desta arquitetura. O próximo tópico descreve com mais detalhes as características desse tipo de arquitetura.

(27)

3.5 SUPER- PEERS

Nesta seção será abordado com mais detalhes o conceito de super- peer e suas propriedades. Será mostrado como é o seu funcionamento e as características que um peer deve ter para se tornar um super-peer. Ao final da seção é apresentada uma tabela comparativa mostrando as principais vantagens desta arquitetura.

3.5.1 Redes Super-peer

A arquitetura baseada em super-peer pode ser vista como um melhoramento da arquitetura centralizada embutida nos sistemas descentralizados (BRITO, 2005). Este sistema é formado por pequenos subconjuntos de peers ligados entre si, denominado super- peers. Os super- peers têm como característica um maior poder de processamento e armazenamento em relação aos outros peers da rede.

Quando um peer quer se conectar ao sistema, ele deve identificar um super- peer na rede para que possa fazer a conexão. No processo de conexão, são trocadas informações entre o peer e super-peer para que possa haver uma validação da entrada deste peer na rede. Se a verificação for positiva, eles trocam informações sobre suas localizações que são indexadas pelo super-peer. Além disso, o peer deve enviar ao seu super-peer todos os dados referentes a serviços e recursos que ele deseja compartilhar.

Uma vez conectado a rede, o peer já pode realizar e receber consultas de buscas. Neste processo é feita uma requisição ao super-peer a ele conectado e este lhe retorna o endereço do peer que contém o recurso requisitado. Se o super-peer não tiver o endereço do peer com o recurso, a mensagem é encaminhada aos demais super- peers ligados a ele e assim sucessivamente, até que o objeto procurado seja encontrado.

Pode-se dizer que esta arquitetura é centralizada, pois os peers submetem suas consultas ao seu respectivo super-peer, que não deixa de ser um ponto centralizado. A vantagem deste modelo é que existem diversos pontos centralizadores, o que não implica em falha no sistema se um deles falharem. O sistema mais conhecido que utiliza este modelo é o Kazaa (LEIBOWITZ, RIPEANU, WIERZBICKI. 2003). Como pode ser observado na figura 8, os peers se conectam

(28)

aos super- peers, que ficam responsáveis por gerenciar os recursos disponibilizados pelos peers a eles conectados e por todo o processo de busca.

Figura 8 Arquitetura Super-peer

Fonte: BRITO (2005)

3.5.2 Propriedades dos Super-peer

Os super-peers possuem algumas propriedades, dentre as quais se destacam a agregação de peers e o roteamento de consultas. Na primeira, o super-peer é responsável pelo conjunto de peers que estão conectados, incluindo todo o processo de conexão, bem como sua manutenção dentro do sistema. Já na segunda, sua responsabilidade diz respeito à busca da resposta à consulta do peer cliente dentro do sistema e do gerenciamento de uma consulta reenviada por um super-peer.

Um peer só pode se tornar um super-peer, se ele possuir algumas características físicas que garantam um bom funcionamento da rede. Segundo (ZHU

et al, 2003), os super- peers devem possuir estabilidade, largura de banda, poder de

processamento e capacidade de armazenamento. Para ser um super-peer, o peer primeiramente tem que ser estável, caso contrário, sua instabilidade poderá prejudicar o desempenho do sistema como um todo. Além disso, ele deve possuir uma largura de banda suficiente para permitir o tráfego de dados de maneira rápida e eficiente, uma vez que é um dos pontos centrais de processamento. Quando uma consulta for submetida a um super-peer, a largura de banda não pode ser fator

(29)

limitante ao acesso rápido aos peers ou super- peers correspondentes. Ele também deve possuir um poder significativo de processamento para suportar o crescente tráfego na camada de rede, bem como, a grande quantidade de consultas submetidas por seus clientes. Por fim, um super-peer precisa ter espaço de armazenamento e memória extra para guardar as informações referentes aos seus pares e aos demais super- peers, bem como outras informações que sejam relevantes para o bom funcionamento do sistema.

Um fator importante que deve ser observado se refere ao ciclo de vida dos

super- peers, isto é, quanto tempo ele está apto a ser um super-peer. Desta forma,

devido ao dinamismo existente numa rede P2P, causado pela grande transiência dos

peers na rede, os super- peers devem verificar periodicamente se suas

características físicas continuam sendo as melhores dentre os peers existentes na rede. Esta condição determina se estes devem continuar a serem super- peers ou se uma eleição deve ocorrer para a indicação de outro super-peer (BRITO e MOURA, 2004).

O processo de eleição de um novo super-peer é baseado de acordo com as características do sistema proposto. Existem alguns algoritmos de eleição, como por exemplo, o algoritmo de Bully (MEIRELLES e SILVA, 2004) e o algoritmo Token Ring

Election (MEIRELLES e SILVA, 2004) que são utilizados em sistemas distribuídos,

os quais podem ser adaptados para utilização nos sistemas P2P. Existem sistemas onde os super- peers são pré-definidos, não havendo necessidade desse procedimento.

Em relação à quantidade de super-peer em um sistema P2P, ela pode ser definida previamente, dependendo do sistema em questão. Essa quantidade deve ser bem definida para que nenhum super-peer fique sobrecarregado com a quantidade de nós folha, causando um desbalanceamento no sistema. Para tal, um estudo prático deve ser realizado, focalizando obviamente, o bom desempenho do sistema (BRITO, 2005).

Em alguns sistemas, a quantidade de nós folha que cada super-peer pode ter é limitada. Dessa maneira, quando um peer deseja se conectar a um super-peer que possua limite máximo de nós folhas, ele deve procurar outro com o qual possa se conectar. Se ele não encontrar nenhum outro para se conectar, um processo de eleição deve ocorrer para definir um novo super-peer para o sistema.

(30)

A arquitetura baseada em super-peer, possui muitas vantagens comparadas com as outras arquiteturas existentes. Uma delas é em relação à pesquisa, já que cada super-peer mantém um índice das informações do seu conjunto de peer. Assim, não é necessário que as mensagens sejam disseminadas por todos os

peers, somente entre os super- peers, o que otimiza o processo de busca. Por

exemplo, uma pesquisa que leva o tempo de O(N) na arquitetura parcialmente centralizada ou descentralizada com n peers irá levar o tempo de O(N/M) em uma arquitetura baseada em super-peer, onde M é a média do número de peer conectados em cada super-peer .

Os super- peers são gerenciados através do monitoramento feito nos seus

peers, tornando a rede mais robusta. Este tipo de arquitetura permite uma maior

escalabilidade em relação à arquitetura centralizada e tem uma escalabilidade bastante parecida com a arquitetura descentralizada. Como existem vários super-

peers na rede, a tolerância a falhas desse sistema é elevado já que não existe

apenas um único ponto de falha, deixando assim a rede mais confiável.

A tabela 1 apresenta uma comparação entre as arquiteturas P2P, onde pode ser observado que arquitetura baseada em super-peer, é a mais apropriada para desenvolvimentos e manutenção de sistemas P2P.

Tabela 1- Comparativo entre Arquiteturas P2P

(31)

4 SEGURANÇA EM REDES PEER TO PEER (P2P)

As redes peer to peer se tornaram muito conhecidas, principalmente pelo seu uso em sistemas para compartilhamento de arquivos. Em seus primórdios, não existia uma preocupação especifica em relação à segurança nesses sistemas. Por esse motivo, os protocolos desenvolvidos focavam somente no funcionamento eficiente das redes, o que ocasionava na vulnerabilidade para diversos tipos de ataques. Os ataques podem ser feitos de diversas maneiras, desde a emissão de respostas falsas às solicitações de busca, até o fornecimento de informações incorretas de roteamento. Os responsáveis pelos ataques podem agir de maneira conjunta ou individualmente, isso depende do objetivo que se espera com o ataque. Nessa seção será abordada a questão da segurança nas redes peer to peer, ressaltando alguns tipos de ataques e mecanismos de defesa.

4.1 ASPECTOS DE SEGURANÇA

Os principais aspectos relacionados à segurança em redes P2P são: disponibilidade, autenticidade, autorização, integridade, anonimidade, negabilidade, reputação e confiança (BARCELLOS e GASPARY, 2006). Cada um deles são descritos a seguir.

4.1.1 Disponibilidade

Em sistemas P2P, o aspecto disponibilidade está relacionado à garantia que um objeto ou serviço possa ser acessado pelos participantes da rede. Ou seja, é a fatia de tempo em que esse recurso estará disponível no sistema para ser utilizado. A forma mais eficiente de se manter a disponibilidade dos recursos em ambientes P2P é através da replicação. Dessa maneira, o recurso fica disponível em mais pontos na rede, evitando pontos únicos de falhas.

Um ataque a disponibilidade, visa impedir que um recurso ou serviço seja acessado, ou que um grupo de nós adentre na rede. Segundo (Barcellos e Gaspary, 2006) existem duas maneiras de ataques para a disponibilidade: negação de serviço (Denial of Service, DoS) e ataques de roteamento.

(32)

O ataque de negação de serviço pode ocorrer de duas formas: em nível de rede ou em nível de aplicação. No nível de rede, um ataque DoS basicamente sobrecarrega um peer da rede através de técnicas de negação de serviços convencionais. Dessa forma o nó que esteja sendo atacado fica incomunicável, fazendo com que os outros participantes 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 responsabilidade (SIT, E.; MORRIS, R. ,2002)

Já os ataques de roteamento, consistem em irregularidades de roteamento, onde as mensagens transmitidas através da rede overlay são desviadas ou descartadas por peers maliciosos, não chegando ao seu destino final. Esses ataques normalmente dependem do tipo de rede P2P: estruturada e não estruturada. Com isso, a chance de falhas na buscas dos arquivos ou serviços aumenta consideravelmente, causando um impacto negativo no custo e desempenho do sistema (MIRANDA, M.M, 2009).

4.1.2 Autenticidade

Autenticidade é a certeza de que um peer ou serviço provém de uma descrição já anunciada e que não sofreu modificação durante o processo de comunicação. Em outras palavras autenticidade é a garantia de que alguém é de fato quem afirma ser. Em sistemas de compartilhamento de arquivo, um serviço ou

peer é autêntico quando há consistência entre o arquivo solicitado e sua descrição.

Esse aspecto tem grande influência na disponibilidade, já que uma grande quantidade de arquivos ilegítimos na rede irá diminuir a disponibilidade dos recursos (CARNEIRO, 2010).

Existem três formas distintas para obter informação sobre outros peers presente na rede: através do próprio peer, a partir de outro peer, ou através de uma agência certificadora. Na primeira maneira, o peer pode se conectar apenas com

peers que já foram validados por ele anteriormente (forma direta). Na segunda

maneira, o peer pode se conectar a peers que forem recomendados por outros

peers que ele já tenha validado (forma indireta). Já na terceira maneira é necessário

estabelece que uma autoridade de certificação confiável, valide a autenticidade dos participantes da rede (BARCELLOS e GASPARY, 2006).

(33)

Mesmo que o problema de autenticação possa ser resolvido com o uso de uma agência certificadora confiável, essa não é uma escolha muita atraente para um sistema distribuído como o P2P que tem como uma das principais características o crescimento em escala e a capacidade de lidar com milhões de peers. Existem alternativas para alocação de identidade dos peers que desejam fazer parte da rede. Uma delas é baseada em esquema de identificação fraca, que consiste em fazer um

hash sobre o endereço IP do peer. A outra procura impedir que o peer gere seu

próprio identificador, forçando-o a obter esse identificador de um servidor bootstrap que os gera de forma aleatória. No entanto, nenhuma dessas alternativas garante um sistema totalmente seguro, mas ajuda a dificultar a ação de peers maliciosos.

4.1.3 Autorização

Em um contexto de sistemas P2P, autorização é a habilidade de restringir e controlar o acesso aos recursos da rede. Ainda que mecanismos de acesso não sejam utilizados em sistemas P2P de compartilhamento de arquivos, o seu uso é imprescindível em ambientes onde é necessário determinar quem, quando e o que pode ser acessado.

A inclusão de mecanismos de controle de acesso em aplicações P2P deve respeitar alguns requisitos básicos presentes em sistemas desse tipo. O primeiro deles consiste em utilizar uma solução que não comprometa a escalabilidade da aplicação, ainda que a maioria das propostas para esse controle parta do princípio de utilizar servidores centralizados para prover essa funcionalidade. O segundo requisito consiste em não afetar o anonimato presente nas aplicações P2P, que tem como característica manter um acoplamento fraco entre seus participantes onde cada um fornece pouca informação sobre suas identidades. Diferente dos sistemas cliente/servidor, em que o acoplamento entre os participantes é forte. O terceiro requisito consiste em manter o incentivo ao compartilhamento, apesar das políticas de acesso imposta pelos mecanismos de autorização.

4.1.4 Integridade

Em redes P2P onde as aplicações mais comuns são as de armazenamento e compartilhamento de arquivos, o aspecto de segurança relacionado a integridade é

(34)

fundamental. É a partir dele que é feito a identificação dos arquivos corrompidos ou infectados por programas maliciosos. O processo de corrupção dos objetos pode ocorrer em duas ocasiões: no momento do armazenamento ou no trânsito entre os

peers.

O uso de criptografia pra garantir a integridade em ambientes P2P é bastante comum. Normalmente chaves de identificação são geradas a partir de funções hash e aplicadas sobre o conteúdo dos arquivos, com isso pode-se comparar com o resultado da assinatura hash gerado antes da transmissão.

De maneira geral, violar mecanismos de segurança baseados em criptografias é computacionalmente custoso. Por isso, os ataques mais corriqueiros a integridade segundo (BARCELLOS e GASPARY, 2006) são: o ataque de poluição de arquivos, onde um peer malicioso anuncia uma copia corrompida de um arquivo e a distribui à medida que recebe solicitações; e o ataque a resposta falsas, onde um

peer malicioso intercepta e altera as mensagens de respostas as solicitações de

busca, se intitulando como detentor de uma copia do arquivo; se selecionado pelo requisitante para fazer a transferência do arquivo, fornece uma cópia corrompida do mesmo.

4.1.5 Anonimidade e Negabilidade

Desde que foram impostas medidas de censuras aos sistemas de compartilhamento de arquivos, a procura por mecanismos de anonimidade em ambientes P2P se tornou um dos aspectos de segurança mais desejados. Esse aspecto procura garantir a não identificação: dos autores ou aquele que publica arquivoo; do usuário que armazena; do próprio conteúdo do arquivo; das informações envolvidas no processo de busca e transferências (BARCELLOS e GASPARY 2006).

As principais formas de ataque aos mecanismos de anonimidade são os da forma passiva, onde o atacante utiliza escutas e analisa o trafego de rede para identificar as estações envolvidas na comunicação. Particularmente, em ambientes P2P de troca de arquivos existe um grande interesse em descobrir quem publicou, quem esta armazenando e quem solicitou determinado objeto. [MIRANDA, M.M, 2009]

(35)

Segundo (THEOTOKIS & SPINELLIS, 2004), a negabilidade em sistemas P2P pode ser entendida como a capacidade que o usuário tem de negar qualquer conhecimento sobre o conteúdo por ele armazenado. Essa característica garante que o usuário não seja penalizado por tal conteúdo. No entanto, em sistemas estruturados existe certa dificuldade em prover tal tipo de aspecto. Isso ocorre devido à forma de endereçamento feita nesse tipo de sistemas, como as chaves geradas para os objetos são associadas aos endereços dos peers que os possuem, torna-se possível determinar a localização de qualquer objeto disponível no sistema.

4.1.6 Reputação e Confiança

A idéia por trás dos aspectos de confiança e reputação diz respeito à imagem que o peer possui perante a comunidade no qual está inserido. O conceito de reputação está ligado a visão que a comunidade tem sobre um determinado indivíduo. A reputação é construída durante o período que o peer existe com base em seu histórico de transações. A partir das informações sobre a reputação, os

peers do sistema escolhem seus parceiros para as próximas transações de forma

que se crie uma relação de reciprocidade (FELDMAN, M.) Já o conceito de confiança, significa o quanto um peer acredita que outro peer possa agir de forma segura e confiável. Ambos os conceitos estão relacionados de tal forma, que para se obter confiança em um determinado peer é preciso antes adquirir informações sobre sua reputação na rede.

Segundo (BARCELLOS e GASPARY, 2006) as relações de confiança podem ocorrer de quatro maneiras: de um para outro (confiar em um peer para se executar uma transferência), de um para vários (confiar em um grupo de peers para realizar transações), de vários para um (tal como confiar em um líder) e de vários para vários (quando um grupo confia em outro).

Em ambientes P2P, é necessário que exista algum tipo de mecanismo de reputação para que um usuário possa determinar o grau de confiança que ele pode ter perante aos outros peers da rede. Cada peer pode medir o “risco” existente quando pretende utilizar ou prestar serviços, tendo como base a reputação do outro

peer envolvido na comunicação. Além disso, esse tipo de mecanismo pode garantir

a colaboração dos participantes no sistema, algo essencial para seu bom funcionamento. Quando os peers participantes não colaboram, as conseqüências

(36)

são bastante nocivas podendo levar o sistema ao colapso. Dessa maneira, implementar um mecanismo que responsabilize usuários que não colaborem e que gratifique os que colaboram é de grande importância para o seu bom funcionamento.

O esquema de reputação é muito bem visto em redes P2P devido à ausência de requisitos fortes de autenticação, se tornando um mecanismo substituto para sistemas baseados em certificados digitais. Através da reputação pode-se confiar em um peer simplesmente tomando como parâmetro seu comportamento no sistema, sem a necessidade de mapear o par com uma entidade física responsável.

4.2 SISTEMAS DE REPUTAÇÃO

Sistemas de reputação é um conjunto de mecanismos adotado na Internet para intensificar as relações de confiança entre os usuários de uma comunidade. A reputação é obtida através de avaliações pessoais sobre as atitudes dos participantes do sistema. O valor da reputação é originado a partir da coleta de informações sobre o indivíduo de acordo com seu histórico de comportamento e contribuições, referenciados por outras pessoas da comunidade.

Sites de comércio eletrônico se utilizam desses mecanismos de reputação para fornecer informações sobe o comportamento de um determinado indivíduo, auxiliando assim seus usuários a decidirem em quem confiar no momento em que se vai realizar uma compra. Como exemplo, podemos citar os serviços de comércio eletrônico como MercadoLivre (MERCADOLIVRE, 2010) e o Ebay (EBAY, 2010) onde as pessoas compram e vendem produtos sem conhecimento prévio uma das outras. O sucesso dessas aplicações é atribuído aos seus sistemas de reputação que tem como estratégia permitir que os envolvidos se qualifiquem ao fim de cada transação. Essa qualificação pode ser pontuada em: positiva (1), neutra (0) ou negativa (-1). Em sistemas de reputação desse tipo, as informações sobre a reputação dos usuários ficam sempre disponíveis, pois o serviço é centralizado (CRUZ, 2006).

Assim como nos sites de comércio eletrônico, as interações nos sistemas P2P e de computação ubíqua ocorrem entre usuários desconhecidos. No entanto, esses sistemas não possuem uma unidade centralizadora como o Ebay ou MercadoLivre que possa disponibilizar as informações sobre a reputação dos usuários a qualquer momento. Por esse motivo, a disponibilidade e confiabilidade dos sistemas se

(37)

tornam bastantes preocupantes. O uso de um servidor central para o sistema de reputação simplifica o seu projeto e implementação, aumentando a sua eficiência. No entanto, torna o sistema pouco escalável, pois o deixa com um ponto centralizador, sujeito a falhas e ataques de negação de serviço. Estes tipos de características são indesejáveis para sistemas P2P.

4.3 SISTEMAS DE REPUTAÇÃO PARA REDES P2P

Segundo (MARTI, S.; GARCIA-MOLINA, 2006), sistemas de reputação em redes p2p, em geral, são compostos por três atividades principais: coleta, processamento e distribuição de informações de confiança. O módulo de coleta é o responsável por obter as avaliações geradas na rede. Essas avaliações são agregadas no módulo de processamento, que utiliza algumas métricas pré-definida de acordo com o sistema de reputação empregado, para gerar a reputação do usuário avaliado. A partir daí o módulo de distribuição garante que a reputação do usuário esteja disponível para toda a rede. Com essa distribuição é possível que os usuários ajam de acordo com a reputação dos elementos da rede, privilegiando os

peers que possuem boa reputação e marginalizando os peers com péssima

reputação.

Os sistemas de reputação também podem ser considerados como proativos e reativos. Nos sistemas reativos um peer envia uma informação sobre outro peer, apenas quando for solicitado. Já nos sistemas proativos, a informação é enviada logo após uma transação.

Nos sistemas de reputação P2P descentralizados, onde não existe uma entidade centralizadora responsável por calcular, atualizar e publicar as reputações dos peers da rede, cada peer deve fazer esse processo localmente. Ao fim de cada interação, o peer que requisitou um serviço, deve avaliar o provedor desse serviço. Esse resultado deve ficar armazenado localmente, para fazer parte do histórico de avaliações que é criado, a partir de suas interações com os outros peers da rede (SILVA, F.M, 2007).

Podemos classificar as estratégias de reputação em sistemas P2P de cinco formas diferentes: otimistas, pessimistas, centralizadas, investigativas e transitivas. Quando a estratégia utilizada é otimista, o sistema assume que todos os peers da rede são confiáveis até que se prove o contrário. Nesse caso os peers estranhos

(38)

são os mais beneficiados, já que os mesmos tendem a ser normalmente selecionados para as transações. Esse tipo de estratégia é recomendado para sistemas onde o os custos e o risco de uma traição é baixo e os benefícios de cooperação são altos. (SILVA, J.F., 2007). A estratégia pessimista é o oposto da otimista, ou seja, o sistema assume que todos os peers não são confiáveis, ate que estes provem o contrário. Com isso os peers estranhos levarão um pouco de tempo para construir sua reputação, já que não serão referencia para transações. As estratégias centralizadas consistem na utilização de uma entidade central para armazenar a reputação dos peers, o que não é desejável em ambientes p2p, que tem como característica principal ser descentralizado. Nas estratégias investigativas, primeiramente o peer busca informações com outros participantes sobre o peer com quem pretende realizar uma transação, para depois decidir se realiza ou não a transação. Por fim, ainda existe a estratégia transitiva, onde se o peer A confia no

peer B e o peer B confia no peer C, então por transitividade podemos dizer que o peer A confia em C (BARCELLOS e GASPARY 2006).

4.4 AMEAÇAS E COMPORTAMENTOS EM SISTEMAS P2P

Além de balancear e melhorar o funcionamento das redes P2P, os sistemas de reputação devem estar preparados para lidar com as ameaças a que são expostos. Já que em sistemas de compartilhamento, os participantes são desconhecidos e por isso podem assumir qualquer tipo e comportamento. Em (MARTI, S.; GARCIA-MOLINA, 2006) são definidas duas formas de comportamentos para os peers em redes P2P: egoísta e malicioso. A diferença entre os dois tipos de comportamento está no objetivo de cada peer ao realizar o ataque. O peer egoísta é aquele que busca utilizar ao máximo dos recursos oferecidos, oferecendo o mínimo dos seus recursos. Um exemplo desse tipo de peer são os freeriders, comuns em sistemas de compartilhamento como Kazaa e o Gnutella. Já os peers maliciosos, têm como objetivo em seus ataques, causar algum tipo de dano a um grupo de usuário ou ao sistema como um todo.

Para garantir que o comportamento dos peers seja refletido na rede de maneira correta, os sistemas de reputação devem possuir métricas que não sejam influenciadas por peers maliciosos. Existem diversos tipos de ataques praticados por

(39)

peers maliciosos. Alguns dos principais comportamentos mal intencionados, serão

descritos a seguir:

Traição. Nesse tipo de ataque, um peer mantém um bom comportamento por um período de tempo a fim de construir uma boa reputação, para então agir de maneira maliciosa. Esse tipo de ataque é bastante efetivo em sistemas de comercio eletrônico como ebay e mercado livre, onde o peer malicioso adquire uma boa reputação com transações de pequeno valor, para poder lesar os usuários em transações que envolvem altos valores.

Concluio. Nesse tipo de ataque um grupo de peers mal intencionados se junta, praticando uma autopromoção entre eles, aumentando assim as suas respectivas reputações e qualificando negativamente os outros peers da rede. Esse tipo de ataque é mais efetivo, em sistemas de reputação onde um peer deve consultar outros peers sobre a reputação de um terceiro. Além disso, os peers do concluio devem conhecer as ações um dos outros.

Whitewashing. Esse tipo de ataque só ocorre em sistemas onde é facilitada a troca de identificação. Ocorre quando um peer entra na rede com uma nova identidade para se livrar de uma reputação ruim. A depender da quantidade, Whitewashing pode causar um colapso no sistema.

Negação de Serviço. A descrição deste ataque pode ser visto no tópico de disponibilidade na seção 4.1.1.

4.5 PROTOCOLOS DE GERENCIAMENTO DE REPUTAÇÃO

Essa seção discute as principais características do protocolo de reputação abordagem bayesiana que estende os protocolos de rede sobreposta, Gnutella original e super-peers. É apresentado o funcionamento deste protocolo, descrevendo as ações de coleta de informação, calculo do valor de reputação atribuído aos peers, atualização das informações sobre o comportamento dos peers e distribuição das opiniões na rede.

(40)

4.5.1 Abordagem Bayesiana Combinada

Buchegger e Boudec (BUCHEGGER and BOUDEC, 2004) propõem um sistema de gerência de reputação totalmente distribuído baseado numa abordagem Bayesiana combinada. Esse sistema tem como objetivo lidar com as informações falsas que são disseminadas na rede. O protocolo pode ser utilizando tanto em redes P2P como em redes móveis ad-hoc.

Nessa abordagem, cada peer guarda uma avaliação de reputação e uma avaliação de confiança sobre o peer que tem interesse. As avaliações podem ser de primeira e de segunda mão. As de primeira mão correspondem às avaliações geradas a partir de experiências que um peer teve diretamente com outro peer. As de segunda mão correspondem às avaliações que são recebidas por terceiros, ou seja, aquelas que são repassadas pela rede.

O protocolo de abordagem bayesiana é classificado como proativo, ou seja, a coleta de informação não é feita mediante requisição. Dessa forma, ao fim de cada transação o peer cliente avalia o provedor do recurso e dissemina essa informação através de uma mensagem broadcast entre seus pares.

O calculo da reputação e confiança é feito com base em dois parâmetros (α e β) que possuem valores iniciais (1,1). Esses parâmetros podem ser atualizados de duas formas: através de informações de primeira mão e quando uma avaliação de segunda mão é aceita. Existe também um terceiro parâmetro s, que representa o resultado de uma transação, classificando-a em boa ou ruim. Seja ∈ 0,1 teremos os valores de a e b atualizados de acordo com equações 4.1 e 4.2.

≔ + (4.1)

≔ + (1 − ) (4.2)

A variável representa um fator de desconto para experiências passadas, diminuindo a reputação dos peers. Para encontrar um bom valor de é necessário uma sequencia de observações , … , , e derivar da equação 4.1. O valor de α após observações de “primeira mão” é igual a:

(41)

Após o peer receber uma informação de “primeira mão” , do peer sobre o peer , é verificado se é confiável. Para isso é realizado um teste de desvio, como descrito na equação 4.4:

| , − ( , ) | ≥ (4.4)

D é uma constante positiva que representa o limite do desvio. Se o valor de for positivo, a informação de “primeira mão” é considerada incompatível e é descartada, caso contrario, , é incorporada usando a equação 4.5.

, ∶= , + , (4.5)

Onde é uma pequena constante positiva.

A taxa de , é obtida e atualizada através de uma abordagem similar a bayesiana, faz se o uso das equações 4.1 e 4.2

O tempo em que um peer permanece na rede também é levado em consideração no calculo, para isso é utilizado à combinação de dois mecanismos: reavaliação periódica e diminuição da reputação. Como transações estão ocorrendo a todo o momento na rede, diversas avaliações são distribuídas constantemente. Dessa maneira, os repositórios dos peers estão sempre atualizados, pois estes recebem informações sobre os provedores dos recursos periodicamente. (CARNEIRO, 2010)

Existe também um fator de desconto que é utilizado para decrementar a reputação de todos os provedores ao longo do tempo. Os peers que ficarem inativos por um longo período de tempo, têm sua reputação decrementada mais de uma vez, agora de forma exponencial.

Referências

Documentos relacionados

Tomando como foco a unidade de análise e as limitações de inferência populacional destas novas mídias, o trabalho oferece uma oportunidade de discussão acadêmica entre dados

Esse elevado poder de explicação é conseguido atraves da influência das variáveis exógenos (CIE e OIE) e das variáveis e indicadores da própria teoria do comportamento

Uma de suas tarefas é focalizar a visão que os chefes militares têm de outros atores sociais atuantes na região: setores civis do Estado brasileiro, garimpeiros, militares de

Com apoio da médico e enfermeira, aproveitaremos as reuniões que ocorre na UBS para capacitar a equipe para a realização de exame clínico apropriado, para

mandar para Eretz,para os chaverim da Aliat-Hancar de Bror Chail, Além do dinheiro da Kupa, vancs fazer trabalhos manuais para vender, e mais fâãcilmente comprar o presente,.

Os elementos caracterizadores da obra são: a presença constante de componentes da tragédia clássica e o fatalismo, onde o destino acompanha todos os momentos das vidas das

a) O polícia disse um palavrão, após ter saído da casa de Adrian. Corrige as falsas.. A mãe também está com gripe. “Quase que não consegui ficar calado quando vi que não

Nessa perspectiva menos restrita, o Brasil apresenta 37 setores-chave (13 com ligações para frente e 24 com ligações para trás) que evidenciam as seguintes