[Golem] Due parole sulle modalità antitracciamento di Firefox
giomba@linux.it
giomba@linux.it
Mer 24 Maggio 2023 18:23:32 CEST
Ieri sera, in Officina, è nata una piccola discussione su "comportamenti
strani e inusuali dei siti web", che si è conclusa con la risoluzione
del problema puntuale che era stato riscontrato, ma che, a mio avviso,
necessita di maggiore approfondimento.
Questa mail è il risultato del discorso lasciato a metà ieri sera.
Per capire il motivo dietro a certi comportamenti strani, è prima
necessario che descriva approssimativamente come funziona il web.
Quello che segue è un riassunto di come funziona il web fatto da uno che
non lo sa, quindi, per qualunque imprecisione, invito gli esperti a
intervenire. So già che ci sono imprecisioni, che magari qualcuno mi
potrebbe chiarire anche a me :-)
Il web è un servizio di tipo client-server, dove il client (cioè il
browser dell'utente, per esempio Firefox), richiede delle risorse al
server (cioè chiede le cosiddette "pagine web" a un altro computer, il
server, che sta lì sempre acceso, pronto a rispondere).
Quando il client chiede una pagina, la conversazione tra client e server
si svolge essenzialmente in questo modo:
client: "ciao server, mi mandi la pagina X?"
server: "ok tieni la pagina X"
Se, successivamente, il client dovesse richiedere un'altra pagina allo
stesso server, il server non avrebbe nessuna idea che si tratta dello
stesso client, perché il protocollo di comunicazione non prevede nessuna
informazione sullo stato pregresso.
Ora si immagini che ci si debba registrare su un sito web e si debbano
performare delle operazioni in modo autenticato: secondo quando
descritto sopra, sarebbe necessario autenticarsi per ogni pagina che si
visita su quel sito, cioè si dovrebbe continuamente inserire la propria
password ad ogni cambio di pagina.
Questo però non avviene, perché sono stati inventati i famigerati cookie.
Cos'è un cookie? Un cookie non è altro che un piccolo identificatore che
il server manda al client la prima volta che questo si collega, e che
poi il client gli rimanda indietro ogni volta che si collega di nuovo.
Guardando il cookie, il server è in grado di capire se sta servendo
delle pagine web ad un client che ha già incontrato.
Dunque la conversazione con i cookie si svolge così:
client: "ciao server, mi mandi la pagina X? non ho cookie"
server: "ok tieni la pagina X; il tuo cookie è 1234"
In seguito, il client che si ricollega, dirà:
client: "ciao server, mi mandi la pagina X? Io sono 1234"
server: "ok tieni la pagina Y; il tuo cookie è sempre 1234"
In questo modo, il server sa che sta parlando con lo stesso client di
prima, e può evitare di chiedergli di nuovo la password.
Da questo esempio si evince già una cosa: che tutti gli avvisi
sull'accettazione dei cookie che siamo costretti a cliccare quando
navighiamo, sono fuffa, perché tutta la responsabilità dell'utilizzo dei
cookie è del client, e non del server.
Il client può benissimo accettare tutti i cookie che vuole, basta che
poi non li rimandi indietro al server, e quest'ultimo non avrà "nessun"
modo di tracciarlo.
Detto questo, continuiamo il percorso sul funzionamento del web.
Le pagine web sono oggetti complessi costituiti da numerosi elementi: il
testo, lo stile di visualizzazione, le immagini, eccetera.
Ognuno di questi elementi necessita di essere richiesto separatamente al
server: prima la pagina col testo, poi tutti gli elementi accessori.
Ne consegue che la conversazione per ricevere una pagina web complessa
da un server, sarà qualcosa di più lungo, tipo:
client: "ciao server, mi mandi la pagina X?"
server: "ok tieni la pagina X"
Il client visualizza la pagina, e scopre che c'è allegato uno stile di
visualizzazione, chiamiamolo S, dunque lo chiede al server.
client: "ciao server, mi mandi lo stile S?"
server "ok tieni lo stile S"
Solo a questo punto, il client è in grado di comporre e visualizzare
correttamente la pagina web.
Una pagina web moderna si compone di numerosi elementi.
Per esempio, quando si accede alla home page del GOLEM, si avviano circa
40 richieste per 40 file diversi.
Ora: non è necessario che tutti questi elementi risiedano sullo stesso
server. Per esempio, il testo di una pagina potrebbe risiedere su un
server, mentre le immagini e i caratteri tipografici su un altro.
Questo può avvenire per numerose ragioni, per esempio perché il server
per servire le immagini è più vicino all'utente, per migliorare le
prestazioni, ... ogni sito web sceglie la sua strategia, in base a
decisioni tecniche e non.
Alcuni noti giganti dell'informatica forniscono insiemi di
"blocchettini" per comporre le pagine web in grande quantità: per
esempio script per velocizzare lo sviluppo, o caratteri tipografici.
Il vantaggio di raccogliere questi file su un server solo e noto, fa sì
che, durante la navigazione, se il client deve recuperare più volte lo
stesso file, possa accorgersi che si tratta sempre dello stesso file, ed
eviti di scaricarlo più volte, velocizzando la navigazione.
(Anche e soprattutto quando più siti diversi fanno uso dello stesso file
condiviso)
Alcuni di questi servizi sfruttano la loro centralità per tracciare
l'utente: per esempio, quando si naviga su siti diversi A e B, ma che
utilizzano lo stesso carattere tipografico, anche se il client accede a
due server diversi A e B per il contenuto testuale, poi va sempre a
recuperare il carattere tipografico dallo stesso server terzo.
In questo modo, il server che fornisce i caratteri tipografici, è in
grado di correlare il fatto che il client ha visitato i due siti A e B.
Per inferire questa informazione, il server tracciante può utilizzare i
cookie di cui sopra, che il client gli rimanda indietro.
(E anche altri meccanismi di cui non so abbastanza, per esempio, mi
viene in mente il fingerprinting, e altre diavolerie che non conosco, e
per cui servirebbe almeno un programmatore web).
Il server tracciante, non vedendo mai i cookie provenire da un client,
può però insospettirsi, e capire che il client sta utilizzando qualche
meccanismo di protezione dalla tracciatura, perché essenzialmente gli
appare spesso, e sempre anonimo.
A questo punto, dunque, per "invitarlo gentilmente" a riabilitare la
tracciatura, semplicemente smette di fornirgli i contenuti che sta
richiedendo, così da causargli un disservizio.
Il client dunque si può ritrovare con pagine web parzialmente
funzionanti, in cui mancano immagini, in cui manca lo stile di
visualizzazione, in cui manca il carattere tipografico carino, e così via.
Utilizzare una delle modalità "Restrittive" fornite da Firefox contro il
tracciamento, se da una parte migliora l'esperienza utente dal punto di
vista della privacy, dall'altra la può peggiorare dal punto di vista
della fruibilità.
In questo periodo storico, il mondo intero va nella direzione della
tracciatura, perciò Firefox fa quel che può, ma non è infallibile, e ciò
che può funzionare oggi non è detto che funzioni domani.
Magari domani qualche sviluppatore del server tracciante affina la
tecnica per identificare i meccanismi antitracciatura di Firefox, e di
colpo causa nuovi disservizi agli utenti di numerosi siti web diversi;
poi Firefox si aggiornerà e riuscirà di nuovo ad aggirare queste
restrizioni, finché qualcuno non affinerà di nuovo l'algoritmo, e così
via: è un gioco di guardie e ladri.
Del resto, non è detto che ciò che è giusto vada anche di moda.
Su Firefox poi possono essere installate numerose estensioni mirate a
mitigare numerose questioni di tracciamento, alcune di queste sono
indicate qua:
https://wiki.golem.linux.it/Igiene_Informatica
(ennesima pagina che avrebbe bisogno di essere aggiornata per gli
strumenti, ma che rimane comunque valida per i metodi)
Sperando di aver chiarito la discussione avuta ieri sera,
un saluto.
--
giomba
Maggiori informazioni sulla lista
golem