Un gruppo di crittoanalisti europei e statunitensi hanno lavorato spalla a spalla per elaborare una ricerca sull’utilizzo delle connessioni cifrate (HTTPS) sui siti web di tutto il mondo. Come noto, HTTPS è il risultato dell’applicazione di un protocollo di crittografia asimmetrica al protocollo usato per il trasferimento di ipertesti (HTTP): si tratta di un meccanismo utilizzato a livello mondiale per fare in modo che le informazioni scambiate tra client e server (e viceversa) non possano essere intercettate da parte di malintenzionati.
Secondo i ricercatori eurostatunitensi, che hanno analizzato milioni di chiavi pubbliche usate dai vari siti web per cifrare le transazioni online, in alcuni casi lo scambio dei dati non avverrebbe in forma sicura. Alla radice del problema, secondo quanto si apprende leggendo il documento pubblicato a questo indirizzo, vi sarebbero le modalità con le quali vengono generate le chiavi crittografiche: in particolare, i dati casuali usati per produrle non sarebbero, talvolta, sufficientemente “randomici”. In certe situazioni, quindi, sempre stando a quanto riportato dagli esperti, un aggressore potrebbe riuscire ad “indovinare” le chiavi private a partire da quelle pubbliche, scenario che fino ad ora era stato da sempre ritenuto praticamente impossibile. I casi in cui ciò potrebbe accadere, spiegano i ricercatori, sono piuttosto limitati ma il problema non può essere trascurato.
Peter Eckersley, uno degli esperti di Electronic Frontier Foundation (EFF) ha confermato la sussistenza della problematica: “si tratta di una vulnerabilità molto seria causata dall’impiego di un insieme di numeri generati in modo non sufficientemente casuale quando si producono le chiavi private“. Eckersley, precisando che anche EFF ha partecipato all’indagine, ha aggiunto che è attualmente in corso una campagna informativa nei confronti di tutte quelle organizzazioni che stanno usano chiavi vulnerabili. Parallelamente, i ricercatori starebbero notificando il problema anche a quelle autorità di certificazione che hanno emesso i relativi certificati digitali affinché quelli vulnerabili possano essere tempestivamente revocati.
Nella loro indagine, James Hughes – un crittoanalista indipendente -, Arjen Lenstra docente presso la Ecole Polytechnique Federale de Lausanne in Svizzera, Maxime Augier insieme con altri tre esperti, hanno analizzato un totale di 6,6 milioni di chiavi pubbliche rilevando come non sicure 12.720 di esse e come vulnerabili 27.000 chiavi. “Le chiavi private sono accessibili da parte di chiunque voglia prendersi la briga di ripetere il nostro lavoro“, hanno osservato i ricercatori.
Bruce Schneier, il noto crittografo oltre che autore dell’algoritmo di cifratura Blowfish, ha dichiarato che i risultati della ricerca sono sicuramente significativi ma che comunque sono necessarie maggiori informazioni per comprendere la reale portata della problematica. Per Schneier sarebbe come dire che 10.000 persone dispongono di un mazzo di chiavi “fallato” senza però offrire dettagli sull’identità degli individui a cui tali chiavi appartengono e dove esse sono collocate. Il problema legato alla generazione dei numeri casuali identificato nella ricerca, ha concluso Schneier, può essere accidentale oppure potrebbe essere stato introdotto volutamente da parte di qualcuno interessato a ficcare il naso su certe comunicazioni private.
Per approfondire l’argomento, vi suggeriamo la lettura di questo nostro articolo dove analizziamo il funzionamento del protocollo HTTPS, l’utilità dei certificati digitali ed il ruolo delle autorità di certificazione.
La storia della crittografia si perde nella notte dei tempi. Il primo utilizzo documentato della crittografia, ossia di metodologie aventi come obiettivo quello di rendere un messaggio incomprensibile da parte delle persone non autorizzate a leggerlo, risale al 1900 a.C. quando uno scriba egizio fece uso, per preparare una iscrizione, di geroglifici “non-standard”.
Alcuni esperti sono però convinti che la crittografia sia nata spontaneamente dopo l’invenzione della scrittura per essere impiegata nelle applicazioni più disparate: dalla consegna di missive diplomatiche ai piani di battaglia.
Esempi “storici” dell’uso della crittografia sono il “codice di Cesare” o “cifrario di Cesare”, un algoritmo che operava per sostituzione monoalfabetica (ogni lettera del testo di partenza veniva sostituita, nel testo cifrato, con la lettera che si trova, nell’alfabeto, un certo numero di posizioni dopo; provate a decifrare il messaggio FKLHGLDPRULQIRUCL) ed il “codice Enigma”, usato dai nazisti durante la Seconda Guerra Mondiale.
La crittografia è divenuta oggi assolutamente essenziale nelle telecomunicazioni ed in molte applicazioni che necessitano la garanzia di un’elevata protezione dei dati. Su Internet, poi, sono davvero notevoli i rischi che si corrono veicolando informazioni importanti “in chiaro”, senza impiegare una qualche forma di cifratura.
La possibilità di accedere ad Internet da parte di chiunque implica notevoli problematiche di sicurezza dal momento che la Rete è ovviamente utilizzabile anche da parte di malintenzionati e le applicazioni sono divenute sempre più delicate (si pensi, per esempio, ad applicazioni commerciali, bancarie e fiscali).
Nelle moderne comunicazioni, soprattutto quelle afferenti ad applicazioni “delicate”, è quindi necessario che siano sempre rispettati i seguenti requisiti:
– Autenticazione. Il processo che permette di attestare l’identità di ciascun partecipante ad una comunicazione. Le prime forme di autenticazione che si sono usate in Rete erano basate su verifiche operate su nomi o su indirizzi. Entrambi questi controlli non possono essere considerati affidabili.
– Segretezza. E’ indispensabile fare in modo che nessuno possa leggere un messaggio, fatta eccezione per il destinatario desiderato.
– Integrità. La protezione da modifiche non autorizzate operate sul messaggio trasmesso. Il materiale inviato al destinatario non deve poter essere alternato in alcun modo prima di essere consegnato.
– Non ripudio. Un meccanismo atto a fornire la certezza che chi trasmette un messaggio non possa negare di averlo inviato.
Facciamo un paio di esempi di attacchi alla sicurezza.
Un malintenzionato può mettere in atto il cosiddetto “sniffing di pacchetti” ossia può cercare di “spiare” il contenuto dei pacchetti dati in transito alla ricerca di informazioni utili. Questa tipologia di attacco è molto semplice da mettere in atto su reti LAN dato che le schede di rete Ethernet in modalità promiscua leggono tutti i pacchetti dati in transito.
Il “packet sniffing” non è necessariamente un’attività illecita. Un amministratore di rete può servirsene, ad esempio, per monitorare quali protocolli e quindi quali applicazioni vengono impiegate all’interno della LAN e per “smascherare” eventuali operazioni sospette.
Uno tra i migliori “packet sniffer” è l’opensource WireShark: gli abbiamo dedicato alcuni articoli.
Un’altra modalità di attacco è lo “spoofing di indirizzi IP” che si concretizza nella generazione di pacchetti IP contenenti, come indirizzo IP del mittente, un indirizzo falso che non corrisponde a quello realmente usato dall’aggressore. Il ricevente non può sapere se l’indirizzo è stato falsificato.
La crittografia non solo protegge i dati trasmessi in Rete evitando che possano essere alterati o sottratti da parte di aggressori, ma può essere adottata anche per autenticare un utente.
Quando si parla di crittografia, sono essenzialmente tre gli schemi ai quali ci si riferisce: crittografia a chiave simmetrica, crittografia a chiave pubblica (o asimmetrica) ed utilizzo di funzioni hash.
In tutti i casi il messaggio di partenza viene definito testo in chiaro o “plaintext“. Tale messaggio viene quindi crittografato (”ciphertext“) in modo tale da risultare incomprensibile alle persone non autorizzate infine può essere decifrato e riportato a “plaintext”.
Gli elementi di base della crittografia a chiave pubblica (crittografia asimmetrica)
Nel 1976, l’anno della nascita dell’algoritmo DES, vide la luce anche un primo esempio di comunicazione cifrata che non presupponeva un accordo preventivo, tra mittente e destinatario, sulla chiave da impiegare.
Il problema principale della crittografia a chiave simmetrica consiste infatti nella necessità, per il mittente ed il destinatario di un messaggio cifrato, di accordarsi su una chiave segreta da utilizzare sia nella fase di codifica che in quella di decodifica.
E’ ovvio che la chiave andrebbe scambiata servendosi di un canale di comunicazione sicuro. Se però l’unico canale di comunicazione utilizzabile è di per sé insicuro, non c’è modo per scambiare la chiave senza correre il rischio che possa essere carpita da parte di malintenzionati.
Whitfield Diffie e Martin Hellman, nel 1976, presentarono un approccio che divenne la base della crittografia a chiave pubblica.
La nuova filosofia non fu subito abbracciata: lo stesso Diffie motivò questo ritardo parlando di interessi economici. Il DES e la produzione di relativi circuiti rappresentavano per le aziende del settore una notevole fonte di business.
Nei cifrari a chiave pubblica (detti anche “asimmetrici“), le due entità coinvolte nella comunicazione usano due chiavi: la prima è pubblica, conoscibile da parte di chiunque; la seconda è, invece, privata e nota soltanto al legittimo proprietario.
La codifica del messaggio avviene utilizzando la chiave pubblica del destinatario mentre la procedura di decodifica si concretizza ricorrendo alla chiave privata del destinatario stesso.
I cifrari che usano un approccio di questo tipo vengono detti anche “asimmetrici” proprio per sottolineare il fatto che, in questo caso, i ruoli di mittente e destinatario non sono intercambiabili, come invece accade per i cifrari simmetrici dove chi invia e chi riceve il messaggio condivide la medesima chiave.
La chiave privata e quella pubblica di ciascun soggetto sono correlate da un legame matematico ma solamente il ricevente di un messaggio conosce la sua chiave privata. Il legame tra chiave pubblica e privata deve essere tale da rendere praticamente impossibile estrarre la chiave privata a partire da quella pubblica.
Inoltre, le chiavi – dal punto di vista computazionale – debbono essere semplici da generare e deve risultare praticamente impossibile che due utenti scelgano la medesima chiave.
La funzione di codifica deve essere “one-way” ovvero semplice da applicare ma estremamente difficoltosa da invertire e contenere un meccanismo “trap-door” che permetta cioé la semplice invertibilità (decifrazione) solo a chi conosce tale sistema (utilizzo della chiave privata).