Freenet

Inizialmente, le posizioni in Darknet sono distribuite in modo casuale. Ciò significa che l’instradamento delle richieste è essenzialmente casuale. In Opennet le connessioni sono stabilite da una richiesta di join che fornisce una struttura di rete ottimizzata se la rete esistente è già ottimizzata. Quindi i dati in una Freenet appena avviata saranno distribuiti in modo alquanto casuale.

Con il progredire del location swapping (su Darknet) e del path folding (su Opennet), i nodi che sono vicini tra loro avranno sempre più posizioni vicine, e i nodi che sono lontani avranno posizioni lontane. I dati con chiavi simili saranno memorizzati sullo stesso nodo.

Il risultato è che la rete si auto-organizzerà in una struttura distribuita, a grappoli, dove i nodi tenderanno a contenere dati che sono vicini nello spazio delle chiavi. Ci saranno probabilmente molteplici cluster di questo tipo in tutta la rete, ogni dato documento sarà replicato numerose volte, a seconda di quanto è usato. Questa è una sorta di “rottura spontanea della simmetria”, in cui uno stato inizialmente simmetrico (tutti i nodi sono uguali, con chiavi iniziali casuali l’uno per l’altro) porta ad una situazione altamente asimmetrica, con i nodi che arrivano a specializzarsi in dati che hanno chiavi strettamente correlate.

Ci sono forze che tendono a causare il clustering (i dati di vicinanza condivisi si diffondono nella rete), e forze che tendono a rompere i cluster (caching locale di dati comunemente usati). Queste forze saranno diverse a seconda della frequenza di utilizzo dei dati, in modo che i dati usati di rado tenderanno ad essere solo su pochi nodi specializzati nel fornire quei dati, e gli elementi usati frequentemente saranno sparsi ampiamente in tutta la rete. Questo mirroring automatico contrasta i momenti in cui il traffico web diventa sovraccarico, e grazie al routing intelligente di una rete matura, una rete di dimensioni n dovrebbe richiedere solo log(n) di tempo per recuperare un documento in media.

KeysEdit

Le chiavi sono hash: non c’è alcuna nozione di vicinanza semantica quando si parla di vicinanza delle chiavi. Pertanto, non ci sarà alcuna correlazione tra la vicinanza della chiave e una simile popolarità dei dati come potrebbe esserci se le chiavi esibissero un qualche significato semantico, evitando così i colli di bottiglia causati da soggetti popolari.

Ci sono due varietà principali di chiavi in uso su Freenet, la Content Hash Key (CHK) e la Signed Subspace Key (SSK). Un sottotipo di SSK è l’Updatable Subspace Key (USK) che aggiunge il versioning per permettere un aggiornamento sicuro del contenuto.

Una CHK è un hash SHA-256 di un documento (dopo la crittografia, che a sua volta dipende dall’hash del testo in chiaro) e quindi un nodo può controllare che il documento restituito sia corretto facendo l’hash e controllando il digest con la chiave. Questa chiave contiene il cuore dei dati su Freenet. Trasporta tutti i blocchi di dati binari per il contenuto da consegnare al client per il riassemblaggio e la decrittazione. La CHK è unica per natura e fornisce un contenuto a prova di manomissione. Un nodo ostile che altera i dati sotto un CHK sarà immediatamente rilevato dal nodo successivo o dal client. I CHK riducono anche la ridondanza dei dati poiché gli stessi dati avranno lo stesso CHK e quando più siti fanno riferimento agli stessi grandi file, possono fare riferimento allo stesso CHK.

Gli SSK sono basati sulla crittografia a chiave pubblica. Attualmente Freenet usa l’algoritmo DSA. I documenti inseriti sotto SSK sono firmati dall’inseritore, e questa firma può essere verificata da ogni nodo per assicurare che i dati non siano manomessi. Gli SSK possono essere usati per stabilire un’identità pseudonima verificabile su Freenet, e permettono di inserire più documenti in modo sicuro da una sola persona. I file inseriti con un SSK sono effettivamente immutabili, poiché inserire un secondo file con lo stesso nome può causare collisioni. Gli USK risolvono questo problema aggiungendo un numero di versione alle chiavi, che è anche usato per fornire una notifica di aggiornamento per le chiavi registrate come segnalibri nell’interfaccia web. Un altro sottotipo di SSK è la Keyword Signed Key, o KSK, in cui la coppia di chiavi è generata in modo standard da una semplice stringa leggibile dall’uomo. Inserire un documento usando un KSK permette di recuperare e decifrare il documento se e solo se il richiedente conosce la stringa leggibile dall’uomo; questo permette di avere URI più convenienti (ma meno sicuri) per gli utenti a cui fare riferimento.

Leave a Reply