Universit` a degli Studi di Siena Facolt` a di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica Progettazione e sperimentazione di un nuovo sistema biometrico per il riconoscimento delle password Relatore Prof. Marco Gori Correlatore Prof. Marco Maggini Tesi di Laurea di Tiziano Papini Anno Accademico 2005/2006 Indice Introduzione 1 1 Biometria 3 1.1 Storia della Biometria . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.1 Sistema di Bertillon . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.2 Impronte digitali . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2 Perch`e i sistemi Biometrici . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3 Concetto di sistema Biometrico . . . . . . . . . . . . . . . . . . . . . 11 1.4 Sistemi Biometrici a confronto . . . . . . . . . . . . . . . . . . . . . . 13 1.4.1 Caratteristiche di un sistema Biometrico . . . . . . . . . . . . 13 1.4.2 Affidabilit`a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.4.3 Valutazione grandezza biometriche . . . . . . . . . . . . . . . 15 2 Panoramica sui Sistemi Biometrici 2.1 2.2 2.3 18 Geometria della Mano . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.1.1 Scansione Ortografica . . . . . . . . . . . . . . . . . . . . . . . 19 2.1.2 Fasi di funzionamento . . . . . . . . . . . . . . . . . . . . . . 20 2.1.3 Considerazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Biometria dell’occhio . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2.1 Identificazione della retina . . . . . . . . . . . . . . . . . . . . 22 2.2.2 Identificazione dell’iride . . . . . . . . . . . . . . . . . . . . . 23 2.2.3 Considerazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Geometria del volto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3.1 Descrizione del sistema . . . . . . . . . . . . . . . . . . . . . . 25 i INDICE 2.3.2 2.4 2.5 2.6 Considerazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Identificazione della voce . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.4.1 Descrizione del sistema . . . . . . . . . . . . . . . . . . . . . . 29 2.4.2 Considerazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Impronte digitali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.5.1 Anatomia di una impronta digitale . . . . . . . . . . . . . . . 30 2.5.2 Descrizione del sistema . . . . . . . . . . . . . . . . . . . . . . 33 2.5.3 Considerazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Identificazione della firma . . . . . . . . . . . . . . . . . . . . . . . . 36 2.6.1 Descrizione del sistema . . . . . . . . . . . . . . . . . . . . . . 36 2.6.2 Considerazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3 Stile di Battitura 38 3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.2 Storia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.3 Caratteristiche tecniche . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.4 Tempi di battitura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.5 Corretta postura per l’uso della tastiera . . . . . . . . . . . . . . . . . 46 3.6 Differenza di stili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.7 Uso di tastiere diverse . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4 Reti Neurali 53 4.1 Storia delle Reti Neurali . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.2 La metafora biologica . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.3 Grafi e loro propiet`a . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.4 Struttura del neurone . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.5 Architettura di una rete neurale . . . . . . . . . . . . . . . . . . . . . 58 4.6 Dinamica di una rete neurale 4.7 Apprendimento di una rete neurale . . . . . . . . . . . . . . . . . . . 61 4.8 BackPropagation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.8.1 4.9 . . . . . . . . . . . . . . . . . . . . . . 60 Dimostrazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Criteri di arresto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 ii INDICE 4.10 Ruoli ricoperti dalle ANN . . . . . . . . . . . . . . . . . . . . . . . . 67 4.11 Autoassociatore Neurale . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.11.1 Funzionamento di un’autoassociatore . . . . . . . . . . . . . . 69 4.11.2 Superfici di decisione . . . . . . . . . . . . . . . . . . . . . . . 70 4.12 Radial Basis Function . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.12.1 Struttura dell’RBF . . . . . . . . . . . . . . . . . . . . . . . . 72 4.12.2 Superfici di decisione . . . . . . . . . . . . . . . . . . . . . . . 73 R 5 Prodotto commerciale: Biopassword° 75 5.1 Keystroke dynamics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 5.2 Biometric Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.3 Funzionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 5.4 Versioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 5.4.1 Enterprise Edition . . . . . . . . . . . . . . . . . . . . . . . . 79 5.4.2 Internet Edition . . . . . . . . . . . . . . . . . . . . . . . . . . 79 6 Creazione di un nuovo software: Neural Password Control 82 6.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 6.2 Descrizione del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . 83 6.3 6.2.1 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 6.2.2 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Parametri autoassociatore . . . . . . . . . . . . . . . . . . . . . . . . 89 6.3.1 Topologia autoassociatore . . . . . . . . . . . . . . . . . . . . 93 6.4 Normalizzazione dei dati . . . . . . . . . . . . . . . . . . . . . . . . . 94 6.5 Modifica prestazioni autoassociatore . . . . . . . . . . . . . . . . . . . 95 6.6 Esportazione degli esempi . . . . . . . . . . . . . . . . . . . . . . . . 96 6.7 Funzionamento del sistema . . . . . . . . . . . . . . . . . . . . . . . . 98 6.7.1 Gestione utenti . . . . . . . . . . . . . . . . . . . . . . . . . . 99 6.7.2 Verifica e addestra password . . . . . . . . . . . . . . . . . . . 102 6.7.3 Visualizza stile di battitura . . . . . . . . . . . . . . . . . . . 102 6.8 Requisiti del Neural Password Control . . . . . . . . . . . . . . . . . 103 6.9 Considerazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 iii INDICE 7 Esperimenti 105 7.1 Raccolta dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 7.2 Prestazioni del Neural Network Control . . . . . . . . . . . . . . . . . 107 7.3 Prestazioni con le RBF . . . . . . . . . . . . . . . . . . . . . . . . . . 108 7.3.1 Considerazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Conclusioni 114 A Struttura codice Neural Password Control 115 A.1 Modifica dei parametri principali . . . . . . . . . . . . . . . . . . . . 117 A.2 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 A.3 Server: file funzioni.php . . . . . . . . . . . . . . . . . . . . . . . . . 119 A.4 Libreria Autoasociatore . . . . . . . . . . . . . . . . . . . . . . . . . . 123 A.5 Sperimentazione in Matlab . . . . . . . . . . . . . . . . . . . . . . . . 126 Bibliografia 131 iv Elenco delle figure 1.1 Misurazione di Bertillon . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Misure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3 Forma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 Dettagli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5 Strumenti di misura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.6 Scheda di identificazione . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.7 Impronte digitali su cera . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.8 Albero delle caratteristiche biometriche . . . . . . . . . . . . . . . . . 12 1.9 Sistemi Biometrici . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.10 Grafici sull’andamento della curva di errore . . . . . . . . . . . . . . . 15 2.1 Suddivisione del mercato biometrico ([3]) . . . . . . . . . . . . . . . . 18 2.2 Dispositivo biometrico a geometria della mano . . . . . . . . . . . . . 19 2.3 Misurazione della geometria della mano . . . . . . . . . . . . . . . . . 20 2.4 Anatomia dell’occhio . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.5 Retina dell’occhio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.6 Iride dell’occhio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.7 Programma per l’acquisizione dei volti . . . . . . . . . . . . . . . . . 25 2.8 Apparato vocale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.9 Sistemi di riconoscimento della voce . . . . . . . . . . . . . . . . . . . 28 2.10 Minuzie dell’impronta digitale . . . . . . . . . . . . . . . . . . . . . . 30 2.11 Classificazione minuzie . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.12 Singolarit`a delle impronte digitali . . . . . . . . . . . . . . . . . . . . 32 2.13 Flow line e ridge line . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 v ELENCO DELLE FIGURE 2.14 Immagine direzionale . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.15 Schema funzionamento scanner ottico . . . . . . . . . . . . . . . . . . 34 2.16 Tavoletta elletronica . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.1 Telegrafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.2 Insieme di operazioni fisico-motori e mentali . . . . . . . . . . . . . . 41 3.3 Tempi di digitazione della parola “SA” . . . . . . . . . . . . . . . . . 45 3.4 Distribuzione del peso sulla sedia . . . . . . . . . . . . . . . . . . . . 47 3.5 Mani sulla tastiera . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.6 Grafici dei tempi di battitura di due persone per la frase “neural password control” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.7 Caso particolare flight time negativo . . . . . . . . . . . . . . . . . . 50 3.8 Grafici dei tempi di battitura per la parola ”tastiera” digitata da una normale tastiera da computer (colonne azzurre) e da un computer portatile (colonne magenta) . . . . . . . . . . . . . . . . . . . . . . . 52 4.1 Neurone e la sua struttura con soma, dendriti e connessioni sinaptiche 55 4.2 Differenza tra i neuroni umani e nelle ANN . . . . . . . . . . . . . . . 56 4.3 Struttura del neurone . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.4 Comuni funzioni di attivazione . . . . . . . . . . . . . . . . . . . . . . 58 4.5 Caratteristica della rete neurale . . . . . . . . . . . . . . . . . . . . . 59 4.6 Dinamica di una ANN . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.7 Algoritmo BackPropagation . . . . . . . . . . . . . . . . . . . . . . . 62 4.8 Grafico di confronto fra la curva di apprendimento del training-set e quella di validazione del validation-set, il punto in cui le due curve divergono caratterizza il momento in cui la rete se ulteriormente addestrata si caratterizza solo sugli esempi di training perdendo in generalizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.9 Esempio di autoassociatore con tre neuroni in ingresso e uscita e due neuroni nello strato nascosto . . . . . . . . . . . . . . . . . . . . . . . 69 4.10 Classificazione con un autoassociatore . . . . . . . . . . . . . . . . . . 70 vi ELENCO DELLE FIGURE 4.11 Apprendimento e superfici di decisione per un autoassociatore addestrato con e senza esempi negativi . . . . . . . . . . . . . . . . . . . . 72 4.12 Esempio di una Radial Basis Function . . . . . . . . . . . . . . . . . 73 4.13 Superfici di separazione di una Radial Basis Function . . . . . . . . . 74 5.1 R Parametri utilizzati dal sistema Biopassword° . . . . . . . . . . . . . 76 5.2 Esempio di template per la parola ”biopassword“ . . . . . . . . . . . 77 5.3 Esempi di comparazione del template . . . . . . . . . . . . . . . . . . 77 5.4 Biopassword Enterprise e Internet Edition . . . . . . . . . . . . . . . 79 5.5 Enterprise Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.6 Schema funzionamento autenticazione . . . . . . . . . . . . . . . . . . 80 6.1 Login di Neural Password Control . . . . . . . . . . . . . . . . . . . . 85 6.2 Esempio risposta server Neural Password Control . . . . . . . . . . . 86 6.3 Informazioni visualizzate durante l’apprendimento dell’autoassociatore 88 6.4 Schema Neural Password Control . . . . . . . . . . . . . . . . . . . . 90 6.5 Diagramma di flusso del Neural Password Control . . . . . . . . . . . 92 6.6 Cartella utente nel server . . . . . . . . . . . . . . . . . . . . . . . . . 93 6.7 Normalizzazione dei parametri . . . . . . . . . . . . . . . . . . . . . . 95 6.8 Home page del Neural Password Control . . . . . . . . . . . . . . . . 98 6.9 Gestione utenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 6.10 Modifica Utente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.11 Risultati addestramento autoassociatore . . . . . . . . . . . . . . . . 101 6.12 Risultati accesso al sistema . . . . . . . . . . . . . . . . . . . . . . . . 102 6.13 Stile di battitura per la frase “neural password controll” . . . . . . . 103 7.1 Raccolta dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 7.2 Risultati dei test per User2, con 10 e 16 neuroni nello strato di hidden 111 7.3 Risultati dei test per User3, con 10 e 16 neuroni nello strato di hidden 112 vii Elenco delle tabelle 1.1 Tabella di comparazione dei sistemi biometrici ([7]) . . . . . . . . . . 17 3.1 Costruzione dei tempi di battitura per la parola “neural” . . . . . . . 46 6.1 Tabella riassuntiva funzione dei file . . . . . . . . . . . . . . . . . . . 97 6.2 Tabella riassuntiva file esportabili . . . . . . . . . . . . . . . . . . . . 98 7.1 Tabella riassuntiva esperimento 1 . . . . . . . . . . . . . . . . . . . . 107 7.2 Tabella riassuntiva esperimento 2 . . . . . . . . . . . . . . . . . . . . 108 A.1 Struttura file Neural Password Control . . . . . . . . . . . . . . . . . 116 viii Introduzione L’interesse sempre pi` u crescente in questi ultimi anni per la rete Internet ha stimolato numerosi settori mondiali a proporre nuovi tipi di servizi. L’enorme crescita per`o ha attirato anche l’attenzione sulla sicurezza informatica incentivata dal continuo aumento di frodi in quei servizi considerati a alto rischio spesso provenienti dalla clonazione di password. Un esempio di attivit`a illecita molto diffusa `e il cos`ı detto “Phishing”. Questa attivit`a consiste nel raccogliere dati personali, quali password e codici di accesso a conti bancari o postali on line (home banking), attraverso l’invio di e-mail fasulle agli utenti ignari della truffa. Il mittente si spaccia, ad esempio, da rappresentate dell’istituto finanziario chiedendo al cliente, con un motivo credibile, di attualizzare via e-mail i suoi dati personali quali login e password. Dopodich`e, come richiesto dalla e-mail, cliccando sul link dato si accede automaticamente ad un pagina web che presenta lo stesso layout dell’istituto finanziario e pu`o inevitabilmente essere facilmente scambiata per quella vera. Ad un primo sguardo tutto sembra normale, addirittura i formulari da compilare non sono quasi distinguibili dall’originale. Inoltre, i truffatori riprogrammano in maniera astuta anche l’URL che appare in alto alla pagina cos`ı che anche, ad un secondo sguardo, l’utente ha l’impressione di essere sulla pagina giusta. Chi immette le proprie password ed altri dati personali nel form si trover`a difronte una brutta sorpresa. Con i dati d’accesso “pescati”, i truffatori hanno accesso alla zona protetta permettendoli di effettuare trasferimenti non autorizzati o abusare dei dati delle carte di credito per acquisti sfrenati a spese altrui. 1 Come possiamo risolvere questi tipi di problemi? La Biometria pu`o diventare un ottimo strumento per realizzare sistemi capici di rendere sicuro un accesso costituito dalle scambio di credenziali: username e password. Attualmente, la maggior parte degli sforzi della comunit`a scientifica e della ricerca `e orientata allo studio di quelle variabili che permettono l’identificazione affidabile degli individui. Le tecniche biometriche di identificazione sono infatti finalizzate a identificare un individuo sulla base delle sue caratteristiche fisiologiche o comportamentali che risultano difficili da alterare o simulare. In questa tesi tratteremo un sistema biometrico capace di riconoscere una persona per mezzo del proprio stile di battitura, in altre parole cercheremo di verificare una password dal modo in cui viene digitata. Le azioni umane ripetute nel tempo consentono l’individuazione del soggetto che le compie, dato che quest’ultimo riesce a lasciare la sua “firma digitale” grazie alla sua particolare latenza nel battere i tasti; intendiamo quindi il tempo che intercorre tra la pressione di un tasto e del successivo Per analizzare il comportamento di questo particolare sistema biometrico `e stato costruito un apposito programma in grado di catturare, durante la digitazione della password, la pressione e il rilascio dei tasti necessari per generare parametri necessari in fase di addestramento. Con questo programma saremo in grado di capire se l’utente che cerca di accedere al programma `e realmente quello che ha effettuato l’addestramento oppure no, rifiutando tutti i truffatori che si sono inpropiamente impossessati della password. Per analizzare il comportamento del programma sono stati effettuati degli esperimenti implementando il sistema su scenari diversi. Tutte queste prove si sono incentrate in modo tale da valutare le prestazioni in situazioni reali del programma. Per la raccolta dei dati gli esperimenti sono stati condotti integrando il programma all’interno della Web Mail del Dipartimento di Ingegneria dell’Informazione dell’Universit`a di Siena e all’interno del Laboratorio di Computer Science al Consorzio Operativo Gruppo M.P.S.. 2 Capitolo 1 Biometria La biometria deriva dalle parole greche bios (vita) e metros (conteggio); viene definita come scienza per lo studio delle misurazioni di variabili fisiologiche o comportamentali tipiche degli organismi umani, attraverso metodi matematici e statistici. La biometria dunque `e il settore della biologia che cerca di misurare e studiare statisticamente i dati rilevati dagli esseri viventi, per estrapolarne comparativamente classificazioni e leggi. L’identificazione biometrica permette il calcolo dei parametri fisici o comportamentali propri di un individuo ed `e basata sulla scansione di varie parti del corpo. Oramai `e quotidianamente utilizzata soprattutto nell’ambito della sicurezza informatica in quanto considerata un buon strumento capace di verificare l’identit`a di un individuo. 1.1 Storia della Biometria Per migliaia di anni gli uomini hanno utilizzato come risorsa primaria per riconoscersi gli uni dagli altri alcune caratteristiche fisiche (per esempio il volto, la voce, il portamento, ecc.). L’uso di questo metodo risale ai tempi degli egiziani dove l’altezza di una persona era usata per identificarlo durante il pagamento del salario. 3 1.1. Storia della Biometria Figura 1.1: Misurazione di Bertillon 1.1.1 Sistema di Bertillon Verso la met`a dell’800, A. Bertillon, figlio del vice presidente di una societ`a d’antropologia dell’epoca, trascorse la sua infanzia a manipolare e studiare crani umani. A 26 anni divent`o impiegato della prefettura di Parigi e incominci`o ad annotare su fogli tutte le caratteristiche fisiche dei detenuti, finch`e non cre`o un nuovo sistema per il riconoscimento dei criminali che lo rese famoso. Per far questo part`ı dall’idea di usare determinate misure del corpo umano (altezza, lunghezza delle braccia, piedi, dita, ecc.) per identificare e quindi classificare i responsabili dei crimini. Questo sistema di identificazione chiamato il Bertillonage `e fondato principalmente su combinazioni di misure fisiche basate su due importanti principi: • l’ossatura non cambia mai dopo il ventesimo anno di et`a; • ogni scheletro `e diverso da un individuo all’altro. La misurazione ideata da Bertillon era composta da due fasi; una descrittiva e l’altra di misurazione vera e propia di precise parti del corpo umano. 4 1.1. Storia della Biometria (a) Avambraccio, dito medio e piede sinistro (b) Arti, altezza e orecchie Figura 1.2: Misure (a) Testa (b) Mano Figura 1.3: Forma (a) Corpo (b) Testa Figura 1.4: Dettagli (a) Vertical and orizon- (b) tal measure compass Caliper (c) Sliding (d) Small compass Sliding Compass Figura 1.5: Strumenti di misura 5 1.1. Storia della Biometria Nella prima fase della scheda di identificazione vengono annotate le misure fisiche della persona: • altezza: il detenuto si dispone diritto contro un asse graduato (figura 1.2(b)) e successivamente dalla testa si lascia scendere un asse piatto, il quale andr`a a indicare l’altezza del detenuto. Lo strumento utilizzato viene chiamato vertical measure (figura 1.5(a)); • ampiezza delle braccia: il detenuto stende le braccia formando un angolo retto con l’asse del corpo (figura 1.2(b)). Tale misura viene presa dalla punta del dito medio della mano destra alla punta del dito medio della mano sinistra. Lo strumento utilizzato viene chiamato horizontal measure (figura 1.5(a)); • misura del tronco: il detenuto si siede su uno sgabello con la schiena diritta contro un asse graduato e sulla testa gli viene posto un asse piatto il quale indica la misura del tronco; • misura dell’orecchio destro: l’operatore utilizzando lo small sliding compass (figura 1.5(c)) tocca lievemente il lembo superiore dell’orecchio del detenuto con lo stazionary branch e mantiene la testa ferma con il suo pollice (figura 1.2(b)). La seconda fase `e quella in cui si sistema la gamba del compass bring in posizione parallela rispetto all’asse dell’orecchio del detenuto e si spinge in avanti lo sliding branch fino a toccare l’estremo punto del lobo dell’orecchio. L’operatore controlla che quest’ultimo non sia compresso e dopo analizza la sua lunghezza. La seconda fase `e dedicata alla misurazione della testa (figura 1.3(a)), parte molto importante perch´e non modificabile da parte della persona in questione, al contrario del busto e l’altezza che pu`o essere contratta. Le misure sono rilevate da: • ampiezza della testa: l’operatore si pone alle spalle del detenuto seduto e con l’occhio controlla la graduazione della probabile ampiezza della testa. Viene utilizza il caliper compass (figura 1.5(b)) con il quale si calcola l’ampiezza attraverso i due bracci che costituiscono lo strumento che intercorre tra le due estremit`a delle tempie della testa del detenuto; 6 1.1. Storia della Biometria • lunghezza della testa: l’operatore si pone sul lato sinistro del detenuto seduto e controlla un braccio del caliper compass alla radice del naso e l’altro braccio indietro nel punto pi` u estremo della testa del detenuto. Successivamente vengono prese le misure degli arti: • dito medio sinistro: l’operatore pone il dito medio sinistro del detenuto sul dorso dello sliding compass. Viene girato di un quarto la posizione di quest’ultimo (figura 1.2(a)), alzando il gomito allo stesso tempo e spostando il dito del detenuto cos`ı da poter misurare da una posizione che forma un angolo retto con il lato posteriore della mano del detenuto; • piede sinistro: l’operatore spinge lo stazionary branch dello sliding compass fermamente contro il tallone del detenuto, sorvegliando allo stesso tempo che lo shank tocchi il lato interno del tallone in congiunzione con la punta dell’alluce (figura 1.2(a)). Successivamente, l’operatore spinge in avanti lo slide e chiede al detenuto di curvare leggermente il ginocchio sinistro mentre con la mano destra opera una leggera pressione sul primo e sul secondo punto dell’alluce. Infine, l’operatore modifica la posizione dello strumento se le altre dita del piede sono inclinate; • avambraccio sinistro: l’operatore spinge lo stationary branch dietro il gomito del detenuto, tenendo lo shank parallelo all’asse del braccio. Viene poi spinto in avanti lo sliding branch e compresso leggermente il dorso della mano e il polso (figura 1.2(a)). L’operatore controlla che il punto del gomito del detenuto sia in linea con la giuntura del dito medio e infine legge le misure indicate sullo strumento. Dopo aver determinato queste misure fisiche, l’operatore effettua le descrizioni del volto (figura 1.4(b)), della mano (figura 1.3(b)) e del corpo (figura 1.4(a)): • orecchio: l’operatore controlla se l’orecchio del detenuto `e forato o ha segni particolari, poi lo classifica come piccolo, medio o grande. Inoltre controlla ogni parte anatomica ovvero se il contorno esterno `e aperto, medio o aderente, 7 1.1. Storia della Biometria se il contorno esterno del lobo `e quadrato, medio o gulf-like; se il profilo dell’antiragus `e rettilineo, medio o frastagliato e se il grado di aderenza del lobo alla guancia `e completo, medio o separato; • fronte: l’operatore controlla la fronte del detenuto secondo la sua inclinazione, altezza e larghezza. La fronte pu`o essere ritratta o media ed avere un inclinazione verticale bassa, media o grande e un’ampiezza stretta, media o larga; • naso: l’operatore controlla la dimensione e la forma del naso del detenuto. Per quanto riguarda la dimensione si considera la lunghezza (il naso pu`o essere lungo, medio o corto) e l’ampiezza (il naso pu`o essere ampio, medio, stretto, pronunciato, moderato o piccolo). La forma del naso viene divisa in concavo rettilineo, convesso, concavo sinuoso, elevato orizzontale o orizzontale ascendente; • occhio: l’operatore effettua l’analisi dell’iride del detenuto il quale pu`o essere luminoso, medio o scuro. L’occhio in base alla luce viene diviso in sei classi distinte: senza pigmento, aureola gialla, aureola arancione, aureola castano, aureola marrone che copre irregolarmente l’iride ed infine aureola marrone che copre interamente l’iride. Successivamente viene controllata se vi sono malformazioni delle dita, se ci sono tatuaggi o cicatrici, lo spazio che intercorre fra le varia dita e come sono congiunti le dita della mano. Tutte le informazioni raccolte vengono poi meticolosamente scritte in una scheda di identificazione (figura 1.6). Questo sistema, anche se nell’entusiasmo iniziale era considerato sicuro e funzionante, era in realt`a piena di inconvenienti. Uno di questi era la troppa precisione che si doveva ottenere durante le misurazioni, le procedure erano infatti lunghe e complicate, inoltre le schede dei detenuti crescevano a vista d’occhio. La svolta si ebbe per`o quando si scopr`ı che le misure fisiche del Bertillonage non erano uniche. La conferma venne infatti nel 1903 quando nel penitenziario federale a Leavenworth nello stato di Washington, mentre si stava schedando un prigioniero chiamato Will 8 1.1. Storia della Biometria Figura 1.6: Scheda di identificazione West gli addetti riconobbero il nome e le misure fisiche, inoltre le foto erano uguali a quelle di un altro detenuto con il nome di William West schedato mesi prima. Solo quando le loro impronte digitali furono prese e confrontate si accertarono che i due soggetti erano diversi. Per cui il caso West scredit`o simultaneamente tre metodi molto usati quali l’identificazione del nome personale, la foto segnaletica e le misure fisiche di Bertillon. 1.1.2 Impronte digitali I primi ritrovamenti di impronte digitali scolpite nella creta sono state scoperte in Nuova Scozia. Nell’antica Babilonia le impronte digitale venivano impresse nell’argilla per le transizioni commerciali. In Cina, gi`a nel II secolo veniva utilizzata l’impronta digitale impressa su sigilli di cera per i documenti importanti (figura 1.7). Nel XVII secolo si incominci`o poi ad analizzare a fondo la struttura geometrica delle impronte digitali con Marcello Malpighi che scopr`ı che ogni impronta era formata da creste, spirali e curve. 9 1.2. Perch`e i sistemi Biometrici Figura 1.7: Impronte digitali su cera Solo verso la fine del XIX secolo, grazie agli studi di F. Galton e E. Henry, si scoprirono il carattere distintivo delle impronte digitali che permettono biunivocamente di riconoscere una persona. Grazie a questa scoperta la polizia di tutto il mondo incominci`o a prelevare e catalogare in appositi archivi le impronte di tutti i criminali, detenuti e sospettati. Tutti i dati acquisiti erano “registarti“ su supporto cartaceo macchiando di inchiostro i polpastrelli del soggetto in questione e prelevando quindi la sua “firma” biometrica. Da questa scoperta in poi le strutture di intelligence e di pubblica sicurezza incominciarono sempre pi` u a perfezionare le loro tecniche per il rilievo delle impronte soprattutto sulle scene dei crimini. La polizia infatti affianch`o questo tipo di tecniche scientifiche a quelle classiche (logiche induttive). Segno evidente di un nuovo “approccio scientifico“ nella conduzione delle indagini sono riscontrati anche in alcuni dei pi` u famosi personaggi della letteratura poliziesca (per tutti Sherlock Holmes). La scienza biometrica incomincia quindi a prendere sempre pi` u campo sia in attivit`a giudiziarie e anticrimine, sia in applicazioni in cui sia necessaria la sicurezza con un numero sempre pi` u elevato di persone. 1.2 Perch` e i sistemi Biometrici Pensiamo a quante nuove parole sono entrate a far parte del nostro vocabolario: smart card, user name e password, tessere magnetiche, carte di credito. Sono tutti strumenti che ci permettono ad esempio di riscuotere del contante o di acquistare oggetti su internet. Infatti basta possedere una tessera Bancomat, ricordarsi a memoria un codice numerico, recarsi in un’apposito sportello e possiamo facilmente 10 1.3. Concetto di sistema Biometrico prelevare del contante. Nelle aste on-line possedendo un numero di carta di credito possiamo comprare qualsiasi oggetto in qualsiasi parte del mondo. Queste metodologie se usate correttamente sono degli strumenti potentissimi ma cosa succede se una terza persona si impadronisce della tessera Bancomat e del corrispondente codice? Sicuramente qualcosa contro il nostro volere. Tutti i sistemi bancari che esistono attualmente hanno una caratteristica in comune, quello di identificare l’utente che deve effettuare l’accesso. I sistemi biologici servono proprio a questo, cio`e a identificare un utente senza aver bisogno di nessun altro oggetto solamente usufruendo di una caratterista del proprio corpo irriproducibile da parte di una persona estranea. Possiamo anche in alternativa combinare il riconoscimento biometrico con quello classico come una user e password per avere un livello di sicurezza pi` u alto in caso di malintenzionati che vogliono accedere ad un servizio personale. 1.3 Concetto di sistema Biometrico Un sistema Biometrico `e un dispositivo che si preoccupa di identificare una certa persona e per far questo usa le caratteristiche biologiche dell’individuo in questione. Queste caratteristiche si possono raggruppare in due classi principali: 1. fisiologiche: indicano tutti i dati statici di una persona cio`e impronte digitali, disegno dell’iride, la sagoma della mano o l’immagine del volto; 2. comportamentali: si riferiscono a azioni svolte dalla persona in questione, parliamo quindi della sua scrittura, la traccia vocale, il metodo di battere la tastiera. In generale le caratteristiche fisiologiche non variano nel tempo o al massimo sono soggette a piccole variazioni mentre le caratteristiche comportamentali sono influenzate dalla situazione psicologica dell’individuo. Per questo motivo i sistemi biometrici basati sulle caratteristiche comportamentale hanno bisogno di continui aggiornamenti. Il compito principale di un sistema biologico `e quello di identificare un individuo. 11 1.3. Concetto di sistema Biometrico Caratteristiche Biometriche Fisiologiche Impronte Digitali Mano Volto Comportamentali Occhio DNA Voce Calligrafia Stile di Battitura Figura 1.8: Albero delle caratteristiche biometriche Questo tipo di sistema pu`o assumere due significati differenti: 1. verifica di identit` a: consiste nel dichiarare se una persona `e veramente colui che dichiara di essere (figura 1.9(a)); 2. riconoscimento di identit` a: consiste nel determinare se una persona pu`o essere associata ad una istanza esistente nell’archivio. Non `e necessario che si dichiari la propria identit`a (figura 1.9(b)). Un sistema di riconoscimento biometrico si suddivide in tre passi fondamentali: • fase 1: come prima cosa fornire meccanismi per acquisizione dei dati (suono, immagini, ecc.); • fase 2: `e la fase responsabile sia per l’elaborazione, eventuale ripulitura e normalizzazione dei dati, sia di confrontare e classificare i dati con quelli salvati in archivio; • fase 3: `e la fase di costruzione delle apparecchiature responsabili all’iterazione tra sistema e utente. Un tipico problema che abbiamo quando si usano questo tipo di sistemi `e quello di scegliere in modo opportuno la struttura dati per salvare le informazioni, in quanto dovremmo sempre confrontare i dati prelevati al momento con quelli memorizzati nel sistema. 12 1.4. Sistemi Biometrici a confronto (a) Verifica Identit`a (b) Riconoscimento Identit`a Figura 1.9: Sistemi Biometrici 1.4 Sistemi Biometrici a confronto In Biometria esistono tipologie diverse per estrapolare informazioni da un corpo umano ma `e importante anche capire quanto affidandosi a una certa caratteristica saremmo sicuri di costruire un buon sistema. 1.4.1 Caratteristiche di un sistema Biometrico Iniziamo a individuare delle caratteristiche fondamentali che una grandezza biologica deve sempre rispettare. Le caratteristiche fondamentali per una grandezza biometrica sono: • universalit` a: tutti gli individui devono possederla; • unicit` a: non ci possono essere due individui con la stessa caratteristica; • permanenza: deve essere una caratteristica invariata nel tempo; • collezionabilit` a: indica che quella caratteristica deve essere misurabile quantitativamente. 13 1.4. Sistemi Biometrici a confronto Oltre all’aspetto che riguarda la grandezza collegata alla parte del corpo umano che vogliamo associare come generazione di misura biometrica, esistono anche altri parametri che possono influire sulla scelta definitiva: • performance: le modalit`a, le risorse richieste e l’ambiente che determina una pi` u accurata identificazione; • grado di gradimento: il grado con il quale ogni individuo accetta la metodologia biometrica impiegata. 1.4.2 Affidabilit` a Oltre alle caratteristiche che un sistema biometrico deve possedere `e molto importante anche capire la sua affidabilit`a. Questo parametro si calcola partendo da due considerazioni che si hanno durante l’identificazione di una caratteristica biometrica: • se si identifica una persona come riconosciuta si hanno due casi: la persona `e riconosciuta correttamente oppure no; • se si identifica una persona come non riconosciuta si hanno nuovamente due casi: il sistema ha sbagliato generando un falso allarme oppure la persona non riconosciuta `e effettivamente un impostore. Date queste considerazioni sorgono due tipi di errori: • FRR (False Rejection Rate): percentuale di falsi rifiuti, cio`e quelli fatti su una persona che realmente era autorizzata ad entrare nel sistema. Corrisponde alla probabilit`a di respingere chi `e autorizzato; • FAR (False Acceptance Rate): percentuale di false accettazioni, ossia di utenti che non erano autorizzati ad entrare nel sistema ma erroneamente accettati. Corrisponde alla probabilit`a di accettare chi non `e autorizzato. FRR e FAR sono due quantit`a strettamente correlate perch´e se ne diminuisce ` molto importante che ogni sistema biometrico possa regouna aumenta l’altra. E lare il rapporto F RR F AR facendo cos`ı aumentare o diminuire la sensibilit`a del sistema. 14 1.4. Sistemi Biometrici a confronto (a) FAR (b) FRR (c) ERR Figura 1.10: Grafici sull’andamento della curva di errore Definiamo un parametro t, con valore compreso tra 0 e 1, come grado di tolleranza che ci permetta di avere pi` u o meno sicurezza. Infatti con t che avvicina lo 0 non viene rigettato nulla riconoscendo sempre tutto, con t che assume valori vicino a 1 invece con pi` u facilit`a genereremo molti falsi rigetti. Costruiamo le due funzioni FAR(t) (figura 1.10(a)) e FRR(t) (figura 1.10(b)) che risulteranno rispettivamente monotona decrescente e monotona crescente. Una volta definiti questi due grafici possiamo calcolare l’ERR (Equal Error Rate); infatti come si vede in figura 1.10(c) si ottiene in corrispondenza al punto di incontro dell’andamento dei due grafi di FRR e FAR. Quindi il valore trovato ERR `e quello che ci garantisce l’affidabilt`a del sistema che vogliamo costruire. 1.4.3 Valutazione grandezza biometriche Avendo ben chiaro i concetti base grazie ai quali valutiamo le caratteristiche di una misurazione, cerchiamo di riassumere in tabella 1.1 ([7]) tutte le comparazioni tra le varie tecniche biometriche. Come notiamo tutte le tecniche citate nella tabella rispettano i principi di universalit`a, unicit`a, permanenza e collezionabilit`a ma nessuna di queste pu`o essere valutata come elemento di assoluta certezza. Per questo 15 1.4. Sistemi Biometrici a confronto se vogliamo costruire un software commerciale che rispetti tutti i requisiti giusti per essere funzionante e soprattutto sicuro, bisogna analizzare a fondo le caratteristiche dell’applicazione da creare e della tecnologia biometrica usata. Per questo motivo un sistema di identificazione biometrico pu`o essere esposto da una serie di altri fattori da tenere in stretta considerazione: • verificare se l’applicazione necessita di un certo percorso di identificazione o di uno di autentificazione; • verificare se il processo deve essere semiautomatico o completamente automatico. L’applicazione pu`o richiedere l’intervento umano di un operatore. Quest’ultima potrebbe essere necessario almeno per alcune applicazioni l’intervento umano solo nella fase di acquisizione delle caratteristiche biometriche; • verificare se l’applicazione deve essere legalmente riconosciuta. Ad esempio non tutte le caratteristiche biometriche possono essere acquisite senza che il soggetto sia stato messo a conoscienza della legislazione del paese o dello Stato di appartenenza; • verificare se l’applicazione richiede una identificazione di un soggetto all’interno di un grosso numero di soggetti memorizzati. • verificare se gli utenti finali che usano il sistema possono accettare di buon grado la particolare tecnologia scelta. Si pensi infatti alle ovvie difficolt`a di uso della tecnologia per il riconoscimento della retina (molto intrusiva) rispetto a quella dell’impronta digitale; • controllare se i soggetti possono essere favorevoli a un comportamento di tipo collaborativo oppure no. L’esempio lampante `e quello della tecnologia per il riconoscimento vocale facilmente alterabile in confronto alla impossibilit`a di variare della tecnica a retina. In ultima analisi si pu`o concludere che per costruire un sistema basato sul riconoscimento biometrico deve essere trovato un valido compromesso fra tutte le variabili in gioco. 16 17 Alto Medio Medio DNA Andatura Orecchio Medio Basso Alto Alto Alto Basso Basso Alto Alto Medio Basso Medio Alto Basso Unicit` a Alto Basso Alto Alto Basso Basso Basso Medio Alto Medio Basso Medio Alto Medio Permanenza Medio Alto Basso Basso Alto Medio Medio Basso Medio Medio Medio Alto Medio Alto Collezionabilit` a Medio Basso Basso Basso Medio Basso Basso Alto Alto Medio Basso Medio Alto Basso Performance Tabella 1.1: Tabella di comparazione dei sistemi biometrici ([7]) Alto Odori Alto Retina Alto Alto Iride Termogramma facciale Medio Venature della mano Medio Basso Battitura Voce Medio Geometria della mano Basso Medio Impronte digitali Firma Alto Universalit` a Volto Sistema Biometrico Alto Alto Medio Medio Alto Alto Alto Basso Basso Medio Medio Medio Medio Alto Grado di gradimento 1.4. Sistemi Biometrici a confronto Capitolo 2 Panoramica sui Sistemi Biometrici Nel mondo della biometria esistono diversi metodi per estrapolare delle misure attraverso il corpo umano. In questo capitolo cercheremo di dare una panoramica generale dei sistemi biometrici pi` u utilizzati. Figura 2.1: Suddivisione del mercato biometrico ([3]) 18 2.1. Geometria della Mano 2.1 Geometria della Mano La mano di una persona umana `e uno strumento molto utilizzato nella vita quotidiana. Infatti `e un buon mezzo per riconoscere un individuo poich´e possiede caratteristiche di unicit`a dovute alla lunghezza, larghezza, spessore ed a particolari curvature presenti sul palmo. Figura 2.2: Dispositivo biometrico a geometria della mano Per utilizzare questa caratteristica biometrica si cerca di prelevare la forma geometrica della mano medianti strumenti scanner. In figura 2.2 si pu`o vedere un tipico scanner a geometria della mano che riesce ad estrapolare ben novantotto caratteristiche significative 2.1.1 Scansione Ortografica Il dispositivo biometrico a geometria della mano utilizza una fotocamera che tramite una luce a infrarossi cattura l’immagine della mano in bianco e nero in controluce. Il sistema quindi registra il profilo della mano ignorando i dettagli riguardante la superficie della pelle come per esempio le impronte digitali. Affinch´e le misure della mano siano il pi` u precise e corrette possibili, vengono usate degli appositi pioli situati all’interno dello superficie dello strumento. Come si pu`o vedere in figura 2.3 all’interno della superficie della mano si tracciano delle rette che permettono di estrapolare misure usate per caratterizzare il modello prescelto. 19 2.1. Geometria della Mano Figura 2.3: Misurazione della geometria della mano 2.1.2 Fasi di funzionamento Perch´e il sistema di riconoscimento della mano svolga correttamente il suo lavoro devono esistere alcune fasi prestabilite: • addestramento: l’utente viene allenato a mettere correttamente la mano all’interno dello strumento, dopodich´e si acquisiscono misure che andranno a formare un modello della mano; • registrazione: questa fase influenza l’FRR cio`e la probabilit`a dei falsi rifiuti. Infatti si chiede all’utente di mettere per tre volte la mano all’interno dello strumento calcolando una media aritmetica delle sagome generando cos`ı un’“immagine media”. Quest’ultima verr`a usata per verificare che il soggetto metta in modo corretto la mano all’interno dello strumento; • verifica: l’utente inserisce un codice PIN appoggiando la mano nello strumento e si estrapola cos`ı la relativa forma. A questo punto si verifica tramite un indice di similiarit`a l’effettiva somiglianza tra la mano appena prelevata e quella associata al codice PIN residente in archivio dello strumento. 2.1.3 Considerazioni Sebbene questa tecnologia sia stata usata con molto successo per circa venti anni `e ancora piuttosto dibattuto l’aspetto dell’unicit`a della geometria della mano. Ci 20 2.2. Biometria dell’occhio sono inoltre anche dei problemi che si presentano nella fase di crescita della mano in quanto tendono a diventare diverse nel passare degli anni. Infatti la mano che di solito viene preferita (destra per i destrorsi e sinistra per i mancini) tende a ingrossarsi ed `e soggetta a incidenti o a qualsiasi tipo di alterazione. Quindi `e molto importante riuscire a aggiornare il database dello strumento per non imbattersi in brutte sorprese durante la fase di verifica. Anche i fattori ambientali possono condizionare il riconoscimento, basti pensare a quando la mano entra in contatto con lo strumento: l’umidit`a genera un leggero alone nella superficie e questa pu`o disturbare la costruzione delle misure con la fotocamera. Per ovviare a queste infatti si tende in genere usare piastre riscaldate che attenuano il difetto. 2.2 Biometria dell’occhio L’occhio si pu`o considerare come una macchina fotografica o per meglio dire la macchina fotografica si ispira all’occhio, in quanto le leggi che governano ambedue sono le medesime. Quando si osserva un oggetto la luce che proviene da esso passa attraverso una serie di lenti naturali disposti in sequenza: • cornea: ha la stessa funzione di una lente; • cristallino: `e una lente elastica comandata dai muscoli ed ha il compito di mettere a fuoco l’oggetto osservato; • corpo vitreo: `e una sostanza gelatinosa e trasparente che riempie la parte posteriore dell’occhio; • retina: `e la superficie sulla quale si proietta la luce messa a fuoco dal sistema di lenti dell’occhio; • nervo ottico: fa parte del sistema nervoso centrale. Si tratta del prolungamento delle terminazioni nervose dei fotorecettori. Osservando l’occhio notiamo una superficie bianca, la sclera, che corrisponde alla superficie anteriore del bulbo oculare che rimane scoperta ed inoltre `e delimita al 21 2.2. Biometria dell’occhio Figura 2.4: Anatomia dell’occhio centro un’area circolare pigmentata detta iride che a sua volta delimita un’ulteriore area circolare, la pupilla che solitamente si presenta nera. Le parti interessanti in termini biometrici sono la retina e l’iride. 2.2.1 Identificazione della retina L’identificazione della retina offre un riconoscimento “certo” della persona per mezzo di un immagine interna all’apparato dell’occhio. Studi fatti da oftalmologi su patologie dell’occhio hanno constatato che ogni occhio ha una propria mappatura di vasi sanguinei che li contradistingue da individui a individuo. Abbiamo inoltre un basso indice di variabilit`a della retina rispetto al tempo dato per la sua collocazione interna all’occhio. Come vediamo in figura 2.5 l’intreccio dei flussi sanguinei ci consente di generare molte informazioni utili al nostro scopo. Esistono vari strumenti per l’acquisizione della retina. Il primo `e stato svolto alla fine degli anni 70’ e presentava tre grandi svantaggi; • era necessario una grande esperienza del soggetto in questione; • la fonte di illuminazione non doveva essere troppo forte; 22 2.2. Biometria dell’occhio Figura 2.5: Retina dell’occhio • il sistema risultava assai complesso e costoso. Si cercarono di effettuare dei cambiamenti al metodo per semplificare la procedura, infatti nel 1981 si costru`ı una macchina capace sia di emettere una luce infrarossi per colpire la retina, sia di riceverne i raggi riflessi. 2.2.2 Identificazione dell’iride L’iride `e un organo interno all’occhio e non `e possibile accederci direttamente ma soltanto tramite il riflesso della luce che produce la pupilla. I passaggi di un riconoscitore di iride sono: • acquisizione: si cerca di prelevare l’immagine dell’iride con la massima qualit`a stando molto attenti alla posizione e al livello di illuminazione; • localizzazione dell’iride: cerchiamo di tracciare dei confini ben precisi sull’immagine dell’iride; • confronto: cerchiamo di paragonare l’immagine in questione con quella presente nel database. La rappresentazione dell’immagine prodotta `e molto importante e di essa ne esistono diverse tipologie. 2.2.3 Considerazioni Concludiamo l’analisi dicendo che i sistemi biometrici basati su retina e iride hanno delle buone caratteristiche in fatto di immutabilit`a, variabilit`a e unicit`a. Bisogna 23 2.3. Geometria del volto (a) Iride (b) Individuazione iri- (c) Rappresentazione 3D de Figura 2.6: Iride dell’occhio per`o sottolineare che per prelevare informazioni `e necessario possedere apparecchiature molto costose che perlopi` u possono generare problemi derivanti da riflessioni oppure distorsioni causate dal movimento delle ciglia. 2.3 Geometria del volto La prima cosa che facciamo per riconoscere una persona `e quella di guardarla in volto, non siamo certo abituati ad analizzare le sue impronte digitali oppure l’iride dell’occhio. Studi effettuati evidenziano che nel momento in cui si guarda una persona tendiamo, quando sono presenti, a soffermarsi sulle parti predominanti come grosse orecchia, naso aquilino, ecc. Si `e scoperto inoltre che le caratteristiche interne (naso, bocca, occhi) ed esterne (forma della testa, capelli) sono usate per riconoscere caratteri non familiari. Soltanto quelle interne invece sono usate per riconoscere ` facile verificare come i volti che vengono ricordati sono quelli quei volti familiari. E attraenti, invece la tipologia di volti che non sono ne belli ne brutti secondo ai punti di vista vengono subito dimenticati. Molto interessante `e la teoria secondo la quale gli uomini riconoscono bene le persone della propria razza rispetto a gente di razze diversa. Questo `e utile per spiegare come nella nostra mente cerchiamo di tirar fuori una faccia “media” di persone che poi riutilizziamo per compararla con le altre faccie 24 2.3. Geometria del volto Figura 2.7: Programma per l’acquisizione dei volti anche di razze diverse. Molti studioso hanno cercato di utilizzare questi concetti per costruire un sistema automatico generando una moltitudine di problematiche importanti. Come prima analisi bisogna capire come rappresentare al meglio il volto di una persona in termini di immagine digitale che deve essere fatta con ad esempio sfondi particolari che permettono una buona segmentazione della zona della faccia interessata. In altre parole bisogna generare tanti processi che riescono a estrapolare dati significativi su immagini il pi` u definite possibili. 2.3.1 Descrizione del sistema L’acquisizione del volto pu`o essere eseguita a partire da una sequenza di fotogrammi o da una singola foto; per questo possiamo definire due tipologie: riconoscimento dinamico oppure riconoscimento statico. Il riconoscimento statico parte da una fotografia che deve essere di buona qualit`a e deve avere uno sfondo e una illuminazione particolare che permette di evidenziare i contorni del volto. Inoltre la persona durante la foto deve essere il pi` u inespressivo 25 2.3. Geometria del volto possibile, la vista deve essere frontale e bisogna possedere una buona precisione per riuscire ad archiviare informazioni di grandi dimensioni. Il riconoscimento dinamico `e pi` u malleabile quindi non abbiamo bisogno di avere sfondi o pose particolari dell’utente, poich´e il tutto `e conpensata dal fatto che abbiamo a disposizione una sequenza finita di immagini. Il processo di riconoscimento si suddivide in quattro fasi: • pre-elaborazione: `e una classica fase in cui l’immagine prelevata `e sottoposta ad un controllo per cui il volto deve risultare situato al centro dell’immagine, quest’ultima inoltre deve essere ripulita da eventuali disturbi esterni e cos`ı via; • segmentazione o localizzazione: fase in cui si cerca di segmentare l’immagine acquisita, in altre parole si individuano le parti principali della persona (naso, occhi, ecc.) cercando di estrapolarle dal contesto originale. Si tratta della fase pi` u delicata, infatti `e molto difficile matematicamente e geometricamente descrivere una parte della faccia come il naso oppure verificare la distanza della faccia dalla telecamera che influenza in modo significativo sulle prestazioni in fase di localizzazione; • estrazione di particolari: `e il cuore del sistema inquanto cerca di prelevare dei particolari utili a distinguere un volto dall’altro. Solitamente si cerca di estrapolare una grossa quantit`a di particolari che permettono di descrivere al meglio un volto. Particolari caratteristici sono ad esempio il colore degli occhi, dei capelli, forma della bocca, ecc.; • verifica: in questa fase viene associato le caratteristiche localizzate con un vettori di valori. Infatti in fase di verifica si pu`o ridurre ad esempio in un problema di distanza fra vettori. Si intuisce che il vero problema `e in che modo vengono estratti i particolari. 2.3.2 Considerazioni L’estrazione di particolari `e il vero problema di questo approccio, inoltre sia la qualit`a che la posizione dell’immaggine effettuata risulta molto determinante sull’esito finale 26 2.4. Identificazione della voce del riconoscimento. I gradi di libert`a in gioco su questo tipo di applicazione sono molti, basti pensare a come alle volte una persona non riesca a distinguere due individui apparentemente simili su foto diverse. Bisogna infatti cercare di creare una lista di possibili candidati alla corrispondenza del volto da riconoscere e cercare di minimizzare all’ottimo la somma di FAR e FRR. 2.4 Identificazione della voce Anche la voce di una persona `e considerata un elemento di riconoscimento biometrico. Come caratteristica biometrica la voce non presenta livelli di unicit`a immutabilit`a e variabilit`a ottimali come possiamo ben immaginare. Figura 2.8: Apparato vocale I principali aspetti fisiologici risiedono nella forma dell’apparato vocale figura 2.8 che `e composta da: • faringe laringea: situato sotto l’epiglottide; • faringe orale: sotto la lingua e compresa tra l’epiglottide e il velo (membrana che separa la cavit`a nasale con quella orale); • cavit` a orale: davanti al velo e limitata dalle labbra, dalla lingua e dal palato; • faringe nasale: sopra al velo fino alla fine della cavit`a nasale; 27 2.4. Identificazione della voce • cavit` a nasale: sopra il palato ed estendendo dalla faringe alle narici. Questi organi sono i responsabili, all’interno del corpo umano, di far emettere suoni dalla bocca, infatti ogni singolo organo riesce a modificare in individui diversi la voce. L’onda acustica viene prodotta quando l’aria dai polmoni `e portata per la trachea attraverso le pieghe vocali. Questa sorgente di eccitazione `e caratterizzata da fonazione, compressione, vibrazione, sussurrio o una combinazione di queste. (a) ASV (b) ASI Figura 2.9: Sistemi di riconoscimento della voce Le eccitazioni dovute alla fonazione sono prodotte quando il flusso d’aria `e modulata dalle pieghe vocali. Le eccitazioni dovute invece per sussurrio si generano quando il flusso d’aria che attraversa frettolosamente un piccolo triangolo il quale a sua volta si viene a formare tra la cartilagine dietro alle pieghe vocali quasi chiuse. Quelle per compressione si formano lasciando completamente chiuso e pressurizzato il tratto vocale. Infine l’eccitazioni per vibrazione sono causate dall’area che viene forzata attraverso un tratto chiuso tranne nelle pieghe vocali. Ci`o che viene chiamato voce `e solamente il suono prodotto dall’eccitazione per fonazione, mentre gli altri 28 2.4. Identificazione della voce sono chiamati senza voce. Nell’elaborazione della voce si possono ottenere diverse applicazioni: • riconoscimento della voce; • riconoscimento dello speaker. A sua volta composto da: – ASV (Automatic Speaker Verification figura 2.9(a)); – ASI (Automatic Speaker Identification figura 2.9(b)). La verifica automatica del parlatore (ASV) consiste nel riuscire a verificare l’identit`a di una persona. Nell’identificazione automatica del parlatore (ASI) invece si preoccupa di identificare una persona fra un gruppo prestabilito di utenti. Con la verifica della voce, una persona effettua una rivendicazione di identit`a presentando prima una smartcard, PIN, ecc. 2.4.1 Descrizione del sistema Il sistema di riconoscimento della voce deve saper riconoscere per ogni persona le differenze anatomiche, il tipo di tratto vocale e le abitudini acquisiti nel modo di parlare. Per creare un prototipo della voce si estrapolano le seguenti caratteristiche: • timbro della voce; • frequenza. Per ricavare queste caratteristiche ogni persona in fase di addestramento deve pronunciare una determinata parola o frase che viene salvata in archivio. In fase di riconoscimento l’utente dovr`a ripetere la parola o frase data in addestramento. 2.4.2 Considerazioni Esistono molti problemi durante l’uso di un metodo di riconoscimento vocale, infatti basta pensare ai possibili rumori di sottofondo, pronunciare in modo non coretto la parola o la frase, variazione della voce nel passare degli anni, particolari stati di 29 2.5. Impronte digitali salute che potrebbero in qualche modo alterare la voce. Tra i vantaggi riscontriamo soprattutto la comodit`a da parte dell’utente inquanto la voce come riconoscimento `e un metodo poco invasivo e in pi` u sia le mani che gli occhi sono liberi per fare qualsiasi altra cose durante l’identificazione. 2.5 Impronte digitali Un sistema biometrico fino ad oggi considerato molto affidabile `e senza ombra di dubbio quello delle impronte digitali. Le impronte sono costituite da creste (linee) e solchi sulla superficie del polpastrello. L’unicit`a delle impronte digitali `e stabilita dalla disposizione delle creste e dei solchi cos`ı come dalle minuzie (punti locali che caratterizzano la biforcazione e/o terminazione delle linee). La variabilit`a del disegno dell’impronta `e talmente alta che non compaiono mai due disegni uguali in diverse dita della stessa persona o in persone differenti. Altro aspetto importante `e che i dettagli del disegno sono permanenti e non cambiano mai durante la vita. Figura 2.10: Minuzie dell’impronta digitale 2.5.1 Anatomia di una impronta digitale Per prima cosa studiamo come sono formate le impronte digitali. Una generica impronta digitale `e costituita da un’insieme di linee dette ridge lines o creste distribuite su pi` u fascie in parallelo che possono intersecarsi oppure interrompersi formando un 30 2.5. Impronte digitali (a) Ridge ending (d) Lake (b) Bifurcation (e) Indipendent (f) Spur (c) Divergence (g) Crossower ridge Figura 2.11: Classificazione minuzie disegno chiamato ridge pattern. Nei punti in cui le creste si fermano o si biforcano si chiamano minuzie e sono caratterizzate da sette forme differenti: 1. ridge ending: dove una cresta comincia e finisce improvvisamente (figura 2.11(a)); 2. bifurcation: dove una cresta si sdoppia in due o pi` u creste parallele (figura 2.11(b)); 3. divergence: la divergenza di due creste parallele (figura 2.11(c)); 4. lake: congiunzione di due biforcazioni dove una forma il lato destro e l’altra il lato sinistro (figura 2.11(d)); 5. indipendent ridge: `e una cresta piccola separata da ambo i lati (figura 2.11(d)); 6. spur: `e una combinazione di due creste indipendenti e una biforcazione (figura 2.11(e)); 7. crossower: `e una cresta indipendente che attraversa due creste parallele (figura 2.11(f )). ` opportuno puntualizzare che le minuzie costituiscono un fattore importante per E la discriminizzazione delle impronte digitali, infatti in tutti questi casi abbiamo dei 31 2.5. Impronte digitali Figura 2.12: Singolarit` a delle impronte digitali comportamenti anomali prodotti delle ridge line. Analizzando un’impronta digitale si possono individuare delle zone in cui le ridge line assumono andamenti particolari comportadosi frequentemente come i tipi di minuzie precedentemente elencate. Le zone appena citate (figura 2.12) vengono chiamate: 1. core: singolarit`a caratterizzata da un insieme di creste che hanno un andamento ad U; 2. whorl: singolarit`a caratterizzata da un struttura ad O (tipo circolare); 3. delta: singolarit`a caratterizzata da un insieme di creste che hanno un andamento semicircolare. La parte centrale dell’impronta dove sono dislocate le singolarit`a viene chiamata pattern area. Questa parte `e delimitata da due linee principali chiamate type line che sono ben visibili come due linee interne che delimitano la parte citata dal resto dell’impronta. Nell’analisi della struttura dell’impronta possiamo incontrare anche il termine flow line che significa linea di flusso cio`e una ipotetica linea di separazione fra un insieme di creste contigue. Come ultimo elemento utile per la descrizione di una impronta digitale `e importante annoverare la cos`ı detta immagine direzionale (figura 2.14). Quest’ultima serve a rappresentare l’andamento delle ridge line tramite una matrice i cui elementi 32 2.5. Impronte digitali Figura 2.13: Flow line e ridge line sono ottenuti dalla sovrapposizione di una griglia sopra l’immagine dell’impronta. Ogni vettore `e posto in un nodo della griglia e ha direzione parallela a quella della flow line che attraversa il medesimo. L’immagine direzionale non ci permette di confrontare da sola le differenze delle impronte digitali ma bens`ı riesce a individuare una determinata impronta in un database. Per questo possiamo verificare le differenze tra l’immagine direzionale che vogliamo classificare con quelle presenti nel database scartando a priori quelle molto diverse. In questo modo si riesce a distinguere la ricerca su un numero minore di impronte candidate. Tutte le altre caratteristiche descritte saranno utili successivamente per distinguere in modo preciso una serie di impronte digitali simili tra loro. 2.5.2 Descrizione del sistema Come prima caso bisogna prelevare l’immagine dell’impronta digitale, il metodo pi` u noto `e quello dell’“inchiostratura dei polpastrelli” seguita da un movimento di “rollura” su carta che permette di prendere l’intero disegno dell’impronta. La principale tecnologia usata attualmente `e quella di usufruire dei opportuni scanner capaci di leggere direttamente l’impronta digitale codificandola in formato digitale. Lo scanner ottico (figura 2.15) `e un particolare strumento utilizzato nella lettura delle impronte, il quale `e formato da un prisma ottico accoppiato a un CCD/CMOS 33 2.5. Impronte digitali (a) impronta (b) rappresentazione direzionale Figura 2.14: Immagine direzionale Figura 2.15: Schema funzionamento scanner ottico tramite una lente di focalizzazione. Questi sistemi sfruttano leggi fisiche per produrre immagini della superficie del polpastrello ben contrastate. Nei punti di contatto dell’epidermide le microparticelle d’acqua presenti sulla pelle fanno s`ı che la luce risulta assorbita completamente restituendo un immagine nera, mentre negli spazi ove non vi `e il contatto la luce viene completamente riflessa apparendo un immagine bianca. Con questo metodo otteniamo un immagine complessiva con, evidenziata in nero, la particolare conformazione delle ridge line dell’impronta in questione. La struttura del sistema per il riconoscimento delle impronte digitali `e composta da due fasi una off-line in cui si prende l’impronta 34 2.5. Impronte digitali si elabora e si inserisce nel database; ed un’altra on-line che consiste nell’ottenere un insieme di candidati per verificare se una determinata impronta `e all’interno del database. Nella fase on-line abbiamo una importante passo da compiere, quello di estrarre in modo molto chiaro le ridge line e quindi le minuzie. In questa fase si avranno tutte le eventuali ripuliture sull’immagine acquisita. Quando abbiamo difronte un grosso insieme di dati, in genere viene trovato un metodo per velocizzare la ricerca dell’impronta all’ interno del database, l’approccio pi` u promettente `e quello proposto dal NIST che consiste nel dividere il database in cinque classi: • arch: impronte in cui le creste entrano da un lato, crescono verso il centro e scendono per poi uscire dal lato opposto; • tended arch: come le precedenti ma le creste formano un angolo o una piega al centro con la presenza di un delta; • right loop: impronte in cui una o pi` u creste entrano dal lato destro, si ripiegano, superano la linea immaginaria determinata dal core e escono dallo stesso lato; • left loop: formate come le precedenti, ma piegate dal lato opposto; • whorl: impronte con almeno due delta e una figura chiusa (circolare, ellittica o a spirale) centrale. Preparato il database con questo criterio basta individuare una delle sottoclassi e fare il confronto all’interno di quella selezionata, riducendo in modo significativo il tempo di riconoscimento. La fase finale del sistema `e l’algoritmo di matching che si preoccupa di calcolare una soglia di bont`a tra i due sistemi di minuzie individuati, garantendo che la impronta d analizzare sia effettivamente una di quelle salvate in archivio oppure no. 2.5.3 Considerazioni Il sistema a impronte digitali `e molto utilizzato in tutti gli ambienti che richiedono un metodo sicuro e semplice per l’identificazione. Ormai anche su dispositivi palmari 35 2.6. Identificazione della firma possiamo introdurre un lettore di impronte permettendoci di proteggere i dati in modo semplice e veloce. 2.6 Identificazione della firma La firma di ogni persona pu`o rilevarsi ragionevolmente unica e usata per implementare un sistema biometrico. Le caratteristiche che possiede una firma sono ad esempio la velocit`a di scrittura o i punti nei quali si esercita pi` u pressione. Figura 2.16: Tavoletta elletronica La raccolta della firma pu`o essere effettuata semplicemento usando una tavoletta elettronica oppure scrivendo con una particolare penna. Questo tipo di sistema biometrico pu`o rilevarsi molto semplice da usare in quanto, soprattuto negli ambienti bancari e finanziari, l’apposizione della firma `e una prassi frequente quindi non viene richiesto nessun cambio di abitudini da parte dell’utente. 2.6.1 Descrizione del sistema I parametri da considerare durante la raccolta della firma sono: • la velocit`a di scrittura; • la pressione esercitata; • l’angolo di inclinazione della penna; 36 2.6. Identificazione della firma • l’accellerazione del movimento; • il numero di volte che la penna viene sollevata dalla carta. Il sistema viene attivato scrivendo la firma su tavoletta oppure usando un’apposita penna, dopodich´e vengono estratti i parametri di interesse che verranno in seguito elaborati in modo da verificare l’identit`a della scrittura acquisita. 2.6.2 Considerazioni Senza ombra di dubbio il punto di forza di questo sistema `e l’alta accettazione da parte degli utenti, la quale viene causata dalla deposizione della firma, quest’ultima essendo molto usata, non si trovano differenze fra il metodo tradizionale (scrivere la firma su un documento di carta) e quello biometrico. Lo svantaggio per`o `e che la scrittura della firma risulta instabile durante acquisizione nel sistema e il modo in cui viene apposta pu`o variare nel tempo. 37 Capitolo 3 Stile di Battitura Visti i principali sistemi biometrici prendiamo ora in considerazione lo strumento principale per questa tesi: lo stile di battitura. 3.1 Introduzione I sistemi biometrici trattati fino ad ora per funzionare correttamente hanno bisogno di un qualche strumento, per esempio ricordiamo la lettura delle impronte digitali in cui l’acquisizione del polpastrello delle dita era possibile tramite un apposito scanner. Nello stile di battitura tutto questo non serve, poich´e per prelevare le caratteristiche che un individuo ha nel digitare un testo `e sufficiente una qualsiasi tastiera. Fin dall’inizio del XX secolo, psicologi e matematici si sono accorti che le azioni umane ripetute nel tempo consentono l’individuazione del soggetto che le compie, nel caso particolare la tastiera pu`o fornire informazioni utili a identificare l’utente. Infatti un utente riesce a lasciare la sua “firma digitale” grazie alla sua particolare latenza nel battere i tasti, intendiamo quindi il tempo che intercorre tra la pressione di un tasto e del successivo. 3.2 Storia Negli anni ’40 Samuel Morse invent`o un sistema telegrafico elettrico che per mezzo di uno speciale codice permetteva di codificare le lettere alfabetiche in sequenze 38 3.3. Caratteristiche tecniche Figura 3.1: Telegrafo di impulsi di diversa durata (punti e linee). Il sistema era il famosissimo “codice Morse”, il quale in breve tempo riusc`ı a diffondersi in ogni continente formando una fitta rete. Il funzionamento del telegrafo era quello di creare dei punti e delle linee coerenti con l’alfabeto morse, premendo l’apposita leva dello strumento. Il modo di creare i simboli dell’alfabeto morse con lo strumento risultavano “unici” da persona a persona, informazione che non venne subito considerata. Nel periodo della Seconda Guerra mondiale il telegrafo venne impiegato per trasmettere messaggi militari e fu proprio in questa contesto che il modo in cui venivano scritte le lettere dell’alfabeto venne per la prima volta utilizzato. Per essere sicuri che il messaggio era realmente scritto da un mittente preciso, si analizzava il modo in cui i “punti” e le “linne” erano costruite. Grazie a questa informazione si poteva prelevare il “ritmo” di digitazione individuando se la persona era realmente chi dichiarava di essere. 3.3 Caratteristiche tecniche Per valutare se le caratteristiche di battitura su una tastiera possono essere considerate informazioni utili per realizzare un sistema biometrico, sono state sviluppare interfacce capaci di simulare l’iterazione fra uomo e macchina. Questi tipi di modelli sono molto utilizzati nello studio di usabilit`a nei sistemi informatici, infatti essi permettono di definire il grado di facilit`a e soddisfazione con cui l’iterazione 39 3.3. Caratteristiche tecniche uomo-macchina si compie. L’avvento del computer ha sollevato interrogativi riguardo a come gli organismi ricevono l’informazione (percezione) e come questa viene esaminata prima di eseguire una risposta adeguata (cognizione). I programmi per computers hanno fornito forti similitudini con i processi cognitivi. Con il processo cognitivo si indica una sequenza di singoli eventi necessari alla formazione di un qualsiasi contenuto di conoscenza. I programmi residenti in un qualsiasi computer interagiscono con la macchina indirizzandola in modo tale da eseguire determinate procedure come combinare diverse informazioni in base a criteri predefiniti e come immagazzinare alcune informazioni nuove o rievocare delle altre gi`a memorizzate. Questo approccio meccanicistico ha spronato diversi psicologi nel spiegare le operazioni del pensiero utilizzando schemi e simboli. In questo modo si sono definiti diversi modelli che permettono di schematizzare come il flusso delle informazioni, provenienti dall’ambiente esterno, venga trattato dagli apparati percettivi e cognitivi. In particolare il modello KLM (Keystroke Level Model) sviluppato da Card con dei collaboratori (1983) descrive l’iterazione uomo-macchina durante una generica sessione di lavoro. Il KLM modella un utente come un insieme di processi cognitivi descrivibili come operazioni fisiche, motorie e mentali. Per prima cosa descriviamo brevemente la memoria umana, costituita da tre magazzini distinti per capienza e permanenza delle informazioni che le contengono: 1. memoria sensoriale: `e un magazzino di elevata capienza e bassa permanenza, ospita molte informazioni sia visive che uditive destinate a perdersi dopo qualche secondo. La funzione di questa tipologia di memoria `e quella di contenere dati un tempo sufficiente a fornire al soggetto un orientamento nello spazio, una panoramica completa e immediata dell’ambiente; 2. memoria a breve termine (STM): `e un magazzino di limitata capacit`a e limitata permanenza (30sec), prolungabile per`o mediante reiterazione, cio`e ripetendo pi` u volte l’informazione, introducendola nuovamente nella STM. Successive reiterazioni permettono il trasferimento dell’informazione dalla memoria a breve termine alla memoria a lungo termine, come accade nello studio, 40 3.3. Caratteristiche tecniche Figura 3.2: Insieme di operazioni fisico-motori e mentali quando le nozioni appena apprese vengono ripetute, oralmente o in altre forme, affinch´e diventino possesso stabile dello studente: 3. memoria a lungo termine (LTM): `e un magazzino di elevata capienza ed elevata permanenza. Ci accedono le informazioni sottoposte a processo di reiterazione. Come possiamo vedere in figura 3.2 l’esecuzione di un compito generico con il computer pu`o essere descritto in termini di operazioni fisico-motori e mentali, infatti prima di eseguire una qualsiasi operazione, ad esempio la scrittura di una parola su tastiera, esiste un percorso che parte dal riconoscimento dell’operazione da effetture, tramite la comprensione e elaborazione della soluzione eseguita mentalmente, fino all’azione del movimento vero e proprio sul pc. Descriviamo i passi che si compiono durante una normale sessione di lavoro su un pc: • processo percettivo: il primo passo viene compiuto dal processo percettivo che ha il compito di estrapolare le informazioni provenienti dall’ambiente 41 3.3. Caratteristiche tecniche esterno per mezzo dei recettori sensoriali (nel caso specifico sono la vista e l’udito) per poi collocarli all’interno della memoria temporale; • processo cognitivo: passiamo al processo cognitivo che in pratica elabora l’informazione che nel frattempo si `e spostata dalla memoria temporale fino alla memoria a breve termine permettendo la preparare di una risposta adeguata all’input pervenuto dal mondo esterno. In questa fase abbiamo anche tramite processi di reiterazione in memoria il trasferimento del processo cognitivo in memoria a lungo termine, significa quindi che l’azione prescelta per un certo input viene ricordata nel tempo. Per spiegare questo concetto immaginiamo per esempio quando scriviamo un documento di testo, durante questo processo dobbiamo salvare il lavoro fatto cercando, in genere, il men` u file cliccando su la vove salva. Questa operazione una volta effettuata diverse volte nel tempo, diventa quasi naturale senza che ogni volta si abbia bisogno di salvare il documento si faccia ancora “fatica” a trovare la procedura giusta per mettere al sicuro il lavoro fatto; • processo motorio: infine si passa a processo motorio che mette in atto la risposta elaborata dal processo cognitivo, per esempio spostando correttamente il mouse, oppure digitando una lettera sulla tastiera. Introduciamo ora il modello KLM vero e proprio, dichiarando come Ttotale il tempo totale di durata di una sessione finale generica al computer, ad esempio prendiamo sempre in considerazione la digitazione di una parola su tastiera, con Tacquisizione il tempo necessario per la scelta e la rappresentazione mentale del modo pi` u adatto a completare il problema, infine con Tesecuzione il tempo necessario per eseguire tutte le sotto funzioni che costituiscono il compito da svolgere. Queste quantit`a sono legate nel modo seguente: Ttotale = Tacquisizione + Tesecuzione (3.1) Il fattore Tacquisizione `e composto da da una sommatoria dei seguenti tempi primitivi: 42 3.3. Caratteristiche tecniche • TK : (key) pressione tasto; • TP : (point) area puntata dal mouse; • TH : (home) spostare le mani su tastiera o mouse; • TD : (draw) disegnare una linea con il mouse; • TM : (maind) preparazione mentale; • TR : (response) latenza del sistema. Questi tempi variano a secondo dell’esperienza dell’utente, infatti una persona esperta risulter`a pi` u veloce nell’eseguire qualsiasi compito rispetto a un utente meno esperto. Volendo descrivere il comportamento di un utente nel digitare una frase su tastiera, i tempi primitivi da considerare sono tre: la pressione di un tasto, la preparazione mentale e lo spostamento delle mani su tastiera. Quindi il fattore Tacquisizione risulter`a formato come segue: Tacquisizione = TK + TM + TH (3.2) Presumiamo ora che la tastiera sia la medesima per ogni utente in questione, lo spostamento delle mani durante la pressione dei tasti risulta costante, quindi il TH cambier`a solo nel momento in cui cambieremo tastiera. Quindi non considerando lo spostamento delle mani sulla tastiera l’equazione 3.2 diventer`a: Tacquisizione = TK + TM (3.3) Dato che l’azione di un utente non pu`o essere divisa in tempo mentale e tempo di battitura `e stato dimostrato che, quando un utente digita alcune parole su una tastiera, il cervello si comporta come un buffer dal quale viene rilasciato il testo che dovr`a in seguito essere digitato. Questo significa che ogni persona avr`a un tempo diverso nel digitare le parole su tastiera, caratterizzando in modo differente uno stile proprio. 43 3.4. Tempi di battitura 3.4 Tempi di battitura Il sistema biometrico per il riconoscimento dello stile di battitura da tastiera utilizza come informazione primaria due tipi di tempi fra tasti: • tempi interkey: periodo di tempo tra la battitura di un tasto e il suo successivo; • tempi key: tempo di pressione di un tasto e del suo rilascio. Infatti avendo a disposizione in una sequenza di tasti gli istanti di tempi in cui vengono premuti e rilasciati quest’ultimi, possiamo ricavare l’informazione necessaria per estrapolare i parametri utili nella costruzione del sistema di riconoscimento. In particolare dichiariamo tutte le possibili differenze di tempo che esistono tra la pressione e il rilascio di un tasto in una generica parola digitata su tastiera: • flight time: tempo trascorso dal momento del rilascio di un tasto e la pressione del successivo, `e evidente che pu`o anche assumere valori negativi qualora venga premuto un tasto prima del rilascio del precedente; • alternative flight time: tempo trascorso dal momento della pressione di un tasto e il rilascio del successivo; • itervall time: tempo trascorso dal momento della pressione di un tasto e la pressione del tasto successivo; • itervall time release: tempo trascorso dal momento del rilascio di un tasto e il rilascio del tasto successivo; • dwell time: tempo trascorso dal momento della pressione di un tasto e il suo rilascio. In figura 3.3 vediamo la costruzione dei tempi di digitazione della parola “SA”. Nel caso descritto `e stato premuto due tasti in sequenza la lettera S e A per poi in un secondo tempo rilasciarli, si formano cos`ı quattro istanti temporali (chiamati T1, T2, T3 e T4) fondamentali per la costruzione dei tempi. Notiamo che questo 44 3.4. Tempi di battitura Figura 3.3: Tempi di digitazione della parola “SA” tipo di esempio genera un flight time negativo in quanto il rilascio della lettera S avviene dopo la pressione del tasto successivi, cio`e la lettera A. Facciamo un esempio di costruzione dei parametri citati, prendiamo ad esempio la parola “neural” e analizziamo quando i tasti vengono premuti e rilasciati cos`ı da essere in grado di ricavare i nostri parametri, calcolando i tempi che intercorrono fra le lettere (N,E), (E,U), (U,R), (R,A), (A,L). In tabella 3.1 sono riportati i tempi di pressione e di rilascio in millisecondi e di tutti i parametri. Come prima cosa vediamo che nell’ultima riga della tabella non `e riportato nessun valore, poich´e vengono calcolati i tempi fra un tasto e il suo successivo, e quindi la L non avendo nessuna lettera successiva non `e in grado di possedere nessun parametro (in realt`a possiamo calcolare il dwell time, ma essendo solo uno non lo consideriamo). Vediamo approfonditamente il calcolo dei parametri per quanto riguarda la lettera N (in realt`a corrispondente alla coppia (N,E)): • flight time: prendiamo il tempo di rilascio della lettera N (258) e la pressione del tasto successivo cio`e la lettera E (291), il parametro `e determinato cos`ı 291 − 258 = 33; 45 3.5. Corretta postura per l’uso della tastiera Tasto Premuto Rilasciato Dwell Time Interval Time Interval Time Release Flight Time Alternative Flight Time N 123 258 135 168 107 33 242 E 291 365 74 337 351 263 425 U 628 716 88 290 257 202 345 R 918 973 55 220 219 165 274 A 1138 1192 54 256 296 211 350 L 1403 1488 Tabella 3.1: Costruzione dei tempi di battitura per la parola “neural” • alternative flight time: prendiamo il tempo di pressione della lettera N (123) e il rilascio del tasto successivo la lettera E (365), il parametro `e 365 − 123 = 242; • iterval time: prendiamo il tempo di pressione della lettera N (123) e la pressione del tasto successivo la lettera E (291), il parametro `e 291−123 = 168; • iterval time release: prendiamo il tempo di rilascio della lettera N (258) e il rilascio del tasto successivo la lettera E (365), il parametro `e 365 − 258 = 107; • dwell time: prendiamo il tempo di pressione della lettera N (123) e del suo rilascio (258), il parametro `e 258 − 123 = 135. L’estrazione dei parametri in una generica parola digitata su tastiera, risulta veloce e semplice, infatti tutte le operazioni in gioco sono solamente delle sottrazioni. 3.5 Corretta postura per l’uso della tastiera Le caratteristica di battitura di un qualsiasi utente dipendono da come vengono digitate le lettere sulla tastiera, per`o non `e importante solo la velocit`a di digitazione ma anche la postura che una persona ha davanti a una tastiera. Se proviamo a inserire una frase in un computer mentre siamo correttamente seduti, ci accorgeremo di avere una certa velocit`a durante la digitazione ma se al contrario abbiamo una postura non corretta rispetto alla tastiera la velocit`a sar`a nettamente differente. Per questo `e importante capire come sedersi correttamente davanti ad un computer e come appoggiare in modo preciso le mani sulla tastiera. In primo luogo bisogna tenere presente che il corpo deve essere completamente sostenuto dalla sedia, in 46 3.5. Corretta postura per l’uso della tastiera (a) Distribuzione (b) Distribuzione corretta non corretta Figura 3.4: Distribuzione del peso sulla sedia particolare bisogna assicurarsi che la zona lombale sia ben sostenuto. Fatta questa preliminare prova v`a verificato che la posizione scelta sia anche confortevole. Inoltre durante la digitazione `e necessario che gli avambracci, i polsi e le mani si trovino in una posizione naturale e rilassata all’interno dell’area di “massimo comfort”. Un modo per individuare la propria area di massimo confort consiste nel rilassare completamente le braccia, i polsi e le mani lungo i fianchi, cercando di memorizzare la posizione che viene assunta naturalmente. Quando si solleva le mani per utilizzare la tastiera, cercare, per quanto possibile, di mantenere le braccie e i polsi in tale stato (area di massimo confort). Analizziamo ora come deve essere assunta le posizione delle mani e dei polsi durante un normale utilizzo della tastiera. In figura 3.5(a) vediamo una classica posizione corretta in cui i polsi sono disposti in maniera comoda e naturale. In figura 3.5(b) invece vediamo una posizione non corretta, infatti `e consigliabile evitare di appoggiare i palmi su una superficie o di piegare eccessivamente i polsi verso il basso durante la digitazione. In figura 3.5(c) vediamo ancora una posizione corretta dove i polsi sono messi in maniera naturale. In figura 3.5(d) vediamo una posizione non corretta, dove i polsi sono piegati eccessivamente verso l’interno. La corretta posizione aumenta senza dubbio il risultato del sistema biometrico, per questo motivo assumere una posizione corretta porta all’individuazione solamente del vero stile di battitura per ogni persona, senza avere dei disturbi causati da una non corretta postura. 47 3.6. Differenza di stili (a) Posizione comoda e na- (b) Posizione con eccessiva (c) Polsi tenuti in posizione turale piegatura dei polsi comoda (d) Eccessiva piegatura dei polsi verso l’esterno Figura 3.5: Mani sulla tastiera 3.6 Differenza di stili Vediamo la differenza che emergono tra lo stile di battitura di due persone, sperimentalmente facciamo digitare ad entrambi la stessa frase, calcoliamo i tempi fra i tasti e li mettiamo sotto forma di grafico. La frase digitata `e “neural password control”. Partiamo nell’analizzare i parametri flight time e alternative flight time (figura 3.6(a) e 3.6(b)). Notiamo immediatamente che in tutti e due i grafici sono presenti due picchi molto accentuati relativi ad un solo user, sottolineando che nell’istante in questione `e avvenuto un rallentamento nella digitazione, verifichiamo infatti che il primo picco `e relativo al primo spazio che intercorre tra le parole digitate (quindi tra la lettera L e lo spazio di “neural password“) e l’altro corrispondente fra le lettere S e W di ”password”. L’andamento complessivo dei due parametri `e simile ma i valori assunti dai singoli tasti sono diversi, evidenziando i caratteri diversi dei due stili di battitura. 48 3.6. Differenza di stili (a) Flight Time (b) Alternative Flight Time (c) Interval Time (d) Interval Time Release (e) Dwell Time Figura 3.6: Grafici dei tempi di battitura di due persone per la frase “neural password control” 49 3.6. Differenza di stili Figura 3.7: Caso particolare flight time negativo I parametri interval time e interval time release (figura 3.6(c) e 3.6(d)) sono molto simili tra loro, inquanto la differenza di calcolo dei due indici `e molto sottile (interval time `e la differenza tra le pressione dei tasti e l’interval time release la differenza dei rilasci). Analizzando i dati possiamo immaginare da subito che per un uso di queste caratteristiche per riconoscimento biometrico `e sufficiente utilizzare solo una delle due informazioni. Notiamo che anche in questi grafici compaiono due picchi molto eccentuati relativi ad un solo user, notando come prima cosa dei rallentamenti nel primo spazio della frase e tra il carattere S e W di “password”. Infine valutiamo che l’ultimo parametro calcolato il dwell time (figura 3.6(e)), si dimostra il pi` u significativo in termini di differenze tra utenti, infatti i valori assunti per ogni tasto sono molto diversi. I picchi riscontrati in tutti gli altri grafici non sono presenti in questo caso ed evidenziano la sostanziale differenza di risultati attribuibili al dwell time. Introduciamo un ulteriore esperimento facendo digitare la parola “neural“ a due utenti e costruendo i tempi di flight time. Il flight time calcolato come tempo trascorso dal momento del rilascio di un tasto e la pressione del successivo assume valore negativo qualora venga premuto un tasto prima del rilascio del precedente. Se si verificano queste condizioni possono essere rilevate delle differenze molto importanti che permettono di contraddistinguere due utenti. Ci rendiamo conto che i grafici del secondo utente ha come stile di battitura proprio la caratteristica di generare flight time negativo. 50 3.7. Uso di tastiere diverse 3.7 Uso di tastiere diverse Un ulteriore fattore da valutare per questo tipo di sistema biometrico `e la differenza che esiste tra tastiere diverse. La tastiera di un portatile `e diversa rispetto ad una normale tastiera da computer e questa differenza si trasmette anche nell’estrazione dei tempi di digitazione. Sarebbe molto importante poter effettuare il riconoscimento indipendentemente dal dispositivo impiegato per la scrittura, prima di tutto dobbiamo analizzare quante differenza di tempi abbiamo nella digitazione di una persona difronte a due tastiere diverse. La prova consiste nel raccogliere due volte dati dalla stessa persona, scrivendo una volta su una normale tastiera ed un’altra volta sulla tastiera di un computer portatile. La parola digitata `e ”tastiera“, i grafici dei risultati sono in figura 3.8. I grafici indicano che i due tipi di tastiera influiscono solo sul valore assoluto dei singoli parametri senza cambiare l’andamento generale dei valori, accertandoci che la parola `e stata digitata dalla solita persona. Notiamo inoltre che i tempi provenienti dal portatile (colonne magenta) risultano pi` u veloci della tastiera normale (colonna azzurra), questo indica probabilmente che lo scrittore `e pi` u abituato a digitarre sulla tastiera del portatile. La differenza pi` u accentuata si riscontra nel grafico del dwell time (figura 3.8(e)) dove i picchi pi` u alti sono sono in media leggermente pi` u elevati. 51 3.7. Uso di tastiere diverse (a) Flight Time (b) Alternative Flight Time (c) Interval Time (d) Interval Time Release (e) Dwell Time Figura 3.8: Grafici dei tempi di battitura per la parola ”tastiera” digitata da una normale tastiera da computer (colonne azzurre) e da un computer portatile (colonne magenta) 52 Capitolo 4 Reti Neurali Una delle limitazioni del modello di macchina introdotto da John Von Neumann con la “Macchina di Von Neumann” `e la sua rigidit`a di rispondere a stimoli esterni (input) in maniera diversa da ci`o che viene inizialmente immesso. In poche parole, un computer pu`o riconoscere solamente stimoli che sono stati codificati precedentemente e inoltre le risposte associate ad essi sono sempre rigidamente decise a priori. Un approccio diverso consiste nel concepire sistemi in grado di adattarsi in base all’esperienza passata, ed `e in questo ambito che `e stato introdotto il concetto di rete neurale. Le reti neurali nascono dall’idea di poter ricreare alcune funzioni cognitive del cervello umano, dotando cos`ı il calcolatore di capacit`a decisionali e di apprendimento simili a quelle umane. Il riconoscimento di pattern (pattern recognition) `e l’area d’impiego predominante per le reti neurali che devono essere in grado, grazie a un determinato input, di analizzarlo e di formulare una determinata e significativa categorizzazione. 4.1 Storia delle Reti Neurali Il primo modello di rete neurale introdotto risale agli inizi degli anni ’40, dove nel 1943 Warren McCulloch e Walter Pitts elaborarono modelli formali dell’attivit`a dei neuroni, simili a quelli attualmente utilizzati e in grado di calcolare semplici funzioni booleane. Successivamente nel 1958, F. Rosenblatt introdusse una schema di rete neurale 53 4.1. Storia delle Reti Neurali chiamato perceptron (percettrone) per il riconoscimento e la classificazione di pattern, esso costituisce un progresso decisivo rispetto al modello binario di McCulloch e Pitts, perch´e i suoi pesi sinaptici sono variabili e quindi il percettrone `e in grado di apprendere. Gli studi eseguiti da Rosenblatt stimolarono studi e ricerche, suscitando un notevole entusiasmo nella comunit`a scientifica, destinate per`o ad essere notevolmente ridimensionate. Infatti nel 1969 Marvin Minsky e Seymour A. Papert mostrarono i limiti delle reti neurali basate sui percettroni, dimostrando l’impossibilit`a di risolvere molti problemi. Si dimostr`o che una rete con queste caratteristiche non era in grado di calcolare neanche la funzione or esclusivo (XOR). Le ricerche sulle reti, per questi evidenti motivi, furono per un po’ abbandonate fino a che si trov`o un metodo per addestrare le reti MLP (Multi-Layers Perceptron; percettrone multistrato) che prometteva una maggiore potenzialit`a la quale fu descritta dal matematico americano Paul Werbos nella sua tesi di dottorato (Ph.D.) del 1974. Da questo importante input si realiz`o uno dei metodi pi` u noti ed efficaci per l’addestramento di MLP, il cosiddetto algoritmo di retropropagazione dell’errore (error backpropagation), proposto nel 1986 da David E. Rumelhart, G. Hinton e R. J. Williams, con il quale descrissero come modificare opportunamente i pesi delle connessioni tra i nodi, cos`ı da avvicinare la risposta della rete sempre di pi` ua quella desiderata. L’algoritmo di BackPropagation `e una tecnica d’apprendimento funzionante attraverso esempi, costituendo una generalizzazione dell’algoritmo d’apprendimento precedentemente trovata per il percettrone sviluppato da Rosenblatt nei primi anni ’60. Tramite questa importante scoperta si arginarono le limitazioni del percettrone permettendo di risolvere la funzione XOR, segnando il definitivo rilancio delle reti neurali. Possiamo dire che oggi le reti neurali sono considerate un potentissimo strumento di Intelligenza Artificiale, ormai entrata a far parte per risolvere molti problemi della vita quotidiano. 54 4.2. La metafora biologica Figura 4.1: Neurone e la sua struttura con soma, dendriti e connessioni sinaptiche 4.2 La metafora biologica La rete neurale artificiale (ANN, Artificial Neural Network) `e formata da un gran numero di unit`a indipendenti connesse mediante dei collegamenti tra di loro. Queste connessioni cercano di simulare quelle presenti nel nostro cervello, in cui le unit`a sono i neuroni, mentre i collegamenti sono realizzati mediante gli assoni e le sinapsi. Un impulso elettrico viaggia all’interno del cervello seguendo i collegamenti, quando un neurone riceve l’impulso (cio`e lungo il suo assone si verifica una differenza di potenziale elettrico tra l’interno e l’esterno della cellula), quest’ultimo si attiva ed a sua volta invia il segnale a tutti i neuroni ad esso collegato, che si comporteranno nella stessa maniera. Una ANN funziona allo stesso modo: ogni unit`a `e connessa alle altre unit`a, le quali in presenza di uno stimolo (input) si attivano e inviano il segnale alle unit`a collegate. I collegamenti (o gli assoni, nel caso del cervello) hanno la capacit`a di attenuare il segnale, in modo che viaggi secondo percorsi diversi e in alcune direzioni si spenga (cio`e non faccia attivare alcun neurone). Una rete neurale possiede inoltre un algoritmo che modifica i pesi dei collegamenti (l’intensit`a del segnale), in modo che essa si adatti a fornire un certo output in risposta ad un determinato input. 55 4.3. Grafi e loro propiet`a Figura 4.2: Differenza tra i neuroni umani e nelle ANN 4.3 Grafi e loro propiet` a Prima di descrivere le reti neurali, vediamo una sintetica descrizione di grafo e delle sue principali propiet`a. In primo luogo i grafi sono delle strutture matematiche costituite da nodi, elementi di un insieme singolarmente individuabili con una etichetta ad esempio e archi o connessioni che connettono i nodi a coppie. Un grafo `e una terna G = (V, A, En ) dove V `e l’insieme dei nodi, A ⊆ V XV rappresenta l’insieme degli archi, mentre la funzione En : V → Lx associa a ciascun nodo un’etichetta, cio`e un vettore di valori reali. Descriviamo ora alcune delle sue propiet`a: • se le coppie dei nodo sono ordinate, cio`e se (n, v) 6= (v, n) allora il grafo si dice orientato (diretto), altrimenti si dice non orientato (non diretto); • due nodi v ∈ V e w ∈ V sono adiacenti se (v, w) ∈ A o (w, v) ∈ A; • un n-cammino (o cammino di lunghezza n) in un grafo diretto G da nodo v ∈ V al nodo w ∈ V indica una sequenza di n nodi v0 ...vn−1 ; tale grafo si dice aciclico se non contiene nessun n-cammino in cui il nodo iniziale e quello finale coincidono. 56 4.4. Struttura del neurone Figura 4.3: Struttura del neurone 4.4 Struttura del neurone Il neurone di una generica rete neurale `e l’unt`a di elaborazione fondamentale e `e composta da i seguenti componenti: • un insieme di connessioni (sinaptiche), ciascuna delle quali `e caratterizzata da un peso. Pi` u precisamente, un segnale xi all’ingresso delle connessioni x del neurone k `e moltiplicato per il peso della connessione wki che pu`o assumere sia valori positivi che negativi; • un addizionatore che somma i segnali d’ingresso opportunamente pesati; l’operazione descritta equivale ad una combinazione lineare; • una funzione di attivazione per limitare l’ampiezza dell’uscita del neurone. Tipicamente l’insieme di valori dell’uscita sono compresi nell’intervallo [0,1] o [-1,1]. In figura 4.4 sono elencate le pi` u comuni funzioni d’attivazione usata: – threshold : “funzione a scalino“ `e una funzione discontinua definita in 1 se x ≥ 0 f : R → R, f (x) = ; 0 se x < 0 57 4.5. Architettura di una rete neurale Figura 4.4: Comuni funzioni di attivazione – linear : `e una funzione lineare continua definita in f : R → R , f (x) = x; – gaussian: `e una funzione gaussiana con tipica forma a ”campana“ conti1 x−µ 2 nua definita in f : R → R , f (x) = √ 1 e− 2 ( σ ) ; 2πσ – sigmoid : funzione sigmoide continua definita in f : R → R , f (x) = 1 1+e−x Oltre agli ingressi, insieme all’addizionatore viene introdotto un segnale aggiuntivo denominato bias, la cui presenza permette di incrementare o diminuire il valore iniziale di ingresso della funzione di attivazione. 4.5 Architettura di una rete neurale I neuroni descritti nei paragrafi precedenti possono essere collegati in vari modi, al fine di ottenere varie architetture di ANN. Una rete neurale pu`o essere considerata come un grafo diretto o meno definito come A = (V, E), i cui vertici v ∈ V sono i neuroni e le e ∈ E sono le connessioni sinaptiche. V possiede tre sottoinsiemi: • unit` a di input: neuroni di ingresso in cui non `e associata nessuna funzione di attivazione, I ⊆ V ; • unit` a di output: neuroni di uscita con funzione di attivazione associata, O ⊆V; 58 4.5. Architettura di una rete neurale (a) Rete singola (perceptron) (b) Multilayer perceptron (M.L.P.) Figura 4.5: Caratteristica della rete neurale • unit` a nascoste: neuroni nascosti, si collocano fra i neuroni di ingresso e di uscita, anch’essi con funzione di uscita, H ⊆ V . Il grafo `e etichettato sia sugli archi che sui vertici: • le etichette degli archi sono i pesi e sono degli scalari w ∈ R; • le etichette dei nodi invece sono le funzioni di attivazione. Riassumendo l’architettura di una rete neurale pu`o essere descritta da (V,E,I,O,H) e dalle etichette {W } , {f ()}. 59 4.6. Dinamica di una rete neurale La rete neurale ad un livello (percettrone) `e vista come la disposizione pi` u semplice: essa consiste in un insieme di k neuroni indipendenti che vanno a formare un cosiddetto strato (o layer) che riceve in ingresso il vettore x = [x1 ..x1 ] e restituisce direttamente un vettore in uscita o = [o1 ..o1 ] (figura 4.5(a)) Nel percettrone multi livello (MLP), invece, sono presenti pi` u strati connessi tra loro come si nota dalla figura 4.5(b), composta da un livello di ingresso (input layer), da un certo numero di livelli nascosti (hidden layers) e infine da un livello di uscita (output layer). 4.6 Dinamica di una rete neurale Dopo aver descritto l’architettura di una ANN, passiamo a descrivere la sua dinamica. Per dinamica intendiamo descrivere come il segnale si propaga attraverso la rete: 1. la rete riceve un input un vettore di dati X = (x1 , .., xd ). La ANN deve avere d input units, con cardinalit`a |I| = d e xi che `e l’input per la input-unit i-esima; 2. le input-units non trasformano il segnale, ma lo inviano lungo le connessioni in uscita verso altri neuroni, oi = xi ∀i = 1, ..., d; 3. nell’attraversare la connessione con peso w il segnale oi subisce una trasformazione, tipicamente una moltiplicazione oi → wo; 4. una generica unit`a j in H ∪ U , riceve dunque tanti segnali w1 o1 , w2 o2 , ..., wn on cio`e quante sono le sue (n) connessioni in ingresso, si possono verificare du casi: (a) la funzione attivazione associata all’unit`a j `e scalare, f : R → R. In questo caso si calcola l’input, chiamato aj , come somma pesata dei segnali in ingresso: attivazione ⇒ aj = Pn i=1 (wi oi ) e si applica f (); uscita dalla unit` a j ⇒ oj = f (aj ) che viene a sua volta propagato alle unit`a successive; 60 4.7. Apprendimento di una rete neurale Figura 4.6: Dinamica di una ANN (b) la f () associata `e del tipo f : Rn → R. Allora si applica la f () al vettore a = (w1 o1 , w2 o2 ..., wn on ) e si ottiene l’uscita: oj = f (a). Il segnale si propaga attraverso la rete secondo le precedenti regole (2) e (3) fino ad arrivare alle unit`a di output. Sia k una tale unit`a, k ∈ O. Il valore ok si assume come output k-esimo della rete (figura 4.6). Se la ANN ha m output-units, si conbinano le uscite in un unico vettore di output m dimensioni y = (y1 , ..., yk , ..., ym ). 4.7 Apprendimento di una rete neurale Dopo aver specificato l’architettura e la dinamica di una rete neurale, il percorso continua introducendo la caratteristica principale delle ANN: l’apprendimento. Le ANN apprendono tramite un insieme di esempi chiamato training-set τ . Le istanze di apprendimento (learning) sono tre: © ª 1. apprendimento supervisionato τ = (x, y) 2. apprendimento non supervisionato τ = {x} 3. apprendimento per rinforzo τ = o n x1 , x2 , ..., (xt , y), xt+1 , ...y , di tanto in tanto viene dato un segnale di rinforzo (premio o penali`a). L’apprendimento `e inteso come un processo di progressiva modifica dei pesi in modo da evitare la semplice ”memorizzazione“ degli esempi proposti, bens`ı da ot- 61 4.8. BackPropagation Figura 4.7: Algoritmo BackPropagation tenere l’inferenza della legge (universale) contenente sui dati, in modo da poterla generalizzare a nuovi dati mai visti durante il training (capaci`a di generalizzazione). 4.8 BackPropagation L’algoritmo di apprendimento per le ANN nel caso supervisionato `e la BackPropagation, la sua denominazione deriva dalla modalit`a con cui riesce ad aggiornare i pesi. L’algoritmo di apprendimento del percettrone semplice prevede, sempre considerando l’addestramento supervisionato mediante training set, un aggiustamento del vettore dei pesi sulla base dell’errore commesso dalla rete. Questo procedimento non `e immediatamente applicabile alla rete neurale multistrato in quanto `e evidente la diversa architettura neurale. La dificolt`a che si incontra con le reti neurali multistrato `e quello di aggiornare i pesi degli strati nascosti (hidden layers) nei quali non conosciamo il comportamento a priori, non sappiamo quali valori ricevono in input dalle unit`a dello strato inferiore n`e quali output inviano alle unit`a dello strato superiore. Tali livelli intermedi, d’altra parte, contribuiscono il calcolo dell’output ed hanno una loro parte di ”responsabilit`a“ per l’errore commesso. L’algoritmo BackPropagation consiste in due fasi principali: 1. forward : l’esempio viene presentato al livello di ingresso della rete, propagando il segnale nei vari livelli, fino a generare l’uscita; 62 4.8. BackPropagation 2. backward : l’errore commesso dal livello di uscita viene retropagato all’indietro sulla rete neurale modificando i pesi delle connessioni dei vari strati. 4.8.1 Dimostrazione La BackPropagation `e un algoritmo di aggiornamento dei pesi funzionante tramite la discesa del gradiente, una tecnica di ottimizzazione di tipo locale che data una funzione matematica multidimensionale consente di trovare un minimo locale di essa. © ª Consideriamo di avere a disposizione un insieme di traing τ = (x, yˆ) : t = 1, ..., n (dove x indica il vettore in input e y il vettore in uscita desiderata), e una ”criterior function“ C(τ, w) che sar`a la funzione da minimizzare. m 1X C(τ, w) = (ˆ yi − yi )2 2 i=1 (4.1) Per aggiornare un peso generico w nelle rete neurale usiamo la discesa del gradiente in questo modo: w0 = w + 4w (4.2) ∂C dove 4w = −η ∂w la η `e il ”learnig rate“, una costante che modifica il raggiungimento di un minimo. Per questo motivo un learning rate piccolo render`a un pi` u preciso apprendimento, ma a sua volta la funzione rimarr`a pi` u facilmente intrappolata in minimi locali. Al contrario un learning rate troppo grande salter`a facilmente minimi locali (eventualmente fuori dal suo bacino di attrazione) ma pu`o rendere l’apprendimento instabile non garantendo la convergenza. Indicheremo fi (ai ) la funzione di attivazione associata all’unit`a i-esima. Assumiamo che la rete neurale sia composta da da l layer, chiamando L0 l’input layer, L1 , ..., Ll−1 gli hidden layer e con Ll l’output layer. Scriveremo k ∈ Lj per rifersi all’unit`a k-esima del layer Lj . ∂C Calcoliamo 4w = −η ma, prima di tutto per far questo dobbiamo distinguere ∂w due casi. 63 4.8. BackPropagation Caso A Questo caso si riferisce a un peso w relativo all’output layer, w = wij dove j ∈ Ll−1 e i ∈ Ll . ∂C = ∂wij = Concentriamoci su ∂ ∂wij 1 2 © 1 Pm ª yk k=1 (ˆ − yk )2 ∂ yk k=1 ∂wij (ˆ − yk )2 2 Pm = 1 ∂ (ˆ yk 2 ∂wij = ∂yi −(ˆ yk − yk ) ∂w ij ∂yi = ∂wij ∂fi (ai ) ∂wij − xk )2 ∂yi : ∂wij ∂fi (ai ) ∂(ai ∂ai ∂wij = = fi0 (ai ) ∂w∂ij P k wik ok fi0 (ai )oj = rimettendo tutto insieme diventa: 4wij = η(ˆ yi − yi )fi0 (ai )oj (4.3) Quindi se wij con j ∈ Ll−1 e i ∈ Ll l’equazione per l’aggiornamento dei pesi `e l’equazione 4.3, da cui ponendo: δi = (ˆ yi − yi )fi0 (ai ) (4.4) 4wij = ηδi oj (4.5) possiamo scrivere: dove ricordiamo oj = fj (aj ). 64 4.8. BackPropagation Caso B Questo caso si riferisce a un peso wjk relativo all’hidden layer, con j ∈ Ll−1 e ∂C k ∈ Ll−2 . Come nel caso precedente calcoliamo 4wjk = −η ∂wjk ª 2 (ˆ y − y ) i i i=1 2 © ª ∂oj P yi − yi )2 ∂wjk = ∂o∂ j 12 m i=1 (ˆ n P o ∂oj m 1 ∂ 2 = yi − yi ) ∂wjk i=1 ∂oj (ˆ 2 n P o ∂oj ∂yi = − m (ˆ y − y ) i i i=1 ∂oj ∂wjk ∂C = ∂wjk concentriamoci su ∂ ∂wjk © 1 Pm ∂yi : ∂oj ∂yi ∂fi (ai ) ∂ai = ∂ai ∂oj ∂oj P = fi0 (ai ) ∂o∂ j j wij oj = fi0 (ai )wij rimettendo tutto insieme: P ∂C ∂oj = {− m yi − yi )fi0 (ai )wij } ∂wjk i=1 (ˆ ∂wik vediamo che all’interno di questa formula compare il δi dell’equazione 4.4, riscrivendo in base a questa considerazione: P ∂C ∂oj = −( m i=1 δi wij ) ∂wjk ∂wik analizziamo questo rapporto ∂oj : ∂wjk 65 4.8. BackPropagation ∂oj ∂fj (aj ) ∂aj = ∂aj ∂wjk ∂wik P = fj0 (aj ) ∂w∂jk k wjk ok fj0 (aj )ok = con questo ultimo risultato possiamo incorporare il tutto e trovare: 4wjk = η Ã m X ! fj0 (aj )ok δi wij (4.6) i=1 da cui ponendo: δj = Ã m X ! δi wij fj0 (aj ) (4.7) i=1 possiamo scrivere: 4wjk = ηδj ok (4.8) che `e in forma identica a l’equazione 4.5. Conclusione Concludiamo dicendo che `e possibile trovare una formula finale capace di essere valida per qualunque layer. Questa formula possiamo scriverla: 4wjk = ηδj ok con: (ˆ yj − yj )fj0 (aj ) ´ δj = ³Pm 0 i∈Lk+1 δi wij fj (aj ) se j ∈ Ll se j ∈ Lk , (4.9) k = l − 1, ..., 0 Il risultato finale `e che possiamo applicare la stessa funzione di aggiornamento dei pesi a patto di modificare in modo opportune il δj . Il risultato dell’equazione 4.9 spiega come la BackPropagation `e stata formata. Infatti una volta presentato l’esempio alla rete neurale viene calcolato un primo δ per poi retropagarlo all’indietro verso la rete generando tanti altri δ locali. 66 4.9. Criteri di arresto 4.9 Criteri di arresto Durante l’addestramento di una rete neurale `e necessario trovare dei criteri capaci di arrestare in modo corretto l’algoritmo. Non `e sempre possibile trovare un minimo assoluto per la BackPropagation e per non dover far reiterare inutilmente introduciamo dei possibili criteri d’arresto: • dopo un prefissato numero di epoche (un’epoca `e uguale ha un ciclo completo su tutti gli esempi del training-set); • quando l’errore C scende sotto una certa soglia, C < ²; • quando il ”guadagno“, 4C tra un epoca e la successiva scende sotto una certa soglia, 4C < ²; • verifica tramite cross validation la capacit`a di generalizzazione, questa procedura `e il processo attraverso il quale si controlla l’andamento dell’errore su dati non noti alla rete (si predispone un nuovo insieme chiamato validatio-set contenente esempi diversi dal trining-set) per fermare il training quando l’errore su tali dati comincia a crescere (figura 4.8). 4.10 Ruoli ricoperti dalle ANN Le reti neurali artificiale possono essere usate per risolvere diverse problematiche: © ª • approssimazione funzionale: τ = (x, y) y = σ(x), si addestra la rete in modo da approssimare la funzione tale da, dato in ingresso x, restituire y; © ª • regressione (lineare o nonlineare): τ = (x, y) y = σ(x) + ² con ² = N (z; 0, 1), si addestra la rete in modo da approssimare la funzione effettuando anche una ”ripulitura” del rumore di tipo gaussiano; © ª • classificazione: τ = (x, g(x)) dove g(x) = (g1 (x), g2 (x), ..., gc (x)), si addestra la rete per essere in grado di classificare correttamente i pattern relativi a classi g(xi ) differenti. 67 4.11. Autoassociatore Neurale Figura 4.8: Grafico di confronto fra la curva di apprendimento del training-set e quella di validazione del validation-set, il punto in cui le due curve divergono caratterizza il momento in cui la rete se ulteriormente addestrata si caratterizza solo sugli esempi di training perdendo in generalizzazione 4.11 Autoassociatore Neurale Un autoassociatore neurale `e una particolare rete multistrato avente un numero di uscite uguale al numero degli ingressi. Con questa caratteristica l’autoassociatore viene addestrato in modo da riprodurre sulle uscite il vettore di ingresso cercando di minimizzare la norma quadratica del vettore differenza. Si possono individuare due tipi di autoassociatori diversi: 1. compressa: se il numero di neuroni nascosti `e inferiore alle componenti dell’ingresso, l’attivazione dei neuroni nascosti rappresenta una rappresentazione compressa dell’ingresso, in cui i pesi dagli ingressi ai neuroni nascosti rappresentano i parametri per comprimere l’ingresso; invece quelli dai neuroni nascosti alle uscite definiscono la decompressione della rappresentazione nello strato nascosto; 2. espansa: se il numero di neuroni nascosti `e superiore alle componenti dell’ingresso. Questo caso risulta in modo contrario rispetto al precedente, poich´e i pesi tra input e hidden layer rappresentano i parametri per espandere l’ingres- 68 4.11. Autoassociatore Neurale Figura 4.9: Esempio di autoassociatore con tre neuroni in ingresso e uscita e due neuroni nello strato nascosto so, mentre quelli dai neuroni nascosti alle uscite definiscono la compressione della rappresentazione nello strato nascosto. Gli autoassociatori possono essere utilizzati come classificatori, infatti riescono ad associare bene solo vettori provenienti dalla distribuzione dei dati con cui sono stati addestrati. In altre parole una volta addestrato con dati presi da certa distribuzione, l’autoassociatore rappresenta un prototipo per tale classe. Per verificare se un vettore appartiene ad una classe di cui l’autoassociatore `e il modello (o prototipo) basta calcolare semplicemente la distanza fra il vettore di ingresso e l’uscita prodotta. 4.11.1 Funzionamento di un’autoassociatore L’autoassociatore viene addestrato in modo tale da forzare l’ingresso e renderlo uguale all’uscita, permettendo cos`ı di approssimare una certa classe, in altre parole creare un prototipo che riesca a decidere se un certo esempio appartiene alla classe da cui `e stato addestrato oppure no. L’addestramento viene effettuato tramite BackPropagation, il training-set `e costituito solamenta da τ = {x} cio`e solo l’ingresso. ` necessario calcolare una soglia di discriminazione s che pu`o essere definita E una volta che l’autoassociatore `e stato addestrato tramite un insieme di validazione (esempi non compresi nel traing-set), generando una distribuzione di distanze. 69 4.11. Autoassociatore Neurale Figura 4.10: Classificazione con un autoassociatore Semplicemente la soglia di discriminazione s pu`o essere calcolata tramite una media aritmetica dalle distanze generate dall’insieme di validazione. Vediamo ora come verificare l’appartenenza di una classe: • presentare l’esempio in ingresso all’autoassociatore; • calcolare la distanza d fra il vettore di ingresso e l’uscita prodotta; • l’esempio `e appartenente alla classe se la distanza d `e minore della soglia s, altrimenti se d `e maggiore di s non viene riconosciuto. 4.11.2 Superfici di decisione Si dimostra che le superfici di decisione definite da un autoassociatore sono chiuse. L’algoritmo BackPropagation utilizzato per l’apprendimento di un autoassociatore cerca di minimizzare la norma quadratica del vettore differenza fra ingresso e uscita. L’apprendimento di ogni autoassociatore pu`o essere effettuato utilizzando solo esempi della classe a cui corrisponde. Per migliorare le prestazioni si possono anche introdurre nell’insieme dei dati usati per l’apprendimento anche esempi negativi 70 4.12. Radial Basis Function in genere appartenenti a quelle classi che pi` u si confondono con quella che si deve riconoscere. Una tecnica usata al fine di ottenere l’effetto di avere una cattiva associazione sugli esempi negativi `e quella di utilizzare come costo per tali esempi il reciproco della distanza. Quindi nell’algoritmo di apprendimento si avranno due casi: 1. esempio positivo: m 1X |yi − xi |2 2 i=1 (4.10) dove yi e xi indicano rispettivamente l’uscita e l’ingresso dell’autoassociatore, m indica il numero di neuroni sia di ingresso che di uscita; 2. esempio negativo: m 1X 1 1 | − |2 2 i=1 d0 + y i d0 + xi (4.11) dove yi e xi indicano rispettivamente l’uscita e l’ingresso dell’autoassociatore, m indica il numero di neuroni sia di ingresso che di uscita e d0 rappresenta una costante di ”guardia” per prevenire l’overflow. Quindi rispetto alla BackPropagation standard viene modificata la criterio function 4.1, lasciandola inalterata nell’esempi positivi, cambiandola invece quando si hanno esempi negativi. Il costo per gli esempi negativi espresso con il reciproco della distanza `e tanto minore quanto pi` u distante `e il vettore associato dalla rete rispetto al vettore di ingresso, questo garantisce l’ottenimento di curve di decisione pi` u ristrette. Come vediamo in figura 4.11 l’inserimento nel traing-set di esempi negativi garantisce una modellazione pi` u definita della superficie di decisione rispetto a quella risultante da traing-set con esempi solo positivi. 4.12 Radial Basis Function Le RBF (Radial Basis Function) sono reti neurali multistarto con la caratteristica di avere nello strato di hidden neuroni con funzione di attivazione a base radiale (gaussiane). 71 4.12. Radial Basis Function Figura 4.11: Apprendimento e superfici di decisione per un autoassociatore addestrato con e senza esempi negativi Data questa speciale caratteristica di avere neuroni di tipo radiale, la RBF `e in grado di riconoscere pattern “clusterizzati”, cio`e di riconoscere esempi raggruppati in insiemi simili. Molti problemi di classificazione presentano dati in ingresso concentrati attorno ad un insieme di “centroidi” (punti medi dei cluster), che possono essere correttamente riconosciuti tramite questo tipo di rete neurale. 4.12.1 Struttura dell’RBF La struttura di una RBF e costituita nel seguente modo: • un input layer, nel quale non `e associato nessuna funzione di attivazione; • un solo hidden layer costituito da neuroni con attivazione a base radiale; • un output layer costituito da neuroni con funzioni di attivazioni lineari o sigmoidali. Vediamo la dinamica di questo particolare tipo di rete neurale con k neuroni di hidden e m neuroni di output figura 4.12. 72 4.12. Radial Basis Function Figura 4.12: Esempio di una Radial Basis Function Consideriamo con x l’ingresso alla RBF, con wik il peso tra il neurone di hydden e l’uscita, il risultato yi dell’i-esimo neurone di uscita sar`a: yi = k X wik ϕk (x) (4.12) j=1 Questo modello di rete neurale presuppone il calcolo dell’attivazione dei neuroni a base radiale, vediamo come `e la ϕk (x): − ||x − µk ||2 ϕk (x) = e dove µk e σk 2σk2 (4.13) sono rispettivamente media e varianza della gaussiana nel neurone k-esimo. La RBF quindi pu`o essere addestrata tramite BackPropagation, inquanto tutte le funzioni coinvolte sono differenziabili. 4.12.2 Superfici di decisione Si dimostra che una RBF con un numero sufficiente di neuroni hidden a base radiale, `e in grado di modellare in maniera ottima insiemi di apprendimento separabili per ipersfere (iperellissoidi). Come vediamo in figura 4.13, la RBF tramite i neuroni a base radiale riescono 73 4.12. Radial Basis Function Figura 4.13: Superfici di separazione di una Radial Basis Function a simulare un campo recettivo localizzato per mezzo di ipersfere. Queste ipersfere vengono create durante l’apprendimento, infatti i pesi wi approssimano le posizioni dei centroidi e le µi approssimano il raggio dell’ipersfera. La situazione finale `e quella in cui tutti gli iperellissoidi sono centrati in una classe che verr`a in seguito individuata nel momento del riconoscimento. 74 Capitolo 5 Prodotto commerciale: R Biopassword° In questo capitolo introduciamo il funzionamento di un prodotto commerciale per il riconoscimento di una persona tramite tempi di digitazione da tastiera. Il prodotto R si chiama Biopassword° , realizzato dalla societ`a americana Biopassword Inc. ([14]). La tecnologia utilizzata per il funzionamento del programma `e chiamata “keystroke dynamics”, sviluppata e perfezionata in cinque anni di ricerca alla Pennsylvania State University and Louisiana Tech. 5.1 Keystroke dynamics R Il funzionamento del sistema biometrico Biopassword° `e permesso grazie alla “key- stroke dynamics”. Questa tecnica non `e altro che lo stile di battitura (capitolo 3), cio`e tramite il prelevamento dei tempi di digitazione dei tasti risultante dall’immissione dei normali dati identificativi: username e password. In particolare i parametri utilizzati dal sistema Biopassword sono: 1. dwell time: tempo trascorso dal momento della pressione di un tasto e il suo rilascio; 2. flight time: tempo trascorso dal momento del rilascio di un tasto e la pressione del successivo; 75 5.2. Biometric Template R Figura 5.1: Parametri utilizzati dal sistema Biopassword° 3. alternative flight time: tempo trascorso dal momento della pressione di un tasto e il rilascio del successivo. Quindi questi parametri vengono memorizzati e utilizzati in un secondo momento per la creazione del prototipo necessario per il riconoscimento e la verifica delle credenziali. 5.2 Biometric Template Il cuore di questo sistema biometrico consiste nel creare (partendo dai dati percepiti) un “template” che caratterizzera solamente la persona in questione. Per la parola “template“ si indica l’insieme di tutte le caratteristiche estratte dalla digitazione da tastiera. Durante la fase di acquisizione dei dati, Biopassword accetta un minimo di otto caratteri per parola anche se ne sono raccomandati dodici. Il template viene generato durante una fase di apprendimento che consiste nel digitare un determinato numero di volte la conbinazione di username e password. In figura 5.2 vediamo il template costruito per un utente tramite la raccolta dei tempi provenienti dalla digitazione della parola ”biopassword“. Una volta creato un template si passa alla verifica di quanto appreso durante l’addestramento dell’username e password. Infatti il protipo costruito permette di capire se l’utente che cerca di accedere al programma `e realmente quello che ha effettuato l’addestramento. In fase di verifica si effettua una comparazione tra il tem- 76 5.2. Biometric Template Figura 5.2: Esempio di template per la parola ”biopassword“ (a) Accesso corretto (b) Accesso negato Figura 5.3: Esempi di comparazione del template plate salvato in archivio e il template creato nel momento dell’accesso al programma. In questa operazione `e importante il ”biometric score“, cio`e il valore trovato dalla comparazione dei due template. Questo valore `e il responsabile della decisione del corretto accesso oppure del rifiuto dell’utente. Analizziamo i due esempi, in figura 5.3(a) vediamo in verde il template salvato in archivio per la parola ”biopassword“ dell’utente A, in blu vediamo il templa` facile verificare te generato sempre, dal solito utente, in un secondo momento. E che quest’ultimo template rimane all’interno del prototipo generato indicando che l’utente `e stato riconosciuto. In figura 5.3(b) vediamo in verde il template salvato in archivio per la parola 77 5.3. Funzionamento ”biopassword“ dell’utente A e in rosso invece il template generato sempre con la stessa parola ma effettuata da un utente B. In questo caso la linea rossa non rimane all’interno delle due linee verdi, seguendo un andamento completamente diverso, indicando che l’utente che ha digitato la parola `e diverso. Lo stile di digitazione di una persona pu`o variare nel tempo, ecco per questo che Biopassword utilizza reti neurali per adattare il template nel tempo. In pratica si cerca di raffinare nel tempo il prototipo originale durante gli accessi al programma effettuati in modo positivo, cio`e quando l’utente viene riconosciuto. 5.3 Funzionamento Il funzionamento di Biopassword non richiede nessun hardware aggiuntivo particolare, basta solamente una postazione di lavoro con un semplice computer. Il funzionamento generale consite in due fasi princiapeli: 1. addestramento: durante questa fase viene chiesta per 15 volte di inserire la username e la password, utilizzate per costruire il template dell’utente in questione; 2. verifica: finita la fase di addestramento, il sistema `e pronto per essere utilizzato, basta inserire la username e la password e verificare se l’accesso `e stato effettuato correttamente. 5.4 Versioni Le versioni di questo prodotto sono due (figura 5.4): R R 1. Enterprise Edition: si installa su Microsoft° Windows° Server, serve per accedere ai client nel dominio di competenza del server; R R 2. Internet Edition: si installa sempre su macchine server Microsoft° Windows° , ma in questo caso il sistema si colloca sul Web ad esempio per autenticarsi in una sessione di e-commerce sul proprio portale. 78 5.4. Versioni Figura 5.4: Biopassword Enterprise e Internet Edition 5.4.1 Enterprise Edition Questa versione si installa su un server Microsoft Windows, applicabile a una rete aziendale. I client del dominio, sempre con sistema operativo microsoft, risulteranno con la normale schermata di login modificata dal programma Biopassword. Gli utenti che devono accedere al client dovranno, durante il primo accesso, digitare 15 volte username e password, dopodich´e potranno entrare solamente se riconosciuti dal programma di verifica. In figura 5.5(a) vediamo la sessione di addestramento di un utente con il login di Windows 2000 modificato da Biopassword. Nel lato server invece il programma ha un utility con cui possiamo verificare quanti utenti hanno creato correttamente il proprio template e modificare i livelli di sicurezza per gli accessi. In figura 5.5(b) vediamo l’utility di Biopassword accessibile solamente dal server da cui `e possibile modificare le impostazione dei singoli utenti. 5.4.2 Internet Edition Questa versione si installa su server Microsoft Windows, interagendo su tutte le applicazioni web, aumentandone il livello di sicurezza. Ad esempio se abbiamo installato sul server un portale con la posibilit`a di acquistare prodotti on-line, Bio- 79 5.4. Versioni (a) Schermata del login di Windows 2000 (b) Utility di configurazione user modificato da Biopassword Figura 5.5: Enterprise Edition password predispone con la sua applicazione l’aumento del livello di sicurezza nella fasi di login. Questa versione mette a disposizione un login scritto in flash, capace di prelevare i tempi di digitazione sia della username che della password. Il programma `e quindi compatibile con tutti i browser che supportano la tecnologia flash. La versione Internet Edition mette a disposizione anche le Api necessari al Web Service per l’elaborazione e la generazione dei template degli utenti. In figura 5.6 `e descritto il funzionamento di Biopassword Internet Edition. Figura 5.6: Schema funzionamento autenticazione 80 5.4. Versioni I passi fondamentali sono l’inserimento della username e della password, dopodich´e i dati vengono passati al servizio di autenticazione, responsabili dell’elaborazione e della creazione dei template. 81 Capitolo 6 Creazione di un nuovo software: Neural Password Control La sicurezza informatica `e oggi al centro di molte attenzioni, incentivata anche dall’aumento delle potenzialit`a di internet e dei suoi utenti, grazie a questo si evidenzia un continuo aumento di frodi spesso provenienti dalla clonazione di password che permettono l’accesso ad informazioni riservate. Una possibile soluzione a questo problema pu`o essere l’introduzione di un controllo che ha come fine rendere esclusivo l’accesso ai propri dati. In questo modo possiamo riconoscere il vero proprietario della password dal modo in cui viene digitata, impedendo a quei soggetti che si sono furbescamente impossessati di password altrui, la visione di pagine web riservate. Questo progetto nasce come mezzo di studio di un riconoscitore biometrico di password ed ha come fine verificare la funzionalit`a di tale strumento realizzato tramite reti neurali. 6.1 Introduzione La biometria durante il passare degli anni ha prodotto decine di soluzioni molto interessanti per la sicurezza, il riconoscimento di una persona tramite il suo stile di battitura da tastiera `e uno di questi. Questo tipo di riconoscitore biometrico continua per`o ad essere poco considerato. Un primo tentativo di commercializzazione `e 82 6.2. Descrizione del sistema stato tentato da Biopassword Inc. capace con il suo prodotto di rendere pi` u sicuro un classico accesso tramite username e password. Lo scopo di questa tesi `e quello di creare un sistema capace di riconoscere il vero propietario cercando di prelevare informazioni solamente dai tempi di digitazione della password. Come descritto nel capitolo 5 il sistema BioPassword usa come strumento di riconoscimento delle caratteristiche biometriche i “template” dei tempi di digitazione cercando di fare una comparazione per decidere l’accesso corretto o meno. Il sistema che andremo a descrivere avr`a come strumento di riconoscimento le reti neurali, in particolare la struttura nota come “autoassociatore” (paragrafo 4.11). Per maggiori informazioni sul codice sorgente `e possibile consultare l’Appendice A. 6.2 Descrizione del sistema Il sistema `e stato sviluppato su interfaccia Web, con la possibilit`a di accederci per mezzo di un semplice browser HTML. La struttura del sistema si suddivide in due parti: 1. client: formata da una pagina HTML con incluso un applet Java, capace di prelevare i tempi dalla digitazione della password; 2. server: formata da pagine scritte in linguaggio PHP con l’appoggio di un database Mysql, per la creazione e gestione dei parametri generati dallo stile di digitazione della password e di un programma in linguaggio C per l’addestramento e la verifica di un autoassociatore. 6.2.1 Client La struttura del client `e costituita da una pagina HTML in cui all’interno viene fatto ` necessaria la tecnologia Java, inquanto per prelevare eseguire un applet Java. E i tempi di digitazione della password si deve possedere un programma capace di essere eseguito nella macchina client. Di pers`e una pagina HTML non `e in grado 83 6.2. Descrizione del sistema di restituirci i valore di pressione e rilascio di un tasto. Dunque integrando nelle pagina web un applet scritto in Java, riusciamo in prima istanza a far eseguire un programma capace di captare quando un tasto viene premuto e rilasciato. Usando la tecnologia Java riusciereme anche a far funzionare l’applet su tutti i sistemi operativi, questo `e garantito grazie all’impiego della virual Java machine. L’applet presente `e formato da due campi dati: 1. name: in cui `e possibile digitare il nome (non viene prelevato nessun tempo); 2. password: in cui `e possibile digitare la password. Durante la digitazione viene prelevato la pressione e il rilascio in millesecondi dei tasti premuti. Il funzionamento dell’applet Java `e stato possibile grazie all’utilizzo del metodo Keylistener, mettendoci a disposizione l’eventi Keypressed e Keyrelease, che in ordine catturano la pressione e rilascio di un tasto. Una volta trovato l’istante di pressione e rilascio del tasto, costruiamo le seguenti informazioni: • pressione: salviamo in una variabile : P − 65 − 123456|, dove P indica il tasto premuto, il primo valore numerico (65) indica il codice ASCI della lettera (corrispondente in questo caso alla A) mentre il secondo valore numerico (123456) `e il timestamp, “−” e “|” sono costanti di delimitazione; • rilascio: salviamo in una variabile : R − 65 − 123456|, dove R indica il tasto rilasciato, il primo valore numerico (65) indica il codice ASCI della lettera (corrispondente in questo caso alla A), mentre il secondo valore numerico (123456) `e il timestamp, “−” e “|” sono costanti di delimitazione; Ecco un esempio di stringa risultante dalla digitazione di due tasti: P −67−1164272192460|R−67−1164272192535|P −73−1164272192710|R−73−1164272192785| (6.1) I timestamp rappresentano una data (istante di tempo), ricavata da un valore in millisecondi calcolato a partire dal 1 gennaio 1970 alle ore 1:00, `e una funzionalit`a messa a disposizione dal linguaggio Java. Una volta formata la stringa piena di 84 6.2. Descrizione del sistema Figura 6.1: Login di Neural Password Control informazioni sulla password digitata, inviamo quest’ultima tramite form HTML al server. Per un corretto funzionamento dell’applet durante la digitazione della password bisogna evitare di catturare tasti speciali (esempio: tasti funzione F1..F12, PgUp, ecc..), infatti per fare questo si utilizzano i tasti virtuali, variabili di classe definite nella classe KeyEvent. I tasti virtuali permettono di rendere indipendente il codice Java dalla piattaforma (tastiere diverse possono generare valori numerici diversi per lo stesso tasto), permettendo di filtrare tasti particolari per qualsiasi tipo di tastiera. La password inoltre non pu`o essere modificata durante la digitazione, infatti se proviamo a modificare un carattere, automaticamente l’applet azzerer`a il campo costringendo l’utente a ridigitare tutto da capo. 6.2.2 Server Descriviamo ora il funzionamento del server. In primo luogo la sua implementazione si divide in tre parti: 1. estrazione delle feature: si costruisce i parametri (flight time, ecc.) a partire dalla stringa ricevuta dal client. Per fare questo si usa uno script scritto in PHP ; 2. autoassociatore: si usa una libreria1 [19] scritta in linguaggio C capace di addestrare e testare un autoassociatore neurale; 1 realizzata da Marco Maggini, professore associato Universit` a degli studi di Siena, Dipartimento di Ingegneria dell’Informazione. 85 6.2. Descrizione del sistema Figura 6.2: Esempio risposta server Neural Password Control 3. gestione utenti: scritto in PHP con l’uso di un database Mysql, in grado di creare, eliminare, modificare e visualizzare tutte le informazioni riguardanti gli utenti. Estrazione delle feature Il server una volta ricevuta la stringa contenente le informazioni dei tasti premuti e rilasciati che formano la password, calcola quattro tempi: 1. dwell time; 2. flight time; 3. alternative flight time; 4. interval time. Il procedimento per la costruzione dei parametri `e il seguente: basta scorrere la stringa, tenere traccia del timestamp del tasto premuto e trovare subito dopo il corrispondente timestamp del medesimo tasto rilasciato. Una volta individuate la corrispondenza premuto-rilasciato per ogni tasto il tutto viene salvato all’interno di un file. 86 6.2. Descrizione del sistema Autoassociatore Usando la libreria per Autoassociatori Neurali, costruiamo tre programmi: 1. train: addestra un autoassociatore neurale; 2. test: utilizza un autoassociatore neurale come classificatore; 3. genauto: permette di generare un autoassociatore con i pesi inizializzati in modo casuale nell’intervallo [−0.1, 0.1]. Il programma genauto ci permette di generare un file ASCI contenente le informazioni necessarie a definire la topologia della rete ed il valore dei pesi sulle connessioni. Sulla prima riga il file contiene i due parametri che definiscono univocamente la struttura dell’autoassociatore: il numero di ingressi e il numero di neuroni nascosti. Sulle righe successive si trovano i pesi delle connessioni. Il file ha estensione .ann e ne viene generato uno solo, in quanto utilizzeremo la stessa topologia di rete per ogni utente. I programmi train e test accettano in ingresso un file contenente gli esempi da classificare riga per riga costruiti secondo il seguente formato: < nomedelpattern > c1 c2 ..... cN < classe > dove il nome del pattern `e una stringa non contenente spazi che `e utilizzata per identificare l’esempio (non `e richiesto che sia univoca), le ci sono le componenti del vettore di ingresso separate da spazi (i tempi generati a partire dalla password). La classe `e un’etichetta che pu`o assumere i valori P (maiuscola necessariamente) ad indicare un esempio positivo o N (maiuscola necessariamente) ad indicare un esempio negativo. L’utilizzo del programma train consente di addestrare la rete a partire da esempi proposti in ingresso, eseguendo l’apprendimento in modo automatico e arrestandosi quando viene verificato uno dei seguenti criteri: • la massima componente del gradiente scende sotto una soglia (al disotto di una precisione pari a 10−30 ) 87 6.2. Descrizione del sistema Figura 6.3: Informazioni visualizzate durante l’apprendimento dell’autoassociatore • il costo normalizzato scende sotto un valore prefissato (il valore `e 0.001) • `e stato raggiunto il numero massimo di epoche (1000 epoche) • il learning rate `e sceso sotto un valore di soglia (al disotto di una precisione pari a 10−30 ) Durante l’esecuzione dell’apprendimento (figura 6.3) per ogni epoca vengono visualizzati i seguenti parametri: • Epo: il numero dell’epoca corrente; • NTSS: `e il costo medio (costo/numero di esempi); • Gnorm: `e la massima componente del gradiente; • LrnRate: `e il tasso di apprendimento (learning rate); • PmaxD: `e la massima distanza ingresso-uscita per gli esempi positivi; • Pos: `e il numero di esempi positivi classificati correttamente (utilizzando una soglia di 5); 88 6.3. Parametri autoassociatore • NminD: `e la distanza ingresso-uscita minima per gli esempi negativi; • Neg: `e il numero di esempi negativi classificati correttamente (distanza ingressouscita superiore a 5); La soglia a 5 usata per la classificazione `e del tutto arbitraria e serve solo per dare un’idea di come funziona la classificazione in linea generale. Quando il programma termina viene salvata la rete addestrata nel file final.ann. L’utilizzo del programma test viene eseguito specificando l’autoassociatore addestrato da usare come classificatore, il file dati contenente gli esempi che si vogliono classificare e il valore della soglia usata per la discriminazione. Il risultato dell’esecuzione `e memorizzato nel file primo.p cui sono riportate, una per riga, le distanze ingresso-uscita per ogni vettore del file con gli esempi. Per ogni utente creeremo una cartella all’interno del file system del server, in cui sar`a inserito tutti i parametri necessari al riconoscitore biometrico. L’autoassociatore diventer`a il prototipo capace di capire lo stile di battitura di una password, ne verr`a creato uno per ogni utente e addestrato in base alle caratteristiche di digitazione personali raccolte tramite il client. Gestione utenti Infine rimane da analizzare la gestione utenti, in pratica in questa sezione possiamo creare oppure modificare tutte le impostazioni riferite ad un utente. Sono visibile anche gli accessi effettuati dagli utenti in modo da analizzare le prestazioni del riconoscitore biometrico. 6.3 Parametri autoassociatore Passiamo ad analizzare i parametri generali che caratterizzano il Neural Password Control. Come prima cosa, durante la digitazione preleviamo i tempi di digitazione di sole sei lettere, accettando quindi in fase di registrazione di un utente password almeno di una tale lunghezza. La lunghezza minima di sei caratteri `e in accordo con 89 6.3. Parametri autoassociatore Figura 6.4: Schema Neural Password Control tutti i sistemi operativi esistenti, infatti sia sistemi Microsoft che Unix-like (Linux, Mac OS) richiedono una password formata almeno da tale specifica. I parametri che generiamo a partire dai tempi di pressione e rilascio dei sei tasti sono quattro: dwell time, flight time, alternative flight time e interval time. Poich`e questi parametri vengono calcolati utilizzando tempi che intercorrono fra un tasto e il suo successivo (vedere il paragrafo 3.4), abbiamo a disposizione i seguenti parametri: 5 (tasti) × 4 (parametri) = 20 quindi gli esempi salvati nel file saranno formati da un vettore di venti posizioni. L’autoassociatore dato la dimensione del vettore di ingresso sar`a formata anch’esso da venti neuroni di ingresso. Per addestrare la rete neurale in modo da utilizzarla come classificatore per ogni utente, viene richiesto di inserire venti volte la password, suddividendo quest’ultimi in diversi file nel seguente modo: • train.dat: contiene 12 esempi che serviranno per addestrare l’autoassociatore; • test.dat: contiene i rimanenti 8 esempi utilizzati per creare la soglia di decisione. IL file train.dat una volta ultimato viene dato insieme al file della rete neurale 90 6.3. Parametri autoassociatore con estenzione .ann al programma train, responsabile di effettuare l’addestramento della rete generando in uscita il file final.ann contenete i pesi della rete finale. Una volta addestrata la rete, si genera la soglia di decisione che sar`a utilizzata in fase di verifica per discriminare o meno l’utente. Per calcolare la soglia si usa il programma test, proponendo in ingresso ad esso il file test.dat e il file contente i pesi finali final.ann per poi restituire il file primo.p. Il file primo.p generato conterr`a il valore di otto distanze provenienti dalla norma quadratica fra il vettore di ingresso e di uscita dell’autoassociatore, la soglia sar`a data dalla media aritmetica di quest’ultime. A questo punto la rete `e stata addestrata correttamente e il sistema `e in grado di analizzare accessi futuri dell’utente. Schematizziamo i passi fondamentali dell’addestramento (come illustrato anche in figura 6.5): 1. raccolta di 20 esempi provenienti dai 6 caratteri della password suddivisi in: • 12 =⇒ salvati nel file train.dat; • 8 =⇒ salvati nel file test.dat; 2. addestramento della rete usando il train. I file utilizzati sono: (a) train.dat =⇒ contenente gli esempi; (b) inizio.ann =⇒ contenente la topologia dell’autoassociatore (20 neuroni in ingresso e un numero minore di 20 nello strato di hidden) e i rispettivi pesi random, precedentemente creata con genauto; 3. generiamo una sequenza di distanze usando il train. I file utilizzati sono: (a) test.dat =⇒ contenente gli esempi; (b) final.ann =⇒ contenente la topologia dell’autoassociatore e i rispettivi pesi generati dall’addestramento eseguito al passo 2 ; 4. prendiamo il file primo.p restituito dal passo 3 e facciamo la media aritmetica delle distanze calcolate. 91 6.3. Parametri autoassociatore Figura 6.5: Diagramma di flusso del Neural Password Control 92 6.3. Parametri autoassociatore Figura 6.6: Cartella utente nel server Nella cartella del server per ogni utente (figura 6.6) verranno salvati tutti i file illustrati fino ad ora e saranno quindi unici per ognuno di essi. Nel primo addestramento dell’autoassociatore usiamo solamente esempi positivi poich´e ancora non disponiamo di esempi negativi che saranno raccolti durante il funzionamento del sistema biometrico. Infatti una volta che il sistema incomincia a verificare le password dell’utente, si salvano gli accessi proposti in ingresso nel file storico.dat. Come possiamo vedere in figura 6.5 l’accessi riconosciuti vengono salvati come esempi positivi, l’accessi non riconosciuti vengono salvati come esempi negativi. Queste informazioni serviranno in un secondo momento eventualmente per raffinare l’addestramento inserendo anche esempi negativi. 6.3.1 Topologia autoassociatore Durante la descrizione dei programmi creati per gestire l’autoassociatore abbiamo menzionato la presenza di un file con estensione .ann contenente la tipologia della rete ma senza mai descrivere le sue caratteristiche. Come sappiamo ogni utente ha 93 6.4. Normalizzazione dei dati un unico e personale autoassociatore caratterizzato da un ingresso con 20 neuroni e un numero di neuroni minore di 20 nello strato nascosto. Il numero minore di neuroni nello strato nascosto rispetto a quello in ingresso diventa una sorta di rappresentazione compressa dell’ingresso stesso, riuscendo a far diventare l’autoassociatore un prototipo per tale classe. La scelta pi` u opportuna dopo vari tentativi sperimentali, `e stata quella di inserire un numero di 12 neuroni di hidden. Le prove sono state condotte inserendo un numero di neuroni di hidden variabile tra 6 e 18 neuroni, dimostrando che il valore 12 era quello che garantiva maggiore prestazioni in caso di riconoscimento e sicurezza. L’autoassociatore implementato nelle librerie usate, prevede funzioni di attivazione a tangente sigmoidale per lo strato nascosto e lineare per l’uscita. Riassumiamo quindi le caratteristiche complete dell’autoassociatore usato per il riconoscimento biometrico della password: • 20 neuroni di ingresso; • 20 neuroni di uscita con funzione di attivazione lineare; • 12 neuroni nello strato nascosto, funzione di attivazione a tangente sigmoidale. 6.4 Normalizzazione dei dati I parametri generati partendo dalla digitazione della password non sono immediatamente applicabili all’autoassociatore, poich´e i valori numerici sono alti e inadeguati. La soluzione a questo problema `e quello di effeture una normalizzazione di tutti i dati prevenuti in modo da portare l’intervallo dei valori numerici fra -1 e 1. Il rischio pi` u comune nell’utilizzare dati non normalizzati `e quello di saturare molto facilmente i neuroni della rete, portando il riconoscitore ad avere prestazioni non corrette. Il metodo di normalizzazione usato `e quello di prendere il massimo valore del parametro esistente per ogni esempio e dividerlo per i rimanenti. In figura 6.7 vediamo un esempio di normalizzazione dei parametri partendo dalla digitazione della parola “neural”. Il valore massimo restituito della sequenza 94 6.5. Modifica prestazioni autoassociatore Figura 6.7: Normalizzazione dei parametri di parametri `e 898, i dati rimanenti saranno quindi divisi per tale valore, restituendo un insieme di numeri compresi tra -1 e 1. 6.5 Modifica prestazioni autoassociatore Abbiamo visto come si effettua l’addestramento iniziale del sistema Biometrico usando i 20 esempi a disposizione ma abbiamo visto che durante il funzionamento `e possibile raccogliere anche esempi discriminandoli come positivi e negativi. Per mezzo di queste informazioni `e possibile aumentare le prestazioni dell’autoassociatore. Infatti introducendo nell’addestramento anche esempi negativi possiamo restringere la superficie di decisione riscontrando un migliorsmento nelle prestazioni generali del sistema. Gli esempi negativi in genere devono appartenere a quelle classi che pi` u si confondono con quella che si deve riconoscere e gli esempi raccolti durante il funzionamento del programma sono molto utili a questo scopo. Possiamo anche avere una ulteriore soluzione per introdurre esempi negativi, potremmo considerare esempi ricavati da altri utenti come negativi (anche se in realt`a sono esempi positivi per tali persone), cercando di allontanare la superficie di decisione con esempi in 95 6.6. Esportazione degli esempi parte anche totalmente diversi tra loro. A questo punto possiamo individuare fra queste caratteristiche tre tipi di addestramenti possibili: • addestramento: addestramento originale, cio`e con il file train.dat composto da 12 esempi e con il file test.dat composto da 8 esempi per generare la soglia; • raffinamento: addestramento dove vengono considerati anche esempi negativi. Si costruisce un nuovo file raffinatura.dat contenente tutti gli esempi prelevati da train.dat e dal file storico.dat (contiene gli accessi positivi e negativi) dell’utente in questione. La soglia verr`a genereta sempre usando il file test.dat; • raffinamento users: addestramento considerando esempi negativi provenienti da altri user. In pratica si costruisce un nuovo file raffinatura user.dat contenente tutti gli esempi prelevati da train.dat dell’utente corrente e esempi scelti in modo random dal file train.dat degli altri utenti presenti in archivio considerandoli come negativi. Il numero di esempi negativi raccolti sono due per ogni utente salvato scelti in maniera random fra quelli disponibili, il numero di tale esempi risulter`a dipendente dal numero di utenti registrati. La soglia verr`a generata sempre usando il file test.dat Ricapitoliamo tutti i file presenti nella cartella personale di ogni utenti, indicando il nome del file e la sua funzione all’interno del sistema per mezzo della tabella 6.1. 6.6 Esportazione degli esempi All’interno del Neural Password Controll sono state implementate anche delle funzioni che permettono di esportare dati all’esterno. Questa caratteristica `e stata introdotta nel sistema per facilitare la sperimentazione di altre architetture neurali partendo da dati raccolti dal sistema. In pratica possiamo esportare gli esempi raccolti dagli utente durante il funzionamento del sistema e addestrare architetture neurali diverse dall’autoassociatore, comparandone le prestazione. Ecco le esportazioni dei dati previste dal programma: 96 6.6. Esportazione degli esempi Nome File Funzione assegnata train.da 12 esempi positivi per l’addestramento test.dat 8 esempi positivi per la generazione della soglia di decisione train.info log addestramento dell’Autoassociatore soglia.info log generazione soglia di decisione storico.dat esempi negativi e positivi raccolti durante l’accesso al sistema raffinatura.dat esempi prelevati unendo il file train.dat e storico.dat raffinatura user.dat esempi prelevati unendo il file train.dat e due esempi random raccolti da train.dat proprietario di altri utenti finall.ann rete finale addestrata risultante da uno dei metodi visti primo.p contiene la distanza risultante dall’ultimo test proposto all’autoassociatore Tabella 6.1: Tabella riassuntiva funzione dei file • esportare file train: esporta due file : 1. esporta train.dat: contente riga per riga tutti gli esempi di train.dat e due esempi random per ogni utente salvato in archivio (prelevato dal rispettivo train.dat dell’utente selezionato). Il formato del file `e il seguente: c1 c2 ..... c20 (6.2) dove le ci sono le componenti dell’esempio esportato. 2. esporta dati.dat: contiene due numeri separati da spazio. Il primo indica il numero degli esempi appartenenti all’utente in questione, il secondo indica il numero degli esempi non appartenenti all’utente. Quindi l’unione dei due file rappresenta la corrispondenza tra pattern e appartenenza o meno dell’utente corrente; • esporta test.dat: esporta interamente il file test.dat nel formato visto in 6.2; • esporta bad.test: esporta due esempi presi in modo random da ogni utente diverso rispetto a quello corrente dai file test.dat sempre nel formato visto in 6.2; • comparate: esporta due file: 1. comparate.dat: contiene tutti gli esempi raccolti nello storico.dat nel formato visto in 6.2; 97 6.7. Funzionamento del sistema Nome File Funzione assegnata esporta train.dat esempi train.dat + random altri utenti esporta dati.dat numero esempi dell’esporta train.dat esporta test.dat esempi test.dat esporta bad.dat random altri utenti comparate.dat esempi storico.dat comparate dati.dat contiene 1 se riconosciuto e 0 altrimenti. Riferito agli esempi di comparate.dat Tabella 6.2: Tabella riassuntiva file esportabili Figura 6.8: Home page del Neural Password Control 2. comparate dati.dat contiene una costante per ogni esempio esistente nel comparate.dat. La costante ha valore 1 se l’esempio preso in considerazione era stato riconosciuto correttamente dell’autoassociatore, 0 se invece era stato considerato non riconosciuto. Riassumiamo i file esportabili nella tabella 6.2. 6.7 Funzionamento del sistema Passiamo a descrivere il funzionamento del Neural Password Control partendo con l’analizzare la “home page” del programma (figura 6.8). Le scelte possibili sono tre: 1. gestione utenti: dove possiamo modificare e inserire utenti; 98 6.7. Funzionamento del sistema Figura 6.9: Gestione utenti 2. verifica/addestra password: in cui digiteremo la password consentendo sia l’addestramento che la verifica; 3. visualizza stile di battitura: permette di vedere i tempi di battitura di una parola o frase. 6.7.1 Gestione utenti Questa sezione del programma permette di gestire il database di utenti esistente, in altre parole possiamo sia inserire, eliminare e modificare un utente. Il men` u principale per questa sezione `e caratterizzata dall’elenco degli utenti inscritti al programma in cui sono visibili per ognuno gli esempi raccolti, la soglia generata e l’accessi positivi e negativi effettuati. Se vogliamo modificare le impostazioni dell’utente basta cliccare sul nome entrando in una nuova pagina (figura 6.10). Le impostazioni modificabili per un utente sono: • soglia di sicurezza: per il quale `e possibile modificarla manualmente oppure “aggiustarla” tramite lo slider che aumenta o diminuisce la soglia in percen- 99 6.7. Funzionamento del sistema Figura 6.10: Modifica Utente tuale. Una soglia pi` u piccola risulter`a sicuramente pi` u sicura ma anche molto stringente aiutando la comparsa di falsi rigetti. Al contrario una soglia pi` u alta risulter`a meno sicura aiutando invece le false autenticazioni; • addestramento: questa sezione serve per migliorare le prestazioni dell’autoassociatore intervenendo direttamente sull’addestramento: – addestramento: effettua l’addestramento originale, cio`e con il file train.dat composto da 12 esempi e con il file test.dat composto da 8 esempi per generare la soglia; – raffinamento: effettua l’addestramento considerando anche esempi negativi, utilizzando il file raffinatura.dat. Con questo tipo di addestramento tentiamo di “raffinare” la rete, migliorando le prestazione restringendo la superficie di separazione con gli esempi negativi provocate da accessi non coretti; – raffinamento users: effettua l’addestramento considerando anche esempi negativi provenienti da altri user utilizzando il file raffinatura user.dat. 100 6.7. Funzionamento del sistema Figura 6.11: Risultati addestramento autoassociatore Con questo tipo di addestramento tentiamo di migliorare le prestazione della rete considerando esempi negativi provenienti da il train.dat di utenti differenti a quello corrente; esporta: questa sezione serve per esportare gli esempi raccolti nel sistema per effettuare delle simulazioni usando architetture neurali diverse: – esporta file train: permette di scaricare i file esporta train.dat e esporta dati.dat; – esporta file test: permette di scaricare il file esporta test.dat; – esporta file bad test: permette di scaricare esporta bad.dat; – comparate: permette di scaricare i file comparate.dat e comparate dati.dat. Non `e possibile modificare la password, poich´e `e comprensibile il fatto che una volta modificata quest’ultima, tutti gli esempi raccolti dall’addestramento della rete risulterebbero inadeguati. A questo punto per modificare una password bisogna obbligatoriamente cancellare l’utente e reinserirlo dall’inizio. 101 6.7. Funzionamento del sistema (a) Accesso positivo (b) Accesso negativo Figura 6.12: Risultati accesso al sistema 6.7.2 Verifica e addestra password Questa sezione `e il cuore vero e propio del sistema biometrico, cio`e il centro da cui possiamo addestrare e verificare le potenzialit`a dello strumento. Se digitiamo nome utente e password che erano precedentemente inseriti nel database, l’applicazione indicher`a l’esistenza del nuovo inserimento indicando di effettuare i 20 esempi obbligatori per l’addestramento. Una volta finita questa fase, ad ogni nuovo accesso, verranno mostrati i risultati ottenuti dalla verifica, visibile in figura 5.3(a) dove l’applicazione mostra la soglia di decisione calcolata durante l’addestramento e la distanza calcolata durante la verifica dell’accesso dimostrando l’esito positivo o negativo. 6.7.3 Visualizza stile di battitura In questa sezione `e possibile vedere come i parametri vengono costruiti durante la digitazione di una parola o di una frase. L’applet Java implementato visualizza i tempi di pressione e rilascio dei tasti in maniera “on-line” descrivendo in prima istanza il ritmo di battitura dell’utente. Premendo il pulsante “visualizza tempi” si potranno vedere i parametri costruiti a partire da quanto digitato, mostrando sia i parametri normalizzati che non normalizzati. Questa applicazione `e stata inserita solo a livello dimostrativo per far rendere conto a un utente il proprio ritmo di digitazione non solo per una password ma esteso anche a una frase intera. 102 6.8. Requisiti del Neural Password Control (a) Visualizzazione tempi (b) Visualizzazione parametri Figura 6.13: Stile di battitura per la frase “neural password controll” 6.8 Requisiti del Neural Password Control Elenchiamo i requisiti necessari per l’utilizzo del Neural Password Control: • server: 1. sistema operativo Microsft Windows con Web Service compatibile con il linguaggio di scripting PHP ; 2. sistema Operativo Linux con Web Service compatibile con il linguaggio di scripting PHP ; • client: 1. browser web compatibile con Java e javascript attivato; 2. virtual Java machine installata (uguale o superiore alla versione 1.1). 6.9 Considerazioni Il vantaggio indiscusso di un sistema basato su questa tecnologia `e il basso costo e la facile installabilit`a. Questo sistema non si pone come unica sicurezza ad esempio per autorizzare transazioni bancarie ma costituisce un valore aggiunto su tutti quei servizi che richiedono una maggiore segretezza. Una tastiera standard `e l’unica 103 6.9. Considerazioni apparecchiatura necessaria per far funzionare il sistema correttamente. Nessuna altra tecnologia offre una soluzione cos`ı poco intrusiva, pratica ed economica per le organizzazioni che hanno la necessit`a di effettuare l’autenticazione dell’utente per controllare l’accesso nelle proprie applicazioni, basi di dati e risorse della rete. Questo tipo di sistema biometrico non richiede una conoscenza specializzata in quanto l’uso di username e password `e da sempre uno dei metodi pi` u diffusi per verificare le credenziali di un utente durante l’accesso ad un sistema informatico. Tutto questo fa del Neural Password Control un valido strumento di verifica degli accessi. 104 Capitolo 7 Esperimenti Per analizzare il comportamento del Neural Password Control sono stati effettuati degli esperimenti implementando il sistema su scenari diversi. Tutti queste prove si sono incentrate in modo tale da valutare le prestazioni in situazioni reali del programma. 7.1 Raccolta dei dati Per la raccolta dei dati `e stato inserito il Neural Password Control in due contesti differenti: 1. all’interno della Web Mail del Dipartimento di Ingegneria dell’Informazione dell’Universit`a di Siena; 2. all’interno del Laboratorio di Computer Science al Consorzio Operativo Gruppo M.P.S. L’integrazione sulla Web Mail `e stata effettuata grazie alla compatibilit`a del Neural Password Control con l’applicazione usata nel dipartimento: SquirrelMail1 . Quest’ultimo `e un pacchetto capace di far accedere alla casella mail del server via Web. SquirrelMail `e un progetto Open Source di cui `e possibile vedere e modificare il codice sorgente, inoltre `e scritto in linguaggio PHP. Tutte queste caratteristiche 1 The SquirrelMail Project, http://www.squirrelmail.org 105 7.1. Raccolta dei dati (a) Web Mail SquirrelMail (b) Computer Science MPS Figura 7.1: Raccolta dei dati hanno favorito la riuscita dell’integrazione del Neural Password Contol all’interno dello SquirrelMail. Il funzionamento `e del tutto trasparente rispetto a quello originale offerto dall’aplicazione web mail, infatti sia l’addestramento che la verifica viene generata senza bisogno di intervento da parte dell’utente ed anche in caso di accesso non riconosciuto l’applicazione consenter`a ugualmente l’accesso, solamente in un secondo momento si potranno vedere tutte le informazioni derivanti dagli accessi. La seconda integrazione `e stata effettuata nel laboratorio di Computer Science tramite le macchine client esistenti al’interno della struttura. Ogni volta che un utente accede a una macchina e apre il browser per connettersi a internet verr`a visualizzata come prima pagina il Neural Password Control, proveniente dall’istallazione del sistema biometrico all’interno di un Server collocato nella rete locale del laboratorio. Le credenziali inserite nel Neural Password Control sono le medesime scelte per l’accesso al client del laboratorio. In entrambi i sistemi visti vengono raccolti gli esempi da accessi corretti e non corretti. Tutte queste informazioni saranno poi comparate generando un unico test per la valutazione delle prestazioni del Neural Password Control. 106 7.2. Prestazioni del Neural Network Control User Soglia Numero Login Positivi Negativi 1 0.085 30 80% 20% 2 0.063 26 84% 16% 3 0.25 26 84% 16% 4 0.062 24 87% 13% 5 0.115 23 91% 8% 6 0.052 29 79% 21% 7 0.072 28 85% 15% 8 0.067 59 49% 41% 9 0.068 35 60% 40% 10 0.084 50 86% 14% 11 0.094 32 81% 19% 12 0.087 43 72% 28% 13 0.185 48 72% 28% 14 0.12 30 90% 10% Media 76,57% 20,64% Tabella 7.1: Tabella riassuntiva esperimento 1 7.2 Prestazioni del Neural Network Control Il primo esperimento consiste nel raccogliere tutti i dati prevenienti dal laboratorio di Computer Science e dallo SquirrelMail raggruppandoli sottoforma di tabella, indicando la soglia di decisione generata, il numero di esempi raccolti e le percentuali di accessi positivi e negativi (tabella 7.1). Come vediamo la percentuale degli accessi positivi sono in media superiore a quelli negativi, dimostrando che il riconoscitore biometrico funziona correttamente in molti casi. Dobbiamo anche precisare che gli accessi negativi possono essere stati generati anche nell’intento di verificare il comportamento del sistema simulando uno stile di digitazione diverso. Passiamo ora al secondo esperimento, vediamo come si comporta il sistema verificandone la sicurezza degli accessi. In altre parole cerchiamo di simulare un attacco al sistema, tentando di entrare identificandosi con un utente diverso rispetto all’originale. Quindi essendo a conoscienza della password verifichiamo l’importanza dell’apprendimento effettuato sullo stile di digitazione. La prova consiste nel far provare al primo utente ad entrare per cinque volte consecutivamente nell’account appartenente a altri utenti. Come vediamo dalla tabella 7.2 i risultati sono molto 107 7.3. Prestazioni con le RBF Login Numero Login Positivi User 1 login to User 2 5 0% User 1 login to User 3 5 0% User 1 login to User 4 5 0% User 1 login to User 5 5 90% Tabella 7.2: Tabella riassuntiva esperimento 2 soddisfacienti, solamente nell’utlimo dato c’e una percentuali di violazione dell’account molto alto. La spiegazione del fatto che il 90% dei casi si compie un acceso positivo dell’utente numero 1 all’interno dell’account dell’utente 5 `e che la password violata risulta molto semplice da digitare. L’autoassociatore `e stato addestrato per riconoscere il tempo di digitazione della parola “123456”, questa password `e molto facile da rirpodurre poich`e i tasti che la compongono risultano adiacenti sulla tastiera, costituendo poche differenze nei tempi risultanti. Le prestazioni ottenute mettono in risalto le potenzialit`a di questo tipo di riconoscitore biometrico, risultando una soluzione interessante per la sicurezza. 7.3 Prestazioni con le RBF Alla base del funzionamento del Neural Password Control `e l’uso dell’autoassociatore che permette di discriminare la password durante la fase di inserimento delle credenziali da parte di un utente. Ma cosa succede variando questa costante? Cio`e usando un tipo di rete neurale diversa? La scelta pi` u opportuna per le caratteristiche del sistema biometrico che abbiamo difronte `e quello di provare ad usare le Radial Basis Function (paragrafo 4.12). In pratica proveremo ad usare come discriminatore non pi` u un autoassociatore ma bens`ı una RBF. Le Radial Basis Function sono reti neurali multistarto con la caratteristica di avere nello strato di hidden neuroni con funzione di attivazione a base radiale (gaussiane), grazie a loro `e in grado di riconoscere pattern “clusterizzati” risultando indicate per il riconoscimento delle password dai tempi di digitazione. 108 7.3. Prestazioni con le RBF L’esperimento `e stato effettuato costruendo uno script in Matlab (paragrafo A.5) che simula il funzionamento di una RBF e i dati prelevati dagli esempi raccolti tramite l’esportazione dei dati visti in paragrafo 6.6. Vediamo la topologia della rete utilizzata: • Radial Basis Function – 20 neuroni di ingresso; – uno strato di hidden variabile in 10 oppure 16 neuroni con attivazione a campana; – 1 neurone di uscita con funzione di attivazione logaritmica sigmoidale: ∗ se l’uscita `e 1 indica password riconosciuta; ∗ se l’uscita `e 0 indica password non riconosciuta. Il file utilizzato per l’apprendimento `e esporta train.dat contenente tutti gli esempi raccolti, dove quelli appartenenti all’utente in questione hanno targhet uguale a 1 e i rimanti (presi due in modo random per ogni altro utente esistente) invece hanno targhet uguale a 0. Per verificare le prestazioni della rete utilizziamo invece i seguenti file • esporta test.dat contenente esempi usati per costruire la soglia dell’autoassociatore; • esporta bad.dat contenente esempi usati per costruire la soglia dell’autoassociatore degli utenti diversi da quello corrente; • comparate.dat contenente esempi presi nel file storico.dat in cui sono scritti gli esempi positivi (accesso corretto fatto con l’autoassociatore) e esempi negativi (accessi non corretti). Perch`e l’esperimento sia valido devono presentarsi le seguenti situazioni: • con il file esporta test.dat l’uscita della rete deve essere 1 per ogni esempio; • con il file esporta bad.dat l’uscita della rete deve essere 0 per ogni esempio; 109 7.3. Prestazioni con le RBF • con il file comparate.dat l’uscita della rete deve essere concorde con la simulazione fatta tramite l’autoassociatore. Infatti per questa comparazione si utilizza anche comparate dati.dat dove ci sono i risultati fatti dall’autoassociatore con i medesimi esempi. In figura 7.2 vediamo i risultati ottenuti addestrando la Radial Basis Function con esempi provenientiti da l’user 2. Le prestazioni generali sono buone ma nel riconoscere gli esempi contenuti nel file esporta bad.dat compie diversi errori riconoscendo pattern appartenenti a user diversi da quello per cui `e stato addestrato (sia utilizzando 10 neuroni nello strato di hidden figura 7.2(b) che 16 neuroni nello strato di hidden figura 7.2(e)). Si riscontrano divergenze anche su i due grafici effettuati con il file esporta comparate.dat (figura 7.2(c) e 7.2(f )) in cui le “X” rappresentano i pattern riconosciuti dalla RBF e i “O” rappresentano i pattern riconosciuti dell’autoassociatore. Le divergenze indicano che i pattern sono riconosciuti in modo diverso dalla due reti mostrando una differenza forse su pattern facilmente confondibili. Nella figura 7.3 vediamo i risultati ottenuti addestrando invece in questo caso la Radial Basis Function con esempi provenientiti da l’user 3. Le prestazioni generali sono considerevolmente migliori rispetto all’user precedente, conportandosi quasi in ugual modo all’autoassociatore con il set di esempi contenuti nel file esporta comparate.dat (figura 7.3(c) e 7.3(f )). Solo con gli esempi del file esporta test.dat commette qualche errore riconoscendo come non validi esempi corretti per l’user 3 (sia utilizzando 10 neuroni nello strato di hidden figura 7.3(a) che 16 figura 7.3(d)). Gli esempi analizzati mostrano le piccolissime differenze utilizzando 10 o 16 neuroni nello strato di hidden, mentre le prestazioni generali mettono in evidenza una sostanziale uguaglianza nell’utilizzo delle due diverse architetture di reti. Evidentemente anche se il risultato complessivo si equivale `e preferibilele l’utilizzo dell’autoassociatore per il fatto che possiamo modellare meglio la discriminazione del sistema intervenendo direttamentete sulla soglia di decisione. 110 7.3. Prestazioni con le RBF Risultati su bad example 1 1.8 0.9 1.6 0.8 1.4 0.7 1.2 0.6 Riconosciuti Riconosciuti Risultati su test example 2 1 0.8 0.5 0.4 0.6 0.3 0.4 0.2 0.2 0 0.1 1 2 3 4 Esempi 5 6 0 7 (a) esporta test.dat 10 neuroni hidden 0 5 10 0.9 1.8 0.8 1.6 0.7 1.4 0.6 1.2 0.5 0.4 1 0.6 0.2 0.4 0.1 0.2 4 6 8 10 Esempi 12 14 16 18 0 20 (c) esporta comparate.dat 10 neuroni hidden 1 2 3 0.9 0.9 0.8 0.8 0.7 0.7 0.6 0.6 0.5 0.4 0.3 0.2 0.1 0.1 15 Esempi 7 0.4 0.2 10 6 0.5 0.3 5 5 Risultati su comparate 1 Riconosciuti Riconosciuti Risultati su bad example 0 4 Esempi (d) esporta test.dat 16 neuroni di hidden 1 0 30 0.8 0.3 2 25 Risultati su test example 2 Riconosciuti Riconosciuti Risultati su comparate 0 20 (b) esporta bad.dat 10 neuroni di hidden 1 0 15 Esempi 20 25 0 30 (e) esporta bad.dat 16 neuroni hidden 0 2 4 6 8 10 Esempi 12 14 16 18 20 (f) esporta comparate.dat 16 neuroni hidden Figura 7.2: Risultati dei test per User2, con 10 e 16 neuroni nello strato di hidden 111 7.3. Prestazioni con le RBF Risultati su bad example 1 0.9 0.8 0.8 0.6 0.7 0.4 0.6 0.2 Riconosciuti Riconosciuti Risultati su test example 1 0.5 0.4 0 −0.2 0.3 −0.4 0.2 −0.6 0.1 0 −0.8 1 2 3 4 Esempi 5 6 −1 7 (a) esporta test.dat 10 neuroni hidden 0 5 10 0.9 0.9 0.8 0.8 0.7 0.7 0.6 0.6 0.5 0.4 0.4 0.3 0.2 0.2 0.1 0.1 4 6 8 10 12 0 14 1 2 3 4 Esempi Esempi (c) esporta comparate.dat 10 neuroni hidden 0.8 0.9 0.6 0.8 0.4 0.7 0.2 0.6 0 −0.2 0.4 0.3 −0.6 0.2 −0.8 0.1 10 15 Esempi 7 0.5 −0.4 5 6 Risultati su comparate 1 Riconosciuti Riconosciuti Risultati su bad example 0 5 (d) esporta test.dat 16 neuroni di hidden 1 −1 30 0.5 0.3 2 25 Risultati su test example 1 Riconosciuti Riconosciuti Risultati su comparate 0 20 (b) esporta bad.dat 10 neuroni di hidden 1 0 15 Esempi 20 25 0 30 (e) esporta bad.dat 16 neuroni hidden 0 2 4 6 8 10 12 14 Esempi (f) esporta comparate.dat 16 neuroni hidden Figura 7.3: Risultati dei test per User3, con 10 e 16 neuroni nello strato di hidden 112 7.3. Prestazioni con le RBF 7.3.1 Considerazioni Durante l’analisi svolta sui risultati degli esperimenti abbiamo notato che un’architettura di rete costituita in modo da creare un autoassociatore `e stata preferita rispetto all’uso di una Radial Basis Function. Oltre a questo per riscontrare una buona sicurezza, bisogna presentare al sistema biometrico una password che deve risultare familiare all’utente. Se utilizziamo una password ben conosciuta la velocit`a della sua digitazione risulter`a pressoch`e sempre uguale e in pi` u lo stile di battitura che ne risulter`a sar`a molto “personale”. Infatti pi` u una password `e digitata in modo strettamente particolareggiata dalle caratteristiche di pressione e rilascio dei tasti di un utente pi` u essa risulter`a sicura all’interno del Neural Password Control. 113 Conclusioni In questa tesi `e stato realizzato un nuovo sistema biometrico per il riconoscimento biometrico della password chiamato: Neural Password Control. Questo particolare sistema non richiede alcun dispositivo hardware aggiuntivo consentendo l’autenticazione della persona attraverso il riconoscimento del ritmo di battitura alla tastiera combinata con l’immissione dei normali dati identificativi: username e password. Il sistema misura quindi il ritmo di battitura e, in caso di dubbio, rifiuta l’accesso ai dati del sistema informatico proprio per questo pur conoscendo una password non `e possibile utilizzarla non potendo imitare il ritmo di battitura del proprietario della password stessa. La sperimentazione eseguita ha confermato la reale potenzialit`a di questo sistema, notando che un’architettura di rete costituita in modo da creare un autoassociatore `e stata preferita rispetto all’uso di una Radial Basis Function. I risultati nel verificare il reale propietario dello stile di digitazione sono stati molto buoni in quasi tutti i test effettuati. Il successivo sviluppo molto importante per questo tipo di sistema biometrico, potrebbe essere senza dubbio una sperimentazione in un ambiente di lavoro pi` u grande che permetta una raccolta molto ampia di dati. Un ulteriore passo potrebbe essere l’implementazione del dispositivo biometrico in tutte quelle apparecchiature che richiedono un codice PIN, come ad esempio i bancomat. Infatti possiamo tutelare le quattro cifre che costituiscono la chiave d’accesso della scheda magnetica. Concludiamo la tesi riflettendo sulle tecnologie biometriche che dopo un lungo periodo di evoluzione e perfezionamento sono oramai pronte a giocare un ruolo importante nel panorama tecnologico. 114 Appendice A Struttura codice Neural Password Control In questa appendice viene riportata una descrizione della struttura del codice utilizzata per creare il sistema biometrico per il riconoscimento di password. Analizzeremo le parti pi` u importanti del codice sorgente, spiegando gli aspetti implementativi usati. Il codice del progetto `e suddiviso in due parti: 1. client: formata da una pagina HTML con incluso un applet scritto in linguaggio Java; 2. server: formata da pagine scritte in linguaggio PHP e di un programma in linguaggio C per l’addestramento e la verifica di un autoassociatore. Per il funzionamento del Neural Password Control bisogna procedere ad una sua installazione su di un server Web compatibile con il linguaggio di scripting PHP. Come qualsiasi applicazione web il programma realizzato `e costituito da diversi file all’interno della propria directory principale. Riassumiamo in tabella A.1 i principali file e le subdirectory che le contengono. 115 directory directory principale file −→ index.php home page neural.php pagina contenente l’applet Java per il login utenti.php pagina per le statistiche di ogni user parametri.inc.php contiene i parametri fondamentali nuovo utente.php pagina per la creazione di un user modifica utente.php pagina per la modifica impostazioni di un user elimina utente.php pagina per l’eliminazione di un user applet contiene le classi degli applet Java −→ *.class di tutti gli applett presenti directory autoNN contiene i programmi per addestrare l’autoassociatore test eseguibile per testare la rete train eseguibile per addestrare la rete genauto eseguibile per inizializzare la rete directory file file −→ directory include file −→ funzioni.php directory reti user contiene tutte le funzioni PHP usate nelle pagine web file −→ *.dat contiene tutti i pattern per ogni user *.info contiene le informazioni sull’adestramento Tabella A.1: Struttura file Neural Password Control 116 A.1. Modifica dei parametri principali A.1 Modifica dei parametri principali Analizziamo per prima il file parametri.inc.php in cui al suo interno troviamo i parametri fondamentali per il funzionamento del programma: • parametri database: – dbhost: serve per indicare l’indirizzo IP del server dove `e installato il database Mysql, in genere questa variabile ha valore “localhost” per indicare la macchina corrente; – dbname: nome del database che contiene le tabelle del programma, di default il nome assegato `e “neural”; – dbuser: nome utente per accedere al database; – dbpass: password per accedere al database; • parametri rete neurale: – lunghezza password: lunghezza minima della password. Valore di default 6; – numero max: numero di lettere in cui calcolare i coefficienti. Il valore deve essere almeno di lunghezza password-1. Valore di default 5; – n test: numero di esempi per il train. Valore di default 9; – n test soglia: numero di esempi per generare la soglia. Valore di default 5; – errore: percentuale di errore consentita alla soglia stimata per la discriminazione dell’autoassociatore Neurale. Valore di default 5; – file train: nome file contente i pattern per il training. Nome di default “train.dat“; – file soglia: nome file contente i pattern per generare la soglia. Nome di default “test.dat“; – file test: nome file contente i pattern per il test. Nome di default “test.tmp“; 117 A.2. Client – file storico: nome file contente i pattern per il training. Nome di default “storico.dat“. Come notiamo `e possibile cambiare il numero di tasti usati per la verifica della password, introducendo quindi un maggior numero di dati generati durante la pressione e il rilascio dei caratteri. A.2 Client Analizziamo la struttura del client il quale ha come parte fondamentale l’applet Java capace di catturare la pressione e il rilascio dei tasti che compongono la password. Listing A.1: Classe keyReleased // Prendo l’evento quando rilascio il tasto public void keyReleased(KeyEvent e) { //tasti che escludo nell ’ aquisizione dei tempi if (! ((e.getKeyCode() == KeyEvent.VK ENTER) || (e.getKeyCode() == KeyEvent.VK F12) )) { //prendo tempi di battitura solo di tasti < numeo tasti if ( i <= numero tasti) dati=dati+"R-"+e.getKeyCode()+"-"+e.getWhen()+"|"; //user inserita user=userArea.getText(); //password inserita password = new String(passwordArea.getPassword()); } } Sopra possiamo vedere una parte di codice proveniente dall’applet Java. La classe entra in funzione solamente durante la pressione di un tasto. Il controllo iniziale serve per filtrare i tasti ”speciali“ come ad esempio il tasto ”Invio“ e ”F12“ che risulterebbero non utili per la raccolta degli esempi. La variabile dati contiene la 118 A.3. Server: file funzioni.php stringa dei valori di pressione e rilascio, invece le variabili user e password contengono rispettivamente user e password digitata. A.3 Server: file funzioni.php Passiamo ad analizzare il file funzioni.php contenete tutte le principali funzioni del Neural Password Control. Listing A.2: Funzione estrapola function estrapola(id , dati ,nomefile, visual ,visual norm,num max,test) { if ( file exists ($nomefile)) $file =fopen($nomefile,"a+"); else $file =fopen($nomefile,"w+"); $numero=0; // inizializzo le variabili $tasto=’’; $premuto=’’; $rilasciato =’’; $i=0; $stringa=’’; while (( $i <= strlen($dati)) and ($numero <= ($numero max))) { if ($dati [ $i ] == ’P’) { $numero++; //memorizzo il codice del tasto precedente $tasto old=$tasto; $tasto=’’; $j=$i+2; ........ } 119 A.3. Server: file funzioni.php Per mezzo della funzione estrapola si costruiscono i parametri principali (dwell time, flight time, alternative flight time, interval time) partendo dalla stringa generata dal client. Le variabili in ingresso sono: • id: identificativo dell’utente; • dati: stringa contenente i tempi di pressione e rilascio dei tasti; • nomefile: nome del file dove salvare i parametri generati • visual: visualizza i parametri; • visual norm: visualizza i parametri normalizzati; • num max: numero di tasti da utilizzare per la creazione dei parametri; • test: valore 0 indica esempio negativo, 1 positivo. Listing A.3: Funzione addestra function addestra($id, $rete , $nome file) { chdir("reti_user/$id"); exec("../../autoNN/train $rete $nome_file > train.info"); } Si addestra l’autoassociatore collocandosi nella directory dove risiedono i pattern dell’user e si esegue da consol il programma train. Le variabili in ingresso sono: • id: identificativo dell’utente; • rete: nome del file che contiene la topologia dell’autoassociatore; • nome file: nome del file che contiene i pattern per l’addestramento. 120 A.3. Server: file funzioni.php Listing A.4: Funzione genera soglia Function genera soglia($id, $nome file) { exec("../../autoNN/test final.ann $nome_file 0.25 > soglia.info"); $file =fopen("primo.p","a+"); $i=0; $temp=0; while (! feof ( $file )) { $i++; $stringa=fgets( $file ) ; $stringa=round($stringa,6); $temp=round($temp+$stringa,6); } $media=round($temp/$i,6); $sqlstr ="UPDATE user SET soglia=’".$media."’ WHERE id=’".$id."’"; $result=mysql query($sqlstr); if (! $result ) echo("Errore sul database!"); else echo("Salvato correttamente"); fclose ( $file ) ; } Funzione che permette di generare la soglia di decisione di un user. Partendo dal file in ingresso contenente gli esempi si esegue dal consol il programma test, dopodich´e si apre il file primo.p contenente tutte le differenze di ingresso e uscita dell’autoassociatore e si calcola una media aritmetica di questi valori. Infine si salva il valore medio trovato nel database. Le variabili in ingresso sono: • id: identificativo dell’utente; • nome file: nome del file che contiene i pattern per la generazione della soglia. 121 A.3. Server: file funzioni.php Listing A.5: Funzione test function test ($id, $nome file) { //prelevo la soglia $result=mysql query("SELECT soglia,percentuale FROM user WHERE id=’ ".$id."’"); if ( $result ) { $row=mysql fetch row($result); $soglia=$row[0]; $percentuale=$row[1]/100; } else echo("Errore sul Database"); chdir("reti_user/$id"); //eseguo il test exec("../../autoNN/test final.ann $nome_file 0.25"); $file =fopen("primo.p","r"); //legge una riga dal file fino a che non trova una newline $stringa=fgets( $file ) ; $stringa=round($stringa,6); fclose ( $file ) ; $soglia finale =$soglia+($soglia∗$percentuale); $soglia finale =round($soglia finale ,6) ; if ( $soglia finale > $stringa) { // Verifica corretta $risultato =array(true,$stringa, $soglia finale ) ; return $risultato ; } else { // Verifica non corretta 122 A.4. Libreria Autoasociatore $risultato =array(false, $stringa , $soglia finale ) ; return $risultato ; } } Funzione che permette di effettuare il test di verifica della password. Come prima cosa si preleva dal database la soglia generata in fase di addestramento dopodich´e si esegue il test. Infine apriamo il file primo.p contenente la differenza di ingresso e uscita dell’autoassociatore e valutiamo la soglia prelevata dal database. Le variabili in ingresso sono: • id: identificativo dell’utente; • errore: percentuale di errore della soglia; • nome file: nome del file che contiene i pattern per il test. A.4 Libreria Autoasociatore Passiamo alla libreria che ha permesso di realizzare i programmi per la simulazione e l’apprendimento di autoassociatori con uno strato nascosto. La struttura dati utilizzata per la realizzazione dell’autoassociatore `e la seguente: Listing A.6: Strutura AUTONN typedef struct AUTONN { /∗ autoassociatore neurale ∗/ int nHiddens; /∗ numero di neuroni dello strato nascosto ∗/ int nInputs; /∗ numero di ingressi/uscite ∗/ int nWeights; /∗ numero totale dei pesi ∗/ float ∗W; /∗ vettore dei pesi ∗/ float ∗Ws; /∗ vettore dei pesi salvato ∗/ float ∗G; /∗ gradiente ∗/ float ∗Gs; /∗ gradiente salvato ∗/ float ∗X; /∗ vettore delle uscite dei neuroni ∗/ float ∗O; /∗ vettore delle uscite della rete ∗/ float ∗Y; /∗ vettore dei delta−errori ∗/ 123 A.4. Libreria Autoasociatore } AutoNN; Intrudiaciamo le due funzioni Backward e Forward che rispettivamente servono per l’apprendimento e la simulazione. Listing A.7: funzione Backward float Backward(AutoNN ∗autoNN,float ∗I,char PNflag) { ............ PSS=0; switch(PNflag) { case ’P’: for ( i=0;i<nI;i++) { d = o[i]−I[ i ]; /∗ calcolo dell ’ errore sull ’ uscita ∗/ PSS += d∗d; ∗(g++) += d; /∗ bias ∗/ w++; for ( j=0;j<nH;j++) { /∗ connessioni dallo strato nascosto ∗/ y[ j ] += ∗(w++)∗d; ∗(g++) += d∗x[j]; } } break; case ’N’: for ( i=0;i<nI;i++) { d = o[i]−I[ i ]; /∗ calcolo dell ’ errore sull ’ uscita ∗/ PSS += d∗d; } PSS = 1.0/( AUTONN NCostThr+PSS); c = − PSS∗PSS; for ( i=0;i<nI;i++) { d = c∗(o[i]−I[ i ]) ; ∗(g++) += d; /∗ bias ∗/ w++; for ( j=0;j<nH;j++) { /∗ connessioni dallo strato nascosto ∗/ 124 A.4. Libreria Autoasociatore y[ j ] += ∗(w++)∗d; ∗(g++) += d∗x[j]; } } break; ............ } La funzione sopra visualizzata esegue la fase backward per il vettore I di ingresso all’autoassocoatore usando come obiettivo tali valori (autoassociazione). Per la valutazione dell’errore viene utilizzato un costo quadratico. Per vedere la direzione giusta dell’apprendimento viene calcolato il contributo al gradiente del costo dovuto al vettore di ingresso considerato. Alla fine del suo ciclo la funzione fornisce il valore del costo calcolato. In particolare nella parte di codice visualizzato vediamo i due aggiornamento diversi dei pesi, distinguendo gli esempi positivi da quelli negativi. Il valore AUTONN NCostThr indica la soglia per la funzione di repulsione degli esempi negativi. Le variabili in ingresso sono: • autoNN: struttura dati autoNN dell’autoassociatore; • I: vettore dati in ingresso; • PNflag: indica la generalita dell’esempio, se ha valore “P” indica esempio positivo, con “N” esempio negativo. Listing A.8: Funzione Forward void Forward(AutoNN ∗autoNN, float ∗I) { register float ∗w,∗x,∗xL,∗i,∗iL; float a; xL = autoNN−>X+autoNN−>nHiddens; iL = I+autoNN−>nInputs; w = autoNN−>W; 125 A.5. Sperimentazione in Matlab /∗calcolo delle uscite per lo strato hidden∗/ for (x=autoNN−>X;x<xL;x++) { a = ∗(w++); /∗ bias ∗/ for ( i=I;i<iL;i++) /∗ somma pesata degli ingressi ∗/ a += ∗(w++) ∗ ∗i; ∗x = tanh((double)a); /∗ funzione di uscita (tangente iperbolica ) ∗/ } /∗calcolo delle uscite della rete ( lineari )∗/ iL = xL; I = autoNN−>X; xL = x+autoNN−>nInputs; while(x<xL) { a = ∗(w++); /∗ bias ∗/ for ( i=I;i<iL;i++) /∗ somma pesata delle uscite ddegli hidden ∗/ a += ∗(w++) ∗ ∗i; ∗(x++) = a; /∗ funzione di uscita ( lineare ) ∗/ } } La funzione sopra visualizzata esegue la fase forward per il vettore di ingresso I usando come struttura della rete l’autoassociatore autoNN. Le variabili in ingresso sono: • autoNN: struttura dati autoNN dell’autoassociatore; • I: vettore dati in ingresso. A.5 Sperimentazione in Matlab Riportiamo in questa sezione lo script usato per la sperimentazione del sistema biometrico usando le Radial Basis Function. Il tutto `e stato realizzato per essere eseguito in Matalb, utilizzando i dati dal Neural Passsword Control per mezzo dell’esportazione degli esempi (paragrafo 6.6). 126 A.5. Sperimentazione in Matlab Lo script funziona prelevando in ingresso i file contente gli esempi e addestrando una Radial Basis Function e restituisce i risultati sotto forma di grafici. Listing A.9: Strutura AUTONN %∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ % Inizializzazione dati % I dati di ingresso sono nella matrici train user n , % I target sono costituiti da tar % %pulisco tutto e chiudo tutte le finestre close all ; clear all ; %carico il file train file = fopen(’dati/esporta_train.dat’,’r’); train user = fscanf( file ,’%g’,[20 inf ]) ; fclose ( file ) ; %carico il file config per il train file = fopen(’dati/esporta_dati.dat’,’r’); numero = fscanf(file ,’%g’,[2 inf ]) ; fclose ( file ) ; %carico il file test file = fopen(’dati/esporta_test.dat’,’r’); test = fscanf( file ,’%g’,[20 inf ]) ; fclose ( file ) ; carico il file test bad file = fopen(’dati/esporta_bad.dat’,’r’); test bad = fscanf( file ,’%g’,[20 inf ]) ; fclose ( file ) ; %carico il file comparazione file = fopen(’dati/comparate.dat’,’r’); comparate = fscanf(file ,’%g’,[20 inf ]) ; fclose ( file ) ; %carico il file prestazioni autoassociatore 127 A.5. Sperimentazione in Matlab file = fopen(’dati/comparate_dati.dat’,’r’); autoass = fscanf( file ,’%g’,[1 inf ]) ; fclose ( file ) ; %individua il numero di righe e colonne dei vettori %test per la visualizzazione grafica visual=size(test ) ; visual1=size(test bad) ; visual2=size(comparate); %ricalcolo minmax per i dati normalizzati mm=minmax(train user); %target per tutti e due gli user costituito da 1 che indica che e’ l ’utente da %apprendere, con 0 che e’ un esempio non coretto per l’utente in questione tar=ones(1,numero(1,1)+numero(2,1)); tar (1,numero(1,1)+1:numero(1,1)+numero(2,1))=0; %chiedo di inserire il numero di neuroni di hidden hidden = input(’Inserire il numero di neuroni di hidden -> ’); %∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ % Generazione delle rete feedforward net=newff(mm,[hidden 1],{’radbas’, ’logsig’},’trainrp’); % Parametri % mm : matrice 20x2 che contiene i valori minimi e massimi per ogni % % componente dell’ingresso [hidden q] : numero di neuroni negli strati nascosto e di uscita % radbas : tipo delle funzioni di uscita per i neuroni dello % % strato nascosto − tipo radiale per avere la RBF logsig : tipo delle funzioni di uscita per i neuroni dello % % strato di uscita − sigmoidale con uscita tra 0 e 1 trainrp : algoritmo di apprendimento usato − Resilient BackPropagation %∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ % Addestramento user 1 % %parametri per l’addestramento della rete %numero epoche 128 A.5. Sperimentazione in Matlab net.trainParam.epochs=3000; %valore minimo errore net.trainParam.goal=0.00000001; %learning rate net.trainParam.lr=0.2; %addestramento rete net1=train(net,train user , tar) ; %simulazione rete addestrata out1=sim(net1,test); out2=sim(net1,test bad); out3=sim(net1,comparate); %troncamento dei vettori rusultati out1=round(out1); %se l’elemento e’ 1 riconosciuto out2=round(out2); %se l’elemento e’ 0 non riconosciuto out3=round(out3); %∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ %grafici dei risultati %user %grafo riferito ad un test con esempi positivi %se il risultato e’ 0 utente non riconosciuto se 1 utente riconosciuto figure axis ([0 10 0 3]) plot (1: visual (1,2) ,out1(1: visual (1,2) ) ,’o’,’markersize’,12) title (’Risultati su good example’) ylabel(’Riconosciuti’) xlabel(’Esempi’) %grafo riferito ad un test con esempi negtivi %se il risultato e’ 0 allora la rete ha riconosciuto l ’utente quindi va bene figure axis ([0 10 0 3]) plot (1: visual1 (1,2) ,out2(1:visual1 (1,2) ) ,’*’,’markersize’,12) title (’Risultati su bad example’) ylabel(’Riconosciuti’) 129 A.5. Sperimentazione in Matlab xlabel(’Esempi’) %grafo riferito ad un test con esempi comparativi all’ autoassociatore figure axis ([0 10 0 3]) plot (1: visual2 (1,2) ,out3(1:visual2 (1,2) ) ,’*’,1:visual2 (1,2) ,autoass(1: visual2 (1,2) ) ,’o’,’markersize’,12) title (’Risultati su comparate’) ylabel(’Riconosciuti’) xlabel(’Esempi’) 130 Bibliografia [1] CINIPA: Linee guida per le tecnologie biometriche, 2006. http://www.cnipa.gov.it/site/_files/Linee\%20guida\ %20tecnologie\%20biometriche.pdf [2] Yvette Agostini: Il Sottile confine tra privacy e sicurezza: i dispositivi biometrici, 2006. http://www.s0ftpj.org/docs/ep2004_biometria.pdf [3] Internetional Biometric Group: Biometrics Market and Industry Report, 2006. http://www.ibgweb.com/reports/public/market_report.html [4] Jean-Fran¸ cois Mainguet: Biometrics, 2006 http://perso.wanadoo.fr/fingerchip/biometrics/biometrics.htm [5] Ida M. Tarbell: Identification of criminals, 2006 http://chnm.gmu.edu/courses/magic/plot/bertillon.html [6] Giovanni Acampora, Vincenzo Medugno, Alfredo De Santis, Salvatore Valentino: Sistemi Biometrici, 1999/2000. http://www.dia.unisa.it/professori/ads/corso-security/www/ CORSO-9900/biometria/ [7] A Performance Evaluation of Biometric Identification Devices, Technical Report, 1991. SAND91-0276, Sandia National Laboratories, Albuquerque, NM 131 BIBLIOGRAFIA and Livermore, CA for the United States Department of Energy under Contract DE-AC04-76DP00789 [8] Universit` a di Bologna: Biometrich System Laboratory, 2006 http://biolab.csr.unibo.it [9] Daniela Poggi: Ingegneria del Software Interattivo, 2006 http://spirit.ing.unibs.it/IUM/dida/iumD/Lez14-06WalkthroughCog. pdf [10] Furio Cascetta, Marco De Lucia: Sistemi di Identificazione Personale, 2004 http://www.mondodigitale.net/Rivista/04_numero_due/Cascetta_p. 44-55.pdf [11] Michele Zanda: Web Usability, 2006 http://garga.iet.unipi.it/~AWICE/Web_Usability_topics.pdf [12] Hewlett-Packard Company: Guida alla sicurezza e al confort, 2002 http://www.hp.com/ergo [13] Darren Clifford D’Souza Typing Dynamics Biometric Authentication, 2002. University of Queesland, Faculty of Engineering & Physical Sciences, St Lucia, Australia [14] BioPassword Inc.: BioPassword Authentication Technology Whitepaper, 2006 http://www.biopassword.com/resources/BioPassword_Authentication_ Technology_Whitepaper.pdf [15] Marco Maggini: Classificatore basato su autoassociatori neurali, 2006 http://www.dii.unisi.it/~maggini/Teaching/ScuolaGII/ autoassociatori.html 132 BIBLIOGRAFIA [16] Marco Gori Introduzione alle Reti Neurali Artificiali, 2003 http://www.mondodigitale.net/Rivista/04_numero_uno/Gori_p.4-20. pdf [17] M. Gori, L. Lastrucci, G. Soda: Autoassociator-based models for speaker verification, 1996 Patter Recognition Letters, 17, 241-250 [18] Marco Gori, Angelo Frosini A Neural Network-Based Model for Paper Currency Recognition and Verification, 1996. IEEE Transactions on Neural Network, Vol. 7, NO 6 [19] Marco Maggini Libreria per l’implementazione di un autoassociatore neurale, 2006 http://www.dii.unisi.it/~maggini/Teaching/ScuolaGII/ann-rnn. html#autoass [20] Monica Bianchini Le reti neurali artificiali, 2006 http://www.dii.unisi.it/~monica/supdecis/Lezione4.zip [21] Tom M. Mitchell: Machine Learning, 1997 McGraw-Hill [22] PHP PHP Documentation, 2006 http://www.php.net/docs.php [23] Luke Welling and Laura Thomson: PHP and MySQL Web Development, 2000 Sams publishing [24] Giovanni Branca: PHP, 2002 McGraw-Hill 133
© Copyright 2025 ExpyDoc