Introduzione
Questi sono solo alcuni dei servizi che gli smartphone attualmente in commercio possono
offrire. Tenendo in considerazione questo scenario, si puo` facilmente comprendere perche´
la sicurezza dei dati sia un aspetto cos`ı importante per chi utilizza smartphone e applica-
zioni mobili. Molti servizi offerti dagli smartphone, infatti, richiedono la trasmissione di
dati sensibili come numeri di conti correnti o di carte di credito e, in assenza di opportuni
strumenti di protezione, utenti non autorizzati potrebbero venire in possesso di tali infor-
mazioni, utilizzandole a proprio vantaggio e arrecando danni morali e/o economici a persone
e/o aziende. Per mitigare questi rischi occorre rendere piu` sicure le trasmissioni di dati e,
per fare cio`, bisogna rispettare alcune caratteristiche:
Confidenzialita`: la comunicazione deve restare privata.
Integrita`: nessuno dev’essere in grado di modificare i dati, anche se e` in grado di
vederli.
Non ripetibilita`: un flusso di dati registrato non puo` essere utilizzato in alcun modo se
rispedito nuovamente al server. Ad esempio, per qualcuno potrebbe essere alquanto
spiacevole duplicare una transazione monetaria.
Autenticazione: un utente vuole sapere con certezza con chi sta comunicando e vor-
rebbe evitare attacchi del tipo “man-in-the-middle”. I client che si connettono ad un
sistema aziendale vogliono essere certi di comunicare con il server giusto. Inoltre, solo
i client autorizzati devono poter comunicare con il server.
Per proteggere i dati sensibili scambiati durante una comunicazione via smartphone, assicu-
rando le caratteristiche di cui sopra, occorre impiegare una crittografia forte. Attualmente
gli smartphone dispongono di una potenza di calcolo sufficiente a gestire funzioni critto-
grafiche, il che consente di effettuare operazioni come transazioni economiche e pagamenti
online in maniera sicura.
Introduzione 2
Introduzione
Ma quale algoritmo crittografico conviene usare con questo tipo di dispositivi? Gli algoritmi
crittografici si dividono in due grandi famiglie: quelli a chiave privata, o simmetrici, e
quelli a chiave pubblica, o asimmetrici. La crittografia simmetrica, computazionalmente
poco costosa, tuttavia non e` flessibile rispetto alla gestione delle chiavi poiche´ richiede che
queste vengano distribuite in anticipo. Invece, la crittografia a chiave pubblica consente una
gestione delle chiavi piu` flessibile, ma richiede una maggiore quantita` di calcolo. Purtroppo,
le capacita` di calcolo delle CPU degli smartphone sono limitate in termini di frequenza di
clock e dimensione della memoria.
Nel corso di questa tesi sono valutate le prestazioni di alcuni algoritmi crittografici, sim-
metrici e asimmetrici, in ambiente mobile. L’obiettivo principale e` quello di chiarire, sulla
base di misurazioni reali, se e quando e` preferibile utilizzare un algoritmo di crittografia
piuttosto che un altro. Naturalmente, non avrebbe alcun senso paragonare le prestazioni di
un algoritmo a chiave privata con quelle di algoritmi a chiave pubblica. Queste due fami-
glie di algoritmi crittografici sono, infatti, strutturate in maniera concettualmente diversa:
quelli a chiave privata sono piu` leggeri e veloci, e vengono utilizzati soprattutto per le fasi di
cifratura/decodifica, mentre quelli a chiave pubblica vengono utilizzati per le firme digitali
e risolvono in maniera brillante il problema dello scambio iniziale della chiave. In sostan-
za, sono utili entrambi, ma sono molto diversi tra loro. Per questo motivo, le prestazioni
dell’algoritmo a chiave privata sono considerate a parte rispetto a quelle degli algoritmi a
chiave pubblica.
L’analisi empirica delle prestazioni e` effettuata, oltre che su smartphone, anche a livello
di emulazione su portatile. Questo permette di verificare se esiste o meno una differenza
sostanziale tra i risultati ottenuti in un ambiente virtuale e quelli ottenuti in un ambiente
reale.
Di seguito e` illustrata la struttura della tesi:
Nel Capitolo 1 vengono introdotti gli algoritmi crittografici trattati in questa tesi. La crit-
Introduzione 3
Introduzione
tografia simmetrica e` utilizzata gia` da diverso tempo. Questo schema si basa sull’esistenza
di una chiave unica, nota soltanto alle parti comunicanti, utilizzata sia nella fase di cifratura
che in quella di decodifica del messaggio. Gli algoritmi a chiave privata hanno il vantaggio
di essere molto veloci, idonei per cifrare grandi quantita` di dati ma, come gia` detto in pre-
cedenza, richiedono uno scambio iniziale di informazioni segrete che ne limita la flessibilita`
e la sicurezza. Nella Sezione 1.1.1 verra` descritto l’unico algoritmo crittografico simmetrico
valutato in questo lavoro di tesi, l’Advanced Encryption Standard (o AES) con chiave a 256
bit. L’utilizzo della crittografia asimmetrica permette di ovviare al problema dello scambio
delle chiavi. Il sistema impiega due chiavi generate contemporaneamente, una utilizzata in
fase di cifratura (chiave pubblica) ed una in fase di decodifica (chiave privata). In questo
modo e` possibile mantenere segreta una delle due chiavi, mentre si rivela pubblicamente
l’altra, permettendo di fatto un’interazione reciproca affidabile. Nella Sezione 1.2 verranno
descritti i due algoritmi crittografici asimmetrici valutati nel corso di questo lavoro di te-
si, ovvero Rivest Shamir Adleman (o RSA) ed Elliptic Curve Cryptography (o ECC). Le
prestazioni del primo algoritmo, RSA, sono stato testate con chiavi a 1024 bit e 2048 bit,
mentre le prestazioni del secondo algoritmo, ECC, sono state valutate su sei curve racco-
mandate dallo Standards for Efficient Cryptography Group (o SECG). Il maggior numero
di test sulla crittografia a curve ellittiche e` dovuto ad un maggior interesse verso questo tipo
di crittosistemi che, fornendo la stessa robustezza crittografica di RSA con operazioni molto
piu` veloci e chiavi molto piu` piccole, sarebbero ideali per ambienti con risorse di calcolo e di
memoria limitate. Nella Sezione 1.2.4, comunque, sono riportate nel dettaglio le motivazioni
che hanno condotto a questa scelta. I cifrari a chiave pubblica possono essere usati anche
“al contrario”, cioe` cifrando il testo in chiaro con la chiave privata del mittente. Chiunque,
usando la chiave pubblica del mittente, e` in grado cos`ı di decodificare il messaggio cifrato. Su
cio` si basa la firma digitale: se l’operazione si conclude senza errori, si ha l’assoluta certezza
che il messaggio e` stato inviato dal titolare della chiave pubblica usata per la decifratura.
Introduzione 4
Introduzione
Nella Sezione 1.3 e` descritto, appunto, il concetto di firma digitale.
Nel Capitolo 2 sono evidenziate le principali funzionalita` dell’applicazione realizzata, oltre
ad alcuni accorgimenti adottati in fase di sviluppo. In seguito, sono descritte le piattaforme
sulle quali sono stati eseguiti i test, i linguaggi di programmazione e i relativi ambienti
di sviluppo utilizzati. Infine, viene descritto il framework crittografico delle API Bouncy
Castle e il protocollo OBEX, adottato per trasferire i risultati dai dispositivi mobili al PC.
All’interno del Capitolo 3 sono esposte nel dettaglio le fasi d’installazione dell’applicativo
(Sezione 3.1) e d’esecuzione dei test (Sezione 3.3). L’idea e` quella di utilizzare smartphone
basati sul sistema operativo Symbian OS (attualmente il sistema operativo piu` diffuso per
dispositivi mobili) per testare le prestazioni degli algoritmi di crittografia descritti nel Ca-
pitolo 1. Quindi, sono descritte le due modalita` di invio (Sezioni 3.4.1 e 3.4.2) dei risultati
ottenuti dai test. Infine, vi e` un breve approfondimento (Sezione 3.5) circa la tecnica di pro-
grammazione adottata per misurare, facendo uso di API “native”, il consumo di memoria
dei dispositivi Symbian OS.
Nel Capitolo 4 e` presentata l’implementazione delle applicazioni J2ME descritte nelle Sezioni
3.2.1, 3.2.2 e 3.2.3. Inoltre, sono riportati tutti i parametri utilizzati nei test crittografici
effettuati.
All’interno del Capitolo 5 sono riportati numerosi grafici che mostrano i risultati ottenuti
dall’esecuzione dell’applicativo su diversi smartphone. Nel corso di questo lavoro di tesi,
infatti, sono stati affrontati alcuni aspetti implementativi di algoritmi crittografici quali
AES, RSA ed ECC. Questi algoritmi sono stati valutati da un punto di vista delle prestazioni
e dell’utilizzo di memoria. Tali valutazioni sono state effettuate sullo smartphone Nokia
6630 e sul piu` recente Nokia N70. Inoltre, questi risultati sono stati confrontati con quelli
ottenuti emulando l’applicativo su un computer portatile con sistema operativo GNU/Linux,
attraverso l’uso del NetBeans Mobility Pack 5.5.
Nel Capitolo 6 sono commentati i risultati dei test effettuati sulle tre piattaforme in esa-
Introduzione 5
Introduzione
me. Le osservazioni si basano sulle Figure del Capitolo 5 e sui fogli di calcolo riportati in
Appendice 7. Nelle Sezioni 6.1, 6.2 e 6.3 sono riportate alcune considerazioni sui tempi d’e-
secuzione e sul consumo di memoria degli algoritmi crittografici analizzati. In particolare,
nella Sezione 6.4 sono confrontati gli algoritmi RSA ed ECC, oltre che dal punto di vista del
tempo d’esecuzione e della memoria, anche per tutto cio` che riguarda lo spazio e, quindi, la
dimensione della chiave pubblica, della cifratura e della firma digitale.
Infine, nel Capitolo 7 sono riportate le conclusioni ottenute in seguito a questo lavoro di
tesi.
Introduzione 6