Tratto dallo speciale:

I limiti della crittografia classica

di Alessia Valentini

Pubblicato 7 Febbraio 2017
Aggiornato 12 Febbraio 2018 20:46

Si sente spesso parlare di soluzioni di crittografia per la sicurezza dei dati, anche in fase di trasferimento – ad esempio per la difesa da attacchi MITM (Man In The Middle) – e per evitare un’alterazione della loro RID (Riservatezza, Integrità, Disponibilità) se collocati in un repository o archivio.

Per comprenderne meglio funzionamento e limiti, abbiamo interpellato un esperto, Giovanni Schmid dell’Istituto di Calcolo e Reti ad Alte Prestazioni del CNR.

Sinteticamente, chi è esperto crittografo?

Il crittografo non ha un profilo facilmente definibile, poiché la crittografia è un settore molto vasto. Tuttavia, con buona approssimazione, possiamo dire che un crittografo studia operazioni di codifica dei dati digitali o protocolli che impiegano opportunamente tali codifiche (protocolli crittografici n.d.r.) per garantire la confidenzialità e l’autenticità delle informazioni scambiate durante le comunicazioni ed il corretto svolgimento delle comunicazioni stesse.

In cosa consiste un codice crittografico sicuro?

Non esiste un codice incondizionatamente sicuro.
Nel 1949 Claude Shannon pubblicò un lavoro in cui descrisse il codice One Time Pad (OTP) e dimostrò che esso offre la massima confidenzialità possibile.
OTP però richiede di usare chiavi (casuali) almeno tanto lunghe quanto il testo da cifrare, e di cambiare chiave per ogni nuovo messaggio. Il suo uso è pertanto estremamente oneroso e difficilmente realizzabile su reti di comunicazione “aperte” quali quelle per usi civili.
Inoltre OTP espone il testo cifrato a modifiche ad hoc (da parte di un potenziale avversario) che potrebbero passare inosservate ed accettate dal destinatario.
Per questo motivo, tutti i seguenti sviluppi della crittografia miravano ad ottenere codici più praticabili di OTP per la generazione e la condivisione delle chiavi tra le parti autorizzate, e ad aumentare la capacità dei destinatari nell’accorgersi di eventuali modifiche non autorizzate sui crittogrammi ricevuti.

Nel caso “peggiore”, un codice è ritenuto sicuro per una serie di considerazioni e ragionamenti di natura euristica. Nel caso “buono” si riesce a ricondurre la sicurezza di un codice alla difficoltà di un problema computazionale. Infatti, un codice si definisce “dimostrabilmente sicuro”, quando il crittografo esibisce un teorema in cui dimostra che, almeno sotto determinate ipotesi, una violazione del codice comporterebbe la risoluzione (efficiente) di un problema per il quale, allo stato delle conoscenze correnti, non si conoscono algoritmi risolutori efficienti. Da quel momento se si scopre un nuovo risultato, che consente di risolvere quel problema in modo efficiente, il codice realizzato a partire da esso non si potrà più ritenere sicuro.

Un esempio di come si possa inficiare un codice sicuro.

E’ sufficiente che aumenti la potenza computazionale. Ad esempio, il codice RSA (Rivest-Shamir-Adleman), introdotto nel 1978, è a tutt’oggi il meccanismo più impiegato per consentire ad un browser e ad un sito web di condividere chiavi di sessione autentiche, grazie alle quali verranno protetti i messaggi scambiati tra i due.
La sicurezza di RSA dipende dalla difficoltà computazionale di scomporre in due fattori primi un numero intero molto grande. Nonostante diversi progressi nella risoluzione del problema della fattorizzazione numerica anche grazie ai computer, fino ad oggi nessuno ha potuto rendere questo problema di facile risoluzione. RSA ha dimostrato la sua solidità rispetto alle capacità di calcolo espresse dai comuni computer di tipo Von Neumann e dai relativi algoritmi (i Von Neumann sono computer con una architettura in cui i dati del e le istruzioni del programma, sono presenti nello stesso spazio di memoria. Sono contrapposti all’architettura Harvard in cui i dati e le istruzioni del programma sono memorizzati in spazi di memoria distinti). Tuttavia l’algoritmo RSA ed relativi protocolli, hanno dovuto subire parecchi “ritocchi” per  sopperire ai progressi scientifici e tecnologici più recenti, primo fra tutti la lunghezza dell’intero da fattorizzare. Infatti, se con la tecnologia hardware e software degli anni 90 risultava molto difficile fattorizzare un intero di 100 cifre, attualmente sono stati fattorizzati numeri aventi più di 200 cifre (663 bit). Quindi l’uso di interi a 1024 bit, un limite ritenuto dagli autori sicuro dall’epoca di introduzione del cifrario, è oggi fortemente sconsigliato per applicazioni “sensibili”.

Quindi è iniziata l’era della crittografia quantistica, la QKD (Quantum Key Distribution). Cosa è successo ?

I problemi della fattorizzazione di un intero molto grande sono efficientemente risolubili dai “computer quantistici” teorizzati negli anni 80 e che ora sono in costruzione. Non appena i computer quantistici saranno disponibili alla massa, gli algoritmi come RSA dovranno essere abbandonati, perché non potranno più essere considerati sicuri. Dovremo quindi rinunciare agli attuali meccanismi di cifratura mediante la condivisione di chiavi di sessione, che oggi avviene direttamente sulla rete internet senza il ricorso a canali trasmissivi “speciali” (che sarebbero più onerosi n.d.r.).

E’ vero che le comunicazioni criptate con sistema QKD sono a prova di hacker? Perché?

La crittografia di tipo quantistico, basata sugli stessi fenomeni fisici su cui si basano i computer quantistici può fornire una trasmissione sicura e confidenziale in termini assoluti. Infatti, protocolli quantistici come l’OKD, consentono di condividere una chiave segreta tra due parti remote, in modo che tali parti siano sempre in grado di accorgersi se c’è stato un avversario che ha provato a intercettare la chiave. Mentre la crittografia non-quantistica impiega diverse tecniche matematiche per impedire ad un avversario di accedere al contenuto in chiaro di un messaggio o di desumere una chiave, nella meccanica quantistica l’informazione risulta protetta dalle leggi della fisica. Sono noti attualmente diverse modalità quantistiche per la trasmissione confidenziale di un dato da una sorgente ad una destinazione.

Il più semplice da descrivere è quello che usa una tra quattro possibili polarizzazioni di un fotone, date rispettivamente da 0, 45, 90 e 135 gradi. Il mittente usa un trasmettitore fotonico per inviare fotoni secondo una delle quattro suddette polarizzazioni. Il destinatario, da parte sua, dispone di un ricevitore in grado di misurare la polarizzazione utilizzata dal mittente. In base alla leggi della meccanica quantistica, il destinatario è in grado di distinguere tra una polarizzazione rettilinea (0 o 90 gradi) ed una diagonale (45 o 135 gradi), ma mai entrambe. Per inviare una chiave segreta, il mittente invia al destinatario una serie di fotoni in successione, ciascuno con una diversa polarizzazione scelta in modo casuale, mentre il destinatario sceglie in modo casuale tra la misurazione rettilinea e quella diagonale. Il destinatario registra i risultati delle misurazioni effettuate e in una fase successiva annuncia pubblicamente quale è la sequenza di misurazioni che ha effettuato, senza però rendere noti gli esiti di siffatte misurazioni. Le due parti prendono in considerazione solo i casi in cui la misurazione effettuata dal destinatario è in accordo con la polarizzazione generata dal mittente. Questi casi saranno istanziati come 0 o 1 a seconda che si tratti, ad esempio della minore o maggiore polarizzazione tra le due di tipo rettilineo o le due di tipo diagonale. Questa sequenza di 0 e 1 andrà a costituire la rappresentazione binaria della chiave.

Un avversario in ascolto sarà costretto ad introdurre degli errori nella suddetta trasmissione in quanto, non conoscendo a priori il valore della polarizzazione, dovrà effettuare delle misurazioni che altereranno lo stato delle trasmissioni fotoniche. Il mittente ed il destinatario pertanto, pur non potendo impedire il tentativo di spionaggio, lo potranno scoprire grazie alla valutazione degli errori di trasmissione. Nel caso in cui dovessero rilevare un errore, essi considereranno nulla la chiave ottenuta e procederanno alla generazione di una nuova chiave.

Quindi i crittosistemi quantistici offrono confidenzialità in modo certo (diversamente da quelli non-quantistici) ma sono comunque esposti al rischio di “negazione del servizio” (Denial of Service o attacco DoS, n.d.r.) perché un avversario può impedire che due parti possano accordarsi su una chiave segreta grazie a ripetute alterazioni del canale di comunicazione fra le parti.
Ne parleremo in modo ancora più approfondito. Stay tuned.