Papini Tiziano

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