Freenet

In eerste instantie zijn de locaties in Darknet willekeurig verdeeld. Dit betekent dat de routering van verzoeken in wezen willekeurig is. In Opennet worden verbindingen tot stand gebracht door een join-verzoek, dat een geoptimaliseerde netwerkstructuur oplevert als het bestaande netwerk al geoptimaliseerd is. De gegevens in een nieuw opgestart Freenet zullen dus enigszins willekeurig worden gedistribueerd.

Naarmate location swapping (op Darknet) en path folding (op Opennet) vorderen, zullen knooppunten die dicht bij elkaar liggen steeds meer dicht bij elkaar komen te liggen, en knooppunten die ver weg liggen zullen verafgelegen locaties krijgen. Gegevens met vergelijkbare sleutels zullen op dezelfde node worden opgeslagen.

Het resultaat is dat het netwerk zichzelf zal organiseren in een gedistribueerde, geclusterde structuur waarin nodes de neiging hebben om data-items te bewaren die dicht bij elkaar liggen in de sleutelruimte. Er zullen waarschijnlijk meerdere van dergelijke clusters in het netwerk zijn, waarbij een gegeven document vele malen wordt gerepliceerd, afhankelijk van hoe vaak het wordt gebruikt. Dit is een soort “spontane symmetriebreking”, waarbij een aanvankelijk symmetrische toestand (alle knooppunten zijn gelijk, met willekeurige beginsleutels voor elkaar) leidt tot een zeer asymmetrische situatie, waarbij knooppunten zich gaan specialiseren in gegevens die nauw verwante sleutels hebben.

Er zijn krachten die neigen tot clustering (gedeelde dicht bij elkaar liggende gegevens verspreiden zich over het hele netwerk), en krachten die neigen tot het opbreken van clusters (lokaal cachen van veelgebruikte gegevens). Deze krachten zullen verschillend zijn afhankelijk van hoe vaak gegevens worden gebruikt, zodat zelden gebruikte gegevens de neiging zullen hebben zich te bevinden op slechts een paar knooppunten die gespecialiseerd zijn in het verstrekken van die gegevens, en vaak gebruikte items zullen wijd verspreid zijn over het netwerk. Deze automatische spiegeling gaat de momenten tegen waarop het webverkeer overbelast raakt, en dankzij de intelligente routing van een volwassen netwerk, zou een netwerk van grootte n gemiddeld slechts log(n) tijd nodig moeten hebben om een document op te halen.

SleutelsEdit

Sleutels zijn hashes: er is geen notie van semantische nabijheid wanneer men spreekt over de nabijheid van sleutels. Daarom zal er geen correlatie zijn tussen de nabijheid van sleutels en een vergelijkbare populariteit van gegevens, zoals het geval zou kunnen zijn als sleutels een semantische betekenis zouden hebben, waardoor knelpunten veroorzaakt door populaire onderwerpen worden vermeden.

Er zijn twee hoofdvariëteiten van sleutels in gebruik op Freenet, de Content Hash Key (CHK) en de Signed Subspace Key (SSK). Een subtype van SSK’s is de Updatable Subspace Key (USK), die versiebeheer toevoegt om het veilig bijwerken van inhoud mogelijk te maken.

Een CHK is een SHA-256 hash van een document (na encryptie, die zelf afhankelijk is van de hash van de klare tekst) en een knooppunt kan dus controleren of het geretourneerde document correct is door het te hashen en de digest te vergelijken met de sleutel. Deze sleutel bevat de essentie van de gegevens op Freenet. Hij bevat alle binaire gegevensbouwstenen voor de inhoud die aan de client moet worden geleverd voor hermontage en ontcijfering. De CHK is uniek van aard en biedt manipulatiebestendige inhoud. Een vijandig knooppunt dat de gegevens onder een CHK wijzigt, wordt onmiddellijk gedetecteerd door het volgende knooppunt of de client. CHK’s verminderen ook de redundantie van gegevens aangezien dezelfde gegevens dezelfde CHK zullen hebben en wanneer meerdere sites naar dezelfde grote bestanden verwijzen, kunnen ze naar dezelfde CHK verwijzen.

SSK’s zijn gebaseerd op public-key cryptografie. Momenteel gebruikt Freenet het DSA-algoritme. Documenten die onder SSK’s worden ingevoegd, worden ondertekend door de inbrenger, en deze handtekening kan door elk knooppunt worden geverifieerd om te garanderen dat er niet met de gegevens wordt geknoeid. SSK’s kunnen worden gebruikt om een verifieerbare pseudonieme identiteit op Freenet te vestigen, en maken het mogelijk dat meerdere documenten veilig door één persoon kunnen worden ingevoegd. Bestanden die met een SSK worden ingevoegd zijn in feite onveranderlijk, aangezien het invoegen van een tweede bestand met dezelfde naam botsingen kan veroorzaken. USK’s lossen dit op door een versienummer aan de sleutels toe te voegen, dat ook wordt gebruikt om een update-notificatie te geven voor sleutels die als bladwijzers in de webinterface zijn geregistreerd. Een ander subtype van de SSK is de Keyword Signed Key, of KSK, waarbij het sleutelpaar op een standaardmanier wordt gegenereerd uit een eenvoudige, menselijk leesbare tekenreeks. Door een document in te voegen met gebruikmaking van een KSK kan het document worden opgehaald en ontsleuteld als en slechts als de aanvrager de leesbare tekenreeks kent; dit maakt handigere (maar minder veilige) URI’s mogelijk waarnaar gebruikers kunnen verwijzen.

Leave a Reply