From a1b647d3cc9d692e59d82eb8799fedd1bd08ad53 Mon Sep 17 00:00:00 2001 From: Enrico Fasoli Date: Mon, 4 May 2015 20:54:27 +0200 Subject: [PATCH] primo commit --- README.md | 7 +++++++ SUMMARY.md | 5 +++++ appunti.md | 27 +++++++++++++++++++++++++++ bitcoin.md | 27 +++++++++++++++++++++++++++ tor.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ web_moderno.md | 16 ++++++++++++++++ 6 files changed, 131 insertions(+) create mode 100644 README.md create mode 100644 SUMMARY.md create mode 100644 appunti.md create mode 100644 bitcoin.md create mode 100644 tor.md create mode 100644 web_moderno.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..276308b --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# L'anonimato sulla rete Internet + +Tesina di Enrico Fasoli + +5IA, anno scolastico 2014/2015, IIS Galileo Galilei Crema + +Work In Progress diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 0000000..c37cac3 --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,5 @@ +# Summary + +* [Web Moderno](web_moderno.md) +* [Tor](tor.md) +* [Bitcoin](bitcoin.md) diff --git a/appunti.md b/appunti.md new file mode 100644 index 0000000..d07423b --- /dev/null +++ b/appunti.md @@ -0,0 +1,27 @@ +Idee per la tesina (Enrico Fasoli). Il percorso che ho intenzione di seguire è "Privacy e Anonimato nella rete" + +## Privacy e anonimato nella rete + +- Funzionamento delle reti, di internet e dei servizi web (Sistemi + Tecnologie) +- Tracciamento di un dispositivo sulla rete internet (Approfondimento) +- Protezione delle informazioni su internet tramite crittografia (Sistemi + Matematica?) +- Come ottenere l'anonimato totale (impedire tracciamento) su internet (Approfondimento) +- Limitazioni dell'anonimato su internet (Approfondimento) +- Servizi web nascosti (Tecnologie + Approfondimento) +- Pagamenti anonimi e sicuri tramite Bitcoin +- E-Mail anonime e sicure tramite BitMessage + +## Cosa sono e come funzionano i Bitcoin + +- Cosa sono i Bitcoin e cosa permettono di fare +- Come funziona il protocollo bitcoin (Tecnologie + Sistemi) +- Perchè i trasferimenti bitcoin sono anonimi +- Perchè i Bitcoin funzionano +- Bitcoin Mining (Sistemi + Matematica?) +- Limitazioni del protocollo Bitcoin (Tecnologie + Sistemi) + +## Bitmessage: il protocollo sicuro e intracciabile per le E-Mail + +- Perchè bitmessage +- Cosa è BitMessage e cosa permette di fare +- Analisi del protocollo BitMessage (Sistemi + Tecnologie) diff --git a/bitcoin.md b/bitcoin.md new file mode 100644 index 0000000..b9a78a9 --- /dev/null +++ b/bitcoin.md @@ -0,0 +1,27 @@ + + +# Bitcoin + +Bitcoin è una valuta digitale (la prima nella storia ad avere un qualche tipo di valore) e un protocollo per lo scambio della stessa via rete. + +## Concetti + +Il protocollo Bitcoin consiste in una rete decentralizzata (da ora in poi detta semplicemente __"la rete Bitcoin"__) di nodi che processano le richieste di trasferimento di denaro e da una __blockchain__ ovvero una lista di tutte le transazioni eseguite a partire dall'origine della moneta. + +- Una __transazione__ è un trasferimento di denaro: tutte le transazioni vanno validate dalla rete e sono poi aggiunte, se valide, alla __blockchain__. +- Un __portafoglio__ è un contenitore di denaro (__Bitcoins__) identificato dalla sua __chiave pubblica__. +- E' possibile creare liberamente uno o più __portafogli__. +- non è possibile generare infinite monete perchè la rete considera valida una __transazione__ solo se il __portafoglio sorgente__ possiede __sufficienti bitcoin__ per poterli trasferire al __portafoglio destinatario__. +- dalle suddette informazioni possiamo dedurre che __la moneta non esiste come dato in se, ma esiste solo la quantità di bitcoin associati a un portafoglio__, dunque __un portafoglio vuoto è irrilevante per la rete, ma entra a far parte della blockchain se riceve dei bitcoin__. + +### La messa in circolo tramite Bitcoin Mining + +I bitcoin vengono messi in circolazione tramite __bitcoin mining__, che consiste nel diffondere una __"taglia"__ per la __soluzione di un complesso problema matematico__ in modo che __la rete conceda dei bitcoin come premio a chi lo risolva per primo__. Limitando il numero di problemi matematici e impostando una quantità specifica come premio, viene decisa la quantità di bitcoin totale. + +Nel tempo, i Bitcoin hanno acquistato __un valore anche di centinaia di dollari per un singolo Bitcoin__ quindi il __bitcoin mining__ può essere un'attività estremamente __lucrativa__. + +## Anonimato + +Secondo le regole suddette, __tutti possono sapere quanti soldi ci sono in ogni portafoglio e l'intero elenco di tutte le transazioni della storia__, però __i portafogli sono identificabili esclusivamente tramite la loro chiave pubblica, non conservano informazioni sul proprietario__. + +I Bitcoin sono infatti molto usati per __pagare servizi o merci illegali__, ma vengono anche accettati da alcuni legittimi negozi o come donazioni. diff --git a/tor.md b/tor.md new file mode 100644 index 0000000..ae831e2 --- /dev/null +++ b/tor.md @@ -0,0 +1,49 @@ +# Tor + +Tor è un software in grado di collegare gli utenti tra di loro in una rete virtuale allo scopo di rendere anonimi gli utenti che navigano il web attraverso di esso. + +La rete di Tor è a maglia, e ogni utente connesso consiste in un __nodo anche detto relay__. Un nodo può anche fungere da __nodo di uscita (exit node, exit relay)__, ovvero prende i pacchetti originati da altri nodi e li spedisce al reale destinatario fuori dalla rete Tor (ad esempio un sito web). + +A partire dal momento dell'uscita di un pacchetto dalla rete Tor, esso non è più protetto dalla sicurezza della rete ma appare come originato dal __nodo di uscita__ quindi l'identità del __nodo__ mittente è sconosciuta. + +Qualsiasi operazione di __backtracking__ ovvero di analisi del percorso del pacchetto è inutile poichè il pacchetto si trovava __incapsulato in pacchetti Tor__ e __ogni nodo conosce solo l'indirizzo IP dei nodi a cui è direttamente collegato e del nodo di uscita__. + +## La crittografia di Tor + +Quando un nodo decide di spedire un pacchetto fuori dalla rete, calcola la strada necessaria per raggiungere un nodo di uscita, poi prende le __chiavi pubbliche__ di tutti i nodi sulla strada in ordine e __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). + +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__. + +## In pratica + +Il software Tor presenta una interfaccia _a riga di comando (command line)_ che permette di specificare varie opzioni, anche se la maggior parte di esse vanno specificate nel file di configurazione denominato _torrc_. + +Tor permette l'instradamento del traffico nella propria rete offrendo all'utente un __proxy SOCKS__: istruendo le applicazioni di dirigere i propri __socket__ attraverso il __proxy__, il loro traffico passerà per la rete di Tor. + +### Vidalia + +### Tor Browser + +## Bloccare l'accesso a Tor + +Un ente potrebbe voler bloccare l'accesso alla rete Tor all'interno della propria infrastruttura per ovvie ragioni di sicurezza. Il miglior metodo è bloccare completamente il traffico destinato __agli indirizzi IP che corrispondo ai nodi Tor pubblici__, bloccando effettivamente l'accesso poichè il software ha bisogno di connettersi ad almeno un nodo direttamente per avere l'accesso alla rete. + +Un limite di questo tipo è però facilmente aggirabile tramite l'utilizzo di __bridge node (bridge relay)__, ovvero dei __nodi Tor non pubblici__. __Tor è software libero__, di conseguenza __chiunque può aprire un proprio (bridge) relay__ e __accedere alla rete da luoghi che bloccano i nodi pubblici attraverso di esso__. + +Purtroppo __non è possibile bloccare completamente l'accesso a Tor senza applicare enormi, irrealistiche restrizioni all'accesso a internet__. + +## Punti deboli + +Tor presenta una serie di punti deboli che vanno considerati da ogni utilizzatore del programma: + +- Gli __exit node__ possono leggere tutto il traffico di tutti gli utenti tor che li usano agendo effettivamente da __man in the middle__ per la natura stessa del protocollo +- Tor viene convenzionalmente usato per mascherare l'origine del traffico HTTP, però un utente inesperto potrebbe __abilitare vari plugin del browser__ che sono in grado di __comunicare in rete liberamente__ (ad esempio __Adobe Flash__) e dunque finirebbero per __contattare direttamente il destinatario senza passare per Tor__ rendendo potenzialmente vani i tentativi di preservare l'anonimato +- Un sito web potrebbe includere tra i propri script delle subroutine in grado di __ottenere informazioni sul sistema client__ compromettendo l'anonimato +- Un utente potrebbe __lasciare indizi sulla propria identità__ durante la normale navigazione sul web tramite Tor + +Queste considerazione non comprendono la possibilità di attacchi mirati al controllo della rete Tor che rischierebbero di compromettere l'anonimato e la privacy di tutti gli utenti. + +Inoltre, l'enorme quantità di operazione crittografiche necessarie e di overhead per l'invio dei layer crittografici e dei numerosi hop rende Tor una rete __estremamente lenta__ e __impossibile da controllare__ creando la possibilità di __saturare la rete con dati inutili allo scopo di deterrente per gli utenti di Tor__. + +## Servizi Nascosti + diff --git a/web_moderno.md b/web_moderno.md new file mode 100644 index 0000000..7bc5331 --- /dev/null +++ b/web_moderno.md @@ -0,0 +1,16 @@ +# La raccolta dati del Web 2.0 + +Quando __Internet__ è stato creato, il protocollo __HTTP__ (utilizzato per visitare le pagine web) è stato pensato per trasferire dei semplici __ipertesti__ (da qui il nome _Hyper Text Transfer Protocol_) ma con l'enorme, rapida evoluzione del web il protocollo si è evoluto per supportare l'invio di qualsiasi tipo di file. +Contemporaneamente, i browser si solo evoluti per supportare l'esecuzione di __script__ inviati insieme agli ipertesti, __rendendo possibile trasformare una pagina web da un semplice ipertesto a un vero e proprio programma.__ +Anche se l'__accesso ai dati del dispositivo da parte degli script è molto limitato__, un sito web è in grado di __allegare uno o più script insieme all'ipertesto che causano l'invio di numerosi dati riguardo la visita al sito dal visitatore al server__. +Inoltre __gli script possono istruire i browser web a salvare delle informazioni o richiederle (cookie)__, __riconoscendo l'utente anche se si collega da una rete diversa__. +La collaborazione tra i diversi colossi del web tra cui __Facebook, Google, Microsoft eccetera__ e la loro __integrazione con la maggior parte dei siti web__ consente a loro di __tracciare ogni attività online di ogni utente che utilizza questi servizi__. + +## Perchè? + +Ci sono numerosi motivi per questa raccolta dati: + +- __Pubblicità mirate:__ google piazza le pubblicità in base agli interessi dell'utente in modo da vendere di più +- __Vendita dei dati:__ i colossi possono vendere dati riguardo, ad esempio, l'interesse degli utenti verso un prodotto +- __Studio del mercato:__ analizzare i dati per comprendere l'andamento del mercato +- __Correlazioni tra soggetti apparentemente indipendenti__, ad esempio tramite questi dati si può scoprire che un utente di Facebook è interessato a prodotti Apple, piazzando ulteriori pubblicità mirate