Anonimato em Redes P2P
Pedro Savarese Guilherme Nóbrega
Felipe Carregosa
• Software criado em 2000 por Ian Clarke;
• Plataforma Java;
• Somente P2P até v0.5, F2F após v0.7;
• Sensação de internet livre – anonimato e sem censura;
• Servidor proxy (dificulta rastreamento) e um disco rígido descentralizado (dificulta ataques);
• Inexistência de uma broadcast search;
Como funciona?
• As mensagens são encriptadas e repassadas por outros nós, dificultando o rastreamento de quem e o quê está pedindo;
• Cada usuário contribui com sua banda e um pedaço do disco (data store);
• Small World – um nó só tem consciência dos seus vizinhos e não da rede como um todo;
• Aumenta segurança e anonimato, desde que os seus vizinhos sejam confiáveis;
• Idéia originada de Jon Kleinberg.
Como funciona?
• Hops-to-live limit (definido pelo usuário);
• Identificador aleatório “único”; A falha ou sucesso de uma request é reportada de volta pela corrente ao nó que a enviou;
• Não há privilégio de um nó em relação a outro;
Modos de Operação
• Opennet (P2P): O usuário se conecta com nós aleatórios. Os vizinhos podem conseguir informações como que tipo de dados o usuário possui e busca.
• Darknet (F2F): Apenas conexões com nós conhecidos a priori são possíveis. Oferece altos níveis de segurança e anonimato, desde que os nós sejam confiáveis.
Armazenamento
• Armazenamento de arquivos dividido em duas partições.
• Short-Term Storage Cache: armazena todos os arquivos que passam pelo nó.
• Belonging Storage Cache: armazena dados que estejam de acordo com a identidade do nó. Usa uma política chamada sinkstore para centralizar os dados em nós similares.
• Ambos são liberados aleatoriamente.
Chaves
• CHK (Content Hash Keys): usadas para arquivos fixos.
CHK@filehash,decrypkey,cryptosettings (32kB)
• SSK (Signed Subspace Keys): usadas para arquivos com conteúdo alterável (freesites).
SSK@pubkeyhash,decrypkey,cryptosettings (1kB)
• KSK (Keyword Signed Keys): usadas para sites e arquivos com nomes. Não são seguras e são vulneráveis a spam e a
colisões.
Busca e Inserção
• Parâmetros de busca são encriptados por uma função hash;
• O hash é enviado para o nó do próprio usuario, determinando a chave e o HTL;
• Request é repassada pela “routing table”;
• Nós inteligentes;
Busca e Inserção
Key + HTL
Requester
Data Holder
Busca e Inserção
• Usuário encripta o dado e manda para si mesmo, determinando a chave e o HTL;
• Request de inserção busca o menor caminho com um hash o mais similar possível até expirar o HTL;
• Melhor caso x Pior caso;
• Na medida em que os nós “aprendem” sobre seus vizinhos, o melhor caso torna-se mais frequente;
Busca e Inserção
Key + HTL
Inserter Most Similar
Data Holder Não colisão -> “All-clear signal”
Envio do dado para D
Swapping
• Nós trocam de lugar quando as suas novas posições se
enquadram mais com o seu identificador. Possibilita que o roteamento ocorra em O(log n) no caso de uma small-world network.
Otimização
Criação da rede mundo pequeno:
Modelo de Watts-Strogatz:
Otimização
Modelo de Kleinberg:
Solução Descentralizada: Metropolis-Hastings
Ataques
• Eavesdropping na comunicação entre 2 usuários;
• Nós conspiradores;
• Pitch-Black Attack (swapping forçado);