Freenet: A Distributed Anonymous Information Storage and Retrieval System por Ian Clarke, Oskar Sandberg, Brandon Wiley, e Theodore W. Hong Apresentado por Walfredo Cirne Motivação • Computadores são hoje um meio de comunicação • Quem controla a comunicação tem (muito) poder • Como dividir este poder? – Como manter comunicação democrática? – Como garantir a liberdade de expressão? • Leis e atuação política são a resposta clássica para estas questões • Mas, será que conseguimos construir um sistema que garanta a liberdade de expressão? Censura × Liberdade de Expressão • Censurar é impedir alguém de comunicar sua opinião • Uma forma muito cruel (e efetiva) de censura é punir o autor (ou leitor) da opinião indesejada • Freenet foi construido para garantir anonimato Objetivos do Freenet • Anonimato para produtores e consumidores de informação • Negabilidade do armazenamento de informação • Resistência a tentativas de negar acesso a informação • Descentralização de toda as funções • Armazenamento e roteamento eficiente O Básico • Rede Peer-to-Peer – Você precisa conhecer o endereço de algum peer para se juntar ao Freenet • Peers podem publicar e consultar informação • Conteúdo é publicado usando um hash do título – Chave SHA-1 160 bit • Conteúdo é criptografado pelo título O Básico • Cada peer mantém: – conjunto de arquivos locais, i.e. (hash, conteúdo criptografado) – tabela de roteamento contendo (hash, peer responsável) • Consultas são enviadas ao peer que conhece o hash mais próximo do hash desejado – Consultas bem sucedidas incluem uma nova rota para origem do conteúdo • Consultas contém um id para evitar loops e hopsto-live para robustez Exemplo Detalhes sobre Consulta • Peers intermediários fazem cache do conteúdo que passa por eles • Peers tem uma probabilidade de assumir a origem do conteúdo ao roteá-lo • Espera-se que este esquema leve a: – Replicação de conteúdo populares – Especialização dos peers em parte do espaço de busca, melhorando assim o roteamento Armazanamento • Armazenamento começa com uma consulta para verificar se chave já existe • Colisão retorna erro e replica o conteúdo já existente na rede • Se não há colisão, o peer inseridor copia o conteúdo para os hops-to-live peers contactados Gerenciando os dados • LRU para “resolver” falta de espaço • Assim, o Freenet não garante a permanência eterna de conteúdo Detalhes do protocolo • Handshake para especificar protocolos • Mensagens contém: – 64-bit transaction ID – HTL counter – Depth counter Pesquisa e Atualização • Os próprios objetivos do Freenet levaram a um design que dificulta pesquisa e atualização • Pesquisa podia ser facilitada com arquivos especiais de keyword, que apontariam para o conteúdo, e que tolerariam duplicatas • Atualização poderia ser permitida via assinatura digital – requer indireção e faz id do conteúdo ser chave pública • Indices e compilações também poderiam ajudar na pesquisa Avaliação • Avaliação inicial usando simulação • 500 a 900 peers, onde cada peer: – Armazana no máximo 40 conteúdos – Começa com 10 conteúdos – Tem uma tabela de roteamento com 50 endereços • Configuração original da rede é linear – Note que esta hipótese é pessimista Consultas com Sucesso Número de Hops Segurança • Cobertura de segurança • DoS pode ser combatido com hash cash Conclusões • Freenet provê meios anonimous de armazenar e recuperar conteúdo • Não há como saber quantos usuários usam, mas já houve mais de 2 milhões de downloads • Mais informações em freenet.sourceforge.net