SlideShare une entreprise Scribd logo
1  sur  13
Università degli Studi di Catania




      Concorso Telecom Sinfonia - Sistemi Embedded
                                                           Prof. V.Catania




                     TrustMe
                     http://code.google.com/a/eclipselabs.org/p/trustme/




                                                                                            WormHole
                                                                                     Riccardo Pulvirenti
                                                                                      Giuseppe Ravidà




Università degli Studi di Catania   - Concorso Telecom Sinfonia - Sistemi embedded
Università degli Studi di Catania




Indice

Descrizione
                                                    1

   Introduzione
                                                1

   Ambito di utilizzo
                                          1

           Elenco delle funzionalità offerte da TrustMe
        1

Architettura
                                                   2

   Panoramica
                                                  2

   Client side - AndroidTrustMe
                                2

       Accesso ai servizi
                                      2

           Note sull’utilizzo dei Servizi Sinfonia CMS (POI)
   3

       Sicurezza e crittografia
                                 3

       Interfaccia utente
                                      4

   Server side - TrustMe
                                       5

Casi d’uso
                                                     7

   Inserimento di nuovi dati
                                   7

   Visualizzazione dei dati
                                    7

   Modifica e rimozione dei dati
                                8

   Ricerca sportelli ATM in zona
                               9

   Aggiungere ulteriori dati
                                   9

Note sull’installazione
                                        10

   Installazione server
                                        10

Nome resoconto
                                                  i
Università degli Studi di Catania


   Installazione client
            10




Nome resoconto
                      ii
Università degli Studi di Catania




Descrizione

Introduzione
TrustMe è un’applicazione che consente di conservare in maniera sicura dati sensibili come numeri di carte di credito, codici
di sicurezza, note personali, ecc. L’applicazione sfrutta lo standard internazionale AES-256 1 per cifrare i dati. In questo modo
nessun male intenzionato, pur venendo in possesso dei dati memorizzati, potrebbe decifrarli. La cifratura è basata su una
password scelta dall’utente e, tramite algoritmi di derivazione, utilizzata per cifrare i dati.

Una volta inseriti i dati questi possono essere eliminati o modificati in qualunque momento, utilizzando l’intuitiva interfaccia
utente.

Oltre alla memorizzazione sicura dei dati, TrustMe offre anche un servizio di localizzazione geografica col fine di indicare gli
sportelli ATM, compatibili con le carte di credito presenti in memoria, intorno a voi. Questo consente di poter risparmiare
sulle commissioni imposte dagli sportelli di altri circuiti bancari.


Ambito di utilizzo
Il salvataggio delle informazioni private è lo scopo principale dell’applicazione. Questo garantisce sicurezza ed evita di dover
ricordare a memoria decine e decine di codici e nomi utente. L’applicazione ha ancora funzionalità limitate, ma le possibilità
sono tantissime. Fra le più importanti vi è sicuramente la possibilità di integrare i pagamenti con tecnologia NFC, che sta
cominciando a svilupparsi su scala mondiale.

Altre importanti features previste sono la generazione casuale di password, gestione migliorata di localizzazione geografica,
sincronizzazione e un’usabilità maggiore.

Elenco delle funzionalità offerte da TrustMe

                            Funzionalità                                                      Caratteristiche
                         Salvataggio dei dati                           I dati vengono cifrati e memorizzati su un server remoto sul
                                                                                  quale girano servizi di Telecom-Sinfonia
                               Cifratura                               Prima di essere memorizzate, le informazioni vengono cifrate
                                                                                                  con AES
                      Servizio di localizzazione                       Ricerca degli ATM in zona con preferenza in funzione dei dati
                                                                                            salvati nel Database
                          Sincronizzazione                             Possibilità di accedere ai dati da diversi dispositivi e dal web


L’applicazione sarà supportata da un apposito sito web che consentirà la gestione delle anagrafiche utenti e permetterà la
sincronizzazione dei propri dati fra più dispositivi




1   La versione attuale di TrustMe utilizza una cifratura a 128 bit per scopi dimostrativi. La versione finale utilizzerà cifratura a
256bit


Trust me - Concorso Telecom Sinfonia
                                                                                                     1
Università degli Studi di Catania




Architettura

Panoramica
L’applicazione TrustMe è stata pensata per girare su dispositivi mobili con sistema operativo Android.

TrustMe si compone di un lato client (che consiste nell’applicazione vera e propria in esecuzione sul dispositivo mobile) e un
lato server (caratterizzato da tutti i servizi di accesso ai dati, localizzazione e autenticazione).

L’intera applicazione è scritta in JAVA e imposta i dati di ritorno come CSV (Comma Separated Values) che vengono
opportunamente elaborati prima del loro utilizzo da apposite funzioni parser.

Analizziamo nel dettaglio entrambe le parti.


Client side - AndroidTrustMe
Lato client si ha l’integrazione di tre componenti principali:

• A: Accesso ai servizi

• B: Sicurezza e crittografia

• C: Interfaccia utente




                                                            A
                                                                           B
                                                        C
                                          Le componenti principali di TrustMe - lato client


Accesso ai servizi
Lato Android l’applicazione esegue richiamando servizi che restituiscono dati in formato JSON. Questi dati vengono utilizzati
per effettuare l’autenticazione, accedere al database in lettura e in scrittura, chiedere e manipolare la lista degli ATM in
funzione della posizione attuale. L’utilizzo di dati formattati in JSON permette un’alta interoperabilità fra ambienti diversi. In
questo modo siamo in grado, senza apportare modifiche lato server, di poter offrire le stesse funzionalità ad applicazioni per
altri dispositivi e per web.

Come abbiamo già visto, i dati utente vengono memorizzati su un server remoto; questo offre il vantaggio di poter accedere
ai propri dati in qualunque istante, da qualunque parte del globo e soprattutto aggiunge sicurezza in quanto tali informazioni


Trust me - Concorso Telecom Sinfonia
                                                                                           2
Università degli Studi di Catania

non verranno mai salvate sul dispositivo e anche se venissero “rubate” dal server non potrebbero essere utilizzate in quanto
cifrate con chiave master segreta. Per poter accedere, visualizzare, modificare o eliminare le proprie informazioni, vengono
invocati dei metodi remoti (Web Services) tramite passaggio di opportuni parametri. Le librerie di accesso ai dati sono le
seguenti (in pseudocodice):



        String userAuth(String uName, String uPassword);

        void addCreditCard(String newCard);

        void removeCard(int cardId);

        void updateCard(String cardFields);

        String[] cardsList(int userID);

        void addPassword(String newPassword);

        void removePassword(int passId);

        void updatePassword(String passFields);

        String[] passwordsList(int userID);


Tali servizi forniscono la possibilità di inserire, modificare, eliminare e visualizzare dati relativi alle carte di credito e alle
password.

I servizi per l’accesso ai dati sono servizi “custom” implementati dal team WormHole. A questi servizi si aggiungono quelli
offerti dal framework Sinfonia di Telecom che permettono la localizzazione di punti di interesse in funzione della posizione
attuale. Nel nostro caso abbiamo usato il servizio Sinfonia CMS per ottenere la lista degli ATM in zona.


      String getMapUrl(Double lon, Double lat);




Note sull’utilizzo dei Servizi Sinfonia CMS (POI)
Al momento il framework Sinfonia permette la sola localizzazione nella città di Torino. Le coordinate quindi sono impostate
staticamente. L’applicazione comunque integra già l’interrogazione del dispositivo GPS e la possibilità di leggere e inviare a
Sinfonia    le coordinate attuali. Inoltre nella lista dei POI fornita da Sinfonia non sono presenti gli ATM, quindi abbiamo
utilizzato come valore di ritorno una lista qualunque (monumenti); basta semplicemente creare una voce nel database
Sinfonia e cambiare il codice di ricerca nella funzione getMapUrl.

Sicurezza e crittografia
Il progetto lato client contiene un particolare package (trustme.security) che si occupa di crittografare e decifrare i dati.
Tali funzioni utilizzano i meccanismi offerti da Java in tema di sicurezza (java.security, javax.crypto).

Le password di accesso ai dati vengono codificate con SHA-256 e memorizzate nel server già cifrate. SHA-256 offre un
meccanismo di hashing one-way sicuro e mantiene protetta l’identità degli utenti.

Per la cifratura dei dati sensibili è usato invece l’algoritmo AES. Per questa versione dimostrativa, per motivi di tempo, è
stata implementata una funzione di crittografia AES a 128bit con master secret ottenuto tramite MD5 dei dati di login. MD5
fornisce anch’esso un alto livello di sicurezza one way.




Trust me - Concorso Telecom Sinfonia
                                                                                           3
Università degli Studi di Catania

Le funzioni di crittografia usate nel modulo client rispettano le seguenti firme:


      Crypto.java:

      public static String encrypt(String seed, String cleartext)

      public static String decrypt(String seed, String encrypted)



      SHAEncrypter.java:

      public static String Encrypt(String password)



      MD5Encrypter.java:

      public static String Encrypt(String text)


Interfaccia utente
L’interfaccia utente è stata pensata per fornire la migliore user-experience possibile, basandosi su un layout semplice e
modulare e un alto livello di intuitività dei pulsanti.




                                                                                                 Pulsante
                                                                                                     di
                     barra principale
                                                                                                inserimento
                             di
                         selezione




                                                                                                 Area
                                                                                                   di
                                                                                            visualizzazione




                                                          Screenshot applicazione


La barra principale di selezione permette di poter scegliere fra carte di credito, password e localizzazione ATM. Ogni
scelta aprirà l’elenco delle informazioni corrispettive oppure la mappa con i placemarks indicanti gli ATM più vicini

Il pulsante di inserimento permette, tramite la comparsa di un menu contestuale, di selezionare per l’inserimento di nuove
carte di credito o password.



Trust me - Concorso Telecom Sinfonia
                                                                                   4
Università degli Studi di Catania

L’area di visualizzazione, infine, è l’area che si popolerà con l’elenco di carte di credito, password o con la mappa con i
placemarks indicanti gli ATM in zona. Quest’area supporta la pressione prolungata su un elemento per entrare in modalità
modifica o inserimento.


Server side - TrustMe
Lato Server si trovano tutte le funzioni per l’acceso ai dati, la loro manipolazione e il servizio Sinfonia CMS per ottenere la
lista degli ATM in zona.

Una volta interrogato, il server risponde con un oggetto JSON (in genere CSV String oppure String Array) con
un’espressione di questo tipo:


      {"cardsListBean":{"cardsList":["2,
      C1624CFBCC9E61D55269B7862A1FA656094F099088BA9D6FCA00F9E51A5FE59D0BE29E1
      3532FF3EAF6A71C752F75C7F8C197C94F1C9F9894CB0E882BFC349804,2","5,
      7A650AC505B48FE8022892DD7510D620F0518B2499D415FC1EC7E8003B53DD762E25C10
      BB6A477EA63C9FBF3948E9FACCD29922DF31D0E498DABA5A0A2D54612,2","6,
      4D0B0CEE80DA94BA4895B507A2B9F84F62EC19B549B685BD729C39064096755108FE081
      59EE0CCDF74F3B5F1F471C548788FDBCC422E5D1E85038AEE926B04DC,2","7,
      A89507B3D8D974B348E0316CAEEEBB69937419DF366B40AF9B7CFB2D8D9BABF3631A134
      6BE0AC077095E4468E2E217BF56529FEF10460AC20C6F46704DF099CB,2","8,
      06D8AF1E9D79286C177CA64A144562D9C9C36BBFB14CB75F3DE2B6FCE2C168567ECE196
      D36EC1A88FE51E87D618A2649B0663FEED2C5359409AF66FE3FEAAE5A,2","9,
      9A2149C4400E06B6D48F3B9727841CA8F2A63D16798C61242618E59E8A502835D3DA504
      06CC14A8DF6923CBB7B06343F8659EF83B4AF22736555481003FD6EFC43B2515E3D5356
      6B0600269A2E7FA487,2","10,
      6F434C1396CC6EF60EB1C239DCBF0B46ED125C1513235A1C58B8C1126EFBA5F7AFAE443
      7525CC95E2F7AE4B4BF65CC4A2BD93C4914D073F659BA018FC55B772B,2"]}}


Come si può notare, i dati sono tutti cifrati e non accessibili senza la masterkey.

Sul server è installata l’ultima versione di MySQL per gestire il database users, composto dalle seguenti tabelle:

• tm_users: questa tabella è quella che contiene le informazioni sull’utente quali username e password. La password è
  memorizzata previa cifratura con SHA-256. Una volta inseriti i dati di accesso questi vengono cifrati lato client e la funzione
  userAuth si occuperà di verificarne l’esatta corrispondenza.




                                                       Schermata di login



Trust me - Concorso Telecom Sinfonia
                                                                                          5
Università degli Studi di Catania

• tm_passwords: questa tabella contiene le password salvate dall’utente, opportunamente cifrate con AES. In fase di
  lettura, viene restituita al client la stringa cifrata, separata con una virgola dal campo UserID; l’applicazione Android si
  occuperà di decifrare con la chiave segreta, organizzare i campi in apposite strutture dati e visualizzarli nell’interfaccia
  grafica.

• tm_cards: qui vengono memorizzate le carte di credito, sempre cifrate, organizzate per categorie.

• tm_cardTypes: le categorie delle carte di credito (VISA, MASTERCARD, BANCOMAT, ecc). L’applicazione Android
  popola dinamicamente un menu a discesa durante l’inserimento di nuovi dati direttamente da questa tabella.




Trust me - Concorso Telecom Sinfonia
                                                                                       6
Università degli Studi di Catania




Casi d’uso

Inserimento di nuovi dati
Al primo utilizzo il database utente si presenterà vuoto. La procedura qui descritta per inserire nuove carte di credito è simile
a quella per l’inserimento di nuove password.




come indicato in figura, basterà “tappare” sullo schermo per entrare in modalità inserimento, compilare i campi e premere il
pulsante di salvataggio. Una volta inserite, le informazioni appariranno insieme alle altre in una lista elenco nell’area di
visualizzazione.


Visualizzazione dei dati
Per visualizzare in dettaglio le informazioni inserite basterà fare un singolo tap sull’elemento desiderato. Si aprirà in questo
modo una finestra di visualizzazione.




Trust me - Concorso Telecom Sinfonia
                                                                                          7
Università degli Studi di Catania




Modifica e rimozione dei dati
Una volta inseriti, i dati possono essere modificati o eliminati. Per far ciò, tenere premuto qualche secondo sull’elemento che
si vuole eliminare fino a quando comparirà il menu contestuale, come indicato in figura.




Trust me - Concorso Telecom Sinfonia
                                                                                       8
Università degli Studi di Catania

Ricerca sportelli ATM in zona
Oltre a memorizzare i dati, con TrustMe è possibile ricercare gli sportelli ATM più vicini per effettuare operazioni. Per far ciò
basta tappare una volta sull’icona a forma di lente di ingrandimento e attendere un momento per la localizzazione.




Aggiungere ulteriori dati
Per aggiungere ulteriori informazioni, dopo il primo inserimento, basterà tappare sul pulsante con il simbolo “+” in alto a
destra nell’applicazione.




Trust me - Concorso Telecom Sinfonia
                                                                                          9
Università degli Studi di Catania




Note sull’installazione

Installazione server
Per poter utilizzare l’applicazione bisogna aver installato il framework Sinfonia e creare un database di nome “users” con le
tabelle indicate precedentemente. Un dump del database vuoto è presente sotto forma di istruzione SQL nel DVD in
dotazione. Eseguire la query dovrebbe essere sufficiente a configurare la base dati.

Configurata la parte di storage, bisogna compilare le classi action e pubblicare i servizi su un application server come
Apache Tomcat. In ambiente Eclipse basta premere il tasto destro del mouse sulla cartella del progetto “TrustMe” e
selezionare Run As->Run On Server.


Installazione client
TrustMe è un’applicazione sviluppata per girare su dispositivi Android. Per poter testare l’applicazione bisogna avere
installato l’SDK per lo sviluppo di applicazioni Android ed eseguire il software su un emulatore. Alternativamente basterà
copiare il file .apk sul vostro terminale reale e lanciare l’applicazione.

Per far si che l’applicazione funzioni, bisogna configurare, fra le risorse statiche del progetto, l’indirizzo IP del server sul quale
sono in esecuzione i servizi. Per far ciò aprire il progetto AndroidTrustMe in Eclipse, navigare l’albero dei files fino alla
directory res/values e modificare il file strings.xml alla voce ip_address. Fatto questo lanciare l’emulatore oppure
compilare e copiare il file .apk così generato sul dispositivo ed installarlo.

L’utente di prova può accedere con i seguenti dati:

User Name: myuser

Password: mypass

Il progetto è disponibile al seguente indirizzo:

                        http://code.google.com/a/eclipselabs.org/p/trustme/




Trust me - Concorso Telecom Sinfonia
                                                                                             10

Contenu connexe

Similaire à TrustMe - Concorso Telecom-Sinfonia

Mobile payments definizioni sicurezza e contesto normativo dic2010
Mobile payments definizioni sicurezza e contesto normativo dic2010Mobile payments definizioni sicurezza e contesto normativo dic2010
Mobile payments definizioni sicurezza e contesto normativo dic2010CATTID "Sapienza"
 
Ai & Ethereum the world computer
Ai & Ethereum the world computerAi & Ethereum the world computer
Ai & Ethereum the world computerGioacchino Vaiana
 
04 sicurezza fisica e videosorveglianza
04 sicurezza fisica e videosorveglianza04 sicurezza fisica e videosorveglianza
04 sicurezza fisica e videosorveglianzaIBM Italia Web Team
 
Mobile payments monetica febbraio2012
Mobile payments monetica febbraio2012Mobile payments monetica febbraio2012
Mobile payments monetica febbraio2012CATTID "Sapienza"
 
Tesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computingTesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computingfrancesco pesare
 
Vpn Virtual Private Network
Vpn Virtual Private NetworkVpn Virtual Private Network
Vpn Virtual Private Networkcarmine ricca
 
Gruppo Sintesi Servizi Uc
Gruppo Sintesi Servizi UcGruppo Sintesi Servizi Uc
Gruppo Sintesi Servizi UcPaolo Pelloni
 
La sicurezza delle applicazioni di Mobile Payment_Paolo Di Rollo
La sicurezza delle applicazioni di Mobile Payment_Paolo Di RolloLa sicurezza delle applicazioni di Mobile Payment_Paolo Di Rollo
La sicurezza delle applicazioni di Mobile Payment_Paolo Di RolloCATTID "Sapienza"
 
NetEye nel gruppo Savio-ITEMA
NetEye nel gruppo Savio-ITEMANetEye nel gruppo Savio-ITEMA
NetEye nel gruppo Savio-ITEMAWürth Phoenix
 
La Sicurezza nei Sistemi di Supervisione e Controllo degli Impianti (SCADA)
La Sicurezza nei Sistemi di Supervisione e Controllo degli Impianti (SCADA)La Sicurezza nei Sistemi di Supervisione e Controllo degli Impianti (SCADA)
La Sicurezza nei Sistemi di Supervisione e Controllo degli Impianti (SCADA)ciii_inginf
 
Sviluppo e implementazione su microcontrollore di un’applicazione web server ...
Sviluppo e implementazione su microcontrollore di un’applicazione web server ...Sviluppo e implementazione su microcontrollore di un’applicazione web server ...
Sviluppo e implementazione su microcontrollore di un’applicazione web server ...pma77
 
Company profile ingenium logic
Company profile ingenium logicCompany profile ingenium logic
Company profile ingenium logicIngenium Logic srl
 
Gruppo Sintesi Servizi Un Comm
Gruppo Sintesi Servizi Un CommGruppo Sintesi Servizi Un Comm
Gruppo Sintesi Servizi Un Commgansinelli
 
2015 tis servi_tecno_endian-v4_emt2
2015 tis servi_tecno_endian-v4_emt22015 tis servi_tecno_endian-v4_emt2
2015 tis servi_tecno_endian-v4_emt2Enzo M. Tieghi
 

Similaire à TrustMe - Concorso Telecom-Sinfonia (20)

Mobile payments definizioni sicurezza e contesto normativo dic2010
Mobile payments definizioni sicurezza e contesto normativo dic2010Mobile payments definizioni sicurezza e contesto normativo dic2010
Mobile payments definizioni sicurezza e contesto normativo dic2010
 
SIMarket_Massimo La Morgia
SIMarket_Massimo La MorgiaSIMarket_Massimo La Morgia
SIMarket_Massimo La Morgia
 
Ai & Ethereum the world computer
Ai & Ethereum the world computerAi & Ethereum the world computer
Ai & Ethereum the world computer
 
04 sicurezza fisica e videosorveglianza
04 sicurezza fisica e videosorveglianza04 sicurezza fisica e videosorveglianza
04 sicurezza fisica e videosorveglianza
 
Micro virtual system ita
Micro virtual system ita Micro virtual system ita
Micro virtual system ita
 
Sicur Control System Cloud - Agostino Forestiero
Sicur Control System Cloud - Agostino ForestieroSicur Control System Cloud - Agostino Forestiero
Sicur Control System Cloud - Agostino Forestiero
 
Mobile payments monetica febbraio2012
Mobile payments monetica febbraio2012Mobile payments monetica febbraio2012
Mobile payments monetica febbraio2012
 
Tesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computingTesi - L'autenticazione nel cloud computing
Tesi - L'autenticazione nel cloud computing
 
Vpn Virtual Private Network
Vpn Virtual Private NetworkVpn Virtual Private Network
Vpn Virtual Private Network
 
Gruppo Sintesi Servizi Uc
Gruppo Sintesi Servizi UcGruppo Sintesi Servizi Uc
Gruppo Sintesi Servizi Uc
 
La sicurezza delle applicazioni di Mobile Payment_Paolo Di Rollo
La sicurezza delle applicazioni di Mobile Payment_Paolo Di RolloLa sicurezza delle applicazioni di Mobile Payment_Paolo Di Rollo
La sicurezza delle applicazioni di Mobile Payment_Paolo Di Rollo
 
NetEye nel gruppo Savio-ITEMA
NetEye nel gruppo Savio-ITEMANetEye nel gruppo Savio-ITEMA
NetEye nel gruppo Savio-ITEMA
 
La Sicurezza nei Sistemi di Supervisione e Controllo degli Impianti (SCADA)
La Sicurezza nei Sistemi di Supervisione e Controllo degli Impianti (SCADA)La Sicurezza nei Sistemi di Supervisione e Controllo degli Impianti (SCADA)
La Sicurezza nei Sistemi di Supervisione e Controllo degli Impianti (SCADA)
 
Forcepoint Overview
Forcepoint OverviewForcepoint Overview
Forcepoint Overview
 
Sviluppo e implementazione su microcontrollore di un’applicazione web server ...
Sviluppo e implementazione su microcontrollore di un’applicazione web server ...Sviluppo e implementazione su microcontrollore di un’applicazione web server ...
Sviluppo e implementazione su microcontrollore di un’applicazione web server ...
 
Company profile ingenium logic
Company profile ingenium logicCompany profile ingenium logic
Company profile ingenium logic
 
Tinvention Aziendale
Tinvention AziendaleTinvention Aziendale
Tinvention Aziendale
 
Tinvention
TinventionTinvention
Tinvention
 
Gruppo Sintesi Servizi Un Comm
Gruppo Sintesi Servizi Un CommGruppo Sintesi Servizi Un Comm
Gruppo Sintesi Servizi Un Comm
 
2015 tis servi_tecno_endian-v4_emt2
2015 tis servi_tecno_endian-v4_emt22015 tis servi_tecno_endian-v4_emt2
2015 tis servi_tecno_endian-v4_emt2
 

TrustMe - Concorso Telecom-Sinfonia

  • 1. Università degli Studi di Catania Concorso Telecom Sinfonia - Sistemi Embedded Prof. V.Catania TrustMe http://code.google.com/a/eclipselabs.org/p/trustme/ WormHole Riccardo Pulvirenti Giuseppe Ravidà Università degli Studi di Catania - Concorso Telecom Sinfonia - Sistemi embedded
  • 2. Università degli Studi di Catania Indice Descrizione 1 Introduzione 1 Ambito di utilizzo 1 Elenco delle funzionalità offerte da TrustMe 1 Architettura 2 Panoramica 2 Client side - AndroidTrustMe 2 Accesso ai servizi 2 Note sull’utilizzo dei Servizi Sinfonia CMS (POI) 3 Sicurezza e crittografia 3 Interfaccia utente 4 Server side - TrustMe 5 Casi d’uso 7 Inserimento di nuovi dati 7 Visualizzazione dei dati 7 Modifica e rimozione dei dati 8 Ricerca sportelli ATM in zona 9 Aggiungere ulteriori dati 9 Note sull’installazione 10 Installazione server 10 Nome resoconto i
  • 3. Università degli Studi di Catania Installazione client 10 Nome resoconto ii
  • 4. Università degli Studi di Catania Descrizione Introduzione TrustMe è un’applicazione che consente di conservare in maniera sicura dati sensibili come numeri di carte di credito, codici di sicurezza, note personali, ecc. L’applicazione sfrutta lo standard internazionale AES-256 1 per cifrare i dati. In questo modo nessun male intenzionato, pur venendo in possesso dei dati memorizzati, potrebbe decifrarli. La cifratura è basata su una password scelta dall’utente e, tramite algoritmi di derivazione, utilizzata per cifrare i dati. Una volta inseriti i dati questi possono essere eliminati o modificati in qualunque momento, utilizzando l’intuitiva interfaccia utente. Oltre alla memorizzazione sicura dei dati, TrustMe offre anche un servizio di localizzazione geografica col fine di indicare gli sportelli ATM, compatibili con le carte di credito presenti in memoria, intorno a voi. Questo consente di poter risparmiare sulle commissioni imposte dagli sportelli di altri circuiti bancari. Ambito di utilizzo Il salvataggio delle informazioni private è lo scopo principale dell’applicazione. Questo garantisce sicurezza ed evita di dover ricordare a memoria decine e decine di codici e nomi utente. L’applicazione ha ancora funzionalità limitate, ma le possibilità sono tantissime. Fra le più importanti vi è sicuramente la possibilità di integrare i pagamenti con tecnologia NFC, che sta cominciando a svilupparsi su scala mondiale. Altre importanti features previste sono la generazione casuale di password, gestione migliorata di localizzazione geografica, sincronizzazione e un’usabilità maggiore. Elenco delle funzionalità offerte da TrustMe Funzionalità Caratteristiche Salvataggio dei dati I dati vengono cifrati e memorizzati su un server remoto sul quale girano servizi di Telecom-Sinfonia Cifratura Prima di essere memorizzate, le informazioni vengono cifrate con AES Servizio di localizzazione Ricerca degli ATM in zona con preferenza in funzione dei dati salvati nel Database Sincronizzazione Possibilità di accedere ai dati da diversi dispositivi e dal web L’applicazione sarà supportata da un apposito sito web che consentirà la gestione delle anagrafiche utenti e permetterà la sincronizzazione dei propri dati fra più dispositivi 1 La versione attuale di TrustMe utilizza una cifratura a 128 bit per scopi dimostrativi. La versione finale utilizzerà cifratura a 256bit Trust me - Concorso Telecom Sinfonia 1
  • 5. Università degli Studi di Catania Architettura Panoramica L’applicazione TrustMe è stata pensata per girare su dispositivi mobili con sistema operativo Android. TrustMe si compone di un lato client (che consiste nell’applicazione vera e propria in esecuzione sul dispositivo mobile) e un lato server (caratterizzato da tutti i servizi di accesso ai dati, localizzazione e autenticazione). L’intera applicazione è scritta in JAVA e imposta i dati di ritorno come CSV (Comma Separated Values) che vengono opportunamente elaborati prima del loro utilizzo da apposite funzioni parser. Analizziamo nel dettaglio entrambe le parti. Client side - AndroidTrustMe Lato client si ha l’integrazione di tre componenti principali: • A: Accesso ai servizi • B: Sicurezza e crittografia • C: Interfaccia utente A B C Le componenti principali di TrustMe - lato client Accesso ai servizi Lato Android l’applicazione esegue richiamando servizi che restituiscono dati in formato JSON. Questi dati vengono utilizzati per effettuare l’autenticazione, accedere al database in lettura e in scrittura, chiedere e manipolare la lista degli ATM in funzione della posizione attuale. L’utilizzo di dati formattati in JSON permette un’alta interoperabilità fra ambienti diversi. In questo modo siamo in grado, senza apportare modifiche lato server, di poter offrire le stesse funzionalità ad applicazioni per altri dispositivi e per web. Come abbiamo già visto, i dati utente vengono memorizzati su un server remoto; questo offre il vantaggio di poter accedere ai propri dati in qualunque istante, da qualunque parte del globo e soprattutto aggiunge sicurezza in quanto tali informazioni Trust me - Concorso Telecom Sinfonia 2
  • 6. Università degli Studi di Catania non verranno mai salvate sul dispositivo e anche se venissero “rubate” dal server non potrebbero essere utilizzate in quanto cifrate con chiave master segreta. Per poter accedere, visualizzare, modificare o eliminare le proprie informazioni, vengono invocati dei metodi remoti (Web Services) tramite passaggio di opportuni parametri. Le librerie di accesso ai dati sono le seguenti (in pseudocodice): String userAuth(String uName, String uPassword); void addCreditCard(String newCard); void removeCard(int cardId); void updateCard(String cardFields); String[] cardsList(int userID); void addPassword(String newPassword); void removePassword(int passId); void updatePassword(String passFields); String[] passwordsList(int userID); Tali servizi forniscono la possibilità di inserire, modificare, eliminare e visualizzare dati relativi alle carte di credito e alle password. I servizi per l’accesso ai dati sono servizi “custom” implementati dal team WormHole. A questi servizi si aggiungono quelli offerti dal framework Sinfonia di Telecom che permettono la localizzazione di punti di interesse in funzione della posizione attuale. Nel nostro caso abbiamo usato il servizio Sinfonia CMS per ottenere la lista degli ATM in zona. String getMapUrl(Double lon, Double lat); Note sull’utilizzo dei Servizi Sinfonia CMS (POI) Al momento il framework Sinfonia permette la sola localizzazione nella città di Torino. Le coordinate quindi sono impostate staticamente. L’applicazione comunque integra già l’interrogazione del dispositivo GPS e la possibilità di leggere e inviare a Sinfonia le coordinate attuali. Inoltre nella lista dei POI fornita da Sinfonia non sono presenti gli ATM, quindi abbiamo utilizzato come valore di ritorno una lista qualunque (monumenti); basta semplicemente creare una voce nel database Sinfonia e cambiare il codice di ricerca nella funzione getMapUrl. Sicurezza e crittografia Il progetto lato client contiene un particolare package (trustme.security) che si occupa di crittografare e decifrare i dati. Tali funzioni utilizzano i meccanismi offerti da Java in tema di sicurezza (java.security, javax.crypto). Le password di accesso ai dati vengono codificate con SHA-256 e memorizzate nel server già cifrate. SHA-256 offre un meccanismo di hashing one-way sicuro e mantiene protetta l’identità degli utenti. Per la cifratura dei dati sensibili è usato invece l’algoritmo AES. Per questa versione dimostrativa, per motivi di tempo, è stata implementata una funzione di crittografia AES a 128bit con master secret ottenuto tramite MD5 dei dati di login. MD5 fornisce anch’esso un alto livello di sicurezza one way. Trust me - Concorso Telecom Sinfonia 3
  • 7. Università degli Studi di Catania Le funzioni di crittografia usate nel modulo client rispettano le seguenti firme: Crypto.java: public static String encrypt(String seed, String cleartext) public static String decrypt(String seed, String encrypted) SHAEncrypter.java: public static String Encrypt(String password) MD5Encrypter.java: public static String Encrypt(String text) Interfaccia utente L’interfaccia utente è stata pensata per fornire la migliore user-experience possibile, basandosi su un layout semplice e modulare e un alto livello di intuitività dei pulsanti. Pulsante di barra principale inserimento di selezione Area di visualizzazione Screenshot applicazione La barra principale di selezione permette di poter scegliere fra carte di credito, password e localizzazione ATM. Ogni scelta aprirà l’elenco delle informazioni corrispettive oppure la mappa con i placemarks indicanti gli ATM più vicini Il pulsante di inserimento permette, tramite la comparsa di un menu contestuale, di selezionare per l’inserimento di nuove carte di credito o password. Trust me - Concorso Telecom Sinfonia 4
  • 8. Università degli Studi di Catania L’area di visualizzazione, infine, è l’area che si popolerà con l’elenco di carte di credito, password o con la mappa con i placemarks indicanti gli ATM in zona. Quest’area supporta la pressione prolungata su un elemento per entrare in modalità modifica o inserimento. Server side - TrustMe Lato Server si trovano tutte le funzioni per l’acceso ai dati, la loro manipolazione e il servizio Sinfonia CMS per ottenere la lista degli ATM in zona. Una volta interrogato, il server risponde con un oggetto JSON (in genere CSV String oppure String Array) con un’espressione di questo tipo: {"cardsListBean":{"cardsList":["2, C1624CFBCC9E61D55269B7862A1FA656094F099088BA9D6FCA00F9E51A5FE59D0BE29E1 3532FF3EAF6A71C752F75C7F8C197C94F1C9F9894CB0E882BFC349804,2","5, 7A650AC505B48FE8022892DD7510D620F0518B2499D415FC1EC7E8003B53DD762E25C10 BB6A477EA63C9FBF3948E9FACCD29922DF31D0E498DABA5A0A2D54612,2","6, 4D0B0CEE80DA94BA4895B507A2B9F84F62EC19B549B685BD729C39064096755108FE081 59EE0CCDF74F3B5F1F471C548788FDBCC422E5D1E85038AEE926B04DC,2","7, A89507B3D8D974B348E0316CAEEEBB69937419DF366B40AF9B7CFB2D8D9BABF3631A134 6BE0AC077095E4468E2E217BF56529FEF10460AC20C6F46704DF099CB,2","8, 06D8AF1E9D79286C177CA64A144562D9C9C36BBFB14CB75F3DE2B6FCE2C168567ECE196 D36EC1A88FE51E87D618A2649B0663FEED2C5359409AF66FE3FEAAE5A,2","9, 9A2149C4400E06B6D48F3B9727841CA8F2A63D16798C61242618E59E8A502835D3DA504 06CC14A8DF6923CBB7B06343F8659EF83B4AF22736555481003FD6EFC43B2515E3D5356 6B0600269A2E7FA487,2","10, 6F434C1396CC6EF60EB1C239DCBF0B46ED125C1513235A1C58B8C1126EFBA5F7AFAE443 7525CC95E2F7AE4B4BF65CC4A2BD93C4914D073F659BA018FC55B772B,2"]}} Come si può notare, i dati sono tutti cifrati e non accessibili senza la masterkey. Sul server è installata l’ultima versione di MySQL per gestire il database users, composto dalle seguenti tabelle: • tm_users: questa tabella è quella che contiene le informazioni sull’utente quali username e password. La password è memorizzata previa cifratura con SHA-256. Una volta inseriti i dati di accesso questi vengono cifrati lato client e la funzione userAuth si occuperà di verificarne l’esatta corrispondenza. Schermata di login Trust me - Concorso Telecom Sinfonia 5
  • 9. Università degli Studi di Catania • tm_passwords: questa tabella contiene le password salvate dall’utente, opportunamente cifrate con AES. In fase di lettura, viene restituita al client la stringa cifrata, separata con una virgola dal campo UserID; l’applicazione Android si occuperà di decifrare con la chiave segreta, organizzare i campi in apposite strutture dati e visualizzarli nell’interfaccia grafica. • tm_cards: qui vengono memorizzate le carte di credito, sempre cifrate, organizzate per categorie. • tm_cardTypes: le categorie delle carte di credito (VISA, MASTERCARD, BANCOMAT, ecc). L’applicazione Android popola dinamicamente un menu a discesa durante l’inserimento di nuovi dati direttamente da questa tabella. Trust me - Concorso Telecom Sinfonia 6
  • 10. Università degli Studi di Catania Casi d’uso Inserimento di nuovi dati Al primo utilizzo il database utente si presenterà vuoto. La procedura qui descritta per inserire nuove carte di credito è simile a quella per l’inserimento di nuove password. come indicato in figura, basterà “tappare” sullo schermo per entrare in modalità inserimento, compilare i campi e premere il pulsante di salvataggio. Una volta inserite, le informazioni appariranno insieme alle altre in una lista elenco nell’area di visualizzazione. Visualizzazione dei dati Per visualizzare in dettaglio le informazioni inserite basterà fare un singolo tap sull’elemento desiderato. Si aprirà in questo modo una finestra di visualizzazione. Trust me - Concorso Telecom Sinfonia 7
  • 11. Università degli Studi di Catania Modifica e rimozione dei dati Una volta inseriti, i dati possono essere modificati o eliminati. Per far ciò, tenere premuto qualche secondo sull’elemento che si vuole eliminare fino a quando comparirà il menu contestuale, come indicato in figura. Trust me - Concorso Telecom Sinfonia 8
  • 12. Università degli Studi di Catania Ricerca sportelli ATM in zona Oltre a memorizzare i dati, con TrustMe è possibile ricercare gli sportelli ATM più vicini per effettuare operazioni. Per far ciò basta tappare una volta sull’icona a forma di lente di ingrandimento e attendere un momento per la localizzazione. Aggiungere ulteriori dati Per aggiungere ulteriori informazioni, dopo il primo inserimento, basterà tappare sul pulsante con il simbolo “+” in alto a destra nell’applicazione. Trust me - Concorso Telecom Sinfonia 9
  • 13. Università degli Studi di Catania Note sull’installazione Installazione server Per poter utilizzare l’applicazione bisogna aver installato il framework Sinfonia e creare un database di nome “users” con le tabelle indicate precedentemente. Un dump del database vuoto è presente sotto forma di istruzione SQL nel DVD in dotazione. Eseguire la query dovrebbe essere sufficiente a configurare la base dati. Configurata la parte di storage, bisogna compilare le classi action e pubblicare i servizi su un application server come Apache Tomcat. In ambiente Eclipse basta premere il tasto destro del mouse sulla cartella del progetto “TrustMe” e selezionare Run As->Run On Server. Installazione client TrustMe è un’applicazione sviluppata per girare su dispositivi Android. Per poter testare l’applicazione bisogna avere installato l’SDK per lo sviluppo di applicazioni Android ed eseguire il software su un emulatore. Alternativamente basterà copiare il file .apk sul vostro terminale reale e lanciare l’applicazione. Per far si che l’applicazione funzioni, bisogna configurare, fra le risorse statiche del progetto, l’indirizzo IP del server sul quale sono in esecuzione i servizi. Per far ciò aprire il progetto AndroidTrustMe in Eclipse, navigare l’albero dei files fino alla directory res/values e modificare il file strings.xml alla voce ip_address. Fatto questo lanciare l’emulatore oppure compilare e copiare il file .apk così generato sul dispositivo ed installarlo. L’utente di prova può accedere con i seguenti dati: User Name: myuser Password: mypass Il progetto è disponibile al seguente indirizzo: http://code.google.com/a/eclipselabs.org/p/trustme/ Trust me - Concorso Telecom Sinfonia 10