Agenti segreti che entrano in aree protette facendosi riconoscere attraverso la propria iride, persone che vengono identificate dal computer semplicemente premendo il proprio pollice sullo schermo: non si tratta di sceneggiature futuristiche o romanzi di fantascienza ma di una realtà sempre più vicina.
Negli ultimi anni si è sviluppato un campo di ricerca scientifica, la biometria, che si occupa dell’identificazione di persone attraverso sistemi che si basano su caratteristiche fisiologiche / comportamentali (come appunto l’impronta, l’iride, la grafia e la voce).
Ormai le applicazioni sono moltissime e spaziano dal controllo di accessi in aree protette, passando per aspetti legati alla firma di contratti, fino ad arrivare ai pagamenti online. Si tratta di un campo in continuo sviluppo ed espansione. L’applicazione più promettente è la sostituzione completa di metodi scomodi per “condividere i segreti”, quali le lettere che arrivano a casa contenenti password o PIN oppure i dispositivi, detti token, che generano successioni di numeri da inserire nei siti.
Vi sarà sicuramente capitato di scegliere una password, formata da lettere, numeri e simboli, per sbloccare il vostro cellulare o il vostro computer. Immaginate ora di possedere un touchscreen (beh, magari lo possedete già!) e di voler fare in modo che solo voi possiate accedervi. Potreste scegliere una password alfanumerica, come la precedente, o potreste scegliere un segno grafico (ad esempio una stella, un cerchio o magari la vostra firma) da tracciare sullo schermo con le vostre dita. Ma come può il computer sapere che siete il suo “padrone”? Se qualche estraneo avesse visto, o indovinasse, la figura che disegnate sullo schermo per accedere, e provasse a ripeterla, come potrebbe il computer sventare l’assalto ai vostri dati? Sfruttare caratteristiche fisiologiche ed usare la biometria, potrebbe essere una buona soluzione. Tracciare un disegno (che di fatto sarà la vostra firma) sullo schermo è come mandare un messaggio al computer. Piccole variazioni della firma provocano piccole variazioni nel messaggio, che quindi sarà simile al primo, ma non identico. Come fa il computer a capire che i due messaggi corrispondono alla stessa persona, ovvero al suo legittimo proprietario? È qui che entra in gioco la matematica, in particolare la teoria dei codici a correzione di errore.
La teoria dei codici è una branca della matematica che si occupa dello studio e della correzione di errori nella trasmissione di dati. Il primo ad occuparsi da un punto di vista matematico di trasmissione di dati e possibili interferenze fu Claude Elwood Shannon nel 1948, in un suo brillante articolo rimasto nella storia [1].
Vi sarà senz’altro capitato di parlare con un vostro amico che si trova piuttosto lontano da voi, mentre siete all’aperto (ad esempio durante una camminata in montagna). Vi sarete sicuramente accorti che non vi arrivava perfettamente quello che il vostro amico cercava di dirvi, magari vi arrivavano parti di frasi oppure, ancora peggio, parole troncate; in qualche modo, frasi e parole errate. Voi, per cercare di capire tutto il discorso, avrete tentato di interpretarlo; avrete dunque provato a modificare le frasi incomplete e le parole troncate per ottenere frasi e parole di senso compiuto. Se la vostra interpretazione è giusta, la modifica da voi fatta si chiama “correzione”. Senza saperlo, avete utilizzato la teoria dei codici.
In generale il processo di comunicazione dei dati si compone di tre oggetti: una sorgente (la persona o il dispositivo che invia i dati), un canale (il mezzo attraverso cui vengono trasmessi i dati) e un ricevitore (persona o dispositivo a cui i dati sono inviati). La trasmissione è soggetta a disturbi o interferenze presenti nel canale. Shannon mostrò come sia possibile trasformare l’informazione da inviare (codificare) in maniera tale che il ricevente possa ricostruirla esattamente (decodificare) nonostante i disturbi presenti nel canale (rumore).
Shannon infine dimostrò in modo rigoroso che la probabilità di decodifica sbagliata può essere resa arbitrariamente piccola.
Cerchiamo di fare degli esempi più tecnologici. Sotto i binari dei treni esistono dei dispositivi, detti balise, che regolano il buon andamento dei treni. Il balise trasmette ordini al treno (ad esempio “aumenta la velocità”, “fermati”) utilizzando messaggi codificati che il treno decodifica. In assenza di codifica, gli errori di comunicazione provocherebbero danni, deragliamenti compresi. Un altro esempio in cui viene utilizzata la teoria dei codici è nei compact disc. La musica è trascritta su un CD come una sequenza di “0” e “1” (ovvero una sequenza binaria). I dati vengono scritti sulla facciata inferiore del CD tramite una serie di microscopiche incisioni. Il laser del lettore CD, scorrendo lungo la superficie del CD, legge “1” tutte le volte che rileva una variazione di profondità e “0” altrimenti. La sequenza binaria riproduce la musica originale.
Che cosa succede se graffiate la parte inferiore del CD? Ogni graffio aggiunge un’incisione che prima non c’era, cambiando ad esempio alcuni “0” in “1”. Questo provoca un’alterazione della musica riprodotta dal CD, ovvero un “errore” di trasmissione.
Fortunatamente la codifica applicata protegge la musica: non ci si limita ad inviare il messaggio binario, ma anche alcune informazioni aggiuntive. Queste hanno la funzione di proteggere i dati, in modo che il messaggio possa essere ricostruito in maniera esatta dal ricevitore nonostante l’informazione sia parzialmente compromessa. Questo espediente ha dei costi: nel caso dei CD, addirittura due terzi dello spazio sono utilizzati per riportare queste informazioni aggiuntive! Senza dati di protezione potremmo scrivere il triplo della musica, ma non riusciremmo a riprodurla esattamente.
Torniamo alla biometria. Come potrebbe funzionare un sistema biometrico di autenticazione? Qui le cose si complicano. Vediamone una versione semplificata, dando un’idea di come la teoria dei codici viene utilizzata nei sistemi di autenticazione.
REGISTRAZIONE
Supponete di aver deciso il disegno che vi identifica. La prima cosa da fare è comunicarlo al computer. Questa fase è chiamata registrazione.
A differenza della password, un gesto non viene mai riprodotto due volte allo stesso modo e può subire delle variazioni che possono dipendere dallo stato emotivo dell’utente o semplicemente dalla posizione del braccio rispetto allo schermo. Questo è il motivo per cui il computer, in questa fase, vi chiederà di tracciare più volte (per esempio cinque volte) il disegno scelto.
A questo punto, il computer estrae da ogni ripetizione del gesto alcune caratteristiche elementari: le coordinate spaziali (x,y), la pressione, la dimensione dell’impronta e un numero che cambia ogni volta che staccate il dito dallo schermo. Da questi pochi dati si possono ricavare molte caratteristiche del gesto, come la velocità media e l’accelerazione. Queste informazioni vengono opportunamente trasformate in una sequenza binaria. Dunque ad ognuna delle cinque ripetizioni del gesto verrà associata una sola sequenza di bit.
In teoria basterebbe conservare un’unica sequenza, che rappresenti “al meglio” le cinque ottenute in precedenza. Ma se vogliamo essere sicuri che nessuno possa ricostruire tali informazioni, pur intercettando uno dei canali di trasmissione o la memoria (database) in cui conserviamo la sequenza, occorre adottare qualche cautela in più. Vediamo come. Ricaviamo ancora un’unica sequenza che rappresenti “al meglio” le cinque firme, ma anziché conservarla, la combiniamo con una sequenza random di bit, che è stata precedentemente codificata, ottenendo una sequenza cifrata. Dalle cinque firme ricaviamo inoltre un numero, che chiamiamo il peso dell’errore, che indica quanto le cinque firme sono diverse l’una dall’altra. Conserviamo infine in un database: il peso dell’errore, la sequenza cifrata e un hash della sequenza random. Una funzione hash ha la proprietà che se cambia leggermente l’input allora cambia drasticamente l’output.
AUTENTICAZIONE
Ogni volta che proverete ad autenticarvi il vostro gesto verrà trasformato in una sequenza binaria. Essa verrà combinata alla sequenza cifrata, in modo “inverso” a come veniva fatto in fase di registrazione, e la sequenza così ottenuta viene decodificata usando il peso dell’errore. Si applica quindi alla sequenza binaria così ottenuta la funzione hash e il sistema confronta il risultato con il terzo dato conservato, cioè la versione hash della sequenza random. Solo se le due sequenze sono uguali, potrete accedere al computer.
di Riccardo Aragona, Massimiliano Sala e Claudia Tinnirello
[1] C. E. Shannon, “A Mathematical Theory of Communication”, Bell System Technical Journal, vol. 27, pp. 379-423, 623-656, July, October, 1948. http://cm.bell-labs.com/cm/ms/what/shannonday/shannon1948.pdf