INTERNET - CRITTOGRAFIA E CHIAVI PUBBLICHE Ciao, sono Mia Gil-Epner, mi sto specializzando in Informatica all'Università di Berkley e lavoro per il Dipartimento della Difesa, di cui cerco di tenere al sicuro i dati. Internet è un sistema aperto e pubblico, tutti noi inviamo e riceviamo dati attraverso linee condivise. Ma nonostante sia un sistema aperto continuiamo a scambiarci un sacco di dati personali come: numeri di carte di credito, dati bancari, password e email. Quindi, come tenere segreti tutti questi dati personali? Dati di ogni tipo possono esser resi segreti attraverso un processo noto come "cifratura": il rimescolamento del messaggio per nascondere il testo originale. Invece la "decifratura" è il processo con cui viene ricomposto il messaggio per renderlo leggibile. Si tratta di una semplice idea e le persone la mettono in atto da secoli. Uno dei primi e più noti metodi di cifratura fu il Cifrario di Cesare nome dovuto a Giulio Cesare un generale romano che cifrava i suoi ordini militari per esser sicuro che, se anche un messaggio fosse stato intercettato dai nemici, questi non sarebbero riusciti a leggerlo. Il Cifrario di Cesare è un algoritmo che sostituisce ogni lettera nel messaggio originale con una lettera che sta un certo numero di posizioni al di sotto nell'alfabeto. Visto che il numero di posizioni è noto solo al mittente e al destinatario, è considerato la "chiave". Questa permette al destinatario di decifrare il messaggio segreto. Ad esempio, se il messaggio originale è "HELLO", allora, usando l'algoritmo del Cifrario di Cesare con chiave 5, il messaggio cifrato sarà questo... Per decifrare il messaggio, il ricevente dovrebbe semplicemente usare la chiave per invertire il processo. Ma c'è però un grande problema con il Cifrario di Cesare, chiunque può facilmente rompere o violare il messaggio cifrato provando ogni chiave possibile. E nell'alfabeto inglese ci sono solo 26 lettere, il che significa che dovreste fare provare al massimo 26 chiavi per decifrare il messaggio. Ora, provare 26 chiavi possibili non è molto difficile, servirebbe circa un'ora. Quindi, complichiamo le cose. Invece di sfasare ogni lettera dello stesso numero di posizioni, sfasiamo ogni lettera di un numero di posizioni diverso. In questo esempio, una chiave a 10 cifre stabilisce di quante posizioni verrà sfasata ogni lettera per cifrare un messaggio più lungo. Indovinare questa chiave sarebbe davvero difficile. Con la cifratura a 10 cifre, avremmo 10 miliardi di possibili soluzioni. Ovviamente questo va ben oltre ciò che un qualunque essere umano potrebbe risolvere, gli servirebbero molti secoli. Ma oggi, un computer di fascia media, impiegherebbe pochi secondi per provare tutti i 10 miliardi di possibilità. Quindi, nel mondo contemporaneo, in cui i cattivi sono armati di computer anziché di matite, come si possono cifrare i messaggi con un grado di sicurezza tale che sia "troppo difficile" violarli? "Troppo difficile" significa che ci sarebbero troppe possibilità da calcolare in una ragionevole quantità di tempo. Oggi le comunicazioni sicure vengono cifrate utilizzando chiavi a 256 bit. Ciò significa che il computer di un cattivo che intercettasse il messaggio dovrebbe provare questo enorme numero di possibilità alternative prima di scoprire la chiave e violare il messaggio. Anche se si possedessero 100 mila super computer e ognuno fosse in grado di provare 1 milione di miliardi di chiavi al secondo, servirebbero miliardi di miliardi di miliardi di miliardi di anni per provare tutte le possibili alternative, solo per violare un singolo messaggio protetto con la crittografia a 256 bit. Sappiamo che i chip dei computer vanno a velocità doppia e dimezzano la loro dimensione circa ogni anno. Se continuerà questo ritmo di progresso esponenziale, problemi oggi irrisolvibili diventeranno risolvibili tra poche centinaia di anni e 256 bit non saranno più sufficienti per stare al sicuro. E in effetti, in passato, abbiamo già dovuto aumentare la lunghezza della chiave standard per tenere il passo con la velocità dei computer. La buona notizia è che usare una chiave più lunga non rende solo un po' più complessa la cifratura, fa bensì aumentare esponenzialmente il numero di possibilità che servirebbero per violare un messagio cifrato. Quando il mittente e il destinatario condividono la stessa chiave per cifrare e decifrare il messaggio, si parla di CRITTOGRAFIA SIMMETRICA. Con la crittografia simmetrica, come il Cifrario di Cesare, la chiave segreta deve essere concordata in anticipo da due persone in privato. Questo può andar bene per le persone ma Internet è aperta e pubblica, quindi è impossibile per due computer "incontrarsi" in privato, per accordarsi su una chiave segreta. Invece i computer utilizzano chiavi di cifratura asimmetriche: una chiave pubblica che può essere condivisa con chiunque e una chiave privata che non va condivisa. La chiave pubblica serve per cifrare i dati e chiunque può usarla per creare un messaggio segreto, ma il messaggio può esser solamente decifrato da un computer che conosca la chiave privata. Il funzionamento si basa su principi matematici che non approfondiremo qui. Pensatela così: immaginate di avere una cassetta postale personale dove chiunque può depositare delle lettere, ma ha bisogno di una chiave per farlo. Potete fare molte copie della chiave di deposito e inviarne una ai vostri amici o anche renderla accessibile pubblicamente. I vostri amici o anche degli estranei possono usare la chiave pubblica per accedere al vostro spazio di deposito e lasciare un messaggio, ma solo voi potete aprire la cassetta postale con la vostra chiave privata per accedere a tutti i messaggi segreti che avete ricevuto. E potrete inviare messaggi sicuri in risposta ai vostri amici usando la chiave pubblica di deposito delle loro cassette postali. In questo modo le persone possono scambiare messaggi sicuri senza mai aver bisogno di accordarsi su una chiave privata. La crittografia a chiave pubblica è la base di tutti i sistemi di messaggistica sicura su Internet, compresi i protocolli di sicurezza SSL e TLS che garantiscono la nostra sicurezza quando navighiamo sul web. I computer odierni la sfruttano ogni volta che vedi il lucchetto o la scritta "https" nella barra degli indirizzi del browser, ciò significa che il computer sta usando la crittografia a chiave pubblica per rendere sicuro lo scambio di dati con il sito web visitato. Maggiore è il numero di persone che usa Internet, maggiore sarà il numero di dati personali trasmessi e la necessità di mantenere sicuri quei dati sarà ancora maggiore e, via via che i computer diventano più veloci, dovremo sviluppare nuovi metodi per rendere la cifratura "troppo difficile" da violare da parte dei nuovi computer. In questo consiste il mio lavoro e si evolve continuamente.