Crittografia quantistica

Premessa: utilizzo crittografico di una sequenza di numeri casuali

La situazione tipica prevista in crittografia, prevede che una certa persona (che chiameremo, seguendo la convenzione, Alice) debba comunicare un certo messaggio ad un suo amico (Bob) impedendo però ad altre persone (il fantomatico Charlie) di venire a conoscenza del reale contenuto, anche nel caso in cui il messaggio venga intercettato.

Supponiamo che il messaggio sia codificabile in una sequenza di bit (0 o 1). Esso potrebbe corrispondere ad un testo in codice ASCII, in codice Morse o ad un contenuto digitale di qualche altro tipo, non ha importanza, purché ovviamente Alice e Bob condividano questa informazione.

Un possibile metodo di criptazione consiste nel fare la somma senza riporto, bit a bit, del messaggio con una certa altra sequenza di bit (chiave) generata casualmente e condivisa da entrambi (questo perché, come vedremo subito, la stessa chiave servirà sia per criptare che per decriptare il messaggio).

Somma senza riporto
aba ⊕ b
000
011
101
110
Esempio:
Alicefase di criptazione:
Mess. originale:01010100
Chiave:10011100=
Mess. criptato:11001000
 
Bobfase di decriptazione:
Mess. criptato:11001000
Chiave:10011100=
Mess. originale:01010100

La somma senza riporto coincide, per due bit, con l'operazione XOR (or esclusivo).

Come si può vedere, Bob, avendo a disposizione la chiave usata da Alice per crittografare, può decriptare il messaggio semplicemente eseguendo nuovamente l'operazione di somma senza riporto. Nell'esempio riportato sopra, il messaggio è di 8 bit; nel caso in cui Alice e Bob si siano accordati per utilizzare il codice ASCII, esso rappresenterebbe semplicemente la lettera “T”.

Ecco un possibile metodo per realizzare in pratica questo tipo di criptazione:

Alice e Bob si incontrano in un luogo sicuro ed iniziano a tirare una monetina; entrambi annotano i risultati assegnando, ad esempio, uno “0” ad ogni croce ed un “1” ad ogni testa. Raccolta una quantità sufficiente di dati, i due si separano. Quando Alice dovrà trasmettere un messaggio a Bob (supponiamo ad esempio che sia un messaggio di testo, dunque codificabile usando il codice ASCII), lo cripterà attraverso il metodo descritto sopra, utilizzando la porzione necessaria della chiave condivisa con Bob (dopo la criptazione, il messaggio sarà ancora codice ASCII, anche se dal significato apparentemente incomprensibile) ed infine lo invierà all'amico, attraverso un qualche canale digitale, anche insicuro (ad esempio via mail). Ovviamente Bob, ricevuto il messaggio, lo decripterà utilizzando la porzione necessaria della chiave e così via fino a che non avranno finito la chiave.

Il metodo funziona ma, chiaramente, presenta dei limiti:

  1. È necessario che la chiave sia generata in maniera genuinamente casuale (il lancio di monete, descritto sopra, lo è; la generazione di numeri random di un computer, non lo è!). Se non fosse così un ipotetico attaccante (Charlie) in grado di intercettare il messaggio, che sia a conoscenza dell'algoritmo usato per generare i numeri pseudo-casuali, potrebbe dedurre, dalla conoscenza di una parte del messaggio originale (o comunque attraverso qualche tentativo) il resto della chiave e decriptare a sua volta il messaggio.

    Ad esempio, usando il codice ASCII, si potrà ragionevolmente affermare che per ogni sequenza di 8 bit del messaggio in chiaro, il primo sarà pari a zero e il secondo a 1; questo perché tutte le lettere dell'alfabeto inglese (tralasciamo accenti, numeri e altri caratteri particolari) sono comprese tra 65 e 122. Ma questo significa che è possibile risalire automaticamente a ben 1/4 della chiave! Possibile soluzione: prima della codifica, compattare il messaggio in chiaro con qualche algoritmo di compressione.

  2. La chiave deve essere trasmessa da Alice a Bob attraverso un canale "sicuro" (non intercettabile). Ma allora, se questo esistesse, perché non trasmettere direttamente il messaggio attraverso quel canale? Nell'esempio proposto prima, Alice e Bob si incontrano di persona. Ma se questo non fosse sempre possibile? Inoltre, la chiave deve essere lunga tanto quanto il messaggio e non deve essere riutilizzata o, in caso contrario, il metodo sarebbe sottoponibile ai soliti attacchi di analisi delle frequenze. Dunque, Alice e Bob sarebbero costretti ad incontrarsi periodicamente in luoghi segreti, esponendosi però in questo modo al rischio di essere spiati.

  3. Non c'è alcun modo di sapere con certezza se qualche malintenzionato stia intercettando i messaggi e, nel malaugurato caso in cui sia riuscito ad ottenere in qualche modo la chiave, li stia decriptando.

Cosa c'entra tutto questo con la Meccanica Quantistica? Beh, vedremo che sfruttando le proprietà peculiari del mondo quantistico, è possibile implementare un metodo analogo a quello proposto, risolvendo però i problemi elencati nei punti 1, 2 e 3.

In particolare, non ci sarà alcun bisogno di un incontro preparatorio tra Alice e Bob; essi potranno anche annunciare pubblicamente il metodo che andranno ad utilizzare, senza inficiarne in alcun modo la sua validità. Inoltre, qualsiasi eventuale tentativo da parte di Charlie di intercettare la chiave, seppur non impedibile a priori, verrebbe prontamente smascherato.

Come vedremo, i due necessiteranno solamente di una sorgente quantistica opportunamente congegnata e di un canale attraverso il quale ricevere i “bit quantistici” (ad esempio fotoni polarizzati trasmessi mediante fibre ottiche).

Un po' di teoria: q-bit e stati entangled

Prima di poter descrivere il metodo crittografico vero e proprio, è necessario mettere in chiaro alcuni concetti propri della meccanica quantistica ed in particolare di quella che viene definita Quantum Computation (calcolo quantistico).

Classicamente, l'unità minima di informazione è rappresentata dal bit, il quale può assumere due valori, incompatibili tra loro (0 o 1).

Se consideriamo un qualsiasi sistema quantistico, il suo stato sarà completamente descritto da un vettore di stato (o funzione d'onda). Dunque anche quantisticamente si potrà costruire un opportuno sistema che funge da bit (in questo caso q-bit) caratterizzato da una certa grandezza la quale potrà assumere esclusivamente due valori, corrispondenti a due stati ortogonali (questo per fare in modo che se lo stato corrisponde a "0", non è certamente in "1"). Ovviamente, però, se accettiamo che il sistema sia descritto dalle regole della meccanica quantistica, avremo la possibilità che esso sia in una sovrapposizione di stati "0" e "1" (tecnicamente, una qualsiasi combinazione lineare dei due stati), ossia in generale:

combinazione lineare

Quantum Bits (ad es. stati di polarizzazione di fotoni) ed operatori quantistici

Applicazione mediante misure su stati entangled (Alice, Bob)

no-cloning theorem e no-faster than light signal

In sostanza il metodo della crittografia quantistica sfrutterà due particolari aspetti della meccanica quantistica, il “no cloning theorem” e la generazione di numeri perfettamente casuali.

La crittografia quantistica in pratica

Non resta dunque che sfruttare le proprietà della MQ per implementare un metodo con il quale Alice e Bob possano condividere una stessa chiave (sequenza di bit) generata in maniera genuinamente casuale.

Il metodo più diffuso e qui presentato è quello proposto da C. Bennett e G. Brassard nel 1984 (da cui il nome di protocollo BB84).

Dunque ...

A questo punto Alice e Bob possono utilizzare la chiave condivisa per criptare i messaggi da inviare attraverso il normale canale pubblico. Ovviamente potrebbero utilizzare il metodo esposto precedentemente, estremamente sicuro, con l'unico inconveniente che sarebbe necessario avere una chiave lunga almeno quanto la dimensione del messaggio stesso. Questo, però, potrebbe essere un serio inconveniente per messaggi veramente lunghi (ad esempio rappresentazioni digitali di un'immagine o di un filmato). Quello che conviene fare, allora, è utilizzare un algoritmo a chiave simmetrica per cifrare il messaggio (ad esempio l'RSA). In questo caso, però la sicurezza del messaggio non è più garantita dalle leggi quantistiche ma, piuttosto, dalla robustezza dell'algoritmo di cifratura. Ciò che viene garantito è la sicurezza nella comunicazione della chiave. Questo procedimento, difatti, è noto anche come QKD (Quantum Key Distribution).

Individuazione di un eventuale attacco di tipo Man in the Middle (Charlie)

Che cosa succederebbe, con questo protocollo, se un ipotetico attaccante (Charlie) si intromettesse nella comunicazione, cercando di carpire la comunicazione? Sostanzialmente egli potrebbe agire in due modi:

  1. Charlie intercetta i fotoni che Alice spedisce a Bob. Fa le misure che egli ritiene più opportune e poi li rispedisce a Bob.

  2. Charlie modifica la sorgente di fotoni (supponendo che questa non sia direttamente sotto il controllo di Alice) adattandola ai propri scopi.

In entrambi i casi, l'interferenza di Charlie produce degli esiti discordi nelle misure di Alice e Bob, i quali si accorgeranno, dunque, della presenza della spia e adotteranno i dovuti provvedimenti.

Interviene il no-cloning theorem, che impedisce a Charlie di clonare il sistema per poter fare le misure su di un fotone e rispedire l'altro inalterato ad Alice o a Bob (o, equivalentemente, i principi della meccanica quantistica gli impediscono di effettuare contemporaneamente due diverse misure di polarizzazione lungo due orientazioni ortogonali).

Per quanto riguarda il secondo punto, analizziamo le proprietà della sorgente:

singoletto prodotto dalla sorgente

Supponiamo, ora, che Charlie sia in grado di sostituire la sorgente originale con una che produce tre fotoni, progettandola apposta in modo da produrre esiti concordi per Alice, Bob e Charlie, nella misura di polarizzazione (ad esempio verticale). Facendo dei rapidi conti, però, ci si accorge che:

sorgente truccata da Charlie

In pratica, questo significa che con tre fotoni non si è più nella situazione di simmetria propria del singoletto, per cui cambiando l'orientazione della misura si otterranno anche esiti discordi (non solo tra Charlie e gli altri ma anche tra Alice e Bob, i quali dunque si accorgeranno che qualcosa non va).

In generale, è possibile dimostrare che qualunque modifica faccia Charlie alla sorgente, Alice e Bob potranno accorgersi dell'inganno trovando degli esiti differenti nelle loro misure.

Da notare come sia di fondamentale importanza che Charlie non venga a conoscenza in anticipo del tipo di misure che Alice o Bob effettueranno. In caso contrario, Charlie si potrebbe adeguare effettuando di volta in volta lo stesso tipo di misura di uno dei due e rispedendo poi a quest'ultimo il fotone, nello stato in cui si trova, senza che gli altri notino nulla di strano. Il metodo più sicuro per evitare questo sarà evidentemente quello di scegliere l'orientazione, per ogni misura, all'ultimo secondo e in maniera genuinamente casuale (ad esempio attraverso i dati generati da una ulteriore sorgente quantistica).

In realtà, Eve potrebbe agire anche in un altro modo, intercettando e/o manipolando i dati passanti attraverso il canale pubblico. In particolare, potrebbe alterare ad hoc la pubblicazione del tipo e degli esiti delle misure effettuate, facendo in modo che i due non si accorgano del suo tentativo di intromissione. Sarà dunque necessario anche stabilire un metodo di autenticazione (firma digitale) tra Alice e Bob, per assicurarsi della provenienza delle informazioni.

Caso reale: presenza di rumore

Caso ideale vs presenza di rumore/errori di misura: il rumore dovrà comunque essere abbastanza ridotto, in maniera tale che la probabilità di ottenere un esito errato sia molto minore del 25%. Solo in questo modo sarà possibile distinguere, con ragionevole sicurezza, tra differenze negli esiti dovute al rumore oppure a tentativi di attacco dall'esterno.

Infine, rimane da stabilire come possano Alice e Bob, contemplando anche la possibilità della presenza di alcuni errori di misura, essere assolutamente certi di avere in mano due chiavi identiche, senza ovviamente pubblicarle per intero (cosa che le renderebbe inutili per gli scopi crittografici!). Un modo potrebbe consistere nel calcolare una qualche funzione (hash) della stringa e pubblicare solo quella. Ovviamente la funzione di hash non potrà essere iniettiva per cui, almeno in teoria, anche con lo stesso hash le chiavi potrebbero essere diverse. Tuttavia, la probabilità che due stringhe diverse abbiano lo stesso hash è ridicolmente bassa, mentre risalire alle possibili stringhe a partire dall'hash è un'operazione computazionalmente estremamente complicata, cosa che impedisce a Charlie di dedurre la chiave.

Bene, ma se dopo tutto questo, le chiavi differissero? Come distinguere l'eventuale rumore da un attacco di Eve, senza ovviamente pubblicare le chiavi?

In pratica serve un modo per poter trasmettere il messaggio anche con chiavi che potrebbero differire di qualche bit, ogni tanto. Ed è qui che intervengono i codici a correzione di errore!

Bibliografia

Articoli divulgativi

  • Diego Casadei, Crittografia quantistica: quando la sicurezza è una questione fisica, Hackers & C. num. 9 (2004), pp. 36-41.
  • Giandomenico Rossi, Crittografia Quantistica: il nuovo paradigma della comunicazione segreta, Hackin9 n. 1, 2007, pp. 38-42.
  • GianCarlo Ghirardi e Francesca Scianitti, Fotoni e segreti: la meccanica quantistica al servizio della crittografia, Asimmetrie n. 12 (2011), pp. 10-13.

Articoli scientifici

  • P. W. Shor, 1994, Proceedings of the 35th Symposium on Foundations of Computer Science, edited by S. Goldwasser (IEEE Computer Society, Los Alamitos, California), pp. 124-134.
  • J. West, The Quantum Computer, An Introduction, April 28, 2000.
    www.cs.caltech.edu/~westside/quantum-intro.html
  • N. Gisin, G. Ribordy, W. Tittel, H. Zbinden, Quantum Criptography, Rev. Mod. Phys. 74 (2002) 145-195.
  • C. Monyk, Development of a Global Network for Secure Communications based on Quantum Cryptography -- SECOQC, April 21, 2003.

Links


  Contenuti soggetti a licenza d'uso Creative Commons Attribution - Non commercial - Share Alike 3.0 Unported. Questo sito non contiene informazioni aggiornate con cadenza periodica regolare, pertanto non può essere considerato una testata giornalistica, ai sensi dell'Art. 62/2001.