Perché l'elenco delle esclusioni non è sottoposto ad hash
Chi costruisce il proprio sito lo apre venti volte al giorno. Su un contatore con quaranta visitatori al mese, metà delle statistiche sei tu. Per questo c'è un'impostazione: non contare le visite dal mio indirizzo.
Ovunque altro in questo servizio gli indirizzi passano per un hash con un sale segreto e la data, e l'indirizzo stesso non raggiunge mai l'archivio. In questo unico punto resta come l'hai digitato, in chiaro. È una decisione voluta e merita di essere detta ad alta voce invece che lasciata da scoprire.
La versione tentata per prima
La prima realizzazione salvava una somma di controllo dell'indirizzo, in coerenza con tutto il resto. Funzionava, salvava meno, ed era quasi inutile: la maggior parte delle connessioni domestiche riceve un indirizzo nuovo ogni giorno. L'esclusione era giusta quando la impostavi e non valeva nulla la mattina dopo.
Ciò che sopravvive a un cambio quotidiano è un intervallo — tipicamente il /24 o il /16 del fornitore, che resta lo stesso mentre l'ultima parte ruota. E un intervallo non si può confrontare come somma di controllo. L'hash distrugge l'ordine di proposito, e «questo indirizzo sta dentro questo intervallo» è una domanda sull'ordine. Non c'è scorciatoia ingegnosa; i due requisiti puntano in direzioni opposte.
L'intervallo sta quindi come è stato immesso, normalizzato, accanto ai suoi due estremi da sedici byte ciascuno, e un solo BETWEEN decide. IPv4 viene scritto nella sua forma IPv6 così che entrambe le famiglie abbiano la stessa larghezza e un unico confronto le copra tutte e due.
Perché qui questo scambio è accettabile
Ciò che viene salvato è la rete del gestore stesso, da lui digitata, a lui mostrata e da lui cancellabile in qualsiasi momento. Non è l'indirizzo di un visitatore. L'informativa sulla privacy dice la stessa cosa con le stesse parole, perché l'alternativa — descrivere il servizio come se applicasse l'hash a tutto ed eccettuare questo in silenzio — sarebbe quel tipo di affermazione vera a grandi linee che vale meno di nessuna affermazione.
Il limite è dieci voci per contatore: abbastanza per casa, ufficio e cellulare, poche abbastanza perché l'elenco non possa diventare un deposito generico di indirizzi.
Il secondo tipo, per ciò che si muove
Una parte del traffico ha identità stabile e indirizzo instabile: il proprio controllo di raggiungibilità, il recuperatore di anteprime di un programma di chat, un servizio di verifica. Nessun intervallo li prende.
Per loro l'esclusione confronta un pezzo dell'identificazione del browser. Inserire uptimerobot prende l'intera stringa che invia. Il minimo è quattro caratteri, perché un frammento di due lettere comparirebbe in quasi ogni identificazione e spegnerebbe il contatore del tutto.
Il punto generale
Un progetto di riservatezza è un insieme di scambi, e le parti interessanti sono quelle in cui una regola ha dovuto piegarsi. Le regole che non si piegano mai di solito significano che nessuno le ha ancora messe di fronte a un'esigenza vera.
Da evitare è piegarne una in silenzio. Un campo con hash che in realtà non lo ha, descritto nella documentazione come se lo avesse, è peggio di un campo in chiaro descritto chiaramente — spende una fiducia che non si è guadagnato, e prima o poi lo troverà qualcuno che non si aspettava di dover controllare.