lunedì, ottobre 05, 2015

De anonimato su Internet

Premessa: io non sono un "esperto", mi limiterò a descrivere le poche cose ovvie che conosco.

Definizione di "utente".
Se per utente intendiamo una persona che compra un aggeggio e lo adopera cercando di imparare il meno possibile sul suo funzionamento, allora lo "anonimato" per questo utente non esiste. Qualsiasi cosa faccia, ci sarà sempre qualcuno che ne segue i movimenti.
Se invece per utente intendiamo una persona disposta a darsi un po' da fare, allora lo "anonimato" esiste e ovviamente assume livelli differenti al crescere dell'impegno che l'utente ci mette.

Definizione di "entità ostile".
Se per entità ostile intendiamo un altro utente, la possibilità di tracciare una persona è nulla, zero.
Se invece intendiamo gli organismi di Polizia/Giustizia, questi sono essenzialmente limitati da due fattori, primo fattore, Internet è una rete delocalizzata, quindi siccome un computer si può trovare fisicamente ovunque nel mondo e gli organi di Polizia/Giustizia non hanno autorità fuori dal confine nazionale, nella maggior parte dei casi non fanno nulla. Deve essere una cosa veramente seria oppure ci deve essere una qualche ragione politica per spingerli a chiedere alle autorità di un altro Paese di compiere una azione di repressione e anche cosi spesso e volentieri non ottengono risultati (da cui alla prima parte). Secondo fattore, è tecnicamente difficile localizzare un utente che non vuole essere localizzato, andiamo ad esaminare le ragioni tecniche.

Primo punto, la connessione Internet.
Il provider che fornisce la connessione ha tre informazioni fondamentali. Conosce i dati anagrafici del titolare del contratto, conosce l'IP address assegnato dal proprio server quando la connessione viene stabilita, conosce l'ora. Inoltre, se non vengono messe in atto delle cautele, può leggere il contenuto di parte del traffico che passa sui suoi apparati e può registrare le richieste che l'utente fa verso indirizzi Internet.

Contromisure.
Se non vogliamo essere "identificati" dal provider, quindi da chi accede ai dati del provider, la prima cosa da fare è non collegarsi da una connessione che è registrata a nostro nome. Serve una connessione "aperta", per esempio un hotspot wireless che si trova in una piazza o in un locale pubblico. Chi gestisce la rete locale, per identificare i computer che ne fanno parte, ha solo un modo, il MAC address della scheda di rete di ogni computer. Quindi in teoria dovrebbe chiedere un documento, guardare il MAC address e assegnare un IP statico privato a quel MAC address. Se non viene fatto cosi e si consente l'accesso alla rete locale a qualsiasi computer ne faccia richiesta, anche tramite il log delle connessioni, considerato che il MAC address si può mascherare, è impossibile risalire a quale computer si è collegato alla rete.

La seconda cosa da fare è mascherare il traffico di rete tramite encription.

La terza cosa è mascherare il proprio IP alle estremità delle connessioni. Sarà visibile al provider ma se ci colleghiamo dall'interno di una rete locale "aperta", non saprà a quale computer corrispondeva. Sopratutto, ci presenteremo con un altro IP all'estremo delle connessioni, quindi nessuno potrà associare l'IP origine (che comunque non ci identifica) all'IP destinazione.

La quarta cosa è mascherare il MAC address della propria scheda di rete che ci identifica all'interno della rete locale.

I punti da due a quattro si ottengono tramite l'uso di software apposito e passando attraverso il network TOR. Vedi qui:
Privacy for anyone anywhere
Prego notare che Tails è solo una collezione di strumenti indipendenti, assemblata per comodità in una "suite". Volendo si può usare uno solo o tutti questi strumenti prendendoli dal loro sito, senza Tails.

Esempi pratici:
La cosa più banale: se io pubblico qualcosa come "anonimo" su un sito qualsiasi, per esempio questo blog, le autorità italiane non hanno gli strumenti per fare nulla tranne ingiungere al responsabile del sito di rimuovere il contenuto. Se il responsabile del sito, per esempio io, non si adegua, posto che non si potesse risalire alla mia identità dai contenuti del sito, le autorità dovrebbero chiedere a Google prima di disabilitare il sito e poi eventualmente di fornire i dati in loro possesso riguardo la mia identità (non quella dell'autore del documento originario). A quel punto Google può ottemperare oppure no, la richiesta deve essere molto circostanziata. Se ottempera, bisogna vedere che dati io ho fornito a Google, se io sono cittadino italiano e rispondo alle autorità italiane, eccetera. Per l'autore del documento originario invece tutto quello che possono avere da Google è lo IP address e l'ora (vedi sotto).

Mettiamo che io voglia pubblicare un testo dentro un certo sito Web ma non voglio che si possa risalire all'autore. Usare tutte le cautele sopra descritte risolve il problema ma volendo si può anche accontentarsi di meno, basta arrivare al sito passando attraverso un "proxy anonimo", magari che sia fisicamente collocato in un Paese extra-europeo. Il proxy anonimo è un server che riceve le richieste di connessione e le rinvia a proprio nome, senza inoltrare le informazioni sul richiedente originario, allo stesso modo rinvia la risposta verso il richiedente. Se si passa attraverso il proxy, il sito su cui si pubblica il documento conosce lo IP del proxy ma non quello dell'utente. A questo punto la "entità ostile" deve chiedere al gestore del proxy i log delle richieste che ha ricevuto per trovare l'IP originario, ammesso che esistano. Siccome questo server si trova a Vattelapescalandia, siamo abbastanza sicuri che la cosa non avrà seguito. Vedi qui: Anonymizer

Mettiamo il caso che io voglia mandare una email confidenziale a Tizio, senza che nessun altro la possa leggere. Prima cosa, devo tenere presente che Tizio leggerà la email quindi chi accede ai documenti di Tizio accede anche a questa. Invece per chi si trovasse in mezzo tra me e Tizio, bisogna criptare la email con opportuno strumento a doppia chiave, come PGP. Vedi qui: Enigmail

Nota: come fanno a spiare gli utenti?
Contrariamente alla vulgata, per spiare la gente normalmente non si risale a quello che fa volontariamente su Internet ma si installa un software dentro il dispositivo che queste persone adoperano. Quindi non è una raccolta dati passiva, è una intromissione attiva, che funziona con queste premesse:
1. accesso fisico al dispositivo. Io lascio il mio PC incustodito, arriva qualcuno che infila una chiavetta USB, accede alla chiavetta e tanto basta per installare un software "malevolo" nel mio PC, sfruttando bachi e backdoor intenzionali nel software che gestisce le periferiche USB. Ovviamente funziona anche se mi danno una chiavetta USB e io la inserisco senza sapere che dentro c'è la sorpresina.
2. tramite accesso di rete. Sempre sfruttando bachi e backdoor intenzionali nel software che gestisce la scheda di rete o nei servizi di rete del sistema operativo, appena mi collego ad una certa rete si installa il software malevolo.
3. tramite file apparentemente innocui che apro/eseguo sul mio dispositivo, detti "cavalli di troia". Può essere qualsiasi cosa, per esempio io credo di installare un certo software e insieme installo il software malevolo, oppure apro il verbale della riunione condominiale e installo il software malevolo, eccetera.
4. tramite firmware presente su qualsiasi dispositivo e periferica dotati di memoria propria. La parola "firmware" significa "il software messo dal fabbricante". Oggi come oggi qualsiasi cosa ha a bordo una memoria che contiene un firmware, per esempio la scheda video di un computer ha la sua memoria e il suo firmware indipendente, a maggior ragione ce l'ha una macchina fotografia. L'utente non ha nessun modo di verificare il contenuto di questo firmware e nemmeno che operazioni compia, visto che tutto avviene al livello sottostante quello del sistema operativo. In linea teorica bisognerebbe avere un aggeggio in grado di scaricare una copia del firmware dal chip su cui è installato e poi fare il reverse engineering del codice.

Le risorse necessarie per fare quanto sopra descritto dipendono dal livello di sofisticazione voluto. Per esempio, installare un software qualsiasi tramite un "cavallo di troia" è facilissimo, lo può fare qualsiasi programmatore un po' sveglio, sfruttare bug e backdoor del sistema operativo o di qualche programma richiede competenze elevate di hacker oppure la collaborazione di chi sviluppa il software, manipolare il firmware richiede la collaborazione del produttore/venditore dei chip. Quindi la seconda e la terza cosa sono più che altro appannaggio di agenzie di spionaggio governative.

19 commenti:

  1. Chiedo scusa ma ho cancellato i commenti perché non pertinenti. Mi piacerebbe ricevere eventuali correzioni e suggerimenti sull'argomento in questione.

    RispondiElimina
  2. Va beh, non so se il mio commento fosse stato impertinente!

    RispondiElimina
  3. Ostrega, avrei voluto collegare uno di essi.
    :/

    RispondiElimina
  4. Il solito caratteraccio di Lorenzo !

    :P

    Invece, io ti faccio i complimenti per il post di sgrossatura, e penso che te lo linkerò dal mio blog ...
    ( prima o poi, arroterò l'argomento e ti farò i riccioli, promesso ).

    ===

    RispondiElimina
  5. In nome di Orome, lo capite il significato di "commenti pertinente"?
    Uffa.
    :)

    RispondiElimina
  6. alla luce di quanto spiegato, un utente che non prende alcuno di questi accorgimenti, quando va nella sua home banking, rischia che gli vedano la password e gli rubino le palanche?

    RispondiElimina
    Risposte
    1. Dipende dalla procedura di autenticazione che usa la banca. Di solito la banca ti da un user name e una password e poi ti da in mano una serie di codici "usa e getta" (o un aggeggio che genere questi codici) che costituiscono una "chiave fisica".

      Lo user name e la password possono essere scoperti in vari modi ma il codice "usa e getta" ce l'hai fisicamente in mano tu quindi l'ipotetico "ostile" dovrebbe o rubarti i codici oppure trovare il modo di generare un codice valido che completa la autenticazione.

      A grandi linee è lo stesso problema del bancomat. Rubare o clonare una carta non basta, devi anche conoscere il PIN, cioè il numero che convalida le operazioni. Quindi per duplicare il tuo bancomat devono mettere un dispositivo che legge la banda magnetica e una telecamera che inquadra la tastiera quando digiti il numero. Il PIN ha l'inconveniente che è sempre lo stesso mentre nel caso dello "home banking" di cui sopra, di solito i codici si usano una volta sola.

      Elimina
    2. Comunque, gli "accorgimenti" descritti sopra non servono tanto a proteggere il PC da intrusione, servono per non essere identificati quando si pubblica qualcosa su Internet.

      Sono due questioni completamente differenti. In sostanza, il problema della "sicurezza" dipende dal fatto che il PC comunica con l'esterno attraverso delle "aperture". Queste aperture possono essere usate per introdurre software ostile che compia operazioni più o meno dannose senza l'autorizzazione dell'utente del PC.

      Ho accennato brevemente alla cosa perché il modo più usato per identificare e controllare le persone tramite Internet è quello di installare qualcosa sul loro dispositivo e poi questo qualcosa telefona alla "mamma".

      Elimina
    3. La difesa contro l'intrusione necessariamente si basa sulla idea di dividere le funzioni del PC in "compartimenti", dove le "aperture" si trovino in compartimenti "esterni" che non hanno accesso ai compartimenti "interni", cosi l'intrusione non riesce oppure fa parecchia fatica a risalire verso l'alto e acquisire la capacità di eseguire operazioni autonomamente, senza autorizzazione.

      Se prendiamo per esempio Windows, il difetto catastrofico è che per facilitare l'utente, Windows è stato concepito in modo che l'utente faccia tutte le sue operazioni come "root", cioè mentre si trova nello stato di amministratore con tutti i poteri. Quindi quando noi usiamo il browser e il browser esegue del codice scaricato da un server remoto, questo codice viene eseguito coi permessi di "root" e può fare qualsiasi cosa.

      Invece i sistemi *nix, per esempio GNU Linux, sono fatti in modo che l'utente usi i programmi con accesso solo alla sua directory "home" e subdirectory. Quando l'utente vuole accedere ai livelli superiori, per esempio installare un programma, gli viene chiesto di autenticarsi esplicitamente come "root". Significa che un programma che sto usando come utente non può fare nessuna operazione come "root" senza che io assuma volontariamente il profilo "root" (che posso anche non avere se non sono amministratore della macchina).

      Un ulteriore livello di compartimentazione consiste nell'eseguire parti del sistema operativo dentro "contenitori" separati e "virtuali", che possono compiere solo le operazioni specifiche per cui esistono. Per esempio un contenitore che gestisce il traffico di rete e che "vede" le schede di rete non tramite i driver di sistema ma tramite una emulazione. Questa parte capisco che sia un po' oscura e quindi mi fermo qui.

      Elimina
  7. il concetto è abbastanza chiaro anche a una zappa come me:

    se viene un tale a potarti la siepe, basta che gli apri il cancello del giardino, non serve che gli dai anche le chiavi di casa

    RispondiElimina
    Risposte
    1. Purtroppo i PC e i furbofoni sono pensati in modo che sembrino facili da adoperare e questo viene ottenuto nascondendo all'utente un sacco di operazioni che avvengono al disotto delle cose che gli vengono mostrate.

      E' come se tu avessi una villa con tantissime stanze e tanti ingressi ma tu ne conoscessi solo una piccola parte.

      Elimina
  8. Eh.
    Riflettevo sul rapporto tra privacy e sicurezza in ambito strettamente tecnico ( e non morale ... umanistico ) : la prima, può essere intesa come una sotto-categoria della seconda ?

    RispondiElimina
    Risposte
    1. Direi di no. La "privacy" riguarda quello che fai quando esci verso Internet, la "sicurezza" riguarda quello che entra da Internet senza il tuo consenso.

      Tecnicamente, non esiste "privacy", due computer per collegarsi devono conoscere i rispettivi indirizzi di rete. Il concetto di collegamento implica il concetto di condivisione di risorse, quindi al massimo ci può essere una limitazione a quanto condividi. In questa logica esistono sistemi che riducono al minimo le cose che condividi, per esempio TOR, che comunque semplificando al massimo, si riduce nel frapporre dei nodi intermedi tra le estremità della connessione che nascondono ad ogni estremità l'indirizzo dell'altra e nel criptare quanto più possibile del traffico di rete in modo da rendere più difficile a chi si trova in mezzo di leggere quello che transita.

      Invece tecnicamente la "sicurezza" dipende da quanto controllo hai su quello che entra nel tuo computer con qualsiasi metodo. La cosa migliore e non collegare il computer a nessuna rete e a nessun dispositivo, cioè non fai entrare niente. Viceversa, collegarsi ad una rete su cui non hai nessun controllo come Internet o collegare una periferica che ti hanno prestato o eseguire un programma fatto e/o distribuito da non si sa chi, significa il minimo possibile di "sicurezza". A quel punto diventa una corsa tipo "proiettile/corazza", tu puoi mettere delle barriere e l'eventuale entità ostile può cercare di bucarle.

      Elimina
    2. Come dicevo sopra, per "spiare" la gente di solito si installa un programmino nel computer che registra le attività oppure consente l'accesso remoto. E' un problema di "sicurezza" che diventa un problema di "privacy" in seconda battuta. Tecnicamente il primo problema, cioè la possibilità/facilità di installare un programmino del genere, è molto più importante del secondo problema.

      Invece la "privacy" intesa come il grado di "anonimato" che si può ottenere o conservare quando ci si collega ad Internet, basti pensare che fino a qualche tempo fa in Italia la connessione anonima era vietata per legge. La questione se l'anonimato sia ammissibile, prima ancora che possibile, è ancora dibattuta dai legislatori di tutto il mondo. La logica è che se la legge vieta di girare per strada mascherati e ci obbliga a portare con noi un documento di identità, mostrare la targa dell'auto, eccetera, allo stesso modo non si potrebbe "frequentare" Internet sotto mentite spoglie. Tecnicamente poi l'anonimato è in contraddizione con il fatto di collegarsi a qualcosa, quindi sommando le due cose, a me sembra abbastanza un falso problema.

      Elimina
    3. In che senso, ti sembra un falso problema ?

      Elimina
    4. La "privacy" non è un problema.
      Vedi la scemenza assoluta dell'avvertenza sui cookie che compare in testa al blog.
      Di tutte le cose che possono capitare quando si usa un dispositivo (furbofono, tavoletta, PC), il fatto che le tue abitudini vengano in qualche modo registrate è veramente il minore dei mali, una cosa innocua.

      Invece il fatto che a tua insaputa sia possibile piantare un programma sui dispositivi di cui sopra, certi casi fuori ogni possibilità di individuazione e/o di rimozione, è un problema veramente serio e dalla conseguenze catastrofiche.

      Elimina
    5. L'avvertenza sui cookie ... che immane cazzata.
      E che rottura di coglioni ...

      Elimina