Connessioni sicure, ma non troppo

/ Articolo / Connessioni sicure, ma non troppo
  • Condividi

Alcuni problemi discussi di recente tra appassionati di informatica evidenziano il rischio che alcune connessioni internet siano meno private di quanto sembrano. Ogni giorno usiamo queste connessioni per conti bancari e cose ancor più delicate. È utile, quindi, spargere la voce tra i non addetti ai lavori, in modo che ognuno sia al corrente dei rischi che si assume. Della serie: nFA è come la mamma, riesce ad essere utile, qualche volta!

P.S. Gli articoli in questione (in inglese per nerds) li trovate qui, quo e qua (o que per i veri nerds).

Le comunicazioni sicure in internet si basano sull'uso di certificati digitali, ne avevo parlato in un articolo precedente. Credo però che un piccolo esempio possa aiutare a capire meglio di cosa stiamo parlando:

Supponiamo di voler voler creare un sito sicuro per nFA. La procedura per rendere sicura la connessione è grossomodo questa:

  1. Scriviamo una serie di dati amministrativi (ragione sociale, indirizzo) e tecnici in un file, che è il certificato da firmare.
  2. In fondo al certificato aggiungiamo una "firma" digitale ottenuta processando il resto del certificato con una funzione crittografica.
  3. Inviamo il certificato ed un po' di soldi ad un'autorità di certificazione (CA da qui in poi).
  4. La CA verifica che siamo veramente noi e ci restituisce il nostro certificato con in più la sua firma e delle date di validità.
  5. Installiamo il certificato firmato sul nostro sito

Quando un'utente si collega a noi tramite una connessione sicura, il suo browser verifica:

  • la nostra firma,
  • quella della CA,
  • che la CA sia una di quelle accettate dal browser.

Se tutte le condizioni sono verificate il browser accetta di stabilire una connessione sicura senza segnalare anomalie.

In realtà il browser non accetta solo le CA che ha installato, perchè queste possono autorizzarne altre, ed il gioco può essere ripetuto. Nell' immagine vedete un dettaglio del certificato di mail.google.com, autorizzato da Thawte SGC CA, a sua volta autorizzata ad autorizzare da Verisign con un certificato installato nel browser.

gerarchia di certificati

Discutiamo ora due problemi, uno puramente organizzativo ed uno tecnico-organizzativo che potrebbero consentire ad un pirata di introdursi in una comunicazione ritenuta sicura senza farsi notare dall' utente.

Primo problema

Come da punto 4, le autorità di certificazione dovrebbero verificare che i certificati digitali siano stati richiesti dall'organizzazione richiedente, ma in alcuni casi si limitano ad intascare i soldi e firmare. Quindi se un pirata vuol far credere di essere Google o una banca deve solo mandare un certificato da firmare e qualche decina di dollari al certificatore giusto. Ottenuto questo, la vittima si troverebbe ad accedere ad un sito fasullo ma certificato come autentico da una CA valida.

Secondo problema

Quando una CA firma un certificato non convalida tutto il suo contenuto, ma solo un "riassunto". Se riusciamo a generare certificati diversi con lo stesso "riassunto", la validazione creata dalla CA per il primo è valida anche per il secondo.

Tra i vari algoritmi usati per riassumere i certificati i più diffusi sono MD5 e SHA1, ma cominciano ad avere problemi: MD5 è seriamente compromesso dal 2004, mentre SHA1 ha alcune pecche minori che non ne pregiudicano seriamente la sicurezza, ma gli addetti ai lavori raccomandano comunque di abbandonarlo in favore di algoritmi più sicuri.

Purtroppo molte CA firmano ancora certificati realizzati con MD5, ed un gruppo di "white hat hackers" ha sfruttato la cosa per crearsi una CA fasulla che ogni browser prenderebbe per autentica.

Tramite questa, possono creare certificati validi per qualunque sito sulla terra; ma trattandosi di un gruppo di studio e non di criminali, l'hanno creata con data di scadenza nel 2004, in modo che non possa essere usata per truffare nessuno. Altri potrebbero aver fatto lo stesso giochetto con fini meno nobili. Va notato che i certificati creati possono benissimo errere firmati tramite SHA1 o algoritmi ancora più sicuri, il problema è nel certificato intermedio.

Conseguenze pratiche

Una volta ottenuto un certificato fasullo per un certo sito, un pirata può intromettersi nella comunicazione tra il vero sito e le vittime senza che queste possano accorgersene, e raccogliere posta, password bancarie, numeri di carta di credito e quant'altro. Neppure chi si occupa di sicurezza informatica per lavoro sarebbe in grado di distinguere questi certificati da quelli veri.

Basta una sola CA fasulla o poco seria per compromettere tutto il sistema, visto che i browserS si limitano a convalidare o meno i certificati senza dare valutazioni intermedie o verificare se esistano altri certificati per lo stesso sito emessi da altre CA.

I produttori di browser e le CA dovrebbero preoccuparsi di eliminare le CA non affidabili, e le CA dovrebbero smettere di utilizzare tecnologie notoriamente bacate, ma i primi sono poco interessati alla cosa ed i secondi spesso pensano solo a vendere certificati possibile.

Va aggiunto che non considerare validi i certificati firmati da una CA significa eliminarla dal mercato e danneggiare tutti i suoi clienti, e quindi espone al rischio di richieste di danni.

La tecnologia descritta è tuttora affidabile se applicata correttamente, ma come accennato ci sono problemi di incentivi e di incompetenza degli operatori, specialmente quelli specializzati nel rilascio di grandi quantità di certificati a prezzi stracciati sostanzialmente incompatibili con un vero controllo di identità.

Soluzioni

Come dicevo nell'articolo citato anteriormente, una conoscenza di base del sistema è necessaria per valutare i rischi di subire furti di dati o peggio. Purtroppo questo caso somiglia un po' al "problema dei limoni" cui si accennava a proposito della crisi finanziaria: se nemmeno un'esperto è in grado di distinguere un certificato buono da uno falso, l'unica strategia sicura è quella di dubitare di tutti.

Un utente potrebbe limitare i danni cancellando le CA sospette o chi le ha autorizzate dal browser, più o meno l'equivalente di scegliere quali agenzie di rating considerare affidabili o meno. Purtroppo individuare tutte quelle sospette non è banale, a meno di rimuoverle tutte e confermare i singoli certificati, cosa che può creare altri e peggiori problemi se non fatta con la dovuta attenzione.

Possono fare molto di più quegli utenti che acquistano i certificati, che dovrebbero stare alla larga da certificatori poco seri o tecnologicamente incompetenti, obbligandoli a mettersi in regola o uscire dal mercato. Purtroppo questo richiede una dimestichezza col problema che non è ragionevole aspettarsi dai piccoli utenti.

Val la pena ricordare che se un pirata ha accesso sia ad un PC che alla rete, come in un'internet point, in un'albergo o in alcune reti aziendali, può ottenere lo stesso risultato semplicemente installando una propria CA in ogni browser. In questi contesti non è prudente fidarsi di nessuna connessione.

Vi ho terrorizzato abbastanza? Spero di sì, era la mia segreta intenzione! Scherzi a parte, il rischio è infinitesimo se tutto ciò che fate con il browser è girovagare, leggere nFA e partecipare a qualche gruppo tipo FaceBook. Ma se usate la web per transazioni economico-finanziarie o altro tipo di transazioni che implichino l'uso di dati personali e riservati, fate un attimo di attenzione e ricordatevi che un minimo di rischio è inevitabile. Uoma avvisata, mezza salvata.

Indietro

Commenti

Ci sono 21 commenti

Interessante. Alcune domande.

1) Alle volte, visitando un sito, per esempio anche google mail, mi compare una finestra che avvisa che il certificato della firma digitale è "scaduto". Poi non compare più. Perchè?

2) Si dice che Firefox sia più sicuro di Explorer. Ma dal meccanismo che descrivi, relativamente alla sicurezza dei siti, il browser sembra ininfluente. Giusto? 

3) La CA, chi ca... sono? Pubblici? Privati? E non sono tenuti a rispondere della congruità o verità delle certificazioni che emettono? Il volume di certificazione è così grande che nn si può controllare i certificati? Ma a fronte di una truffa denunciata, una certificazione rilasciata senza controlli nn sarebbe favoreggiamento?

4) Il lucchetto non garantisce un caspita? Allora perchè ci dicono sempre di vedere se c'è il lucchetto?

5) Ma quando google ordina le pagine, se le dispone in ordine di numero di visualizzazioni, non sta in qualche modo offrendo una garanzia che il sito che vai ad aprire è certificato?

ciao

Nell' ordine:

  1. Il certificato scaduto viene segnalato una sola volta per ogni sessione.Un certificato scaduto è altamente sospetto, specie per roba tipo google mail.
  2. Questo problema è sostanzialmente indipendente dal browser. Firefox è più sicuro in altre circostanze.
  3. Le CA sono private, credo che la loro responsabilità si limiti al rischio (reale, son quasi tutte americane e passibili di class action) di cause per danni da parte di utenti truffati da terzi certificati.Quanto alla possibilità di controllo non dipende dal volume ma dai prezzi:alcuni certificati costano centinaia di dollari ed è ragionevole aspettarsi che il certificatore faccia il suo dovere; altri li vendono a meno di 30 dollari, ed immagino che al più avranno qualche controllo automatico o a campione.
  4. Il lucchetto garantisce che nessuno possa vedere i dati in transito tra noi ed il sito che stiamo usando. Se pero' il sito in questione è fasullo ma ha un certificato "credibile" come nei casi di cui sopra, il destinatario non è chi crediamo.Si tratta di schemi "Man In The Middle", in cui noi comunichiamo con un sito pirata, che gira le nostre richieste a quello della nostra banca, e gira a noi le risposte che riceve da questa.La cosa è del tutto trasparente, ma il pirata salva tutto quello che facciamo.Per questo molte banche prevedono l' uso di codici usa e getta per l' accesso.
  5. vedi sopra

Un' ultima cosa: falsificare un certificato è banale, non farlo riconoscere al browser come falso è molto più complicato.Il fatto che qualcuno ci sia riuscito dimostra pero' che complicato non significa impossibile.

 

Articolo molto interessante e di attualità, essendo anche reduce da una clonazione on line della mia carta di credito.

In realtà il problema della sicurezza informatica è cruciale alla luce dell'evoluzione che le transazioni on line stanno avendo. Oltretutto, da parte di molti, si sta facendo passare il messaggio firma digitale = firma certificata, il che con tutta evidenza non può essere vero.

Per avere un'idea di come i notai hanno affrontato il problema (tutti i nostri atto sono registrati, trascritti, volturati ed inviati al registro imprese solo on-line) ecco qui il link .

Personalmente credo che le firme digitali siano molto più difficili da falsificare, e soprattutto diano meno possibilità di manipolazione, visto che cambiare un solo carattere nel documento firmato annulla la firma digitale. Ovviamente non aggiungono nulla all'affidabilità intrinseca di chi appone la firma.

Quanto al sito del notariato linkato, mi riservo un giudizio definitivo per quando avro' tempo di esaminarlo meglio, ma a prima vista sembra molto ingenuo sul piano tecnico.Tutti i servizi pubblicizzati sono resi disponibili tramite connessioni non protette.

Produrre un clone di quel sito che riconosce come validi tutti i certificati che decido io (magari inclusi quelli dei notai veri ) è banale.Sfruttarne le debolezze richiede un' azione coordinata tra truffatori tradizionali e telematici, ma non scuso la faciloneria tecnologica, tanto meno da chi vive di certificazioni.

Premesso che tutte le cose descritte sono corrette ma complesse (e costose) da fare, faccio notare che la clonazione di carte di credito o i furti di identità nel 99% dei casi vengono svoli in modi moooolto più semplici.

Molto spesso bastano tecniche di "social-engineering": telefono al malcapitato spacciandomi per la Telecom o per la banca e mi faccio dare la sua password: il 90% ci casca.

Oppure via key-logging: gli mando il classico giochino che fa ridere via e-mail, quell'altro lo installa non sapendo che contemporaneamente sta installando un programmino che registra tutti i tasti premuti, i siti visitati,.... qualsiasi programmatore sufficientemente smanettone e in grado di fare (o trovare prefabbricate) robe così.

Il punto chiave della sicurezza informatica "di tutti i giorni" è che l'utente in realtà non è un utente, ma bensì un utonto.

---

Regole auree per eliminare il 99% dei rischi:

- mai installare programmi forniti da terzi o via e-mail (scaricateveli voi da fonti che un amico esperto vi ha detto essere sicure!)

- mai comunicare per nessun motivo le vostre password a nessuno (neppure alla banca e alla telecom). Se gli servisse accedere a vostri dati riservati sanno meglio di voi come fare. Corollario: se qualcuno spacciandosi per la banca vi chiede dati personali denunciatelo all'istante.

- se per disgrazia usate windows, installate sempre gli aggiornamenti automatici e mantenete l'antivirus aggiornato.

Assolutamente d' accordo,ho scritto l' articolo pensando a gente abbastanza scafata da evitare comportamenti rischiosi.Man mano che le vittime diventano più attente i pirati adottano metodi più sofisticati, è una rincorsa continua.

Aggiungo solo una regola:

- mai clickare un link arrivato per posta elettronica (nemmeno da amici)

seguendo i link che hai indicato, ho trovato questo bel post blog.johnath.com/2008/08/05/ssl-question-corner/ che chiarisce abbastanza bene la dinamica dei man-in-the-middle attacks e del perche' non sono cosi' fantascientifici come si potrebbe pensare a prima vista

 

Le comunicazioni sicure in internet si basano sull'uso di certificati digitali,...

 

Scusa ma non sono affatto d'accordo su questa affermazione cosi' drastica e perentoria.
Una parte, direi minima, delle comunicazioni sicure puo' basarsi su un certificato; o almeno esso puo' essere una base, necessaria ma non sufficente, per una comunicazione sicura.
A livello bancario (quindi parlo di e-banking) la sicurezza seria si ha per ora, poi vedremo quali ulteriori miglioramenti avremo, con procedure di accesso (login) fatte con un sistema a card reader (che di per sé è un piccolo computer) e password a scadenza di pochi minuti, innescate da un dialogo tra due computer (il lettore di schede ed il software bancario) che ben difficilmente puo' essere replicato e clonato nel giro di pochi minuti. Se io con il mio lettore di schede venissi attirato su un sito diverso (tramite un certificato falso) da quello vero della mia banca, la chiave indebitamente fornita non sarebbe utilizzabile per il login fatto nemmeno due secondi dopo. Anche per questo motivo il sistema in se non richiede che il cliente sia certificato ... Se ci pensate, la banca chiede la certificazione del cliente tramite una procedura di accesso sicura, non certo con un banale certificato. Nessuna banca chiede che il cliente abbia un certificato. Anche la banca potrebbe non averlo ma di certo non guasta.

Io ritengo che nessuna organizzazione seria quindi difenda cose da difendere (esempio soldi) solo con un banale certificato. Le difese sono molto superiori. So pero' che al mondo ci sono organismi bancari (e postali) dotati di sicurezza assolutamente inadeguata ed a mio avviso dovrebbero essere oggetto di causa collettiva da parte di chi eventualemtne fosse truffato. Sarebbe come se una banca lasciasse la cassaforte perennemente aperta (o chiusa ma con le chiavi nella serratura) e senza guardie, ma con un certificato sulla porta che dice che va tutto bene.

Lascereste i vosti risparmi in quella banca? Spero di No.

A che serve allora il certifcato? Solo, direi, alla crittografia del traffico tra voi ed il sito vero.
Ma questo sicuramente non basta. Su sito vero ci devono essere procedure che un sito finto non puo' replicare. E queste devono essere adeguate a proteggere quello che va protetto.

Ciao,
Francesco

 

 

Le comunicazioni sicure in internet si basano sull'uso di certificati digitali,...

 

Scusa ma non sono affatto d'accordo su questa affermazione cosi' drastica e perentoria.
Una parte, direi minima, delle comunicazioni sicure puo' basarsi su un certificato; o almeno esso puo' essere una base, necessaria ma non sufficente, per una comunicazione sicura.

 

Quando parlo di sicurezza della comunicazione mi riferisco solo alla possibilità che qualcuno veda lo scambio di dati tra il mio computer ed il sito.

Tecnicamente,mi riferivo al protocollo TLS/SSL che sta alla base di https ed altri protocolli.Per quanto riguarda le comunicazioni sicure copre la quasi totalità dei casi.E' l' unica tecnologia adottata dai browser, ogni altra comunicazione cifrata richiede software ad hoc.Ed è sostanzialmente sufficiente a garantire la sicurezza della comunicazione in se, coi piccoli caveat di cui tratta l'articolo.

 

A livello bancario (quindi parlo di e-banking) la sicurezza seria si ha per ora, poi vedremo quali ulteriori miglioramenti avremo, con procedure di accesso (login) fatte con un sistema a card reader (che di per sé è un piccolo computer) e password a scadenza di pochi minuti, innescate da un dialogo tra due computer (il lettore di schede ed il software bancario) che ben difficilmente puo' essere replicato e clonato nel giro di pochi minuti.

 

Tutto questo riguarda il software che gira sul sito della banca, dall' altro lato della connessione sicura.

 

Se io con il mio lettore di schede venissi attirato su un sito diverso (tramite un certificato falso) da quello vero della mia banca, la chiave indebitamente fornita non sarebbe utilizzabile per il login fatto nemmeno due secondi dopo. Anche per questo motivo il sistema in se non richiede che il cliente sia certificato ...

 

Se ti trovi in un'attacco tipo "man in the middle" due secondi sono un' era geologica.Certo, memorizzare le password diventa inutile ed al più il pirata potrebbe fregarti taroccando le tue operazioni al volo, cosa molto più complicata da fare.

 

Se ci pensate, la banca chiede la certificazione del cliente tramite una procedura di accesso sicura, non certo con un banale certificato. Nessuna banca chiede che il cliente abbia un certificato. Anche la banca potrebbe non averlo ma di certo non guasta.

 

La mia banca belga consente di autenticarsi con un certificato.Non lo uso perchè non lo ritengo affidabile.

 

Io ritengo che nessuna organizzazione seria quindi difenda cose da difendere (esempio soldi) solo con un banale certificato. Le difese sono molto superiori. So pero' che al mondo ci sono organismi bancari (e postali) dotati di sicurezza assolutamente inadeguata ed a mio avviso dovrebbero essere oggetto di causa collettiva da parte di chi eventualemtne fosse truffato. Sarebbe come se una banca lasciasse la cassaforte perennemente aperta (o chiusa ma con le chiavi nella serratura) e senza guardie, ma con un certificato sulla porta che dice che va tutto bene.

 

Fineco, la mia banca italiana, non solo consente di operare tramite semplici password, ma nasconde il sito protetto dentro una pagina non protetta, un vero invito al pharming.E' la piu grossa banca online in Italia e filiale di unicredit.

 

Lascereste i vosti risparmi in quella banca? Spero di No.

 

Appena avrò dei risparmi ci penserò ;)

 

A che serve allora il certifcato? Solo, direi, alla crittografia del traffico tra voi ed il sito vero.

 

L'articolo trattava solo di questo.

Ma questo sicuramente non basta. Su sito vero ci devono essere procedure che un sito finto non puo' replicare. E queste devono essere adeguate a proteggere quello che va protetto.

 

Non potrei essere più d'accordo :)

[edit]avevo scritto che ssh &c. eran basati su SSL ma non è vero

 

A livello bancario (quindi parlo di e-banking) la sicurezza seria si ha per ora, poi vedremo quali ulteriori miglioramenti avremo, con procedure di accesso (login) fatte con un sistema a card reader (che di per sé è un piccolo computer) e password a scadenza di pochi minuti, innescate da un dialogo tra due computer (il lettore di schede ed il software bancario) che ben difficilmente puo' essere replicato e clonato nel giro di pochi minuti. Se io con il mio lettore di schede venissi attirato su un sito diverso (tramite un certificato falso) da quello vero della mia banca, la chiave indebitamente fornita non sarebbe utilizzabile per il login fatto nemmeno due secondi dopo.

Quello che osservi e' vero, l'autenticazione basata su challenge-response ha una maggiore resistenza ad un attacco man-in-the-middle. Tu pero' saresti tranquillo sapendo che chi conduce il sito falso ha la possibilita' di raccogliere potenzialmente una grande mole di coppie challenge/response (che nel caso dei token RSA dovrebbe essere la data/ora correnti), permettendo potenzialmente degli attaccanti di condurre analisi statistiche o cercare di compiere reverse-engineering dell'algoritmo di generazione dei token?

Ad ogni modo il pericolo principale e' quello del phishing per siti di e-commerce, come gia' detto in altri commenti riuscire a forgiare certificati digitali rende praticabili attacchi man-in-the-middle.

 

 

Quando parlo di sicurezza della comunicazione mi riferisco solo alla possibilità che qualcuno veda lo scambio di dati tra il mio computer ed il sito.
...
L'articolo trattava solo di questo.

 

Comprendo che il mio disaccordo iniziale è basato su un concetto più esteso di "comunicazioni sicure". La sicurezza completa di per sé non puo' basarsi su un solo elemento. Nel caso della privacy delle comunicazioni, la crittografia tra me ed il vero sito basta. L'uomo nel mezzo non puo' decriptare al volo un traffico criptato a 128 bit. Mi pare che ci vogliano anni ed anni di elaborazioni per farcela.
Nel caso invece della garanzia che il sito che credo di contattare sia quello vero, il certificato in sé non basta e vedo che siamo d'accordo che cio' che conta è ben altro. In questo caso prima di iniziare le comunicazioni di dati sensibili c'è anche la procedura di accesso (login) e per me è assolutamente criminale che istituti finanziari utilizzino ancora una semplice e banale password.
Come minimo ci vuole una lista di stralcio (attenzione pero' a non farvela duplicare da una persona che ha acesso alla vostra postazione) e meglio ancora una lista di stralcio elettronica, creata dal card reader, protetto a sua volta da una password. Poi è chiaro che se perdete il tutto, è come perdere le chiavi di casa o della machina, o lasciare il PIN del bancomat in bella evidenza nel borsellino... ma qui è responsabilità vostra, non della banca.

Ciao,
Francesco

 

 

Nel caso invece della garanzia che il sito che credo di contattare sia quello vero, il certificato in sé non basta

 

Se chi rilascia i certificati è tecnicamente competente ed eticamente responsabile i certificati funzionano egregiamente allo scopo.

Sul resto siamo d' accordo, a prescindere dalle minuzie implementative.

Di recente sono stati pubblicati un po' di altri giochetti.Questi sono rilevabili con un browser moderno ed un po' di attenzione, ma sono abbastanza sofisticati da fregare l' utente medio.

Il solito slashdot informa che anche SHA1, l'altro algoritmo normalmente usato per i certificati è stato compromesso.La tecnica non è ancora stata pubblicata, quindi la notizia non è ancora confermata, ma sembrerebbe affidabile.

Questo non compromette completamente il sistema dei certificati per vari motivi:

  • creare un certificato fasullo è costoso
  • esistono altri algoritmi utilizzabili per i certificati
  • è possibile utilizzare più firme nello stesso certificato, e falsificarle tutte contemporaneamente è un problema più complicato.Va detto però che ad oggi i client si accontentano di una firma singola fatta con un'algoritmo compromesso.

Approfitto di questo post per un chiarimento: diversi lettori mi hanno fatto osservare che la gran parte dei crimini informatici avvengono con trucchetti molto più banali, tipo false mail di paypal o delle poste, e che i problemi discussi in questi articoli sono al di la della portata di quasi tutti i criminali.

Sottoscrivo senza remore questo punto di vista, se scrivo qui di queste cose è perchè:

  1. il phishing classico è ababstanza noto, credo che la gran parte dei lettori sia abbastanza scafata da difendersi da se senza che qualcuno gli spieghi come, ma quasi nessuno è in grado di valutare l'affidabilità di un certificato digitale e credo sia meglio instillare qualche dubbio prima che il rischio sia conclamato.
  2. mentre gli hacker minori non hanno le risorse per questi giochetti, quelli che controllano botnet di 400000 nodi potrebbero tranquillamente farcela se lo ritenessero profittevole.
  3. la sfida tra utenti e criminali è un gioco dinamico, quando i primi imparano un trucco i secondi ne inventano altri.Ieri controllare che ci fosse la s in https bastava, domani chissà.E' importante capire che la partita non è mai chiusa.

Non pretendo certo di insegnare all' utente medio certi dettagli che io stesso conosco approssimativamente, ma credo sia utile pubblicizzare i limiti della tecnologia attuale. Forse non è il miglior luogo per trattare questi argomenti, di sicuro è il migliore di cui dispongo.