1
0
mirror of https://github.com/fazo96/tesina.git synced 2025-01-25 13:54:19 +01:00

revisione completa

This commit is contained in:
Enrico Fasoli 2015-05-25 11:42:15 +02:00
parent 87b4239e22
commit a20ecd3c2d
5 changed files with 96 additions and 29 deletions

View File

@ -6,8 +6,15 @@ I Bitcoin sono infatti molto usati per __pagare servizi o merci illegali__, ma v
## Limitazioni, problemi e vulnerabilità
Gli indirizzi bitcoin sono anonimi per definizione, però __tutti possono vedere tutte le transazioni__ a causa delle regole del protocollo, dunque è difficile nascondere delle transazioni: può essere fatto distribuendo i soldi a indirizzi diversi in piccole transazioni, ma richiede molta preparazione e organizzazione.
## L'esplosione di popolarità e la nascita dei cloni
Quando il valore di un bitcoin cominciò a salire verso enormi cifre, comparsero numerose varianti del protocollo con diversi gradi di successo (come Dogecoin) ma mai quanto Bitcoin.
### La caduta di Mt. Gox
### Il mistero delle origini dei Bitcoin
Nello stesso periodo comparsero dei servizi simili alle banche tra cui il colosso __Mt. Gox__, che oltre al normale funzionamento di __Exchange__, gestivano i Bitcoin dei clienti producendo interesse tramite __speculazione__. Mt. Gox e tanti altri fallirono (dichiarando bancarotta) quando il valore di bitcoin iniziò a scendere lentamente per alcuni mesi, causando il panico e il ritiro di enormi somme.
Nella comunità, molti furono contenti di questo evento perchè i Bitcoin furono originariamente creati anche per liberarsi delle banche e della __centralizzazione__.

View File

@ -1,7 +1,35 @@
# Il problema delle Email
# Messaggistica: problemi e soluzioni
## Il problema delle E-Mail
Il concetto di __E-Mail__ (posta elettronica) è una delle prime applicazioni pratiche di __Internet__ e delle reti di calcolatori in generale. Si basa su protcolli standard, in particolare:
- __SMTP__ (Simple Mail Transfer Protocol) per l'invio della posta.
- __POP3__ e __IMAP__ per la ricezione e la lettura della posta contenuta in una __casella di posta elettronica__.
Le E-Mail sono però distribuite __in chiaro__, senza __crittografia o firme digitali__, usando __server centralizzati__. Queste caratteristiche rendono le email un sistema __poco sicuro__, __tracciabile__ e __vulnerabile__ soprattutto perchè:
- ogni messaggio intercettato è _leggibile_ e _alterabile_
- il sistema è vulnerabile a moltissime tipologie di attacchi
- mittenti e destinatari sono difficilmente identificabili a causa della mancanza di __firme digitali__
Questi problemi sono _parzialmente_ risolti usando i protocolli __GPG__ e __S/MIME__ rispettivamente per gestire l'aspetto di _firma_ e _crittografia_ e per integrarlo nelle __E-Mail__ insieme ad _allegati_, _immagini_ e altri documenti multimediali.
Anche lo _spam_ può essere limitato usando dei filtri anti-spam particolari nel proprio client di posta, resta però il problema che __i messaggi di spam sono scaricati comunque__ rallentando pesantemente la rete.
### Soluzioni
Bitmessage è un esempio di servizio _libero_, _sicuro_, _anonimo_ e _decentralizzato_ descritto nella sezione dedicata.
## Il problema della messaggistica istantanea e del VoIP
La messaggistica istantanea (spesso arracchita con __VoIP__ (telefonate via Internet) come nel caso di __Skype__ e __WhatsApp__) presenta numerosi problemi, tra cui:
- profonda centralizzazione
- mancanza di crittografia __end-to-end__ ovvero dal mittente al destinatario, che causa:
- possibilità dei _server centralizzati_ di origliare ogni conversazione e alterare messaggi
- la divulgazione di tutte le conversazioni degli utenti (in caso i _server centralizzati_ vengano compromessi)
### Soluzioni
Risolvere questo problema è molto difficile, poichè un sistema di messaggistica _decentralizzata_ che supporti il __VoIP__ è molto difficile da realizzare. Attualmente in svilppo esistono __TorChat__ e __Tox__.

View File

@ -8,13 +8,17 @@ Tor permette l'instradamento del traffico nella propria rete offrendo all'utente
Essendo __Tor__ un software con interfaccia __a riga di comando__, è stata sviluppata l'interfaccia grafica __Vidalia__ che permette di gestire e configurare __Tor__ senza mai modificare manualmente __file di configurazione__ o utilizzare la __riga di comando__.
Questa interfaccia è molto apprezzata dagli utenti meno esperti che necessitano di eseguire applicazioni o servizi attraverso Tor.
Per chi ha _solo bisogno_ di __navigare il Web attraverso Tor__, è consigliato invece il __Tor Browser__.
### Tor Browser
Il __Tor Browser__ (in precedenza chiamato __Tor Browser Bundle__) è una versione _estesa_ e _modificata_ di __Mozilla Firefox__ che consiste in un __browser web indipendente__ che __naviga esclusivamente tramite Tor__ e contiene una serie di __componenti aggiuntivi utili per proteggere la propria privacy e identità__
__Tor Browser__ è __portatile (dunque non richiede installazione)__ ed è disponibile per __Windows__, __OSX__ e __GNU/Linux__.
Il progetto è nato per __rendere la navigazione tramite Tor semplice e immediata per tutti__
Il progetto è nato per __rendere la navigazione tramite Tor semplice e immediata per tutti__, e la sua popolarità verifica un ottimo successo.
I componenti aggiuntivi inclusi sono:
@ -25,10 +29,10 @@ I componenti aggiuntivi inclusi sono:
Per gestire il proprio servizio web nascosto, è sufficiente __una macchina GNU/Linux connessa alla rete Tor__, anche se si trova dietro __firewall o altri sistemi__.
Configurando correttamente __Tor__, è possibile istruirlo a ridirezionare le connessioni in ingresso tramite la sua rete a una certa porta sul proprio dispositivo, creando un canale di comunicazione tra __Tor__ e il __Servizio__.
Configurando correttamente __Tor__, è possibile istruirlo a ridirezionare le connessioni in ingresso tramite la sua rete a una certa porta sul proprio dispositivo, creando un canale di comunicazione tra __Tor__ e il __servizio__.
Gestire un servizio anonimo però __non è semplice__ soprattutto per i __problemi di sicurezza__ tra cui:
- __Correlation attack__ se un servizio è accessibile anche senza __Tor__
- __correlation attack__ se un servizio è accessibile anche senza __Tor__
- errori di configurazione e informazioni inviate per sbaglio nei report di errore del server
- __analisi statistiche di uptime__ e confronto
- __errori umani__ vari tra cui informazioni chiave sulla segretezza incluse direttamente nel sito

View File

@ -12,20 +12,20 @@ Tor è un protocollo e la sua implementazione open source in grado di collegare
La rete di Tor usa una topologia a maglia: 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).
![Step 1](https://www.torproject.org/images/htw1.png)
- Alice recupera la lista dei __nodi__ della rete Tor da un __directory server__.
- Alice si collega direttamente a uno dei __nodi__ della rete Tor.
![Step 1](https://www.torproject.org/images/htw1.png)
![Step 2](https://www.torproject.org/images/htw2.png)
- Il client Tor di Alice sceglie un percorso per raggiungere la destinazione dei dati.
- I collegamenti __in verde__ sono __crittografati__ mentre quelli in rosso sono __non necessariamenti protetti__
![Step 2](https://www.torproject.org/images/htw2.png)
- Il percorso può cambiare per destinazioni diverse, al fine di rendere ancora più difficile il tracciamento
![Step 3](https://www.torproject.org/images/htw3.png)
- Il percorso può cambiare in qualsiasi momento al fine di rendere ancora più difficile il tracciamento
### Perché è sicuro e anonimo
Quando un nodo decide di spedire un pacchetto fuori dalla rete:
@ -40,21 +40,29 @@ Inoltre:
- 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.
Di conseguenza qualsiasi intercettazione di un pacchetto a metà strada è inutile poichè:
Di conseguenza qualsiasi intercettazione di un pacchetto a metà strada del percorso nella rete Tor è inutile poichè:
- il pacchetto originale si trovava __incapsulato in strati crittografici__
- il sorgente e il destinatario scritti nel __pacchetto intercettato__ sono quelli delle __due estremità del singolo collegamento tra due nodi__, non quelli dell'originale destinatario e sorgente.
- __solo l'exit node__ sa chi è il vero destinatario del pacchetto.
- __solo il nodo del primo hop__ sa chi è il vero sorgente del pacchetto.
- il pacchetto si trova __incapsulato almeno uno strato crittografico__
- il sorgente e il destinatario scritti nel __pacchetto intercettato__ sono quelli delle __due estremità del singolo collegamento tra due nodi Tor__, non quelli dell'originale destinatario e sorgente.
- __solo l'exit node__ sa chi è il vero _destinatario_ del pacchetto.
- __solo il nodo del primo hop__ sa chi è il vero _mittente_ del pacchetto.
__Attenzione__ alle intercettazioni dal _nodo di uscita_ alla _destinazione finale_ del pacchetto:
- il pacchetto si trova tra __il nodo di uscita__ e la __destinazione finale__
- il pacchetto __non è più incapsulato nella crittografia di Tor__
- se il pacchetto __non dispone di ulteriori strati di sicurezza come TLS, OpenSSL o un sistema custom__ allora:
- chiunque può leggere il pacchetto
- il __nodo di uscita__ può _leggere_ ed _alterare_ il pacchetto
## Servizi Nascosti
Tor offre anche la possibilità di __gestire un servizio nascosto__ accessibile __esclusivamente tramite Tor__. Gli __hidden services__ di __Tor__ sono accessibile tramite la rete Tor attraverso il loro __onion address__, un indirizzo che permette ai pacchetti di essere instradati alla corretta destinazione.
Tor offre anche la possibilità di __gestire un servizio nascosto__ accessibile __esclusivamente tramite Tor__. Gli __hidden services__ di __Tor__ sono raggiungibili tramite la rete Tor attraverso il loro __onion address (.onion)__, un indirizzo che permette ai pacchetti di essere instradati alla corretta destinazione.
Un __hidden service__ può essere hostato anche dietro un __NAT__ o un __Firewall__ a patto che la macchina che lo offre sia connessa alla rete __Tor__.
Un __hidden service__ può essere mantenuto anche da dietro un qualsiasi __NAT__, __Firewall__ o sistema di sicurezza a patto che la macchina che lo ospita sia connessa alla rete __Tor__.
### WWW To Onion Gateway
Esistono dei servizi denominati __WWW to Onion gateway__ che permettono agli utenti di accedere ai servizi __.onion__ attraverso una normale navigazione __web__. Essi agiscono da __proxy__ in modo da contattare i servizi attraverso __Tor__ per conto dell'utente.
Esistono dei servizi denominati __WWW to Onion gateway__ che permettono agli utenti di accedere ai servizi __.onion__ attraverso una normale navigazione __web__. Essi agiscono da __proxy web__ in modo da contattare i servizi attraverso __Tor__ per conto dell'utente.
Ovviamente in questo modo l'effetto protettivo di __Tor__ viene annullato e l'utente è completamente tracciabile, però __Tor__ non è necessariamente richiesto sul computer dell'utente.
Ovviamente in questo modo i benefici di __Tor__ vengono annullati e l'utente è completamente tracciabile, in compenso però __Tor__ non è richiesto sul computer dell'utente.

View File

@ -1,23 +1,30 @@
## Dalle origini al 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.
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_) arricchiti tramite fogli di stile __CSS__ (_Cascading Style Sheet_) ma con l'enorme, rapida evoluzione della rete, il protocollo ha implementato la possibilità di inviare 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.__
Contemporaneamente, i browser si solo evoluti per permettere 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, i quali vengono eseguiti immediatamente alla loro ricezione__.
Questi script possono inviare numerosi dati riguardo la visita al sito, in particolare:
Questi script possono comunicare ai server remoti numerosi dati riguardo la visita al sito, in particolare:
- i click che sono stati fatti
- le sezioni che sono probabilmente state lette
- le sezioni che sono (probabilmente) state lette
- le pagine che sono state visitate e per quanto tempo
- le righe che sono state copiate
- indirizzo IP, browser usato e sistema operativo con relative versioni
Con l'importanza crescente di un metodo per inviare dati importanti con sicurezza, il protocollo __SSL__ (successivamente sostituito da __TLS__) è stato creato, e con esso lo standard __HTTPs__ che permette di utilizzare __HTTP__ in maniera sicura incapsulando i pacchetti all'interno di pacchetti __SSL__.
Con l'importanza crescente di un metodo per inviare dati importanti con sicurezza, il protocollo __SSL__ (successivamente sostituito da __TLS__) è stato creato, e con esso lo standard __HTTPs__ che permette di utilizzare __HTTP__ in maniera sicura incapsulando il traffico all'interno di pacchetti __SSL__.
## Persistenza
Gli script possono istruire i browser web a salvare delle informazioni o, se presenti, spedirle al server (__cookie__) permettendogli di __riconoscere l'utente anche durante le prossime visite__.
Gli script possono istruire i browser web a salvare delle informazioni o, se presenti, spedirle al server (__cookie__) permettendogli di __riconoscere l'utente anche durante le prossime visite__ con una procedura molto semplice:
1. il server richiede al client il cookie che gli è stato rilasciato precedentemente dallo stesso server
1. __se il client non ha un cookie__, allora non può essere riconosciuto dal server (per ora) e gli viene assegnato un nuovo cookie
- il server memorizza l'associazione __cookie-utente__ nel proprio database (o nella propria memoria)
- i cookie possono essere __temporanei__ (si cancellano alla chiusura del browser) o __permanenti__ (si cancellano dopo un certo tempo o mai)
1. __se il client ha un cookie__, allora il server può usarlo per riconoscerlo confrontandolo con le associazioni __cookie-utente__ memorizzate
Grazie alla persistenza, i server dietro ai più visitati siti web possono profilare gli utenti, analizzando il loro comportamento.
@ -27,10 +34,10 @@ La collaborazione tra i diversi colossi del web tra cui __Facebook, Google, Micr
Ci sono numerosi motivi per questa raccolta dati:
- __Pubblicità mirate:__ Google piazza le pubblicità sulle pagine web in base agli interessi dell'utente che andrà a visualizzarle, in modo da ottenere più click e di conseguenza più guadagni
- __Pubblicità mirate:__ Google inserisce le pubblicità sulle pagine web in base agli interessi dell'utente che andrà a visualizzarle, in modo da ottenere più click e di conseguenza più guadagni
- __Vendita dei dati:__ i colossi possono vendere dati riguardo, ad esempio, l'interesse degli utenti verso un prodotto piuttosto che un altro
- __Studio del mercato:__ analizzando le mode e le discussioni sociali è possibile analizzare o addirittura prevedere svolte nel mercato di certe categorie o brand di prodotti
- __Correlazioni tra soggetti apparentemente indipendenti__, ad esempio si può scoprire che un utente di Facebook è interessato anche a prodotti Apple, piazzando ulteriori pubblicità mirate
- __Studio del mercato:__ analizzando le mode e le discussioni sociali è possibile in certi casi prevedere svolte nel mercato di certe categorie o brand di prodotti
- __Correlazioni tra soggetti apparentemente indipendenti__, ad esempio si può scoprire che un utente di Facebook è interessato anche a prodotti Apple e creare correlazioni
## Opinione pubblica: privacy e controversie
@ -43,6 +50,17 @@ Una semplice ricerca sul Web riguardo a tutto ciò porta a scoprire l'esistenza
- __Ghostery__ e __disconnect.me__ per evitare di immagazzinare __cookie__ inutili per noi ma utili per le corporazioni che tracciano le nostre attività
- __AdBlock__ per eliminare o ridurre le pubblicità
__Attenzione:__ _AdBlock_ è un software __Closed Source__, dunque non è possibile sapere esattamente che tipo di operazioni esegua sul proprio dispostivo. E' molto consigliata l'alternativa __uBlock__, che è un _Software Libero_ e _Open Source_.
### Il problema di Google
Google è uno dei servizi che raccoglie il maggior numero di dati dai propri utenti. Volendone approfittare, esistono dei servizi che si offrono come alternativa non invasiva, ad esempio:
- il motore di ricerca __DuckDuckGo__ per evitare l'immensa quantità di dati recuperati da Google ad ogni nostra mossa con il suo motore di ricerca
- __OpenStreetMap__ al posto di __Google Maps__
- le soluzioni illustrate nel capitolo __"Condividere File Con Sicurezza"__ al posto di Google Drive
- un mail server gestito personalmente in accoppiata con un client mail sicuro al posto di GMail
### Ghostery
Tramite il plugin __Ghostery__, disponibile per tutti i browser web più usati, è possibile:
@ -51,4 +69,6 @@ Tramite il plugin __Ghostery__, disponibile per tutti i browser web più usati,
- conoscere le aziende a cui sono destinate tali informazioni
- bloccare l'invio delle informazioni di tracciamento
__Per provare tutto ciò__ è infatti sufficiente installare __Ghostery__ e, seguendo le istruzioni su http://ghostery.com/it/, collegarsi a uno o più social network o servizio come Google, LinkedIn, Facebook, notando __immediatamente__ lo scambio di dati di tracciamento tra noi e i server di questi servizi.
__Per provare tutto ciò__ è infatti sufficiente installare __Ghostery__ e, seguendo le istruzioni su [ghostery.com/it](http://ghostery.com/it/), collegarsi a uno o più social network o servizio come Google, LinkedIn, Facebook, notando __immediatamente__ lo scambio di dati di tracciamento tra noi e i server di questi servizi.
Attenzione però: __Ghostery è un software Closed Source__, dunque non è possibile sapere esattamente che tipo di operazioni esegua