Freenet

I første omgang er stederne i Darknet fordelt tilfældigt. Det betyder, at routing af forespørgsler i det væsentlige er tilfældig. I Opennet etableres forbindelser ved hjælp af en join-anmodning, som giver en optimeret netværksstruktur, hvis det eksisterende netværk allerede er optimeret. Så dataene i et nyopstartet Freenet vil blive fordelt noget tilfældigt.

I takt med at location swapping (på Darknet) og path folding (på Opennet) skrider frem, vil knudepunkter, der ligger tæt på hinanden, i stigende grad have nære placeringer, og knudepunkter, der ligger langt væk, vil have fjerne placeringer. Data med lignende nøgler vil blive lagret på den samme knude.

Resultatet er, at nettet vil selvorganisere sig selv til en distribueret, klyngeformet struktur, hvor knuderne har en tendens til at opbevare dataelementer, der ligger tæt på hinanden i nøgleområdet. Der vil sandsynligvis være flere sådanne klynger i hele netværket, idet et givet dokument vil blive replikeret adskillige gange, afhængigt af hvor meget det bliver brugt. Dette er en slags “spontan symmetribrydning”, hvor en oprindelig symmetrisk tilstand (alle knuder er ens, med tilfældige startnøgler til hinanden) fører til en stærkt asymmetrisk situation, hvor knuder kommer til at specialisere sig i data, der har nært beslægtede nøgler.

Der er kræfter, der har en tendens til at forårsage klyngedannelse (fælles nærhedsdata spredes i hele nettet), og kræfter, der har en tendens til at bryde klynger op (lokal caching af almindeligt anvendte data). Disse kræfter vil være forskellige alt efter, hvor ofte dataene anvendes, således at sjældent anvendte data vil have en tendens til at ligge på nogle få knudepunkter, der er specialiseret i at levere disse data, mens hyppigt anvendte elementer vil være spredt bredt ud over hele nettet. Denne automatiske spejling modvirker de tidspunkter, hvor webtrafikken bliver overbelastet, og på grund af et modent netværks intelligente routing bør et net af størrelse n i gennemsnit kun kræve log(n)-tid for at hente et dokument.

KeysEdit

Nøgler er hashes: der er ikke noget begreb om semantisk nærhed, når man taler om nøgle-nærhed. Derfor vil der ikke være nogen korrelation mellem nøgletæthed og lignende popularitet af data, som der kunne være, hvis nøglerne udviste en vis semantisk betydning, hvorved flaskehalse forårsaget af populære emner undgås.

Der er to hovedvarianter af nøgler i brug på Freenet, nemlig Content Hash Key (CHK) og Signed Subspace Key (SSK). En undertype af SSK’er er Updatable Subspace Key (USK), som tilføjer versionering for at muliggøre sikker opdatering af indhold.

En CHK er en SHA-256-hash af et dokument (efter kryptering, som i sig selv afhænger af hash af klarteksten), og en node kan således kontrollere, at det returnerede dokument er korrekt ved at hashe det og kontrollere digestet mod nøglen. Denne nøgle indeholder kødet af dataene på Freenet. Den indeholder alle de binære databygningsblokke for det indhold, der skal leveres til klienten med henblik på reassemblering og dekryptering. CHK’en er i sagens natur unik og giver et indhold, der ikke kan forfalskes. En fjendtlig knude, der ændrer dataene under en CHK, vil straks blive opdaget af den næste knude eller klienten. CHK’er reducerer også redundansen af data, da de samme data vil have samme CHK, og når flere steder henviser til de samme store filer, kan de henvise til den samme CHK.

SSK’er er baseret på kryptografi med offentlige nøgler. I øjeblikket bruger Freenet DSA-algoritmen. Dokumenter, der indsættes under SSK’er, signeres af den, der indsætter dem, og denne signatur kan verificeres af alle knudepunkter for at sikre, at der ikke er manipuleret med dataene. SSK’er kan bruges til at etablere en verificerbar pseudonym identitet på Freenet og gør det muligt for en enkelt person at indsætte flere dokumenter på sikker vis. Filer, der indsættes med et SSK, er reelt uforanderlige, da det kan medføre kollisioner at indsætte en anden fil med samme navn. USK’er løser dette problem ved at tilføje et versionsnummer til nøglerne, som også bruges til at give opdateringsmeddelelser for nøgler, der er registreret som bogmærker i webgrænsefladen. En anden undertype af SSK’en er den nøgleordssignerede nøgle (Keyword Signed Key, KSK), hvor nøgleparret genereres på en standardiseret måde ud fra en simpel menneskeligt læsbar streng. Ved at indsætte et dokument ved hjælp af en KSK kan dokumentet hentes og dekrypteres, hvis og kun hvis requesteren kender den menneskeligt læsbare streng; dette giver mulighed for mere bekvemme (men mindre sikre) URI’er, som brugerne kan henvise til.

Leave a Reply