1.1 Stato dell'arte
questo processo potrebbe risultare ben presto molto seccante e gli utenti potrebbero, di conseguenza,
decidere di disabilitare tale sistema di sicurezza per evitare questo fastidioso inconveniente (vedi 1.5.1).
1.1.2 Sistemi biometrici
La biometria è la scienza che si fonda sull'analisi e la verifica elettronica di alcuni aspetti fisici o
comportamentali della persona. Un sistema biometrico prevede una prima fase di registrazione, in
cui i dati vengono acquisiti, digitalizzati, elaborati e archiviati in un database; la successiva fase di
riconoscimento avviene mediante la nuova acquisizione e la comparazione di tali dati rispetto a quelli
archiviati. In sostanza, la parte del corpo o la funzione in questione vengono tradotte in un formato
matematico; il sistema verifica la corrispondenza con il modello originale archiviato e concede o meno
l'autorizzazione richiesta.
Attualmente le tecniche di identificazione biometrica più diffuse consistono nella valutazione di:
Impronte digitali. L'analisi può essere eseguita sia sull'immagine completa, sia su caratteristiche mi-
nori. Un vantaggio è rappresentato dal fatto che questo elemento è costante nel tempo, ma la
rilevazione delle impronte è difficilmente accettata dagli utenti, perchè culturalmente legata alle
indagini giudiziarie.
Geometria della mano. Un'immagine tridimensionale consente di valutare forma, ampiezza e lunghez-
za delle dita. Un vantaggio è rappresentato dalla facilità d'uso: infatti, basta appoggiare la mano
sul lettore.
Iride. É forse l'elemento più identificativo, perché stabile per tutta la vita e poi perché non esistono
due iridi uguali (addirittura nella stessa persona la destra è diversa dalla sinistra).
Volto. É il sistema di riconoscimento più vicino a quello che potremmo definire personale. L'aspetto
negativo è rappresentato dal fatto che le caratteristiche della faccia mutano nel tempo.
Firma. Il modo in cui viene apposta e le sue caratteristiche uniche consentono il riconoscimento della
persona. É un sistema accettato e le relative apparecchiature sono poco costose. L'unico elemento
negativo è rappresentato dalla instabilità nel tempo.
Voce e retina. Per il loro grado di sicurezza rappresentano i due metodi di riconoscimento che potreb-
bero svilupparsi maggiormente, ma si basano su analisi molto sofisticate che presuppongono
l'utilizzo di software molto complessi.
Ma, com'è possibile osservare nella realtà quotidiana, la biometria non è mai effettivamente decollata in
qualità di metodologia di riconoscimento e gestione delle presenze come ci si sarebbe attesi. Alcuni dati
confermano questa sensazione:
CAPITOLO 1. Introduzione 8
1.1 Stato dell'arte
• esistono tre o quattro aziende che, da sole, detengono più del 90% della produzione mondiale;
• in Italia, le vendite annue si aggirano sul migliaio di pezzi e tale dato può essere considerato
mediamente valido per alcuni altri Paesi europei.
Non sembrerebbe rilevante la componente economica. I sistemi biometrici, a pari prestazioni, sono
disponibili sul mercato con una differenza di prezzo trascurabile rispetto a quelli convenzionali. In ogni
caso non si può certo ritenere questo l'unico motivo che induce la stragrande maggioranza degli utenti
a ripiegare sui soliti sistemi di controllo accesso con PIN, password e quant'altro. Ma, allora, perchè
questi sistemi stentano così tanto a diffondersi?
Svantaggi della biometria
Falso rigetto. Alla base della diffusione di un sistema di identificazione vi sono due fattori molto
importanti: le tecnologie, di per sé tutte valide e accettabili su un piano teorico, e gli strumenti.
Il successo dipende ovviamente dall'applicabilità delle prime e dall'affidabilità e dall'accettabilità
dei secondi.
Tra i vari fattori di accettabilità e affidabilità risultano in prima linea il numero di errori peri-
odicamente rilevato, la stabilità tecnica e ambientale e la tollerabilità dello strumento sulla base
di elementi comportamentali o culturali.
Riguardo alla tipologia e al numero di errori che rendono affidabile o meno un sistema biometrico,
possiamo distinguere due ordini di problemi:
• falsa accettazione: il sistema riconosce erroneamente una persona non autorizzata e le concede
l'accesso a un luogo o a un'operazione. In questo caso a essere penalizzato è il grado di
sicurezza;
• falso rigetto: il dispositivo non riconosce la persona autorizzata e le nega l'accesso. In questo
caso a essere penalizzata è la funzionalità.
Ora, contrariamente a quanto si possa pensare, se gli strumenti biometrici non hanno avuto una
larga affermazione, lo si deve proprio al secondo di questi punti critici, ovvero le disfunzioni causate
all'utente dagli errori di falso rigetto. Gli strumenti biometrici, infatti, sono influenzati da fattori
ambientali quali la luce e il grado di umidità in relazione ai parametri analizzati. Ciò incide in
maniera sensibile sugli errori di falso rigetto.
Inconvenienti e disagi fisici durante l'uso. Una persona che indossa dei guanti deve togliere gli
stessi se deve farsi riconoscere da un lettore della mano; lo stesso dicasi per il controllo della retina
dove l'utente deve togliersi gli occhiali prima della lettura.
CAPITOLO 1. Introduzione 9
1.1 Stato dell'arte
Allo stesso modo, la laboriosità di utilizzo (operazioni complesse o tempi troppo lunghi), le remore
igieniche (appoggiare l'occhio o accostare la bocca dove molti altri hanno compiuto la medesima
azione) e la non accettazione per motivi culturali, sono tra le cause più significative della mancata
diffusione degli strumenti biometrici nel segmento medio-basso.
Sicurezza. Un ricercatore giapponese, Tsutomu Matsumoto, ha dimostrato come sia possibile ingannare
i sistemi di identificazione basati sul riconoscimento delle impronte digitali creando una impronta
clonata con la gelatina.
Dopo aver modellato una forma, in plastica, del proprio dito ed averla coperta di gelatina, il ricerca-
tore sarebbe riuscito ad ingannare, 4 volte su 5, i sistemi di autenticazione basati sul riconoscimento
delle impronte digitali. Inoltre, ha dimostrato come le impronte rilevate su un oggetto, ad esempio
su un bicchiere, dopo essere state rielaborate, possano essere trasferite sulla gelatina ed utilizzate
per aggirare questi sistemi.
Certo, questa ricerca ha riguardato dispositivi impiegati per proteggere i dati contenuti nella
memoria del PC al posto di una password. Questi apparati hanno un costo ridotto e presentano
una possibilità di elusione abbastanza nota, soprattutto in prodotti di tipo ottico.
Diverso il discorso per gli apparati progettati e sviluppati per essere impiegati negli insediamenti
ad alto rischio, con un costo e dei contenuti in termini tecnologici decisamente più elevati. Tutto
questo produce un livello di sicurezza maggiore, ma anche un limite di impiego, legato soprattutto
al costo di queste tecnologie.
Violazione della privacy. Quando si ottiene l'accesso mediante chiave, smart card, password, PIN
ecc..., il sistema riconosce la chiave o il codice, elementi di fatto non legati univocamente alla
persona.
Quando si compie la stessa operazione utilizzando la tecnologia biometrica, a essere riconosciuta
è invece direttamente la persona.
Questo suscita un certo dibattito sia fra gli operatori e l'utenza, che nelle sedi istituzionali del-
l'Autorità Garante per la Privacy. In realtà, il problema consiste nel verificare se gli strumenti
biometrici in questione archiviano o meno dati sensibili, ovvero riconducibili alla persona o ad
attributi biologici della stessa.
Purtroppo, la maggiorparte di questi strumenti può acquisire e archiviare immagini relative a dati
sensibili della persona come, ad esempio, immagini fotografiche di impronta digitale, viso, mano,
iride ecc... Si cade, così, in una evidente violazione della privacy.
CAPITOLO 1. Introduzione 10
1.1 Stato dell'arte
1.1.3 Zero Interaction Authentication (ZIA)
Di recente è stato presentato un sistema d'autenticazione token/laptop sviluppato da due ricercatori
americani, Mark D. Corner e Brian D. Noble, dell'università del Michigan. Il nome di tale sistema è ZIA,
ovvero Zero Interaction Authentication. Come funziona ZIA? Il laptop riconosce il suo proprietario
grazie ad un dispositivo hardware che comunica, attraverso una connessione wireless, con un token
installabile in un qualsiasi accessorio indossabile, come ad esempio un semplice orologio.
Se il token è fuori dal raggio di autenticazione del laptop, i dati vengono codificati con uno standard
avanzato di codificazione (AES, Advanced Encryption Standard) e resi nuovamente disponibili solo al-
l'avvicinarsi del proprietario. In sostanza, in ZIA, il proprietario si autentica al token molto raramente,
mentre il token si autentica continuamente al laptop su un corto raggio d'azione. In questo modo si
solleva l'utente da quel noioso compito che è l'inserimento continuo della chiave di decodifica. Si ottiene
così la protezione dell'informazione sensibile, poiché il laptop, per leggere i dati del file system, deve ot-
tenere prima la chiave di decodifica dal token: niente token, niente accesso ai dati! Naturalmente occorre
anche fare i conti con la perdita inevitabile di performance e usabilità causata dalla codifica/decodifica
dei dati. Gli autori di ZIA hanno risolto tale inconveniente dividendo ZIA in due moduli:
1. codifica nel kernel;
2. sistema d'autenticazione a livello utente.
Il modulo kernel fornisce I/O crittografico, gestisce le chiavi dei file, ed effettua il polling per rilevare
la presenza del token. Il sistema d'autenticazione comprende un server sul token e un client sul laptop
dell'utente, che comunicano tra loro attraverso un canale sicuro. L'utente ha la possibilità di usare un
PIN per sbloccare il token. A questo punto occorre legare il token al laptop (binding). Dopo che i
due si sono autenticati a vicenda sul link wireless, essi si scambiano una chiave di codifica di sessione.
Se l'autenticazione ha successo, il laptop continuerà ad effettuare il polling per rilevare il token e ad
assicurarsi che esso sia presente. Se ZIA non ottiene nessuna risposta in un tempo pari al doppio del
round trip time, compie vari tentativi di richiesta della chiave. Dopo tre tentativi, ZIA stabilisce che
il token (e quindi l'utente) è fuori dal raggio, e codifica i dati per sicurezza. Quando ZIA rileva che il
token è all'interno del raggio, i dati codificati saranno nuovamente decodificati e resi accessibili.
ZIA impone un overhead del 9.3%. Quando l'utente si allontana, il portatile può codificare tutti i
dati nel file system in soli cinque secondi. Al ritorno dell'utente, il portatile può decodificare i dati e
ripristinare lo stato precedente al suo allontanamento in sei secondi. Dunque l'utente non incontrerà
mai nessuna caduta rilevante delle prestazioni. Il progetto di ZIA è originale, e comporta senza dubbio
numerosi vantaggi per quanto riguarda la sicurezza nei dispositivi mobili.
Il progetto affrontato in questa tesi prende spunto da ZIA in quanto è anch'esso un modo per
consentire agli utenti di autenticarsi ad un computer senza richiedere la continua verifica della loro
CAPITOLO 1. Introduzione 11
1.2 Bluetooth: vantaggi e diffusione
identità. Una differenza è che il progetto usa Bluetooth come mezzo di trasporto fisico per il processo
d'autenticazione piuttosto che una rete wireless 802.11. Inoltre, il progetto di questa tesi è basato sul
linguaggio di programmazione Java per quanto riguarda il laptop e J2ME per i dispositivi mobili, con
tutti i benefici di portabilità, usabilità e sicurezza che tali adozioni comportano.
1.2 Bluetooth: vantaggi e diffusione
Bluetooth è una rete wireless a portata ridotta pensata inizialmente per abolire i cavi di collegamento
tra periferiche e unità centrale di un computer. Il passo successivo nelle reti wireless sono le LAN: si
tratta di sistemi dove ogni computer ha un modem radio e un'antenna per comunicare con altri sistemi.
Spesso l'antenna è installata nel soffitto. Tuttavia, quando i computer sono abbastanza vicini, possono
comunicare direttamente tra loro in una configurazione peer-to-peer. Esiste uno standard per LAN
wireless, chiamato IEEE 802.11, che è implementato dalla maggioranza dei sistemi e che sta diventando
estremamente diffuso. C'è stato tanto rumore di recente sugli standard wireless LAN IEEE 802.11 e sulla
tecnologia wireless Bluetooth. Le due tecnologie sono state concepite originariamente tenendo in mente
obiettivi alquanto diversi. Ma col passare del tempo queste tecnologie si sono evolute, sono divenute
sempre più sofisticate ed attualmente le loro linee di distinzione si stanno confondendo. Ma cosa hanno
in comune queste due tecnologie? Entrambe eliminano i cavi, abilitano i dispositivi ad uno scambio
d'informazione senza fili, estendono le LAN cablate con connessioni trasportate dall'aria. Ed entrambe
condividono la banda di frequenza senza licenza a 2.4GHz. E le loro differenze? Bluetooth è più mobile-
centric rispetto allo standard 802.11. Ad esempio, mentre quest'ultimo consente una mobilità limitata
all'interno di uffici o università, Bluetooth supporta capacità di global roaming. Inoltre, Bluetooth può
connettere un dispositivo ad una LAN e ad una WAN - diversamente dalla LAN 802.11 - creando quelle
che gli esperti chiamano Personal Area Networks (PAN). Create per singoli utenti, le PAN comprendono
connessioni LAN/WAN che possono essere installate e disinstallate al volo (on the fly).
Bluetooth può essere utile come cable replacement tra un modem di un portatile ed un telefono
cellulare. Consente agli utenti di scambiare informazioni da un dispositivo all'altro attraverso distanze
che variano dai 10 ai 100 metri. Può comunicare attraverso muri e non richiede la cosiddetta line of
sight, ovvero non è direzionale. Un numero di produttori di cellulari sempre maggiore aggiunge le
capacità del Bluetooth ai propri prodotti, e questo sta stimolando una crescente richiesta di auricolari
wireless Bluetooth per conversazioni hands-free. Attualmente il 13% dei telefoni mobili di tutto il
mondo possiede tale tecnologia e dal 2008 è previsto un aumento fino al 53%, pari a più di 700 milioni
di unità! Attualmente, la tecnologia Bluetooth è presente solo nei telefoni di fascia più alta. Nel tempo,
comunque, tutti i telefoni saranno dotati di Bluetooth e si avrà un aumento della domanda già a partire
da quest'anno, in base ad una ricerca effettuata da (1).
CAPITOLO 1. Introduzione 12
1.3 Java: semplicità ed efficienza
1.3 Java: semplicità ed efficienza
(2) Le caratteristiche principali di questo linguaggio di programmazione sono:
• Sintassi: è simile a quella del C e del C++, e questo non può far altro che facilitare la migrazione
dei programmatori da due tra i più importanti ed utilizzati linguaggi esistenti;
• Gratuito: per scrivere applicazioni commerciali non bisogna pagare licenze a nessuno. Sun ha
sviluppato questo prodotto e lo ha migliorato usufruendo anche dell'aiuto della comunità open-
source;
• Robustezza: essa deriva soprattutto da una gestione delle eccezioni chiara e funzionale, e da un
meccanismo automatico della gestione della memoria (Garbage Collection) che esonera il program-
matore dall'obbligo di dover deallocare memoria quando ce n'è bisogno, punto tra i più delicati
nella programmazione. Inoltre il compilatore Java, è molto severo. Il programmatore è, infatti,
costretto a risolvere tutte le situazioni poco chiare, garantendo al programma maggiori chance
di corretto funzionamento;
• Libreria e standardizzazione: Java possiede un'enorme libreria di classi standard che forniscono
al programmatore la possibilità di operare su funzioni comuni di sistema come la gestione delle
finestre, dei collegamenti in rete e dell'input/output. Il pregio fondamentale di queste classi sta
nel fatto che rappresentano un'astrazione indipendente dalla piattaforma, per un'ampia gamma
d'interfacce di sistema utilizzate comunemente. Inoltre, grazie alle specifiche di Sun, non esister-
anno per lo sviluppatore problemi di standardizzazione, come compilatori che compilano in modo
differente;
• Indipendenza dall'architettura: grazie al concetto di macchina virtuale ogni applicazione, una
volta compilata, potrà essere eseguita su di una qualsiasi piattaforma (per esempio un PC con
sistema operativo Windows o una workstation Unix). Questa è sicuramente la caratteristica più
importante di Java. Infatti, nel caso in cui si debba implementare un programma destinato a
diverse piattaforme, non ci sarà la necessità di doverlo convertire radicalmente da piattaforma a
piattaforma;
• Java Virtual Machine: ciò che di fatto rende possibile l'indipendenza dalla piattaforma, è la Java
Virtual Machine, un software che svolge un ruolo da interprete per le applicazioni Java. Più
precisamente dopo aver scritto un programma Java, prima bisogna compilarlo. Si otterrà così,
non direttamente un file eseguibile (ovvero la traduzione in linguaggio macchina del file sorgente
scritto in Java), ma un file che contiene la traduzione del listato in un linguaggio molto vicino
al linguaggio macchina detto bytecode. Una volta ottenuto questo file bisogna interpretarlo. A
CAPITOLO 1. Introduzione 13
1.4 Java 2 Micro Edition
questo punto la JVM interpreterà il bytecode ed il programma andrà finalmente in esecuzione.
Quindi, se una piattaforma qualsiasi possiede una Java Virtual Machine, ciò sarà sufficiente per
renderla potenziale esecutrice di bytecode. Infatti, da quando ha visto la luce Java, i Web Browser
più diffusi implementano al loro interno una versione della JVM, capace di mandare in esecuzione
le applet Java. Ecco quindi svelato il segreto dell'indipendenza della piattaforma: se una macchina
possiede una JVM, può eseguire codice Java. Si parla di macchina virtuale perché in pratica
questo software è stato implementato per simulare un hardware. Si potrebbe affermare che il
linguaggio macchina sta ad un computer come il bytecode sta ad una Java Virtual Machine.
Oltre che permettere l'indipendenza dalla piattaforma, la JVM permette a Java di essere un
linguaggio multi-threaded (caratteristica di solito dei sistemi operativi), ovvero capace di mandare
in esecuzione più processi in maniera parallela. Inoltre, garantisce dei meccanismi di sicurezza
molto potenti, la supervisione del codice da parte del Garbage Collector, validi aiuti per gestire
codice al runtime e tanto altro.
• Orientato agli oggetti: Java fornisce infatti degli strumenti che praticamente obbligano gli svilup-
patori a programmare ad oggetti. I paradigmi fondamentali della programmazione ad oggetti (ered-
itarietà, incapsulamento, polimorfismo) sono più facilmente apprezzabili e comprensibili. Java è
più chiaro e schematico che qualsiasi altro linguaggio orientato agli oggetti.
• Sicurezza: ovviamente, avendo la possibilità di scrivere applicazioni interattive in rete, Java
possiede anche delle caratteristiche di sicurezza molto efficienti. Come c'insegna la vita quo-
tidiana, nulla è certo al 100%. Esistono una serie di problemi riguardanti la sicurezza di Java che
ricercatori dell'Università di Princeton hanno in passato scoperto e reso pubblici su Internet. Ma
di una cosa però possiamo essere certi: il grande impegno che Sun dedica alla risoluzione di questi
problemi. Intanto, oggi come oggi, Java è semplicemente il linguaggio più sicuro in circolazione.
• Risorse di sistema richieste: questo è il punto debole più evidente di Java. Infatti, non esistendo
l'aritmetica dei puntatori, la gestione della memoria è delegata alla Garbage Collection della JVM.
Questa garantisce il corretto funzionamento dell'applicazione (ovvero non dealloca la memoria che
è ancora utilizzabile), ma non favorisce certo l'efficienza. Inoltre i tipi primitivi di Java non si
possono definire leggeri. Per esempio i caratteri sono a 16 bit, le stringhe immutabili, e non
esistono tipi senza segno (gli unsigned).
1.4 Java 2 Micro Edition
(3) Java 2 Micro Edition (J2ME) è una versione ridotta del JDK e grazie alle sue dimensioni e ai suoi
requisiti notevolmente inferiori può essere utilizzato su apparecchi tecnologici di gran lunga meno potenti
dei PC.
CAPITOLO 1. Introduzione 14
1.4 Java 2 Micro Edition
L'architettura di J2ME è a strati (Fig. 1.1), con il livello più basso che racchiude solamente la macchi-
Figura 1.1: Organizzazione della Piattaforma J2ME.
na virtuale e un insieme di classi ridotto all'essenziale che gestisce l'hardware di dispositivi con caratter-
istiche e tecnologie simili: quantità di memoria, velocità e banda di connettività, dimensione e numero
di colori del display, e via dicendo. Questo primo strato viene chiamato configurazione (configuration),
ed attualmente ne sono disponibili due implementazioni: la CDC (Connected Device Configuration) e
la CLDC (Connected Limited Device Configuration) come mostarto in Fig. 1.2: .
Figura 1.2: Configurazioni J2ME.
La CDC è indirizzata agli strumenti più potenti, come i PDA ad alta tecnologia, i sistemi telematici
veicolari, ecc... tutti con CPU a 32 bit e un minimo di 2Mb di memoria disponibile per Java e le sue
applicazioni.
La CLDC è invece destinata ad apparati più modesti, dai palmari più semplici fino ai cellulari: qui
si parla di connessioni intermittenti (non always-on), processori a basse performance a 16 o 32 bit, e
memoria tra i 128 e i 512 Kb. La macchina virtuale stessa subisce una notevole riduzione ed è chiamata
KVM (la K sta per Kilobyte, in virtù del fatto che raramente opera con RAM che tocchi il Megabyte): si
CAPITOLO 1. Introduzione 15
1.4 Java 2 Micro Edition
tratta di un'interessante riscrittura della macchina virtuale Java sviluppata per ottimizzarne dimensioni
ed uso di memoria, tendando di non sacrificare le funzionalità basilari del linguaggio.
Sul piano immediatamente superiore troviamo il profilo (profile), una libreria di alto livello che
definisce il ciclo di vita delle applicazioni e fornisce la base per la creazione di interfacce utente, nonché
l'accesso a proprietà specifiche dei dispositivi. É sostanzialmente lo strumento con cui i programmatori
sviluppano le proprie applicazioni.
Per la CDC questo strato è ulteriormente suddiviso in una serie di API sempre più granulari e
specializzate (Foundation Profile alla base e Personal Basis Profile e Personal Profile in cima, Fig.
1.3),
Figura 1.3: Profili CDC.
mentre la CLDC offre un sostrato unico che è chiamato MIDP (Mobile Information Device Profile): esso
si occupa della creazione delle interfacce utente, della connettività di rete, della gestione di applicazioni,
facendo da wrapper per i servizi di basso livello offerti dalla CLDC.
Infine gli Optional Packages garantiscono l'estensibilità del framework implementando funzionalità
accessorie come Bluetooth, web service, accesso ai dati, multimedia, ecc... e vengono inclusi nell'ambiente
esecutivo di un apparecchio in base alla sua potenza e capacità, a discrezione del produttore. Come i
JAR aggiuntivi, che sono inseriti nel classpath per creare applicazioni con funzionalità che vanno oltre
quelle che offre il JDK di base, così gli Optional Packages aumentano la produttività dello sviluppatore,
ma devono essere chiaramente di dimensioni molto contenute rispetto a quelli a cui ci si è abituati con
lo sviluppo Java classico.
Un'applicazione scritta per J2ME è designata col termine MIDlet. Tale MIDlet viene preso in carico
da un gestore applicativo, chiamato indifferentemente Java Application Manager (JAM) o Application
Manager Software (AMS), il quale si occupa del ciclo vitale dell'applicazione.
CAPITOLO 1. Introduzione 16
1.5 Single Sign-On (SSO)
Una volta che il codice del MIDlet è pronto per essere testato e distribuito, così come avviene per
qualunque programma Java, è necessario procedere alla sua compilazione prima di poterlo eseguire. Ma
la versione in bytecode delle classi subisce prima una procedura di verifica di integrità. Questa verifica ha
un costo di performance che, in termini di dimensione, si aggira sui 50 Kb e che si misura, però, anche in
termini di spazio di heap e tempo di elaborazione impiegati a runtime. Si tratta di un consumo di risorse
che, rapportato alle capacità dei sistemi a cui è destinato il profilo MIDP, è sproporzionatamente alto.
Per questo la fase di verifica di integrità e correttezza del compilato viene suddivisa in due momenti:
un primo controllo avviene durante lo sviluppo, subito dopo la compilazione, e produce un nuovo file
di classe già parzialmente verificato (verified); la seconda parte resta invece a carico dell'ambiente di
esecuzione del dispositivo wireless, ma con un requisito, in termini di risorse, significativamente ridotto.
A questo punto la classe è pronta per essere data in pasto ad un cellulare (o palmare) ed eseguita.
Di solito è raro trovare un'applicazione con una sola classe e, per tale ragione, si tende ad impacchettare
il lavoro di programmazione in un file JAR dentro cui si inseriscono, oltre al materiale Java, anche
eventuali risorse esterne al linguaggio (immagini, suoni e file di configurazione o proprietà). Inoltre, il
JAR dovrà contenere un file MANIFEST.MF, che descrive le caratteristiche salienti dell'applicazione e
contiene un insieme di dati predefinito dalla specifica dell'AMS.
1.5 Single Sign-On (SSO)
1.5.1 Vulnerabilità dei sistemi basati su password
Quante volte vi è capitato di lasciare il vostro computer completamente incustodito? Sicuramente molti
di voi hanno uno screensaver che blocca automaticamente il computer dopo un certo periodo; molti
impostano il tempo d'attesa a 20 minuti o anche di più, perché intervalli più corti sono irritanti. Senza
dubbio molti sviluppatori sono consapevoli della sicurezza e delle possibili minacce, ma quanti utenti non
hanno mai neppure bloccato il loro computer? Questo significa che chiunque può avvicinarsi alla loro
macchina mentre sono lontani, accedere ovunque essi si siano loggati in precedenza, e infine ripristinare
lo stato del desktop, tutto senza che nessuno se ne accorga. L'accesso fisico ad un computer è sempre
stato un problema legato alla sicurezza, soprattutto quando l'utente di questo computer ha accesso,
tramite username e password, ad applicazioni sensibili.
Ma non sempre le password bastano a garantire tale sicurezza. Uno studio recente dell'Istituto SANS
(5) e del Centro di Protezione dell'Infrastruttura Nazionale del FBI, conferma le password deboli come
la quinta minaccia più grande tra le vulnerabilità dell'IT, sia per i sistemi Unix che per quelli Windows.
Una recente ricerca sulla robustezza delle password ha trovato che un terzo delle password scelte
dagli utenti potrebbe essere rotto in meno di cinque minuti. Oggi, i cosiddetti password crackers sono
molto più efficienti, mentre la gente continua a scegliere ed usare password sempre nello stesso modo,
CAPITOLO 1. Introduzione 17
1.5 Single Sign-On (SSO)
rendendole l'anello debole nella sicurezza digitale. Sebbene le imprese cerchino di adottare password
sempre più lunghe, la nostra umana inclinazione a scegliere parole facili da ricordare continuerà a fare
delle password il tallone d'Achille di questo sistema.
Un'indagine del NTA (6), nel 2002, ha indicato che il 49% degli utenti annota le proprie password,
e l'81% degli intervistati sceglierebbe parole d'uso comune per memorizzarle meglio. Un altro studio
recente indica che il 64% degli utenti, sui quali è stata svolta l'inchiesta, hanno condiviso la loro password
con un'altra persona, e due terzi degli intervistati le hanno addirittura rivelate all'intervistatore!
La stessa indagine del NTA ha suddiviso gli utenti in tre gruppi: utenti leggeri (36,8%, con meno
di cinque password), utenti medi(33,4% da cinque a dieci password) e utenti pesanti (29,8%, con più
di dieci password). É stato trovato che:
• il 67% degli utenti cambia raramente o mai le proprie password;
• gli utenti pesanti devono gestire in media 21 password, ed alcuni di loro anche fino a 70.
Inoltre le password sono anche costose da supportare. Uno studio del Meta Group rivela che, in
media, le compagnie con un fatturato annuo superiore ai 400 milioni di euro hanno talvolta più di 75
applicazioni, database e sistemi che richiedono autenticazione. Con così tante password, non è solo una
sfida della sicurezza ma anche un problema di gestione. É stato stimato che un'impresa media spende
ogni anno dai 100 ai 300 euro per utente per la gestione delle password.
Un articolo su ZDNet UK (4) ha stimato che fino all'80% delle chiamate ricevute dal servizio d'as-
sistenza tecnica di un'impresa provengono da utenti che hanno dimenticato le loro password. Ciascuna
chiamata di supporto costa alle organizzazioni circa 20 euro. Dunque, il problema non è banale come
potrebbe sembrare a prima vista!
Gli amministratori, anche se non sono completamente d'accordo con queste cifre, sanno che i costi
per le password dimenticate sono comunque alti. Per ridurre il costo del supporto di un numero sempre
crescente di sistemi con password, le imprese stanno implementando soluzioni Single Sign-On (SSO).
1.5.2 Sicurezza e vantaggi economici del Single Sign-On
Il Single Sign-On (vedi Appendice C per maggiori approfondimenti) solleva dall'onere di ricordare com-
binazioni multiple di username/password, associando un account primario anche ad altre applicazioni
sensibili. Usando il Single Sign-On si riduce anche l'onere amministrativo di resettare le password, di
obbligare gli utenti a cambiare password, e di mantenere liste d'autenticazione multiple.
Gli utenti si loggano in un singolo punto d'accesso, e in seguito il sistema considera quella singola
autenticazione valida per ogni altra applicazione alla quale l'utente può accedere. Un utente ricorderà
più facilmente una sola password e non avrà bisogno di annotarla da nessuna parte. Il Single Sign-On
CAPITOLO 1. Introduzione 18
1.6 Vantaggi del sistema proposto
promette anche di ridurre drasticamente i costi d'amministrazione dovuti al mantenimento e al ripristino
di password multiple.
L'eliminazione di tali costi comporta un guadagno per le organizzazioni, un gran risparmio di tempo
per gli amministratori e un'enorme convenienza per gli utenti.
Limitare i costi e limitare il bisogno di ricordare password è un vantaggio in termini economici, ma
non per quanto riguarda la sicurezza: inevitabilmente, qualche utente meno consapevole della sicurezza
darà la sua password ad un collega o ad altre persone, oppure, sapendo di essere smemorato, l'annoterà
da qualche parte, rendendo l'intero sistema vulnerabile a causa di una password compromessa. Non è
un'idea allettante!
1.6 Vantaggi del sistema proposto
Il sistema proposto in questa tesi prende spunto dai punti di forza e dalle debolezze del SSO. Proprio
per porre rimedio a queste, memorizza e gestisce le credenziali di un utente all'interno di un singolo
dispositivo mobile, eliminando completamente la necessità di ricordare password o altre credenziali
d'autenticazione per accedere alla propria macchina.
Ecco qui riassunti i benefici del sistema proposto:
• le password deboli sono rimpiazzate con una chiave più forte e l'autenticazione è rafforzata dalla
presenza fisica del dispositivo;
• aumento della produttività di un'azienda: non bisogna più perdere tempo per supportare le pass-
word o per renderle più robuste; inoltre, gli utenti non hanno più bisogno di inserire fisicamente
in maniera ripetitiva username e password;
• riduzione dei costi legati alle password: le chiamate ai centri di assistenza tecnica, legate ai problemi
dovuti alle password, sono ridotte in maniera significativa;
• completa portabilità delle credenziali dell'utente: le credenziali sono memorizzate in maniera sicura
sul dispositivo mobile, consentendo la piena mobilità per gli utenti nell'accedere ai dati o alle
applicazioni su diverse postazioni di lavoro;
Con questo sistema, forme di credenziali non sicure come le password, sono sostituite da un'unica
soluzione, consentendo agli utenti di possedere le loro numerose credenziali letteralmente nel palmo
della loro mano, immagazzinandole all'interno di un dispositivo mobile e usandole in maniera automatica
quando necessario.
CAPITOLO 1. Introduzione 19
Capitolo 2
Descrizione dello scenario
2.1 Requisiti di sistema
2.1.1 Requisiti funzionali
Il software deve fornire un metodo per limitare l'accesso ad una risorsa fisica tramite l'uso di dispositivi
mobili.
Tale definizione è esplosa in più specifiche:
1. L'utente usa una risorsa fisica nella quale sono memorizzate informazioni personali o dati sensibili;
in tutti i casi l'accesso a tale risorsa dev'essere limitato solo a determinate persone:
• Di solito questo dispositivo è un portatile, ma teoricamente il sistema potrebbe essere adattato
anche ad altre risorse fisiche in contesti completamente diversi (una stampante o un fax in
un ufficio, ad esempio);
• Il dispositivo in questione dev'essere abilitato a comunicazioni con Bluetooth e IrDA.
2. L'utente deve essere dotato anche di un dispositivo personale mobile:
• Per dispositivi mobili s'intendono smartphone o PDA (Personal Digital Assistant);
• Anche questo dispositivo dev'essere abilitato a comunicazioni con gli standard Bluetooth e
IrDA.
3. L'accesso alla risorsa è assicurato attraverso un processo d'autenticazione. Le informazioni coin-
volte in tale processo sono memorizzate in maniera non volatile sulla risorsa fisica che funge da
server:
• Per questo motivo il sistema è legato ad un database: accedere al sistema vuol dire ac-
cedere prima al database sottostante. In pratica sistema e database condividono le stesse im-
20
2.1 Requisiti di sistema
postazioni di sicurezza percui, per accedere all'applicazione, occorre prima inserire username
e password del database.
4. Alla prima esecuzione dell'applicazione, un utente deve legare il dispositivo mobile alla risorsa
fisica: tale legame consiste nel condividere una chiave segreta sulla quale si basa l'esecuzione del
protocollo d'autenticazione:
• La chiave dev'essere scambiata tra due dispositivi che non si sono mai visti in precedenza
su un canale di comunicazione non sicuro: occorre, quindi, adottare un sistema sicuro per lo
scambio della chiave;
• La chiave e il protocollo d'autenticazione devono essere abbastanza robusti da impedire at-
tacchi contro la sicurezza del sistema, ed allo stesso tempo leggeri, tenendo presente che si
ha a che fare con un dispositivo mobile con risorse limitate.
5. La risorsa fisica deve possedere una tastiera per consentire all'utente che si allontana da essa,
attraverso una combinazione di tasti, di bloccare tale risorsa:
• Per blocco s'intende l'impossibilità, da parte di persone non autorizzate, di usare le periferiche
di input del dispositivo (come tastiera e mouse).
6. Se la risorsa fisica è stata bloccata, il sistema deve poter consentire il suo sblocco soltanto a chi
possiede effettivamente i dovuti privilegi:
• La procedura di sblocco (o di unlock) del sistema avviene avvicinando il dispositivo mobile
al sistema.
7. I processi di lock/unlock della risorsa devono essere semplici e veloci da realizzare, in modo
da invogliare l'utente a adottare questo sistema e a preferirlo alle tecniche già esistenti (come
l'inserimento di password).
8. L'esito delle varie sessioni di comunicazione tra risorsa fisica e dispositivo mobile dev'essere ripor-
tato su entrambi i display.
9. Tutte le sessioni di comunicazione (con esito positivo e non) tra i due dispositivi devono essere
anche registrate in un file di log per essere analizzate in un qualsiasi momento ed eventualmente
anche stampate su un supporto cartaceo:
• L'esito di una sessione di comunicazione può essere di tre tipi:
L'utente, o meglio il dispositivo legato all'utente, è stato registrato nel sistema ed ha
risposto con successo al processo d'autenticazione;
CAPITOLO 2. Descrizione dello scenario 21