diff --git a/Tor/tor.md b/Tor/tor.md index 7115a2d..1c8224c 100644 --- a/Tor/tor.md +++ b/Tor/tor.md @@ -4,7 +4,7 @@ > From https://www.torproject.org/ -Tor è un protocollo e la sua implementazione open source in grado di collegare gli utenti tra loro in una rete virtuale allo scopo di rendere anonimo il loro traffico. +Tor è un protocollo e la sua implementazione open source in grado di collegare gli utenti tra loro in una rete virtuale che viene poi usata per _instradare_ il traffico dei suoi utenti allo scopo di renderlo anonimo. ## Come funziona @@ -26,13 +26,13 @@ La rete di Tor usa una topologia a maglia: ogni utente connesso consiste in un _ ### Confronto con una VPN -Sul Web è facile trovare molti provider di accesso a __VPN__ che offrono _sicurezza_, _anonimato_, _possibilità_ di superare _filtri_ o _censure_ e velocità di navigazione. Una VPN però, per definizione, non è sicura quanto la rete __Tor__ perchè: +Sul Web è facile trovare molti provider di accesso a __VPN__ pensate per oscurare il traffico che offrono _sicurezza_, _anonimato_, _possibilità_ di superare _filtri_ o _censure_ e alta velocità di navigazione. Una VPN però, per definizione, non è sicura quanto la rete __Tor__ perchè: - una __VPN__ è un sistema centralizzato, dunque: - - il gestore della __VPN__ può origliare sul traffico e raccogliere informazioni - - una __VPN__ (in particolare con __OpenVPN__) è soggetta a diverse _vulnerabilità_ se il gestore non ha le competenze per proteggersi -- l'accesso alla __VPN__ si basa comunque su un account -- un servizio __VPN__ per la navigazione è quasi sempre _a pagamento_. + - il gestore della __VPN__ può origliare sul traffico e raccogliere informazioni, mentre questo è possibile da parte degli __exit node__ di __Tor__ solo se l'utente vittima non è attento (vedasi sezione Limitazioni e Problemi di Tor) + - una __VPN__ (in particolare con __OpenVPN__) è soggetta a diverse _vulnerabilità_ se il gestore non ha le competenze per proteggersi, mentre un singolo utente di __Tor__ non può compromettere il servizio per gli altri utenti. +- l'accesso alla __VPN__ si basa comunque su un account, mentre l'uso di __Tor__ è totalmente anonimo. +- un servizio __VPN__ per la navigazione è quasi sempre _a pagamento_, mentre __Tor__ è anonimo e gratuito. ### Perché è sicuro e anonimo @@ -40,9 +40,9 @@ Quando un nodo decide di spedire un pacchetto fuori dalla rete: - calcola la strada necessaria per raggiungere un nodo di uscita - prende le __chiavi pubbliche__ di tutti i nodi sulla strada in ordine - __crea un layer (strato) di crittografia per ogni nodo sulla strada verso l'uscita__, effettivamente incapsulando il pacchetto in numerosi strati - - Da qui deriva il nome "Tor", che originariamente significava "The Onion Router" (l'instradatore a cipolla). + - Da qui deriva il nome _"Tor"_, che originariamente significava _"The Onion Router"_ (l'instradatore a cipolla). -Inoltre: +Altre importanti caratteristiche: - A ogni __hop__ nella rete, ogni nodo rimuove il proprio strato di crittografia. In questo modo si è certi che il pacchetto originale possa essere letto solo dal __nodo di uscita__ e che il percorso del pacchetto __sia per forza quello stabilito in origine dal mittente__. diff --git a/Web/soluzioni.md b/Web/soluzioni.md index 602b6b1..2640967 100644 --- a/Web/soluzioni.md +++ b/Web/soluzioni.md @@ -11,7 +11,7 @@ Riassumento, i problemi del navigare il web sono il __tracciamento__, l'__analis Un __Ad Blocker__ è un software in grado di nascondere le pubblicità sulle pagine web visitate. Gli __Ad Blocker__ più avanzati sono in grado di: - nascondere gli elementi della pagina dedicati alle pubblicità; -- evitare l'esecuzione di __script__ o memorizzazione di __cookie__ non necessari per la fruizione dei contenuti della pagina, ad esempio quelli dedicati al tracciamento; +- evitare l'esecuzione di __script__ o memorizzazione di __cookie__ non necessari per la fruizione dei contenuti della pagina, principalmente quelli dedicati alle pubblicità o alla raccolta dati; Gli __Ad Blocker__ più conosciuti sono __AdBlock__ e __AdBlock Plus__, entrambi però sono __Closed Source__ e generalmente considerati meno affidabili dell'alternativa __uBlock__, che si presenta come una soluzione più moderna, performante e completamente __Open Source__. @@ -29,8 +29,9 @@ Attenzione però: __Ghostery è un software Closed Source__, dunque non è possi ## Servizi -Per i servizi come __File Sharing__, __Messaggistica__ e __Cloud Storage__ le alternative devono essere: +Per i servizi come __File Sharing__, __Messaggistica__ e __Cloud Storage__ le soluzioni devono preferibilmente essere: +- __Open Source__ per permettere la revisione del codice da parte degli utenti e degli esperti di sicurezza, - __decentralizzate__ o, alternativamente, permettere il __self-hosting__, - sicure utilizzando __crittografia__ e __firme digitali__, - configurabili e adattabili a diverse situazioni e casi d'uso, @@ -44,8 +45,14 @@ Il __self-hosting__ è una caratteristica di un __servizio__ che gli permette di La __decentralizzazione__ è una caratteristica di un __servizio__ che gli permette di non dipendere da un singolo __server__ o un'insieme di pochi server, consentendogli di funzionare semplicemente con una rete di __client__ collegati tra loro. Spesso, per far si che i client scoprano i rispettivi _indirizzi IP_ permettendogli di connettersi, è comunque necessario un server di tipo __tracker__. -Un __tracker__ differisce da un classico server perchè agisce semplicemente da punto di incontro per i client, permettendogli di avvisare della propria esistenza e quindi di conoscersi. Le informazioni non passano mai direttamente dal __tracker__. Nei client di servizi decentralizzati (come __Syncthing__) è spesso possibile scegliere quale o quali tracker utilizzare, o di non utilizzarne alcuni ma tentare direttamente la connessione ad alcuni indirizzi IP oppure di gestire il proprio tracker privato. +Un __tracker__ differisce da un classico server perchè agisce semplicemente da punto di incontro per i client, permettendogli di avvisare della propria esistenza e quindi di conoscersi. Le informazioni scambiate tra i client non passano mai direttamente dal __tracker__. Usando un servizio decentralizzato (come __Syncthing__) è spesso possibile scegliere quale o quali tracker utilizzare o di non utilizzarne alcuni ma tentare direttamente la connessione ad alcuni indirizzi IP oppure di gestire il proprio tracker privato. -Una __Distributed Hash Table__ è una tecnologia che permette di avere un __key-value store__ (tabella a due colonne) condivisa dai nodi di una rete decentralizzata. Un key-value store contiene dati in formato _coppia-valore_: questo permette di accedere al valore determinato da una cerca chiave. Nelle reti distribuite viene spesso usato per associare l'__indirizzo IP__ di un utente con il suo profilo, indirizzo, chiave pubblica o altro (in caso di __BitTorrent__, ad esempio, per ogni _torrent_ (che agisce da chiave) il valore è una lista di _indirizzi IP_ di clients che posseggono quel torrent). La __DHT__, come da definizione, non è offerta da un server ma è distribuita nella rete di _clients_. +Una __Distributed Hash Table__ è una tecnologia che permette di avere un __key-value store__ (tabella a due colonne) condivisa dai nodi di una rete decentralizzata. Un key-value store contiene dati in formato _coppia-valore_: questo permette di accedere al valore determinato da una cerca chiave. -La conbinazione tra __DHT__ e una buona quantità di __Trackers__ rende stabile un servizio decentralizzato, permettendo ai nodi di collegarsi tra loro in maniera efficiente. +Per capire meglio, possiamo immaginare un __key-value store__ come una tabella a due colonne dove per ogni riga la prima colonna è la _chiave_, ovvero l'identificativo del dato mentre la seconda contiene il dato stesso. + +- Nelle reti distribuite viene spesso usato per associare l'__indirizzo IP__ di un utente con il suo profilo, indirizzo, chiave pubblica o altro +- in caso di __BitTorrent__, ad esempio, per ogni _torrent_ (che agisce da chiave) il valore è una lista di _indirizzi IP_ di clients che posseggono quel torrent +- La __DHT__, come da definizione, non è offerta da un server ma è distribuita nella rete di _clients_. + +La conbinazione tra __DHT__ e __Trackers__ affidabili rende stabile un servizio decentralizzato, permettendo ai nodi di collegarsi tra loro in maniera efficiente.