Pubblichiamo un guest post di Fabio Bonomo
Crittografare un messaggio è un’esigenza antica quanto la scrittura stessa, e credo che tutti noi almeno una volta nella vita ne abbiamo sentito la necessità (l’alfabeto farfallino vi ricorda qualcosa?). E’ per questo che fior di matematici si sono sempre impegnati a trovare un metodo affidabile per scambiare messaggi segreti, soprattutto oggi nell’era della tecnologia e dei computer.
Il cifrario (l’algoritmo utilizzato per eseguire operazioni di cifratura e decifratura) perfetto esiste già da tempo e prende il nome di “Cifrario di Vernam”, dal nome di quel maggiore dell’esercito statunitense che lo ideò nel 1918 a partire dal cifrario di Vigenére. In breve, questo metodo prevede l’uso di una chiave casuale ed utilizzabile una sola volta (OTP) lunga quanto il messaggio stesso, il che chiaramente lo rende poco pratico quando si tratta di cifrare documenti di migliaia di pagine!
Qualsiasi sia il cifrario utilizzato però, sia esso perfetto o no, il vero problema è sempre lo stesso: lo scambio della chiave tra mittente e destinatario. E’ proprio in questa fase che un eventuale malintenzionato agisce, anche perché se il messaggio è cifrato con una chiave sufficientemente lunga e complessa, la sua decifratura può essere impossibile, nella scala dei tempi umana, anche con le moderne CPU/GPU.
Ribadiamo il concetto: è lo scambio della chiave il problema, ed è qui che bisogna intervenire per rendere tutto a prova di cracker. Uno degli approcci più famosi ed utilizzati per ovviare al problema è la cifratura asimmetrica, un geniale metodo che prevede l’uso di due chiavi differenti, ma matematicamente legate, per cifrare decifrare. La chiave per cifrare è pubblica e può essere scambiata anche in chiaro senza rischi per la sicurezza, mentre la chiave per decifrare è segreta ed è in possesso solamente del destinatario.
Anche se a prima vista questo metodo può sembrare infallibile, ci sono alcuni problemi, come l’autenticità della chiave pubblica, che non sono risolvibili se non aggiungendo ulteriori passaggi al cifrario. Tant’è vero che anche software come PGP (uno dei programmi più diffusi per cifrare asimmetricamente) consigliano il contatto fisico o vocale per autenticare, tramite hash (una sorta di impronta digitale che non permette di risalire ai dati di origine), la chiave pubblica. Questi step aggiuntivi spesso sono impraticabili, e non affidabili se non si conosce di “persona” colui che ci ha fornito la chiave pubblica.
Tutti gli altri approcci, che si basano su procedure simmetriche, cioè dove la stessa chiave è utilizzata sia per cifrare che per decifrare il messaggio, devono contare invece solamente sullo scambio sicuro della chiave. Ma se davvero esistesse un canale sicuro per scambiare una chiave, allora lo stesso canale potrebbe essere usato per scambiare il messaggio stesso!
Il contatto “fisico” per lo scambio della chiave rimane ancora il metodo più affidabile. Esiste ad onor del vero lo scambio di chiavi mediante Diffie-Hellman, un procedimento che permette di stabilire una chiave simmetrica senza la necessità che la stessa sia trasmessa lungo canali insicuri. Il problema è che in ogni caso questo elegante procedimento matematico è vulnerabile agli attacchi “Man in The Middle”, quelli cioè in cui un cracker cerca di sostituire la chiave pubblica originaria con la sua. Questo perché è comunque necessario che mittente e destinatario si scambino una serie di informazioni per “costruire” la chiave simmetrica.
Come può la meccanica quantistica aiutarci a creare un canale sicuro? E come può un fascio di fotoni aiutarci a cifrare un messaggio? L’idea poggia le sue basi su uno dei pilastri della fisica quantistica: il principio di inderminazione di Heisenberg. Questo principio dice, in breve, che non è possibile conoscere contemporaneamente coppie di proprietà quantistiche delle particelle elementari (ad esempio sapere velocità e posizione di un fotone).
E c’è una conseguenza molto importante: nel momento in cui cerchiamo di misurare una certa proprietà con precisione, ad esempio la velocità, inevitabilmente alteriamo il sistema perdendo la possibilità di calcolarne la posizione od altre proprietà correlate. Insomma, ogni “lettura” modifica gli stati quantistici originari definitivamente.
Il perché funzioni davvero così è un annoso problema della fisica, al punto che personaggi del calibro di Einstein, deterministico per eccellenza, hanno lavorato per confutare il principio adducendo una mancanza di precisione degli strumenti a nostra disposizione nel calcolare e/o trovare variabili nascoste, ma le numerose prove sperimentali non lasciano dubbi: la meccanica quantistica è intrinsecamente probabilistica.
Come detto qualche paragrafo più sopra, un buon metodo per decifrare un messaggio segreto è quello di mettersi nel bel mezzo della comunicazione tra mittente e destinatario e captare la chiave di cifratura (o nel caso di cifratura asimmetrica sostituire la vera chiave con una fasulla). Che metodo hanno i due attori della conversazione per capire se qualcuno stia per caso origliando? Nessuno! Ed è qui che la meccanica quantistica entra in gioco.
Se riuscissimo a scambiarci una chiave “fatta” di fotoni (od altre particelle a vostra scelta) ed utilizzassimo una certa proprietà (lo spin) per assegnare ad essa la sequenza di bit (0 ed 1) che la compone, allora potremmo dire con sicurezza (in base a quanto assunto dal principio di indeterminazione) che se un cracker si frapponesse tra me ed il destinatario e tentasse di leggere la chiave, questi la altererebbe inevitabilmente ed io sarei in grado di accorgermene.
A questo punto potrei chiamare il mio interlocutore ed avvisarlo tempestivamente stoppando la comunicazione. Sulla base di queste idee, nel 1984 due studiosi, Charles Bennett e Gilles Brassard, idearono l’algoritmo BB84, grazie al quale, sfruttando la lettura dello spin di un fascio di fotoni, è possibile ricavare una chiave binaria da utilizzare per cifrare un messaggio.
In questa sede è sufficiente sapere che mittente e destinatario riescono a ricavare la chiave binaria, confrontando i risultati sulla misura dello spin di un fascio di fotoni. Semplificando e tralasciando alcuni dettagli, i quali rimangono comunque cruciali per il corretto funzionamento, il mittente polarizza una serie di fotoni in un certo modo e li invia al destinatario. Questi leggendone la polarizzazione si annota i risultati, e confrontandosi con quanto fatto dal mittente è possibile ricavare una chiave binaria.
E’ ovvio che se i dati non coincidono vuol dire che il sistema è stato alterato e quindi intercettato da un terzo attore. Questa è la base teorica, e come potete osservare è perfettamente sicura, non c’è modo per un cracker di intercettare la chiave senza farsi scoprire.
Abbiamo quindi creato un canale sicuro per scambiare un chiave simmetrica? Se vivessimo in un universo ideale la risposta sarebbe assolutamente si. Ma c’è un problema. Non siamo ancora in grado di isolare dall’esterno al 100% il nostro sistema per lo scambio di chiavi quantistiche (QKD), e pertanto dobbiamo necessariamente tollerare un certo margine di errore (pari al 20% secondo le moderne stime dei fisici) nella generazione della nostra chiave.
Questo perché sia quando il mittente polarizza i fotoni sia durante la trasmissione degli stessi, questi vengono inevitabilmente a contatto con tutte le altre particelle presenti nell’ambiente circostante, le quali interagendo con le nostre introducono errori impredicibili di lettura.
Secondo quanto pubblicato in questo articolo, un team di fisici capitanati da Hoi-Kwong Lo dell’università di Toronto, è riuscito a sferrare un attacco ai sistemi QKD commerciali (ad esempio l’ID-500) sfruttando il fatto che, a causa della tolleranza all’errore necessaria, si può captare la chiave introducendo nel sistema una quantità di errori quantificabili in un 19.7%, e poiché non è possibile distinguere tra errori di lettura introdotti dall’ambiente da quelli generati da un “origliatore”, la chiave risulterà valida.
Più precisamente Hoi-Kwong Lo è riuscita a captare informazioni sulla chiave inserendosi nel processo di polarizzazione dei fotoni che avviene quando il mittente sta “costruendo” il fascio da inviare al destinatario. L’invincibile crittografia quantistica è stata sconfitta! In realtà però non è stata battuta la teoria, che come abbiamo visto è assolutamente sicura ed inviolabile, quanto la sua applicazione pratica con BB84: parafrasando una famosa frase di Bohr rivolta ad Einstein: “Dio sa benissimo cosa fare con i suoi dadi”. Piuttosto, aggiungo io, siamo noi umani che non li sappiamo sfruttare a dovere!
In realtà esiste un procedimento differente che non si basa più sull’algoritmo BB84 ma su quello che viene chiamato protocollo di Ekert. L’Exploit di Hoi-Kwong Lo non avrebbe effetto su un sistema QKD basato su questo metodo, anche se sono certo che con opportune modifiche potrebbe risultare efficace. Prima di capire di cosa si tratta, dobbiamo introdurre un nuovo concetto molto importante per la fisica quantistica: l’entanglement.
Secondo questo curioso fenomeno fisico, due “nate” in particolari condizioni, presentano delle proprietà che risultano correlate anche se si trovano a milioni di anni luce di distanza. Prendiamo ad esempio una coppia elettroni che sono sullo stesso orbitale di un atomo: essi dovranno necessariamente avere spin opposto, ed essendo entangled se uno dei due cambia spin l’altro farò lo stesso. Immaginiamo ora di prendere uno di questi due elettroni e portarlo nella galassia di Andromeda mentre il suo gemello rimane qui sulla terra: se cambia lo spin di uno dei due anche l’altro, istantaneamente ed indipendentemente dai 2,5 milioni di anni di distanza che li separa, cambierà il proprio spin ad una velocità superiore a quella della luce.
Questi aspetti che rendono lo spazio non locale sono davvero interessanti e sono anche alla base del teletrasporto quantistico, ma qui non proseguiamo oltre in quanto tutto ciò che ci serve per capire cos’è il protocollo di Ekert lo abbiamo imparato. Nel 1991 Artur Ekert propose il suo metodo per lo scambio di chiavi quantistiche, che consiste nell’inserire una sorgente di fotoni entangled tra mittente e destinatario e di sparare i fotoni “gemelli” ad entrambi.
Sia il mittente che il destinatario, all’atto di leggere lo spin dei fotoni misureranno esattamente lo stesso valore, e dopo una serie di procedimenti matematici è possibile ottenere una chiave binaria senza passaggio di informazioni,. Anche in questo caso viene considerata una tolleranza del 20% dovuta al “rumore” di fondo. A questo punto torna in auge il principio d’indeterminazione: se un attaccante si è frapposto tra la sorgente ed uno dei due soggetti primari, ci si accorgerà inevitabilmente dell’azione fraudolenta e la chiave sarà rigettata. Abbiamo quindi migliorato la situazione grazie ad Ekert? Forse si, anche se come confermato da un articolo apparso su Nature (consultabile qui) è stato scoperto un’altro hack, questa volta di fattura più “pratica” che teorica.
Vadim Makarov ed i suoi colleghi dell’università delle scienze in Norvegia, hanno ideato un sistema che garantisce di conoscere tutti i bit della chiave senza aggiungere nessun tipo di rumore, evitando quindi di superare il fatidico 20% di tolleranza. Se vi state chiedendo quale ingegnoso metodo e quale incredibile equazione abbiano ideato siete fuori strada. Makarov si è accorto che inviando un fascio laser di 1 milliwatt verso il rilevatore del destinatario (o del mittente se avessimo a che fare con un protocollo di Ekert) esso diventa “cieco” allo spin dei fotoni e restituirà sempre come valore 1.
Detto questo è sufficiente che il contraffattore inserisca un suo rilevatore di polarizzazione nel mezzo, e per non alterare il sistema, ogni volta che riceve un fotone che da come risultato 1 se lo annota ed invia il “raggio accecante” verso il vero rilevatore, che non potendosi accorgere di nulla registrerà comunque il valore corretto di spin, cioè 1. A questo punto sia il destinatario che il malintenzionato avranno la chiave corretta, e non essendo stato generato con alcuna aggiunta di rumore di alcun genere essa è da ritenersi sicura.
Questo hack si applica sia ai sistemi ID-500 che a quelli MagiQ (che sono i sistemi QKD commerciali più diffusi). Certamente questo sistema di elegante ha ben poco bisogna ammetterlo, ma ci permette uno spunto di riflessione importante: per quanto possa essere complesso e teoricamente sicuro c’è sempre un angolo scoperto e sfuggente che può essere utilizzato per bypassare il sistema. Anche se stiamo parlando di questioni fortemente teoriche ed astratte, non bisogna mai tralasciare il fatto che viviamo in un mondo fatto di cose materiali: al di là dei principi di inderminazione e dell’entanglement quantistico, tutto deve sempre fare i conti con l’intrinseca imperfezione della sfera umana.
E voi cosa ne pensate? Credete che i vostri dati in rete siano sicuri?