Se qualche settimana fa avete letto l’articolo in cui si parlava dei processori a qubit – basati sulle leggi della meccanica quantistica – vi ricorderete che nel post scriptum finale accennavo alla loro potenziale capacità di violare qualunque sistema informatico di sicurezza.
In effetti, i protocolli crittografici attualmente in vigore si basano principalmente sull’aritmetica modulare: sfruttano cioè, il fatto che alcune operazioni matematiche molto semplici hanno delle operazioni inverse molto complesse. Facendo un esempio: provate a moltiplicare tra di loro i numeri 23, 31 e 7. Se siete bravi nel calcolo mentale rapido potete arrivare al risultato (4991) a mente in qualche decina di secondi, altrimenti mettendovi a fare i calcoli a mano su un foglietto non ci metterete comunque più di un minuto. Provate invece adesso a trovare i fattori primi del numero 6409: l’unica possibilità che avete è andare per tentativi. Solo dopo aver effettuato le divisioni per 3, 7, 11 e aver verificato che non funzionano troverete il primo fattore, 13, e da lì gli altri.
Questa asimmetria di calcolo tra un’operazione e la sua inversa è valida anche a livello computazionale: per quanto enormi siano i numeri in gioco, moltiplicarli tra di loro è un’operazione computazionalmente semplice (ovvero: richiede un numero di iterazioni proporzionali ad una potenza del numero di bit in gioco), mentre scomporre in fattori primi un numero enorme è un problema computazionalmente complesso (richiede un numero di iterazioni pari al fattoriale del numero di bit). Su questa disparità si basa la crittografia moderna, nota infatti come crittografia asimmetrica: i più noti algoritmi di questo tipo sono il DSA (alla base del Digital Signature Standard, il più noto protocollo di crittografia per le firme digitali) e l’RSA (utilizzato, tra l’altro, nelle chiavette token per l’autenticazione di accesso all’online-banking) [1].
Questi sistemi di crittografia non sono matematicamente sicuri, ma sono praticamente sicuri: un computer moderno non riuscirebbe a violare un sistema del genere nemmeno in un miliardo di anni. L’unico modo per farlo sarebbe infatti andare per tentativi (quello che in linguaggio tecnico si chiama brute-forcing): se consideriamo che un PC normale impiega diverse ore a forzare una password di 8 caratteri provando tutte le possibili combinazioni alfanumeriche, capiamo subito come anche i PC più potenti del mondo non potrebbero mai forzare un blocco lungo centinaia o migliaia di caratteri.
Se però invece di dover procedere un tentativo alla volta, un computer potesse processare tutte le combinazioni assieme, è evidente che il problema sarebbe risolto. E questo è qualcosa che un computer quantistico potrebbe serenamente fare: ecco perché la creazione dei primi prototipi di processore a qubit mina seriamente la sicurezza di qualunque sistema basato su crittografia asimmetrica.
Il problema di trovare un sistema crittografico perfettamente inviolabile era già stato risolto da Gilbert Vernam e Guillaume Mauborgne [2] negli anni ’20 del secolo scorso. Essi avevano infatti inventato un cifrario che si basava sull’utilizzo di una chiave con le seguenti tre caratteristiche:
- La chiave deve avere un numero di caratteri superiore od uguale al messaggio che si vuole codificare.
- La chiave deve essere casuale.
- Ogni chiave può essere utilizzata una sola volta.
La terza caratteristica ha fatto sì che questo cifrario sia passato alla storia come “blocco monouso”, oltre che come “cifrario di Vernam”. Negli anni ’40 Claude Shannon diede la dimostrazione matematica che questo cifrario è perfettamente, assolutamente inviolabile. Tuttavia, perché tale inviolabilità si conservi, occorre trovare un metodo perfettamente sicuro di trasmettere la chiave da un utente ad un altro: se un intercettatore viene in possesso della chiave, decifrerà il messaggio senza sforzo alcuno. D’altronde, se esistesse un canale di trasmissione perfettamente sicuro, non ci sarebbe bisogno di cifrare i messaggi, basterebbe spedirli attraverso quel canale.
Come fare dunque?
Ancora una volta la meccanica quantistica ci viene in aiuto. Gli stati quantistici hanno infatti una proprietà peculiare: ogni misura effettuata su di essi distrugge completamente qualsiasi informazione precedentemente acquisita. Il concetto non è facile da comprendere, cercherò di spiegarlo con un esempio.
Supponiamo che il vostro vicino di scrivania si comporti come uno stato quantico, e prendiamo due sue caratteristiche: il colore dei capelli (neri o biondi) e la marca delle scarpe (Nike o Adidas). Noi guardiamo il colore dei suoi capelli e vediamo che sono neri: se stacchiamo gli occhi da lui e poi torniamo a guardargli i capelli, saranno di nuovo neri. Se però ora gli guardiamo la marca delle scarpe, scoprendo che sono Nike, e poi torniamo a guardargli i capelli, abbiamo una probabilità del 50% di trovarli neri e una probabilità del 50% di trovarli biondi! Il fatto che abbiamo osservato le scarpe ha distrutto l’informazione che avevamo sul colore dei capelli.
Come si applica questo alla crittografia?
Prendiamo ad esempio uno stato identificato da un numero (1 o 2) e da una lettera (A o B), dove se vado a leggere la lettera distruggo qualsiasi informazione sul numero, e viceversa [3].
Immaginiamo che il mittente del messaggio, Alice, mandi l’informazione “1” al destinatario, Bob. Se Bob va a leggere il numero troverà necessariamente 1, se però va a leggere la lettera troverà in maniera casuale A o B e avrà distrutto qualunque informazione sul numero. Lo stesso vale però per chiunque abbia tentato di intercettare la comunicazione.
Alice dunque manda una stringa di 100 unità di informazione (qubit), e Bob, in maniera casuale, deciderà se andare a leggere la lettera o il numero. Successivamente Alice comunica pubblicamente a Bob, per ognuno dei 100 stati, se aveva mandato una lettera o un numero, e Bob cancella dalla stringa tutti gli stati in cui è andato a leggere qualcosa di diverso da quello che Alice aveva mandato: statisticamente, rimarranno metà degli stati. Ora i due hanno a disposizione una stringa da 50 caratteri che è perfettamente identica per entrambi: infatti se Alice ha mandato una A, e Bob ha letto la lettera, può solo aver letto A, a meno che…
…a meno che qualcuno in mezzo non abbia provato a leggere lo stato a sua volta, e abbia letto il numero, distruggendo l’informazione sulla lettera!
Alice quindi, comunica a Bob i primi 10 caratteri della stringa da 50, supponiamo siano AA1B2212AB, e Bob verifica che siano identici ai suoi: se qualcuno ha provato a intercettare il messaggio, ogni singolo carattere ha una probabilità del 25% di essere stato alterato. Questo vuol dire che su una stringa di 10 caratteri, statisticamente 2 o 3 risulteranno diversi: in questo caso, Alice e Bob riscontreranno la presenza di un intercettatore e non proseguiranno la comunicazione.
Se invece non ci sono pericoli, Alice e Bob sanno ora di condividere una stringa di 40 caratteri identici, che nessuno oltre a loro può conoscere. Infatti quando si sono confrontati pubblicamente, hanno solo detto quali stati sono numeri e quali sono lettere, non se sono A, B, 1 o 2: questa informazione la conoscono solo loro. Non resta che utilizzare questa stringa finale come chiave per un messaggio cifrato tramite blocco monouso, ed il gioco è fatto.
Semplificando molto, questo è il metodo alla base dei protocolli di crittografia quantistica, che sarebbe in realtà più corretto chiamare protocolli di distribuzione quantistica della chiave. A differenza dell’informatica quantistica, che sta vedendo adesso venire alla luce i primi prototipi, la crittografia quantistica è già stata brevettata, ed esistono già aziende che commercializzano sistemi di sicurezza basati su questa tecnologia.

Tra l’altro, il fatto che nella realtà si utilizzino come unità di informazione gli stati di polarizzazione dei fotoni, rende questo sistema molto adatto a cifrare il traffico dati che viaggia tramite fibra ottica: la città di Ginevra, grazie all’azienda ID Quantique (la prima al mondo ad operare in questo settore), si sta già dotando di una rete a fibra ottica quanto-cifrata che coprirà tutta la città, e anche diverse banche stanno già iniziando a dotarsi di questi sistemi di sicurezza.
Se proprio non avete modi migliori di spendere i vostri soldi e avete una connessione a fibra ottica, sono già in commercio anche i modelli per privati. Sempre che proteggere la vostra posta elettronica valga un investimento di qualche decina di migliaia di euro.
Luca Romano
Note:
[1]: In realtà gli algoritmi di crittografia asimmetrica sono ovviamente più complessi, in quanto avvengono all’interno di classi di resto modulari di insiemi matematici finiti. Il discorso sulla complessità computazionale rimane comunque valido.
[2]: Il cifrario di Vernam altro non è che una variazione del cifrario di Vigenere con le tre condizioni imposte sulla chiave. Per ulteriori informazioni, cilcca qui.
[3]: Nei reali protocolli di crittografia si utilizzano gli stati di polarizzazione di un fotone lungo due basi ortonormali (una lineare e una diagonale) e i relativi angoli di polarizzazione (polarizzazione verticale o orizzontale sulla base lineare, e polarizzazione a 45° o a 135° per quanto riguarda la base diagonale).