Utenti, phishing e siti sicuri

Ormai più di dieci anni fa, Netscape iniziava lo sviluppo del protocollo SSL. Ovviamente il protocollo prevedeva la cifratura delle connessioni, ma questo lo facevano già molti altri. La novità di SSL era che si preoccupava principalmente dell'autenticazione del server, tanto che il client poteva non essere autenticato; inoltre, l'autenticazione faceva uso di certificati. Con l'uso dei certificati, sarebbe stato molto più difficile  impersonare un generico sito web; senza questo meccanismo, la manipolazione della connessione, o una manipolazione del DNS, avrebbero permesso a un malintenzionato di presentare un proprio sito copia di quello originale, con lo stesso indirizzo di quello originale; l'uso di certificati avrebbe impedito di riconoscere come autentico un tale sito pirata, dato che questo non sarebbe stato in grado di completare la fase di autenticazione con la chiave privata associata al certificato. Il protocollo veniva infatti sviluppato anche per favorire il commercio elettronico, il che richiedeva che l'acquirente interagisse con siti web di venditori con cui non aveva mai avuto contatti. Allora si sapeva già che la "sicurezza" delle transazioni e la fiducia del compratore nel meccanismo sarebbero state un fattore decisivo nella diffusione del commercio elettronico.
Negli anni successivi, SSL è stato presentato come web sicuro, connessione sicura, e con mille altri aggettivi, evidenziando però principalmente la cifratura della connessione, rispetto al riconoscimento e all'autenticazione del sito. Ad esempio, ho fatto un giro su alcuni siti web di banche, sia grandi che piccole. La maggior parte, al momento in cui l'utente chiede di accedere ai servizi online, passano ad una pagina https. Alcune utilizzano dei frame https inseriti in una pagina http per l'autenticazione, come fanno anche molti altri siti di importanti aziende e istituzioni, passando a pagine https solo ad autenticazione riuscita. Pochissime (ne ho vista una) usano un certificato anche per l'utente. Almeno una usa frame https in pagine http anche dopo l'autenticazione, e quindi l'utente non ha mai la tranquillità del "lucchetto chiuso".
Quest'ultimo caso, insieme ad altre indicazioni, suggerisce che la gestione della sicurezza, anziché migliorare, stia peggiorando. Non tutti questi siti forniscono un link "sicurezza" in cui spiegano i meccanismi di sicurezza, ma quelli che lo fanno generalmente mettono l'accento principalmente sull'alchimia della crittografia a 128 bit. Solo alcuni parlano di "crittografia certificata", ad es. da Verisign, mentre in nessuno ho trovato indicazioni chiare sul fatto che l'autenticità del sito è certificata. Mentre anni fa era normale che fosse messo in risalto il "lucchetto chiuso", ormai è una cosa che si trova evidenziata in pochi siti. Perché? Sui motivi dei limiti nell'uso di https ho sentito le motivazioni più disparate, e devo dire che nessuna mi ha convinto. Sarei curioso di sapere se chi ha seguito le indicazioni del commerciale o del tecnico che ha suggerito di non avere una pagina interamente https per il login, ha verificato oggettivamente un effettivo vantaggio sui concorrenti, o una reale riduzione dei costi complessivi.
A volte, credo che non ci sia stata una vera motivazione: il sito è stato semplicemente tenuto "più leggero" per il server, senza valutare realmente la differenza in termini di sicurezza fra una pagina https ed un frame https. Forse è quindi meglio ripartire dall'inizio.
Un requisito per molte forme di commercio elettronico è l'autenticazione delle parti. Non è un requisito del commercio elettronico in generale, dato che sarebbe possibile l'acquisto anonimo con mezzi di pagamento anonimi, ma nella pratica attualmente le due parti si devono riconoscere. Questo vuole dire che c'è una fase iniziale in cui l'utente si registra sul sito, o direttamente presso l'azienda (ad esempio una banca), e gli vengono rilasciate delle credenziali. Tuttavia, anche il sito dell'azienda si deve in qualche modo autenticare al cliente; se così non fosse, il cliente potrebbe fornire a terzi le proprie credenziali o altri dati riservati. L'uso di certificati anche per il cliente limita la possibilità di sottrargli le credenziali, ma aggiunge una complessità di gestione che sarebbe accettabile in pochi contesti (ad es. banche) e che, anche in questi contesti, pochi hanno voluto affrontare. Per autenticarsi al cliente, il sito può utilizzare una connessione https, ovvero http su SSL/TLS: il browser del cliente riconosce come autentico il certificato fornito dal sito, la sua corrispondenza al nome di dominio riportato nel certificato stesso, ad esempio www.amzon.com, e garantisce al cliente, cifrando la connessione, che effettivamente è in contatto con quel sito; per manifestare la propria soddisfazione, il browser mostra un'icona di lucchetto chiuso. La tentazione tuttavia, è di fornire al cliente con https solo le informazioni critiche o riservate: il frame con la richiesta delle credenziali, quello con l'estratto conto eccetera, mentre il resto della pagina è in http. Il problema è che così il browser non mostra più l'icona di lucchetto chiuso, dato che non ci può rassicurare sul contenuto dell'intera pagina. Poco male, sembra dire qualcuno: tanto le informazioni critiche sono comunque in https. E qui casca l'asino. Se la home page contenente il frame https viene sostituita con una contenente un frame http diretto a tutt'altro sito, l'utente non ha nessuna informazione visibile di questa manipolazione, e quindi vi inserisce felicemente le proprie credenziali. In quali casi si presenta questo pericolo? La risposta è semplice: sostanzialmente in tutti quelli in cui ha senso usare l'https (farebbero eccezioni le situazioni in cui è possibile osservare ma non manipolare la connessione, che per il commercio elettronico sono poco interessanti). Quindi, non usare l'https nella pagina intera rende sostanzialmente inutile usarlo nei frame; viceversa, riconoscere la necessità di usarlo nei frame vuole dire riconoscere la necessità di usarlo in tutta la pagina. Bisogna dire che almeno in un caso ho visto, nelle informazioni sulla sicurezza, un'indicazione che sembra voler suggerire all'utente di verificare le proprietà dei singoli frame (ogni volta, per ogni frame?); chi ha dato un'indicazione di questo tipo, o non ha idea di quanti utenti sanno anche solo cosa sono i frame, o non era realmente interessato a dare un'indicazione utile.
Finora però, tutto è andato bene; fino ad alcuni mesi fa per essere precisi, ovvero fino a quando non è diventato macroscopico il fenomeno soprannominato phishing, ovvero il furto di credenziali mediante pagine falsificate. Il problema che i progettisti di SSL avevano previsto più di dieci anni fa, si sta manifestando adesso in tutta la sua criticità: adesso, perché rubare le credenziali on-line è diventato finalmente interessante. Purtroppo, SSL è solo una soluzione tecnica, e come tale non può rimediare ai problemi di contesto.
L'obiezione ovvia è che il phishing di solito non falsifica realmente l'URL del sito web, e quindi l'https, anche sulla pagina intera, non risolverebbe il problema. Naturalmente è vero, ma non è questo il punto su cui volevo portare l'attenzione. Se in questi anni l'utente si fosse abituato a vedere il lucchetto sulla pagina in cui inserisce le proprie credenziali, e fosse stato abituato a poche altre semplici procedure di cui parlerò in seguito, queste truffe sarebbero molto meno efficaci. Invece, dopo un periodo iniziale di relativa attenzione, molti siti hanno, ingenuamente o deliberatamente, cancellato la parola "sicurezza" dalla testa dell'utente, se non come termine di marketing per dire "il nostro sito è sicuro". E della sicurezza si parla con termini che l'utente medio non apprezza (cifratura a 128 bit) e che certo non migliorano la sua capacità di valutare la situazione. Da una parte l'utente è considerato un essere non senziente, a cui non richiedere ragionamenti troppo complessi, dall'altra lo si pone in situazioni in cui per evitare le frodi gli servirebbe una cultura di sicurezza da tecnico informatico. A titolo esemplificativo, mentre il sito di una banca che utilizzo mi dà almeno la possibilità, se io lo richiedo, di avere la pagina delle credenziali in https, con un'altra non è possibile neppure questo; l'utente, anche volesse essere attento, viene forzato a non interessarsi della sicurezza di quello che sta facendo, viene costretto a rinunciare anche alle più semplici cautele. Devo precisare che non si tratta della tipica "anomalia italiana"; situazioni di questo tipo se ne vedono un po' ovunque, e in tutti i settori.
Riguardo al phishing, l'atteggiamento generale sembra essere che si tratta del solito problema di cattivo comportamento dell'utente, che nella sua ingenuità si fa incastrare con vari trucchetti. Ad esempio, l'Antiphishing Working Group fornisce indicazioni (utili, peraltro) ai soli utenti, e lo stesso fa la pagina sul phishing del sito Microsoft; o almeno, così fanno le pagine che sono riuscito a trovare con Google. Io credo invece che il problema sia principalmente di cattiva cultura della sicurezza arrivata all'utente proprio da quelle aziende che dovrebbero aiutarlo a tutelare la sicurezza dei propri rapporti, e credo che le indicazioni andrebbero innanzitutto alle aziende, in modo da permettere all'utente di seguire poche chiare procedure.
Quali sono quindi le procedure e le indicazioni da presentare all'utente per ridurre il fenomeno?
Io posso dare solo qualche indicazione, non ho certo la pretesa di tirare fuori dal cappello una soluzione al problema, specialmente dopo anni di cattiva gestione.
Per prima cosa, l'utente dovrebbe essere abituato ad avere sempre il lucchetto in fondo alle pagine in cui inserisce dei dati; la pagina in cui mette le credenziali dovrebbe essere tutta https, comprese le immagini, che possono essere poche; se il marketing si agita, lo si può sempre invitare a vedere la pagina di login di Amazon, azienda che, nonostante usi una pagina https separata e molto spartana, ha un certo successo. Su questa pagina dovrebbe essere ricordato sempre all'utente, in modo molto evidente, di controllare il lucchetto chiuso in fondo alla pagina (un'immagine di lucchetto chiuso di un paio di centimetri con una frecciona rossa puntata verso il basso, messa in mezzo alla pagina, penso che renda bene l'idea). L'utente deve insomma abituarsi ad avere il lucchetto chiuso. Per tutte queste attività critiche, dovrebbero sparire i popup con cornicetta priva di informazioni.
Il secondo passaggio importante consiste nel gestire le comunicazioni con l'utente. Devo dire che da questo punto di vista, molti siti americani sono assai più carenti di quelli italiani. Chi ha comprato servizi negli U.S.A. sa cosa intendo: quanto spesso succede che, da indirizzi solo lontanamente assonanti con l'azienda con la quale si ha il rapporto, venga richiesto di svolgere delle attività (ad esempio, scaricare del software beta) da siti che hanno ancora meno direttamente a che fare con il fornitore? È chiaro che più l'utente ha a che fare con situazioni di questo tipo, più è facile che cada nel tranello e fornisca le proprie credenziali a siti terzi (ed è anche chiaro che le varie iniziative di contrasto all'e-mail spoofing servono a poco, finché l'utente non è ricondotto necessariamente ad un unico dominio di riferimento). Le comunicazioni con l'utente dovrebbero arrivare da indirizzi quanto più possibile legati al dominio principale, e dovrebbero rimandare a pagine dello stesso dominio; solo dopo che l'utente ha verificato l'autenticità del link, rimanderanno eventualmente ai siti terzi di partner, dopo averlo comunicato all'utente. In questo modo l'utente si può abituare ad avere dei riferimenti precisi ed affidabili, e può guardare con sospetto tutto quello che se ne discosta.
Ma soprattutto, non dovrebbe mai essere richiesto a un cliente di agire in conseguenza di una mail, e questa politica dovrebbe essere ben chiara all'utente. Le mail dovrebbero essere al massimo delle notifiche o dei promemoria, ma l'utente dovrebbe trovare le stesse informazioni disponibili sul sito una volta effettuata l'autenticazione. L'indicazione al riguardo dovrebbe essere molto forte, e nel contempo tranquillizzante: qualsiasi comunicazione vi arrivi, accedete al vostro account con le vostre modalità abituali, non seguendo link della mail, e agite solo in base alle informazioni disponibili sul sito. Per togliere ogni ulteriore dubbio, l'help desk (e la pagina con i contatti dovrebbe essere altrettanto https) dovrebbe dare questa indicazione con altrettanta chiarezza.
Infine, si può prendere in considerazione l'idea di firmare le mail, cosa che comunque ha senso sempre e solo se valgono i presupposti di cui sopra, primo fra tutti che sia chiaro il dominio di riferimento. Laddove si possa fare riferimento a un nome di dominio simile all'originale, questo sistema serve solo ad aumentare ulteriormente la fiducia del malcapitato (che comunque deve essere prima abituato a vedere, capire e verificare una firma).
È chiaro, questo non può eliminare il phishing, ma un comportamento di questo tipo può aiutare molto a ridurlo, anche creando, tutto sommato con poco sforzo, una mentalità attenta alla sicurezza nell'utente, senza ridurre la fruibilità di siti e comunicazioni; molti comportamenti attuali invece, rendono il phishing ancora più efficace.

rendono il phishing ancora più efficace.