In questo post, abbastanza lungo, rifletto sull'efficacia di un certo tipo di anti-spam. Il testo è rivolto a chi si interessa approfonditamente del problema, tutti gli altri lo possono considerare una lettura "facoltativa".
Alcuni giorni fa ho ricevuto il messaggio riportato nell'immagine a fianco.
La mail è arrivata immediatamente dopo una mia comunicazione all'utente in questione (ho oscurato il suo indirizzo per ovvie ragioni di privacy). Dopo diversi anni in cui se ne parlava ho finalmente avuto una dimostrazione "live" dei tanto discussi sistemi antispam Challenge and Response.
Questi sistemi si basano su un presupposto: chi ci scrive deve per forza essere una persona, e lo deve dimostrare facendo clic su un link che gli invieremo.
A prima vista può sembrare una trovata geniale, ma paradossalmente l'efficacia di questo sistema è inversamente proporzionale alla sua diffusione. Infatti se il challenge-and-response si dovesse affermare come metodo antispam, gli spammer cambierebbero sicuramente le loro tattiche in modo da rendere ancora più marcata l'inclusione di indirizzi realmente esistenti nel campo "From:" dei loro messaggi di spam, indirizzi ovviamente appartenenti a utenti ignari di tutto.
Oggi infatti, tranne in alcuni casi, lo spam ci viene inviato da indirizzi inventati come "john.doe@dominioqualsiasi.it". Lo spammer del resto è un imprenditore, un vero e proprio homo economicus, e non perde tempo a modificare il suo software in modo da fargli inserire a tutti i costi un indirizzo funzionante nel campo "From:". Ciò che interessa allo spammer è che l'indirizzo nel campo "To:" sia valido, il resto è una perdita di tempo (e quindi di denaro).
Ma se già un buon 10% dell'utenza iniziasse a usare sistemi di challenge-and-response (per brevità, C/R), agli spammer verrebbe a mancare un'importante fetta di "mercato", ragione sufficiente per costringerli a modificare la loro tattica, obbligandoli a inserire indirizzi funzionanti anche nel campo del mittente, nella speranza statistica che una buona fetta di ignari utenti a cui torna indietro il messaggio di "challenge" faccia comunque clic sul link di risposta, e che altri siano già inclusi nelle whitelist dei vari server.
Come risultato inizierebbe un'era di spam inviato solo usando mittenti reali, con conseguenze ancora più pesanti su tutti gli utenti: inizieremmo a ricevere tonnellate di notifiche riguardo a messaggi che non abbiamo mai mandato, in numero ben maggiore rispetto a quelle che riceviamo già oggi.
Immaginiamo uno spam inviato a un milione di indirizzi (non si tratta di cifre esagerate) usando come mittenti diecimila indirizzi realmente esistenti (basta andare a pescarli a caso dal pool di indirizzi usati come destinatari). Se tutti usassimo sistemi di C/R questi ultimi genererebbero a loro volta un milione di richieste di conferma contro questi diecimila indirizzi, andando a raddoppiare il carico di lavoro sui server, oltre che ovviamente moltiplicare il fastidio per tutti.
In sintesi, usare un sistema C/R significa semplicemente spostare il fastidio sugli altri: se io, utilizzatore di un sistema C/R, ricevo ogni giorno 200 messaggi di spam, posso star sicuro che almeno 200 persone verranno infastidite dal mio software. E se anche solo il 10% di queste dovesse cliccare lo stesso sul link, io riceverò comunque quei 20 messaggi di spam, e come se non bastasse il loro indirizzo verrà salvato per sempre nella lista dei mittenti autorizzati, cosa che col tempo renderebbe tale whitelist assolutamente inutile.
Ma non è finita. Vi è ancora tutta una serie di aspetti negativi legati ai sistemi C/R, che elencherò brevemente:
Mittenti confusi
Fin qui abbiamo ipotizzato che tutti i nostri amici/colleghi/conoscenti siano al corrente di come funziona un sistema C/R e che non abbiano problemi a far clic volontariamente sul link che gli presenteremo. Personalmente credo che una buona fetta di persone non solo non cliccherà sul link, ma le prime volte penserà addirittura di essere preda di un qualche sofisticato tipo di phishing. Finché essi non capiranno il meccanismo, l'utilizzatore di un sistema C/R perderà i loro messaggi.
Spam dai servizi C/R
Alcune aziende che forniscono il servizio di C/R sono a loro volta degli spammer, poiché si arrogano il diritto di inviare materiale pubblicitario a tutti quelli che per poter vedere il loro messaggio arrivare a destinazione sono costretti a fare clic sul link. In pratica, se il nostro interlocutore dovesse utilizzare un fornitore di C/R poco serio, il nostro indirizzo sarebbe alla mercè dell'ennesimo spammer.
Mittenti contrari
Alcuni mittenti potrebbero semplicemente essere contrari a venire incontro alle richieste del destinatario, vuoi per il problema del punto precedente, vuoi perché si trovano in una situazione di superiorità nei confronti del loro interlocutore (ad esempio un grosso potenziale cliente nei confronti di un fornitore, o il capo di un'azienda nei confronti di un collaboratore). Essi semplicemente non avranno alcuna intenzione di fare clic sul link, noi non potremo costringerli, e la mancata ricezione delle loro e-mail potrebbe avere ripercussioni spiacevoli. Certo, vi può sempre essere il caso in cui siamo noi stessi il boss, e curiosamente non abbiamo grandi clienti o partner importanti a cui dover render conto, ma onestamente quante persone si trovano in questa posizione privilegiata?
Perdita di messaggi inviati da sistemi automatici
Molti dei sistemi che quotidianamente ci inviano messaggi sono automatici: la nostra banca, la nostra carta di credito, paypal, tantissime newsletter e mailing list a cui siamo iscritti. Sono tutti invii gestiti il più delle volte da sistemi automatizzati, che ovviamente non risponderanno mai al nostro messaggio di "challenge". Certo, possiamo metterli manualmente in whitelist, ma riusciremo a ricordarceli tutti? Come se non bastasse, ogni volta che ci iscriviamo a una nuova newsletter dovremo inserire manualmente l'indirizzo nella nostra whitelist. Inoltre, come facciamo a conoscere l'indirizzo di provenienza della comunicazione automatica, se non ne abbiamo mai ricevuta una? Mesi fa mi sono iscritto all'invio di comunicazioni e-mail da parte della mia banca, ma non ho potuto conoscere l'indirizzo mittente finché non ho ricevuto il primo messaggio. Se avessi usato un sistema C/R quel messaggio non mi sarebbe mai arrivato. Inoltre, se da un giorno all'altro la banca cambiasse l'indirizzo di provenienza da "newsletter@banca.it" a "bollettino@banca.it" io non riuscirei ad accorgemene, poiché il sistema C/R bloccherebbe la nuova mail "sconosciuta" (so cosa state pensando: mettere in whitelist tutto il dominio; ma oltre alla pericolosità intrinseca dell'operazione, a volte cambia anche quello).
Difficoltà nella partecipazione a liste di discussione
Immaginiamo di doverci iscrivere a una mailing list con altri 1000 partecipanti. I messaggi di questa lista arrivano nelle caselle degli utenti direttamente con l'indirizzo del mittente, non con quello della mailing list (come avviene su molte liste altamente trafficate). Ora, se tutti questi mille utenti dovessero usare sistemi C/R, e io fossi un nuovo iscritto che invia il suo messaggio di benvenuto, cosa dovrei fare quando per tutta risposta - e nel giro di pochi minuti - dovessi ricevere nella mia casella 1000 richieste di autorizzazione? Passare il pomeriggio ad autenticarmi su tutti i server? E se la lista dovesse avere un ricambio frequente di indirizzi - come avviene spesso su liste del genere - possiamo star certi che ad ogni nuovo messaggio inviato dovremo ri-autenticarci su almeno quindici/venti server. Non farlo potrebbe addirittura portare all'inserimento del nostro indirizzo in una blacklist.
Blacklist
Alcuni sistemi C/R mettono in blacklist quegli indirizzi che per un tot di volte sono stati invitati a rispondere a una mail di challenge/request (sistemati temporaneamente in una sorta di "graylist"), ma che per vari motivi non lo hanno mai fatto. Il software ritiene che tali indirizzi debbano essere inesistenti, e per evitare il carico sul server li inserisce in una lista nera che in futuro cancellerà automaticamente i loro messaggi senza neanche inviargli più la notifica di C/R. A volte queste blacklist sono server-wide, ovvero se il software C/R di un singolo utente aggiunge un indirizzo nella lista nera, il mittente non potrà più inviare messaggi a tutti gli altri utilizzatori del sistema di C/R. Il problema ovviamente si verifica quando l'utente in questione non ha mai risposto ai messaggi di C/R perché consapevole del fatto che questi fossero originati da uno spam. Malgrado egli abbia mantenuto un comportamento corretto, il suo indirizzo verrà messo in blacklist e bloccato su tutto il server. Con ovvie conseguenze nel caso un giorno egli dovesse avere necessità di contattare un utente che utilizza quello stesso server.
Due sistemi contro
Se due utenti usano due diversi sistemi di C/R, chi si autorizza per primo? Sia Mario sia Michela hanno protetto la loro mail con due sistemi C/R messi a punto da due fornitori diversi. Mario invia una mail a Michela, ma il sistema C/R di Michela blocca la mail di Mario, a cui manda la "challenge". A sua volta il sistema C/R di Mario blocca il messaggio di "challenge" del sistema di C/R di Michela e manda una nuova "challenge" all'indirizzo di Michela, che ovviamente non lo riceve perché il suo C/R è in attesa della risposta alla sua prima "challenge". Come se ne esce? In attesa di un protocollo che permetta ai due sistemi di "parlarsi" si potrebbero mettere automaticamente in whitelist tutti gli indirizzi a cui inviamo un messaggio, anche se a quel punto dovremmo delegare al sistema di C/R non solo la ricezione delle mail, ma anche il loro invio (interfacciandoci con un apposito SMTP esterno, azione peraltro non consentita da molte reti aziendali).
Come potete capire di complicazioni ve ne sono molte, e a mio parere superano il fastidio derivante dallo spam, che si può contrastare con metodi più tradizionali come software dotati di filtri bayesiani (ne parleremo un'altra volta).
Se volete farvi un'idea della discussione in atto, ecco alcuni link che potrete trovare interessanti:
- Discussione sul forum di Spamcop.net, favorevoli e contrari
- Intervento su Linuxmafia.com contro i sistemi di C/R
- Un vecchio articolo di Pc Magazine che esalta un servizio di C/R
- Informazioni su un'iniziativa che promuove un protocollo per permettere maggiore compatibilità fra i vari sistemi di C/R
- Due dei maggiori servizi di C/R anni fa si scontravano sul brevetto
- Intervento del webmaster di Tardigrade.net contrario ai sistemi C/R



Aspetto l'articolo sui filtri bayesiani, vorrei conoscere gli eventuali contro, soprattutto se esistono dei veri e propri difetti "concettuali" a questi filtri (sono un fiero e contento utilizzatore di Mozilla Thunderbird da più di un anno).
Grazie per la divulgazione.
Scritto da: supernaicol | 04 settembre 2006 a 00:20
L'articolo sui filtri bayesiani prima o poi arriverà, anche se probabilmente non a breve (non sempre si riesce a trovare una mattinata libera per mettersi alla tastiera in tutta tranquillità).
Anche io uso Thunderbird e i suoi filtri da circa un anno. A naso direi che con me individuano circa il 40% di spam, presentando circa lo 0.5% di falsi positivi.
Un risultato mediocre, secondo me, intrinseco però alla natura dei filtri bayesiani: essi necessitano infatti di un periodo di tempo più o meno lungo per adattarsi, ma spesso gli spammer si adattano prima.
Scritto da: Locutus | 04 settembre 2006 a 02:38