Freenet (software)

Freenet

Logotipo da Freenet
Dados básicos

Mantenedor O Projeto Freenet
Ano de publicação 25 de julho de 2000
Versão atual  0.7.5 build 1489
( 15 de dezembro de 2020 )
sistema operacional Plataforma independente
linguagem de programação Java
categoria Software de segurança , anonimato , ponto a ponto
Licença GNU General Public License
Falando alemão sim
freenetproject.org

Freenet é um peer-to-peer - software para configurar uma rede de computadores distribuída cujo objetivo é armazenar dados enquanto a censura é contrária e anônima para permitir a troca de informações. Esse objetivo deve ser alcançado por meio de descentralização , redundância , criptografia e roteamento dinâmico . Freenet é desenvolvido como software livre sob a GPL . Em termos simplificados, o Freenet pode ser visto como um armazenamento de dados vagabundo , que todos os participantes podem acessar igualmente ( ponto a ponto ). Servidores de nomes centrais, discos rígidos de servidor e estruturas semelhantes são evitados consistentemente de maneira construtiva. Apenas a funcionalidade de transferência da Internet normal é necessária. De acordo com a avaliação dos desenvolvedores, ainda é uma versão de teste .

história

Em 1999, o estudante irlandês Ian Clarke descreveu um "sistema descentralizado de armazenamento e recuperação de informações distribuídas" em um artigo. Pouco depois de seu lançamento, Clarke e um pequeno número de voluntários começaram a implementar essa ideia como software livre.

Em março de 2000, a primeira versão estava pronta para publicação. No período seguinte houve muita cobertura sobre a Freenet, mas a imprensa se preocupou principalmente com os efeitos sobre os direitos autorais e menos com o objetivo da comunicação livre. O mundo acadêmico também se preocupou com a Freenet: de acordo com o CiteSeer, o artigo de Clarke foi o documento científico mais citado em ciência da computação em 2000.

O Freenet é desenvolvido de forma distribuída com o auxílio da Internet. O projeto fundou a organização sem fins lucrativos "The Freenet Project Inc." e empregou Matthew Toseland como programador em tempo integral desde setembro de 2002, que é pago por doações e os rendimentos de produtos derivados . Além disso, outros trabalham livremente.

Em janeiro de 2005, planejou- se reescrever completamente a próxima versão, Freenet 0.7 . Em meados de abril de 2005, os desenvolvedores da Freenet começaram a falar na lista de discussão aberta sobre projetar a Freenet como uma chamada Darknet , o que significa que o acesso só pode ocorrer a “convite” dos participantes existentes. (Veja a seção Darknet para detalhes .) Este elemento é o novo recurso mais importante no 0.7.

A ideia por trás do Freenet 0.7 planejado foi então apresentada por Ian Clarke e o matemático Oskar Sandberg em dois eventos de hackers, em 29 de julho de 2005 no 13º DEFCON e em 30 de dezembro de 2005 no 22º Chaos Communication Congress (22C3).

No início de abril de 2006, a primeira versão alfa do Freenet 0.7 foi publicada.

Diversos

No final de 2003, um grupo chamado Freenet-China traduziu o programa para o chinês e o distribuiu na República Popular da China em CDs e disquetes . Os filtros de computador e Internet chineses bloqueiam a palavra “Freenet” (em 30 de agosto de 2004). Conexões de Internet de Freenets são bloqueadas para versões anteriores a 0.7. Isso era possível porque até então alguns bytes previsíveis eram gerados no início do estabelecimento de uma conexão.

Uma análise publicada em maio de 2004 afirma que a maioria dos usuários do Freenet naquela época eram dos EUA (35%), Alemanha (15%), França (11%), Grã-Bretanha (7%) e Japão (7%). Esta análise é provavelmente baseada na lista de endereços IP dos participantes, que foi fornecida pelo projeto para versões anteriores a 0.7 e, portanto, não leva em consideração redes Freenet separadas, como a Freenet-China.

usar

Cada usuário fornece à Freenet parte de seu disco rígido como armazenamento. Você não compartilha certas pastas ou arquivos com outras pessoas, como é o caso do compartilhamento normal de arquivos , mas reserva uma certa quantidade de espaço no disco rígido (na ordem de gigabytes ), que a Freenet usa de forma independente com bits criptografados de dados da rede .

O uso da Freenet é comparável ao da World Wide Web (WWW). Usando qualquer navegador, você pode navegar na Freenet como está acostumado na WWW. O módulo do programa FProxy funciona como um programa de servidor local e geralmente está disponível em http: // localhost: 8888 /. Nessa página de entrada, você pode solicitar ou fazer upload de endereços individuais da Freenet, e links para um pequeno número de sites da Freenet são fornecidos, que servem como o primeiro ponto de contato na Freenet.

Gateway da Freenet 0.5 (2005, trecho): Se a imagem Activelink foi carregada com sucesso, a página associada provavelmente também pode ser acessada.

Um freesite representa para a Freenet aproximadamente a mesma coisa que os sites representam para a WWW. Estes são documentos acessíveis através do gateway Freenet. Eles podem conter links para outros sites gratuitos ou para outros dados que podem ser acessados ​​usando uma chave Freenet.

Com a ajuda dos chamados Activelinks , a distribuição de sites gratuitos selecionados pode ser promovida. Se você incluir uma pequena imagem de outro freesite em seu próprio freesite, ela será automaticamente promovida quando seu próprio freesite for carregado com a imagem.

Leva um tempo relativamente longo para carregar o conteúdo porque a Freenet define as prioridades de segurança. No início, pode demorar vários minutos porque o assinante ainda não está bem integrado na rede Freenet. Somente por meio da integração o programa descobre quais outros participantes podem enviar solicitações da melhor forma.

campo de uso

Além da simples publicação de informações, a Freenet é adequada para comunicação com deslocamento temporal, o que significa que tanto um tipo de sistema de e-mail quanto fóruns de discussão podem ser baseados na Freenet.

Um tipo muito comum de site gratuito são os blogs (weblogs), que os usuários da Freenet chamam de “flogs” (freelogs). Um incentivo especial para o estabelecimento é o anonimato com que se pode publicar suas reportagens na Freenet.

WebOfTrust: comunicação anônima e resistente a spam

Com o plug-in WebOfTrust, a Freenet oferece um sistema anti-spam baseado em identidades anônimas e valores de confiança. Qualquer identidade anônima pode dar confiança positiva ou negativa a qualquer outra identidade anônima. Os valores de confiança das identidades conhecidas são combinados para poder avaliar identidades desconhecidas. Apenas os dados de identidades com confiança não negativa serão baixados.

Novas identidades podem ser divulgadas por meio de imagens Captcha . Eles resolvem captchas de outras identidades e obtêm uma confiança de 0. Isso significa que eles são visíveis para essas identidades, mas não para quaisquer outras. Se eles escreverem postagens significativas, eles podem receber confiança positiva (> 0) para que sejam visíveis a todas as identidades que confiam nas identidades confiáveis.

Software para Freenet

Existe um software especial para upload de dados, o que em particular facilita a troca de arquivos maiores. Estes são decompostos internamente em pequenos pedaços ( arquivos divididos ) e, se necessário, fornecidos com blocos de dados redundantes ( correção de erros ).

Detalhes técnicos

funcionalidade

Todo o conteúdo é armazenado nas chamadas chaves . A chave é claramente derivada do valor hash do conteúdo e não tem nada a ver com o conteúdo em termos de aparência. (Por exemplo, um arquivo de texto com a Lei Básica pode ter a chave YQL .) As chaves são armazenadas em uma chamada tabela hash distribuída .

Cada participante não salva apenas o conteúdo que oferece a si mesmo. Os chamados - em vez disso, todo o conteúdo nos vários computadores são nós ( nós em inglês ) - distribuídos. A seleção de onde um arquivo é salvo é feita por roteamento . Com o tempo, cada nó se especializou em certos valores-chave.

O armazenamento no computador é criptografado e sem o conhecimento do respectivo usuário. Esta função foi introduzida pelos desenvolvedores para dar aos usuários da Freenet a oportunidade de negar com credibilidade o conhecimento dos dados que por acaso são mantidos prontos para a rede na memória local reservada para a Freenet. Até o momento, porém, não são conhecidos casos na jurisprudência, pelo menos na Alemanha, em que se tenha optado pela negação do conhecimento, de modo que a eficácia dessa medida não foi esclarecida nos tribunais alemães.

Quando um arquivo deve ser baixado da Freenet , ele é pesquisado usando o algoritmo de roteamento. A solicitação é enviada a um nó cuja especialização é o mais semelhante possível à chave procurada.

Exemplo: Estamos procurando o HGS chave. Estamos conectados a outros nós da Freenet que possuem as seguintes especializações: ANF, DYL, HFP, HZZ, LMO. Escolhemos o HFP como destinatário do nosso pedido, porque a sua especialização mais se aproxima da chave que procuramos.

Seqüência típica de uma solicitação: A solicitação é encaminhada pela rede de nó a nó, retorna de um beco sem saída (etapa 3) e um loop (etapa 7), finalmente encontra os dados que está procurando e os retorna.

Se o destinatário não tiver a chave na memória, repete o procedimento como se ele próprio quisesse a chave: envia o pedido para o nó que, em sua opinião, é o mais especializado.

E assim continua. Quando um nó finalmente possui o arquivo que está procurando, ele é transportado do local para o solicitante original. Mas esse transporte ocorre por meio de todos os nós envolvidos na cadeia de solicitação . Este design é uma característica central da Freenet. Serve para preservar o anonimato da fonte e do destinatário. Porque, se você receber uma solicitação, não poderá saber se o solicitante deseja obter o arquivo ou apenas encaminhá-lo.

Quando o arquivo é transferido, alguns computadores salvam uma cópia na memória. Arquivos populares chegam a muitos computadores na rede Freenet. Isso aumenta a probabilidade de que outras solicitações desse arquivo sejam bem-sucedidas mais rapidamente.

O upload de um arquivo para a Freenet funciona de forma muito semelhante: a Freenet também procura o nó aqui cuja especialização mais se aproxima da chave. Isso é útil para que o arquivo seja para onde as solicitações dessas chaves são enviadas.

Como o objetivo do upload não é encontrar alguém com os dados após alguns encaminhamentos, um valor é definido de antemão para a frequência com que os dados são encaminhados.

Problemas

Para que o Freenet funcione, você precisa do endereço de pelo menos um outro usuário além do próprio programa. O projeto apoia a integração de novos nós, oferecendo uma coleção atualizada de tais endereços ( seednodes ) em seu site . No entanto, quando esta oferta desaparece ou fica inacessível para alguém com acesso limitado à internet, o primeiro ponto de conexão torna-se um problema. Além disso, por razões de segurança e topologia de rede, é mais desejável que os nós iniciais privados sejam distribuídos entre amigos.

Nós de baixa velocidade, assimétricos ou de vida curta podem dificultar o fluxo de dados. A Freenet tenta neutralizar isso com um roteamento inteligente (consulte roteamento ).

A Freenet não pode garantir o armazenamento permanente de dados. Como o espaço de armazenamento é finito, há uma compensação entre publicar novo conteúdo e manter o conteúdo antigo.

chave

Freenet possui dois tipos de chaves.

Chave hash de conteúdo (CHK)

CHK é a chave de armazenamento de dados no nível do sistema ( nível inferior ). Ele é criado por hash do conteúdo do arquivo a ser salvo. Isso fornece a cada arquivo um identificador absoluto ( GUID ) praticamente exclusivo . Até a versão 0,5 / 0,6 SHA-1 é usado para isso .

Em contraste com os URLs , agora você pode ter certeza de que a referência CHK se refere exatamente ao arquivo que você quis dizer. Os CHKs também garantem que cópias idênticas carregadas na Freenet por pessoas diferentes sejam mescladas automaticamente, porque cada participante calcula a mesma chave para o arquivo.

Chave de subespaço assinada (SSK)

O SSK usa um criptosistema assimétrico para criar um namespace pessoal que todos podem ler, mas apenas o proprietário pode escrever. Primeiro, um par de chaves aleatório é gerado. Para adicionar um arquivo, primeiro escolha uma breve descrição, por exemplo política / alemanha / escândalo . O SSK do arquivo é então calculado por hash da metade pública da chave do subespaço e da string de caractere descritiva independentemente uma da outra, concatenando os resultados e, em seguida, hash do resultado novamente. Assinar o arquivo com a metade privada da chave permite a verificação, pois cada nó de processamento do arquivo SSK verifica sua assinatura antes de aceitá-la.

Para obter um arquivo de um sub-namespace, você só precisa da chave pública desse espaço e da sequência de caracteres descritiva a partir da qual o SSK pode ser reproduzido. Para adicionar ou atualizar um arquivo, você precisa da chave privada para criar uma assinatura válida. SSKs habilitam confiança garantindo que todos os arquivos no subnamespace foram criados pela mesma pessoa anônima. Assim, as várias áreas práticas de aplicação da Freenet são possíveis (ver área de aplicação ).

Tradicionalmente, os SSKs são usados ​​para armazenar arquivos indiretamente, contendo ponteiros que apontam para os CHKs, em vez de conter os próprios dados. Esses “arquivos indiretos” combinam a legibilidade para humanos e a autenticação do autor com a verificação rápida de CHKs. Eles também permitem que os dados sejam atualizados enquanto a integridade referencial é preservada: para atualizar, o proprietário dos dados primeiro carrega uma nova versão dos dados, que recebe um novo CHK, já que os conteúdos são diferentes. O proprietário então atualiza o SSK para que aponte para a nova versão. A nova versão estará disponível no SSK original e a versão antiga permanecerá acessível no CHK antigo.

Os arquivos indiretos também podem ser usados ​​para dividir arquivos grandes em muitas partes, carregando cada parte em um CHK diferente e um arquivo indireto apontando para todas as partes. Nesse caso, entretanto, CHK é usado principalmente para o arquivo indireto. Finalmente, os arquivos indiretos também podem ser usados ​​para criar namespaces hierárquicos nos quais os arquivos de pasta apontam para outros arquivos e pastas.

O SSK também pode ser usado para implementar um sistema de nome de domínio alternativo para nós que mudam frequentemente de endereço IP. Cada um desses nós teria seu próprio subespaço e poderia ser contatado recuperando sua chave pública para encontrar o endereço atual. Essas chaves de resolução de endereço realmente existiam até a versão 0.5 / 0.6, mas foram abolidas.

Proteção contra solicitações excessivas

Consultas e uploads são fornecidos com um HTL (English hops to live baseado em TTL , ou seja: com que frequência podem ser encaminhados?), Que é reduzido em 1 após cada encaminhamento. Há um limite superior para o valor inicial, de modo que a rede não seja sobrecarregada por ações com valores ridiculamente altos. O valor atual é 20: se uma solicitação não retornar um resultado após tantos saltos, o conteúdo provavelmente não está disponível - ou o roteamento não funciona, mas HTLs mais altos também não ajudam. O mesmo se aplica ao upload: após 20 saltos, as informações devem ser suficientemente divulgadas. (Essa propagação pode certamente aumentar ao consultar os dados.)

Encaminhamento

Em Freenets encaminhamento de um pedido do nó de processamento está em um encaminhados outra cuja especialização, é o mais semelhante possível, na opinião do remetente, a chave pesquisada.

A Freenet decidiu, portanto, contra as duas alternativas principais:

  • Um índice central de todos os arquivos disponíveis - o roteamento mais simples, usado pelo Napster, por exemplo - é vulnerável por causa da centralização.
  • Disseminar a solicitação para todos os nós conectados - usados pela Gnutella, por exemplo - desperdiça recursos e não é escalável .

A maneira como a Freenet decide a quem encaminhá-lo constitui o núcleo do algoritmo da Freenet.

Roteamento antigo

O primeiro algoritmo de roteamento da Freenet era relativamente simples: se um nó encaminha uma solicitação de uma determinada chave para outro nó e este pode atendê-la, o endereço de um nó de retorno é listado na resposta. Essa pode - apenas possivelmente - ser a pessoa que salvou os dados localmente. Presume-se que o nó especificado seja um bom endereço para consultas futuras de chaves semelhantes.

Uma analogia para esclarecimento: como seu amigo Heinrich foi capaz de responder com sucesso a uma pergunta sobre a França, ele também deve ser um bom contato para uma pergunta sobre a Bélgica.

Apesar de sua simplicidade, essa abordagem tem se mostrado muito eficaz, tanto em simulações quanto na prática. Um dos efeitos colaterais esperados era que os nós tendem a se especializar em certas áreas-chave. Isso pode ser visto de forma análoga ao fato de que as pessoas se especializam em certas áreas. Este efeito foi observado com nós Freenet reais na rede; a imagem a seguir representa as chaves armazenadas por um nó:

Representação das chaves que são armazenadas por um nó

O eixo x representa o espaço chave , da chave 0 à chave 2 160 -1. As listras escuras mostram áreas onde o nó tem conhecimento detalhado de para onde as solicitações de tais chaves devem ser roteadas.

Se o nó tivesse acabado de ser inicializado, as chaves seriam distribuídas uniformemente no espaço da chave. Este é um bom indicador de que o algoritmo de roteamento está funcionando corretamente. Os nós se especializam, como no gráfico, por meio do efeito de feedback quando um nó responde com sucesso a uma solicitação de uma chave específica - isso aumenta a probabilidade de que outros nós encaminhem solicitações de chaves semelhantes a ele no futuro. Por um longo período de tempo, isso garante a especialização que é claramente visível no diagrama acima.

Roteamento de próxima geração (NGR)

O objetivo do NGR é tornar as decisões de roteamento muito mais inteligentes, coletando informações extensas para cada nó na tabela de roteamento, incluindo o tempo de resposta ao solicitar certas chaves, a porcentagem de solicitações que encontraram informações com sucesso e o tempo que levou para estabelecer uma conexão inicial . Quando uma nova solicitação é recebida, essa informação é usada para estimar qual nó provavelmente será capaz de obter os dados no menor tempo, e esse será o nó para o qual a solicitação será encaminhada.

Estimativa DataReply

O valor mais importante é a estimativa para uma consulta de quanto tempo levará para obter os dados. O algoritmo deve atender aos seguintes critérios:

  • Ele deve ser capaz de adivinhar sensatamente sobre as chaves que ainda não viu.
  • Deve ser progressivo: se o desempenho de um nó muda com o tempo, isso deve ser representado. Mas ele não deve ser excessivamente sensível às últimas flutuações, que se desviam significativamente da média.
  • Tem que ser sem escala : Imagine uma implementação ingênua que divide o espaço da chave em várias seções e tem uma média para cada uma. Agora imagine um nó onde a maioria das solicitações recebidas estão em uma seção muito pequena do espaço da chave. Nossa implementação ingênua não seria capaz de representar variações no tempo de resposta neste pequeno intervalo e, portanto, limitaria a capacidade do nó de estimar com precisão os tempos de roteamento.
  • Deve ser eficientemente programável.
Rte diag.png

O NGR cumpre estes critérios: Os pontos de referência são mantidos - é configurável, 10 é um valor típico - que são inicialmente distribuídos uniformemente no espaço da chave. Se houver um novo valor de tempo de roteamento para uma chave específica, os dois pontos mais próximos do novo valor se aproximarão dele. A extensão dessa aproximação pode ser alterada para ajustar o quão “esquecido” o estimador é.

O diagrama ao lado mostra como dois pontos de referência ( azul ) são movidos em direção ao novo valor ( vermelho ).

Se uma estimativa for criada para uma nova chave, a linha verde mostra a atribuição da resposta estimada à chave.

Tratamento de diferentes tamanhos de arquivo

Existem dois valores de tempo a serem considerados quando recebemos um DataReply:

  1. O tempo até o início da resposta chegar.
  2. A hora de transferir os dados.

Para combinar esses dois aspectos em um valor, os dois números são usados para estimar o tempo total entre o envio da solicitação e a conclusão da transferência . Para o tempo de transferência, presume-se que o arquivo tenha o comprimento médio de todos os dados no armazenamento local.

Agora temos um único valor que pode ser comparado diretamente com outras medidas de tempo nas solicitações, mesmo se os arquivos forem de tamanhos diferentes.

O que fazer se os dados não forem encontrados

Se uma solicitação passou pelo número máximo de nós de acordo com o HTL (ver Proteção contra solicitações excessivas ), a mensagem “Arquivo não encontrado” ( DataNotFound , DNF para abreviar ) é enviada de volta ao solicitante.

Um DNF pode ter duas causas:

  1. Os dados estão disponíveis na Freenet, mas não foram encontrados. Este DNF revelaria uma deficiência no roteamento dos nós envolvidos. Chamamos isso de DNF ilegítimo a seguir .
  2. Os dados nem existem. Este DNF não apresentaria quaisquer deficiências. Vamos chamá-lo de legítimo abaixo .

Não há maneira prática de descobrir se uma DNF é legítima ou ilegítima. Vamos supor por um momento que podemos identificar DNFs ilegítimos. Então, o custo seria o tempo para receber a DNF ilegítima e enviar uma nova solicitação para outro lugar.

Podemos estimar o primeiro observando quanto tempo levaram DNFs anteriores do nó específico - em proporção ao HTL da solicitação: Uma solicitação com HTL = 10 passará por duas vezes mais nós do que um com HTL = 5 e, portanto, leva cerca de duas vezes tanto tempo para retornar DNF. Podemos estimar o segundo valor tomando o tempo médio que leva para receber dados com sucesso.

Agora vamos imaginar um nó Freenet com roteamento perfeito, cuja única saída DNF seria legítima: pois se os dados estivessem na rede, ele o encontraria com seu roteamento perfeito. A participação do DNF nas respostas que esse nó retornaria seria igual à participação do DNF legítimo. Esse nó praticamente não pode existir, mas podemos aproximá- lo procurando o nó com a menor proporção de DNF em nossa tabela de roteamento.

Agora podemos calcular o custo de tempo de DNFs e também podemos aproximar qual proporção de DNFs é legítima - e que, portanto, não é considerada uma perda de tempo. Com isso, podemos adicionar custos de tempo de roteamento estimado para cada nó para contabilizar DNFs.

Lidando com conexões com falha

Não podemos interagir com nós gravemente sobrecarregados. Podemos explicar essa possibilidade armazenando o número médio de conexões com falha para cada nó e quanto tempo cada uma durou. Esses valores são adicionados ao tempo de roteamento estimado para cada nó.

Conhecimento adquirido

Um dos problemas na Freenet atualmente sendo observado pela NGR é o tempo que leva para um nó da Freenet acumular conhecimento suficiente da rede para rotear com eficiência. Isso é particularmente prejudicial para a facilidade de uso do Freenet, já que as primeiras impressões são críticas para novos usuários, e isso geralmente é o pior, pois ocorre antes que o nó Freenet possa rotear com eficácia.

A solução é construir alguma confiança qualificada entre os nós da Freenet e permitir que eles compartilhem as informações coletadas uns sobre os outros, embora de uma maneira bastante suspeita.

Existem duas maneiras pelas quais um nó Freenet aprende sobre novos nós.

  1. Quando o programa é iniciado, ele carrega um arquivo que contém a experiência de roteamento de outro nó mais experiente. Com o NGR, essas informações são enriquecidas com dados estatísticos para que um nó, mesmo sendo iniciado pela primeira vez, já tenha o conhecimento de um nó experiente. Este conhecimento é adaptado no decorrer de sua atividade de acordo com sua própria experiência.
  2. A outra opção é o campo " DataSource " , que é enviado de volta para solicitações bem-sucedidas. Este campo contém um dos nós da cadeia e informações estatísticas sobre ele. Porém, como essa informação pode ser manipulada, ela será adaptada por cada nodo que a encaminhar se o próprio nodo souber do endereço mencionado.
Benefícios do NGR
  • Adapta-se à topologia da rede.
O roteamento antigo ignorava a topologia subjacente da Internet: os nós conectados rápida e lentamente eram tratados da mesma forma. Em contraste, a NGR baseia suas decisões nos tempos de roteamento reais.
  • O desempenho pode ser avaliado localmente.
Com o roteamento antigo, a única maneira de avaliar seu desempenho era testá-lo. Com o NGR, a diferença entre o tempo de roteamento estimado e o real fornece um valor simples de quão eficaz você é. Agora, se uma mudança no algoritmo resultar em estimativas melhores, sabemos que é melhor; e vice versa. Isso acelera muito o desenvolvimento futuro.
  • Aproximando-se do ótimo.
Em um ambiente onde apenas um nó pode ser confiável, é razoável dizer que todas as decisões devem ser baseadas nas próprias observações. Se as próprias observações anteriores forem usadas de maneira ótima, o algoritmo de roteamento é ótimo. Claro, ainda há espaço em termos de como o algoritmo estima os tempos de roteamento.

segurança

Darknet

Ao usar o Freenet (status: Versão 0,5 / 0,6), você pode se conectar rapidamente com um grande número de outros usuários. Portanto, não é problema para um invasor coletar os endereços IP de grandes partes da rede Freenet em um curto espaço de tempo . Isso é chamado de colheita (inglês para "colheita").

Se a Freenet for ilegal em um país como a China e permitir a colheita , os governantes podem simplesmente bloqueá-la: você inicia um nó e coleta endereços. Isso fornece uma lista de nós dentro do país e uma lista de nós fora dele. Você bloqueia todos os nós fora do país e corta a conexão de todos os nós dentro do país para que eles não possam mais acessar a Internet.

Em meados de abril de 2005, os desenvolvedores da Freenet começaram a falar na lista de discussão aberta sobre projetar a Freenet como uma chamada Darknet , o que significa que o acesso só pode ocorrer a “convite” dos participantes existentes.

No entanto, os desenvolvedores estão abrindo novos caminhos com o plano de criar uma darknet global. Eles acreditam na pequena propriedade de mundo dessa darknet - isso significa que cada participante pode alcançar todos os outros por meio de uma pequena cadeia de saltos . Cada pessoa (ator social) no mundo está conectada a todas as outras por meio de uma cadeia surpreendentemente curta de relacionamentos conhecidos. Como deve haver um certo grau de confiança para um convite para a Freenet, eles esperam que a estrutura de rede resultante reflita a rede de relacionamentos entre as pessoas.

As discussões sobre essa abordagem tiveram como consequência que não apenas uma Darknet deveria ser desenvolvida, mas que também haveria uma rede aberta, como era a Freenet inteira antes de 0.7. Existem duas possibilidades de como esses dois devem estar relacionados entre si:

  1. Existem conexões entre a rede aberta e a darknet. Uma chamada rede híbrida seria criada. Os conteúdos publicados em uma rede também podem ser acessados ​​na outra rede. Essa abordagem se torna um problema quando muitos darknets pequenos e não conectados dependem da conexão por meio da rede aberta. Isso corresponde à implementação atual da versão 0.7.0.
  2. As duas redes estão desconectadas. O conteúdo publicado em uma rede não está inicialmente disponível na outra. Porém, seria possível transferir dados sem o envolvimento do autor, mesmo com chaves SSK. Esta opção foi preferida pelo desenvolvedor principal no passado (status: maio de 2005), pois permite que o funcionamento de uma darknet global autônoma seja verificada apesar da rede aberta alternativa.

Possibilidade de censura democrática

Em 11 de julho de 2005, o desenvolvedor em tempo integral Matthew Toseland apresentou uma proposta sobre como a censura democrática poderia ser implementada no Darknet. Para isso, os dados teriam que ser armazenados por um período maior de tempo via uploads. Quando um nó "reclama" sobre o conteúdo, essa reclamação se espalha e outros nós podem entrar. Se uma maioria suficiente de nós vizinhos apoiar uma reclamação, o processo de upload será rastreado até os nós que não suportam a reclamação usando os dados armazenados.

Assim que forem constatadas, possíveis sanções (em ordem crescente da maioria exigida)

  • Reprimenda
  • Desativação de roteamento premix para o nó
  • Separação da conexão ao nó
  • Divulgação da identidade do nó

Embora a principal crítica a esta proposta fosse que a Freenet estava se distanciando da liberdade absoluta da censura e, portanto, não era mais aceitável para o povo libertário , Toseland respondeu que a Freenet em seu estado anterior não era aceitável para todos aqueles que não tinham opiniões libertárias e iriam ser dissuadidos, por exemplo, pela pornografia infantil.

Outro ponto de crítica foi a possibilidade de comportamento de pensamento de grupo com as queixas.

Dois dias após a apresentação, Toseland se afastou de sua sugestão, uma vez que a extensa coleta de dados poderia colocar em perigo a Darknet se nós individuais fossem identificados e avaliados por um invasor.

futuro

HTL

HTL (consulte Proteção contra solicitações excessivas ) está sendo reprojetado por motivos de segurança. Foi até discutido abolir o HTL, uma vez que um invasor pode extrair informações do número. O conceito seria tal que, para cada nó, há uma certa probabilidade de que a solicitação seja encerrada. No entanto, algumas investigações cobririam distâncias curtas insanas e terminariam após um salto, por exemplo. Além disso, os nós “aprendem” mal uns com os outros quando as consultas não são seguras. Foi encontrado um compromisso:

  • O HTL mais alto é 11.
  • As solicitações saem de um nó com HTL = 11.
  • Há uma chance de 10% de diminuir o HTL de 11 para 10. Isso é determinado uma vez por conexão para tornar os "ataques de correlação" mais difíceis.
  • Há 100% de chance de rebaixar o HTL de 10 para 9, de 9 para 8 e assim por diante até 1. Isso garante que as solicitações sempre passem por pelo menos dez nós; então as estimativas não são muito confusas. (Os nós podem "aprender" melhor uns com os outros.)
  • Há 20% de chance de cancelar solicitações com HTL = 1. Isso evita alguns ataques, por exemplo, fazer upload de conteúdo diferente para nós diferentes ou testar a memória de um nó.

protocolo

Freenet usa UDP da versão 0.7 . Um transporte TCP poderia ser implementado posteriormente, mas o UDP é o transporte preferido. Versões mais antigas usam apenas TCP .

chave

Todo o conteúdo deve ser armazenado em chaves de 32 KB ou 1 KB. Como antes, arquivos menores são expandidos por dados de aparência aleatória, mas claramente resultantes; arquivos maiores são divididos.

Roteamento pré-mix

O conceito de roteamento pré-mix é usado apenas para segurança. Antes de um pedido ser processado de fato por outros nós, ele é criptografado e encapsulado por meio de alguns nós de modo que o primeiro nos conheça, mas não o pedido, e o último, o pedido, mas não nós. Os nós são escolhidos aleatoriamente dentro de uma estrutura razoável. O conceito de "roteamento cebola" ( roteamento cebola ) ilustra: A solicitação é criptografada várias vezes (para uma cebola), e cada nó no curso da pré-mistura "descasca" a instância de criptografia para que apenas o último nó detecte a solicitação - mas ela o faz não sei de quem vem o pedido.

I2P

Em janeiro de 2005, foi discutido o uso do projeto relacionado I2P como uma camada de transporte . No entanto, essa consideração foi rejeitada.

Pedidos passivos e passivos inversos

Solicitações passivas são solicitações que permanecem na rede até que o arquivo que está sendo pesquisado possa ser encontrado. As solicitações inversas passivas devem fornecer conteúdo de forma mais ou menos permanente, usando um mecanismo semelhante às solicitações passivas.

Os aspectos de segurança ainda não foram totalmente compreendidos. Eles serão esclarecidos antes da implementação. As solicitações passivas e passivas inversas provavelmente só virão após a versão 1.0.

Esteganografia

A esteganografia virá apenas após a 1.0, o Transport Plugin Framework do Google Summer of Code 2012 foi uma primeira abordagem, mas não atingiu a maturidade de produção.

Projetos relacionados

  • GNUnet - outro programa com objetivos semelhantes (principalmente compartilhamento de arquivos)
  • Projeto relacionado ao I2P , mas com um objetivo diferente (implementação de um sistema completo semelhante à Internet, incluindo todas as áreas de aplicação conhecidas como e-mail, IRC ou BitTorrent )
  • RetroShare - outro programa com objetivo semelhante, mas mais voltado para compartilhamento de arquivos, mensageiros e grupos de notícias.
  • Rede relacionada ao Tor com base no roteamento onion

Prêmios

Links da web

Commons : Freenet  - coleção de imagens, vídeos e arquivos de áudio

Evidência individual

  1. Freenet: Pessoas . 22 de setembro de 2008. Arquivado do original em 21 de setembro de 2013. Recuperado em 22 de setembro de 2008.
  2. petsymposium.org .
  3. github.com .
  4. ^ Ian Clarke : Um sistema distribuído de armazenamento e recuperação de informação anônima. ( Memento de 27 de setembro de 2007 no Internet Archive ) (PDF, inglês; 246 kB) 1999.
  5. Breves informações sobre a palestra DefCon
  6. Breves informações sobre a palestra 22C3
  7. Freenet-China ( Memento de 19 de fevereiro de 2014 no Internet Archive )
  8. Xiao Qiang : As palavras que você nunca vê no ciberespaço chinês ( Memento de 26 de agosto de 2010 no Internet Archive ). em: China Digital Times . 30 de agosto de 2004.
  9. Análise Antipirataria ( Memento de 3 de junho de 2004 no Arquivo da Internet )
  10. The Freenet Project: Understand Freenet ( Memento de 28 de dezembro de 2011 no Internet Archive ) , acessado em 15 de maio de 2008, inglês, citação: “É difícil, mas não impossível, determinar quais arquivos estão armazenados em seu local Freenet Datastore. Isso é para permitir uma negação plausível quanto ao tipo de material que está em seu disco rígido no armazenamento de dados. "
  11. Prêmio SUMA para o Projeto Freenet , Heise News de 12 de fevereiro de 2015, acessado em 3 de março de 2016
Esta versão foi adicionada à lista de artigos que vale a pena ler em 16 de maio de 2005 .