Freenet

Freenet är ett P2P-nätverk med mål att låta användare publicera material utan rädsla för censur. Det grundades 2000 av Ian Clarke. 

Det fungerar så att alla som kör en freenet-nod lämnar ut en del av sin hårddisk som freenet lagrar information på, kraftigt krypterad, som andra noder kan komma åt och ta del av. Detta leder till att nätverket är decentraliserat och därmed är det i stort sett omöjligt att censurera det som skrivs.

Programmet installerar en klient som användaren därefter, med hjälp av datorns webbläsare, kan navigera på Freenet med. Från och med version 0.7 har Freenet en sökfunktion, XMLLibrarian.

Freenet utvecklas fortfarande.

Som programspråk används Java.

Syfte
Tanken med Freenet är att ta bort möjligheten för en grupp att påtvinga sina värderingar och trossatser på andra. Även om många stater censurerar kommunikation och information i en eller annan utsträckning, delar de alla ett gemensamt drag i att ett organ måste bestämma vilken information som ska censureras och vilken som ska tillåtas. Det som kan vara acceptabelt för en grupp människor kan vara kränkande eller till och med farligt för en annan. Freenets syfte är därför att se till så att ingen kan besluta vad som är acceptabelt eller oacceptabelt. Tolerans för varandras värderingar uppmuntras och om det inte går, ombeds användaren ignorera den information som går emot hans/hennes värderingar.

Teknisk design
Freenets fildelar-nätverk lagrar dokument och möjliggör senare hämtning genom en associerad nyckel, genom protokoll som exempelvis HTTP. Nätverket är designat för att vara mycket stryktåligt, med alla interna processer anonymiserade och decentraliserade över nätverket. Systemet har inga centrala servrar och är inte kontrollerat av någon enskild individ eller organisation. Inte ens upphovsmännen till Freenet har någon kontroll över hela systemet. Den lagrade informationen är krypterad och replikerad över de deltagande datorerna (noderna) över hela världen, vilka är anonymiserade och tänkta att vara många och i ständig förändring. Teoretiskt sett är det mycket svårt att komma fram till vilken nod som lagrar en specifik fil, eftersom innehållet i varje fil är krypterat och kan vara spritt över flera delar lagrade på olika datorer. Till och med för en deltagare på nätverket behövs många komplicerade åtgärder för att ta reda på vad som lagras lokalt på den egna noden.

Nätverket
Nätverket består av ett antal noder som skickar meddelanden mellan sig. Vanligtvis kör en dator på ett nätverk Freenet-mjukvaran som agerar som nod och den kopplar ihop sig med flera andra datorer som kör samma programvara och därigenom bildar ett stort distribuerat nätverk av likvärdiga noder (peer-network). Vissa noder är slutanvändar-noder, från vilka dokument begärs och presenteras för det mänskliga ögat. Andra noder tjänar som rena routing-noder. Alla noder kommunicerar med varandra på samma sätt — det finns inga dedikerade "klienter" eller "servrar". Det finns inga möjligheter för en nod att gradera en annan nod annat än efter dess kapacitet att infoga och hämta data associerat med en viss nyckel. Detta är olikt de flesta andra P2P-nätverk där nod-administratörer kan använda ett ratio-system, där användare måste dela ut visst mycket information innan de kan ladda ner.

Freenet kan också ses som ett liten-värld-nätverk.

Freenet-protokollet är tänkt att användas på ett nätverk med komplex topologi, som exempelvis (IP). Varje nod känner endast till ett antal noder som den är direkt ansluten till (dess "grannar"), men varje nod kan vara granne med vilken annan nod som helst; ingen hierarki eller annan struktur ska finnas. Varje meddelande skickas genom nätverket genom att gå från granne till granne ända tills destinationen nås. När noderna skickar meddelande till sina grannar vet den, och bryr sig inte, om ifall grannen kommer att vidarebefordra meddelandet till en annan nod, eller om den är slutdestinationen eller ursprungskällan till meddelandet. Detta är ett avsiktligt designbeslut, för att skydda användares och upphovsmäns anonymitet.

Varje nod upprätthåller en lagringsplats innehållande dokument som är associerade med nycklar, och en routing-tabell som associerar noder med register över deras "skicklighet" i att hitta olika nycklar.

Protokollet
Freenet använder ett nyckelbaserat routingprotokoll. Algoritmen är liknande den som används i distribuerade hash-tabeller, även om idén föddes oberoende av dessa. Den största skillnaden är att Freenet-noder inte har fixerade specialiseringar, och att routing-algoritmen är heuristisk. Den garanterar därför inte att den kommer att hitta en given informationsmängd.

För att hitta ett dokument i nätverket med hjälp av en nyckel, skickar en användare ett meddelande till noden (förmodligen en som kör på samma maskin som klientprogramvaran) och begär dokumentet, genom att skicka nyckeln. Om inte dokumentet hittas i det lokala lagringsutrymmet, söker noden upp den grann-nod som den tror kommer att lokalisera nyckeln snabbast och vidarebefordrar begäran till den noden. Den "kommer ihåg" lokalt att den har gjort denna begäran för senare behov. Detta är en skillnad i beteende mellan tidigare versioner av Freenet och den nuvarande: det representerar "Next Generation Routing"-protokollet (NGR). Det gamla beteendet var att komma ihåg vilka nycklar som nåddes via vilka noder, och att routa baserat på vilken nod som gav nyckeln närmst den eftersökta. Effekten är likartad, men NGR har bättre prestanda.

Effekt
Inledningsvis har ingen nod information om prestandan på de andra noderna den känner till. Detta betyder att routing av olika begäran i princip är slumpmässig. Men eftersom olika noder har olika slumpmässighet kommer de att tycka olika om var en begäran ska skickas, givna en specifik nyckel. Därför kommer data i ett nystartat Freenet att distribueras på ett någorlunda slumpmässigt sätt.

I takt med att fler och fler dokument infogas av samma nod kommer de att samlas med data vars nycklar är likartade, eftersom samma routing-regler används för alla. Vad viktigare är, när begäran och data från olika noder "korsar väg", kommer de att börja dela kluster-information också.

Resultatet blir att nätverket kommer att själv-organiseras till en distribuerad, klustrad struktur där noder tenderar att hålla data som har likartade nycklar.

Se även
Darknet
WASTE

Referenser

Externa länkar
 Freenetproject

Fildelningsprogram