Introdução

Definições e desafios das Redes Par-a-Par

Um Mundo Descentralizado

Uma das práticas digitais que mais se popularizou nas últimas duas décadas foi o compartilhamento de arquivos torrents, que nada mais são do que metadados referentes ao conteúdo verdadeiramente desejado. Utilizar um sistema como esse é ter contato direto com a arquitetura Par-a-Par: um torrent é a porta de entrada para baixar fragmentos do arquivo desejado diretamente de vários outros computadores, pertencentes a diversas pessoas diferentes. Com isso, podemos usufruir de uma arquitetura mais barata, mais versátil e mais fácil de ser configurada quando comparada ao clássico modelo cliente-servidor. Mas, então, por que uma idea tão robusta como essa vem sendo alvo de tantas preocupações?

Veremos em breve que os desafios encontrados por sistemas como este estão longe de serem fáceis. Antes, no entanto, convém definir de forma um pouco mais rigorosa este paradigma do mundo das redes, a fim de entendermos por completo todas as suas implicações.

Qual a definição de Computação Par-a-Par?

Um aspecto interessante da arquitetura P2P é a quantidade de diferentes definições disponíveis para descrevê-la. Apesar de várias fontes generalizarem bem o que é a computação P2P, é muito mais rico considerá-las em conjunto. Como cada definição dá um enfoque a um aspecto chave diferente, ganhamos muito ao olhá-las sob a mesma luz.

Portanto, P2P é:

  • o compartilhamento de recursos e serviços computacionais por uma troca direta entre sistemas (Intel P2P working group);
  • o uso de dispositivos na periferia da internet de modo não-cliente (Alex Weytsel, Aberdeen);
  • ter um computador operacional da qualidade de um servidor, um sistema de endereçamento independente de DNS e são capazes de lidar com conectividade variada (Ross Lee Graham);
  • um sistema com tempo de vida independente (Tim Kindberg, HP Labs).

Apesar de já ser possível perceber algumas das vantagens que um sistema como este pode nos proporcionar, é necessário formalizá-las. Para tal, vamos observar cada característica de um sistema P2P e tentar identificar suas implicações.

Características e seus Benefícios

O artigo de de Dejan S. Milojicic et al. entitulado "Peer-to-Peer Computing", publicado em 2002, cita diversas características referentes às redes Par-a-Par. Ao analisarmos cada uma delas, podemos extrair seus benefícios:

  • descentralização: uma das ideias mais poderosas desta característica é o ênfase na posse e no controle dos recursos pelo usuário. Afinal, em um modelo descentralizado, cada nó é um participante igualitário. Uma arquitetura assim é bastante tolerante a falhas, já que não existe um ponto central para falhar. Na prática, no entanto, isto torna a implementação de sistemas P2P mais desafiante, sendo um dos motivos pelos quais muitas aplicações optam por um modelo híbrido;
  • escalabilidade: é um benefício imediato decorrente da descentralização. Serviços P2P como o Napster já mantiveram até 6 milhões de usuários simultâneos em sua utilização de pico;
  • anonimato: apesar de controversos, objetivos da concepção das redes P2P incluem permitir o uso de sistemas sem preocupações legais e sem possibilidade de censura. Existem basicamente três tipos: anonimato do remetente, do destinatário e mútuo. Por exemplo, técnicas de multicast podem garantir anonimato dos destinatários, como descrito no artigo "Networks Without User Observability", de Pfitzmann e Waidner, publicado em 1987;
  • custo de propriedade e performance: um dos princípios da computação P2P é o da propriedade compartilhada. Assim, é possível obter enorme performace por um custo comparativamente menor. Por exemplo, em 2002, o sistema SETI@home (Search for Extraterrestrial Intelligence), que utilizava os computadores de seus usuários para computar dados de telescópios, era mais veloz que o supercomputador mais rápido disponível no mundo, com um custo expressivamente menor (cerca de 1%);
  • conectividade ad-hoc: em uma arquitetura P2P, a configuração da rede em um dado momento é difícil de ser prevista. Por exemplo, uma computação distribuída não irá ser executada em todos os participantes a todo tempo. Alguns nós estarão disponíveis em alguns momentos, enquanto outros simplesmente estarão completamente inacessíveis. Aplicações P2P precisam estar cientes desta natureza ad-hoc e lidar com sistemas constantemente entrando e saindo da lista de nós disponíveis.

Apesar da lista de características e benefícios de uma rede Par-a-Par ser bastante extensa, logo começam a ficar claros os desafios que acabam surgindo junto com sua implementação. Tendo em mãos definições um pouco mais formais, podemos começar a entender alguns problemas enfrentados no mundo atual decorrentes da popularização da arquitetura P2P.

Desafios distribuídos, lutas fragmentadas

Um sistema de compartilhamento de arquivos descentralizado abre brechas para alguns tipos de ataques. Além dos riscos já conhecidos do modelo cliente-servidor, como mascarar arquivos maliciosos utilizando nomes inofensivos (e.g. um malware com o nome "Orange is the New Black Episódio 1"), a arquitetura Par-a-Par dificulta o combate à pirataria. Os detentores dos direitos autorais precisam agora monitorar cada rede Par-a-Par, podendo processar diretamente os usuários que compartilham sua propriedade intelectual de forma indevida. De acordo com o Daily Express, um dos jornais do Reino Unido, mais de 1000 processos por pirataria em torrent foram emitidos durante os dois primeiros meses de 2018, a maioria por companhias produtoras de filmes adultos.

Além disso, como cada nó da aplicação também possui funções de servidor, a vulnerabilidade a ataques remotos aumenta. Problemas de segurança nas aplicações Par-a-Par podem levar a investidas maliciosas, incluindo ataques de roteamento (e.g. encaminhar pedidos incorretamente) e de negação de serviço. Dentre as diversas soluções buscadas para este último tipo de ataque, um artigo de 2011 sugere abordagens relacionadas a esconder a posição dos arquivos, diminuindo seu número de cópias.