La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Alessandra Zullo Gabriele Lombari CryptoSensors Prof. Alfredo De Santis.

Presentazioni simili


Presentazione sul tema: "Alessandra Zullo Gabriele Lombari CryptoSensors Prof. Alfredo De Santis."— Transcript della presentazione:

1 Alessandra Zullo Gabriele Lombari CryptoSensors Prof. Alfredo De Santis

2 Indice della presentazione 1.Introduzione e scopo del progetto 2.Sensori 3.Architettura del sistema 4.Funzionalità 5.La sicurezza del sistema 6.Dalla progettazione all’implementazione 7.Implementazione 8.Esempi di utilizzo

3 Indice della presentazione 1.Introduzione e scopo del progetto 2.Sensori 3.Architettura del sistema 4.Funzionalità 5.La sicurezza del sistema 6.Dalla progettazione all’implementazione 7.Implementazione 8.Esempi di utilizzo

4 Introduzione Negli ultimi anni la maggior parte delle indagini, svolte dalle scienze forensi digitali, si servono delle informazioni che è possibile estrapolare dal dispositivo mobile dell'indagato. I dispositivi più moderni sono costituiti di una miriade di sensori che rendono l'esperienza mobile sempre più ricca e affascinante; proprio tali sensori possono essere trasformati in prove utili alle indagini forensi.

5 Il nostro scopo Lo scopo di tale progetto è la creazione di un'applicazione Android che acquisisce e invia in maniera autenticata e cifrata ad un server esterno i dati sensoriali del dispositivo su cui è installata. Sensor data

6 Indice della presentazione 1.Introduzione e scopo del progetto 2.Sensori 3.Architettura del sistema 4.Funzionalità 5.La sicurezza del sistema 6.Dalla progettazione all’implementazione 7.Implementazione 8.Esempi di utilizzo

7 Sensori: il fulcro dell’applicazione(1) Fulcro principale dell'applicazione sono i sensori. I sensori hanno rappresentato un'innovazione nel mondo della telefonia. Oggi i sensori sono dati per scontati all'interno di uno smartphone, ma non era così fino a pochi anni fa. Esistono diverse tipologie di sensori, ognuna delle quali ha un ruolo ben preciso atto a fornire un'esperienza nuova all'utente. Gli utilizzi sono svariati, infatti possiamo partire da sensori per il rilevamento della posizione geografica, arrivando poi al sensore che indica la quantità di luce presente nella stanza.

8 Sensori: il fulcro dell’applicazione(2) Tra i sensori più frequentemente installati sui dispositivi troviamo: 1.Accelerometro per misurare l'accelerazione del dispositivo rispetto alla caduta libera,ha quindi una funzione di inclinometro che determina l'orientamento del display, a seconda che lo incliniate in verticale o orizzontale sfruttando i tre assi di cui è composto; 2.Giroscopio a supporto dell’accelerometro per misurare l'inclinazione del dispositivo; 3.Magnetometro: utilizzato per la misura del campo magnetico(ad esempio per un’applicazione bussola); 4.Sensore di prossimità si compone di un LED a infrarossi e un rilevatore di luce IR, posizionati vicino alla capsula audio per le chiamate. Questo sensore funziona proiettando un fascio LED a infrarossi, che viene riflesso da un oggetto e raccolto dal rilevatore di luce IR, calcolando la distanza dell'oggetto dal terminale; 5.Sensore di luminosità misura la luminosità di luce dell'ambiente in cui ci troviamo; 6.Termometro serve per monitorare la temperatura interna del dispositivo limitandone le prestazioni in caso di surriscaldamento.

9 Indice della presentazione 1.Introduzione e scopo del progetto 2.Sensori 3.Architettura del sistema 4.Funzionalità 5.La sicurezza del sistema 6.Dalla progettazione all’implementazione 7.Implementazione 8.Esempi di utilizzo

10 Architettura del sistema L’implementazione è stata effettuata utilizzando un’architettura client - server. I client previsti sono un’applicazione Android e un Client Web. Il server è una componente di back-end che si appoggia ad un database. CryptoSensors Client Android Client Web Backend Database

11 Architettura del sistema - Client I client previsti sono: 1.Un’ applicazione Android accessibile mediante qualsiasi dispositivo mobile dotato di tale sistema operativo. 2.Client Web accessibile tramite un qualsiasi browser presente su un dispositivo dotato di connessione ad Internet. Tramite il client Web è possibile: Effettuare il login; Richiedere i dati da remoto; Visualizzare i dati precedentemente acquisiti. CryptoSensors Tramite il client Android è possibile: Effettuare il login; Effettuare la registrazione; Inviare i dati relativi ai sensori.

12 Architettura del sistema - Server Il server è formato da un insieme di componenti che permettono: 1. la gestione degli utenti ovvero la loro registrazione e la loro autenticazione. 2. la gestione dei dati sensoriali ovvero la loro acquisizione,memorizzazione e visualizzazione. Per la memorizzazione dei dati sensoriali il server utilizza un database NOSQL.

13 Indice della presentazione 1.Introduzione e scopo del progetto 2.Sensori 3.Architettura del sistema 4.Funzionalità 5.La sicurezza del sistema 6.Dalla progettazione all’implementazione 7.Implementazione 8.Esempi di utilizzo

14 Funzionalità del Sistema Le funzionalità principali del sistema sono: 1.Registrazione 2.Login 3.Acquisizione dei dati dal dispositivo 4.Richiesta dei dati da remoto 5.Visualizzazione dei dati raccolti in precedenza

15 Registrazione al sistema Funzionalità offerta solo dall’ Applicazione Android. L’utente si registra mediante: -email: ad esempio mariorossi@libero.it; -password: stringa di lunghezza minima di 8 caratteri,con almeno una lettera maiuscola e una minuscola, con numeri, lettere e caratteri alfanumerici; registrationId: identifica il dispositivo con cui l'utente si è registrato e con cui è possibile acquisire i dati sensoriali del dispositivo da remoto. L’utente deve abilitarsi al sistema mediante il link ricevuto per email.

16 Login al sistema Funzionalità offerta dall’ Applicazione Android e dal ClientWeb. L’utente può accedere al sistema dopo: 1.aver effettuato la registrazione 2. aver verificato l’indirizzo email. Il login è effettuato mediante tre passi: 1.L’utente inserisce le proprie credenziali (email e password fornite durante la fase di registrazione); 2.Il client cifra i dati con RSA e li invia al server; 3.Il server decifra i dati con RSA, li cifra con AES e controlla loro presenza nel database: 1.Nel caso in cui le credenziali siano presenti nel database l’utente è autenticato; 2.Altrimenti è visualizzato un messaggio di errore.

17 Acquisizione dei dati dal dispositivo Funzionalità offerta dall’ Applicazione Android. L’utente accede al sistema mediante l’applicazione Android e invia i dati premendo sul pulsante “SendData”. La procedura di acquisizione è scomposta in tre fasi: 1.Acquisizione dei dati dal dispositivo Android; 2.Cifratura mediante RSA eseguita dall’applicazione e invio dei dati cifrati al server; 3.Decifratura RSA e successiva cifratura AES eseguite dal server e memorizzazione dei dati sul database.

18 Richiesta dei dati da remoto Funzionalità offerta dal Client Web. L’utente accede al sistema mediante il sito Web e richiede i dati premendo sul pulsante “AcquisisciDati”. La procedura di richiesta dei dati è scomposta in quattro fasi: 1.Richiesta dei dati al dispositivo; 2.Acquisizione,cifratura RSA e invio dei dati dall’applicazione al server; 3.Decifratura RSA,cifratura AES eseguita dal server e memorizzazione dei dati sul database; 4.Visualizzazione dei dati acquisiti. Si utilizza il meccanismo di PushNotification(invio di una notifica) affidato al Google Cloud Messaging.

19 Visualizzazione dei dati Funzionalità offerta dal Client Web. L’utente accede al sistema mediante il sito Web e richiede la visualizzazione dei dati premendo sul pulsante “VisualizzaDati “. La procedura di visualizzazione è scomposta in quattro fasi: 1.Richiesta di visualizzazione dei dati mediante il ClientWeb,tale richiesta è inviata al server; 2.Ricerca dei dati eseguita dal server nel database; 3.Decifratura dei dati mediante AES eseguita dal server; 4.Resa in forma tabellare dei dati.

20 Indice della presentazione 1.Introduzione e scopo del progetto 2.Sensori 3.Architettura del sistema 4.Funzionalità 5.La sicurezza del sistema 6.Dalla progettazione all’implementazione 7.Implementazione 8.Esempi di utilizzo

21 La sicurezza del sistema Per assicurare la sicurezza dei dati abbiamo: Protetto il canale di trasporto mediante l’utilizzo di HTTPS (con Perfect Forward Secrecy); Cifrato i dati durante il trasporto con RSA; Cifrato i dati nel database con AES.

22 La sicurezza del sistema - HTTPS HTTPS HTTPS, acronimo di “HyperText Transfer Protocol over Secure Socket Layer “, è una variante dell'HTTP che impiega, oltre al protocollo TCP/IP, il livello SSL - Secure Sockets Layer - che si occupa di rendere sicuro il canale di comunicazione tra client e server. Sostanzialmente, l'SSL cifra i dati in entrata e in uscita attraverso un algoritmo di cifratura asimmetrica rendendoli praticamente indecifrabili. Per configurare un web server in modo che accetti connessioni di tipo HTTPS,l'amministratore di rete deve creare un certificato digitale tramite l'ausilio di alcuni tool, ad esempio OpenSSL. Questi certificati devono essere rilasciati da una Certification Authority che si occuperà di validare l'identità del proprietario del certificato. In particolare situazioni, quali quella di una rete Intranet (LAN), è possibile distribuire dei certificati agli utenti di quella rete;ciò permette al server di riconoscere, e quindi autenticare, l'utente al momento della connessione permettendo così un controllo sugli accessi al web server.

23 La sicurezza del sistema - PFS La sicurezza delle comunicazioni su Internet è implementata utilizzando la crittografia a chiave pubblica. Ciò implica che se le chiavi sono compromesse è possibile decifrare, e quindi ottenere, tutti i dati riguardanti il traffico delle sessioni attuali, passate e future. E' stato quindi sviluppato il concetto di Perfect Forward Secrecy (PFS) il quale assicura che se una chiave a lungo termine, privata o pubblica, venga compromessa saranno compresse solo le sessioni a seguire e non quelle precedentemente avvenute. La Perfect Forward Secrecy è attuata negoziando una chiave per ogni comunicazione, in modo che se una chiave venisse compromessa non si avrebbe alcuna informazione sulle chiavi precedentemente utilizzate.

24 La sicurezza del sistema - RSA RSA RSA prende il nome dai suoi ideatori Ronald R ivest,Adi S hamir e Leonard A dleman. E’ attualmente lo schema più usato per cifrare piccole porzioni di dati, principalmente trasporto chiavi; firmare i documenti. Non è adatto a sostituire gli algoritmi a chiave simmetrica in quanto in alcune occasioni è estremamente lento; per tale motivo è impiegato principalmente per il trasporto sicuro di chiavi per i cifrari simmetrici. La sicurezza di RSA si basa sul problema della fattorizzazione dei numeri interi : allo stato attuale non esiste un algoritmo efficiente,ossia in grado di dare una risposta in tempi ragionevoli, che riesca a scomporre un numero di grandi dimensioni in fattori primi.

25 La sicurezza del sistema - AES AES ( Advanced Encryption Standard ) fu creato da due crittografi belgi, Joan Daemen e Vincent Rijmen, con il nome di algoritmo Rijndael; esso venne presentato ad un concorso indetto dal National Institute of Standards and Technology (NIST) nel 1997, per sostituire l’ormai obsoleto DES. Una volta nominato vincitore del concorso nel 2001, l’algoritmo Rijndael divenne conosciuto in tutto il mondo come nuovo standard AES. AES è un cifrario a blocchi quindi opera su singoli blocchi di testo in chiaro,possiede una chiave più lunga e di lunghezza variabile (128,192,256 bit) rispetto al DES quindi è più resistente ad attacchi a forza bruta(ricerca nello spazio delle chiavi provando chiave per chiave a forzare il sistema), AES presenta anche una struttura nuova rispetto al DES che è un cifrario di Feistel: gli algoritmi di cifratura e decifratura del messaggio sono uguali e sono composti da una serie di passaggi in cui vengono ripetutamente scambiate la metà di destra del blocco considerato e la metà di sinistra mentre AES possiede una struttura innovativa che utilizza delle proprietà dei campi algebrici finiti.

26 Le chiavi (chiaviRSA, chiaveAES) sono state salvate all’interno del file system del server, facendo attenzione a proteggere la cartella dall’accesso di persone non autorizzate. Permessi di accesso, lettura e modifica solo all’admin. Creazione file.htaccess per impedire accessi dal web. //Block users by IP order allow,deny deny from any allow from localhost Sicurezza del sistema – Gestione delle chiavi

27 Sicurezza del sistema – Trasporto dei dati CryptoSensors RSA encryption RSA decryption HTTPS Data flow Lo stesso accade per la comunicazione server - client

28 AES Encryption Encrypted data Sicurezza del sistema – Memorizzazione

29 Sicurezza del sistema CryptoSensors Richiesta chiave pubblica RSA del server Invio chiave pubblica RSA(KpubRSA) C=Enc KpubRSA (dati sensori) AES K priv ( Dec K privRSA (C) ) HTTPS

30 Indice della presentazione 1.Introduzione e scopo del progetto 2.Sensori 3.Architettura del sistema 4.Funzionalità 5.La sicurezza del sistema 6.Dalla progettazione all’implementazione 7.Implementazione 8.Esempi di utilizzo

31 Dalla progettazione all’implementazione Strumenti utilizzati Dalla progettazione all’implementazione Strumenti utilizzati Il termine XAMPP è l'acronimo di X-cross-platform Apache MySQL PHP Perl,e indica una distribuzione Apache che permette di creare web server in maniera semplificata. XAMPP racchiude, in un unico strumento, un server web(Apache),un DBMS (MySQL), un linguaggio di scripting (PHP) e tanti altri strumenti utili allo sviluppatore come FileZilla, Mercury Mail ecc. Nell'acronimo XAMPP è presente il termine cross-platform cioè multi-piattaforma, ciò significa che XAMPP funziona allo stesso modo in tutti gli ambienti(Linux, Mac, Windows). Le componenti del pacchetto XAMPP necessari per lo sviluppo del sistema sono: Apache utilizzato come web server application per rispondere ed elaborare le richieste del client. PHP utilizzato come principale linguaggio di script lato server. OpenSSL utilizzato per le funzioni crittografiche. MercuryMail utilizzato come server mail.

32 Il server è formato da 3 componenti base : - Security contenente i metodi per la cifratura e decifratura AES. - RSAEncryption contenente i metodi per la cifratura e decifratura RSA. - MongoCustomClient per la connessione e comunicazione con il database. CryptoSensors Tali componenti sono utilizzate per l’implementazione delle seguenti operazioni: Registrazione Login Acquisizione dei dati da remoto Invio dei dati Visualizzazione dei dati Dalla progettazione all’implementazione Componenti del Server Dalla progettazione all’implementazione Componenti del Server

33 Dalla progettazione all’implementazione Server – Class Diagram Dalla progettazione all’implementazione Server – Class Diagram

34 Il client Android è formato da 3 componenti base: -MySensorHandler utile all’acquisizione dei dati sensoriali e l’invio di dati. - RSA: utile per la cifratura e decifratura dei dati. -KeyReader: utile per la lettura della chiave pubblica del server e conversione in un oggetto PublicKey e PrivateKey necessari per la cifratura RSA. CryptoSensors Dalla progettazione all’implementazione Componenti del Client Android Dalla progettazione all’implementazione Componenti del Client Android

35 Dalla progettazione all’implementazione Client Android – Class Diagram Dalla progettazione all’implementazione Client Android – Class Diagram

36 Dalla progettazione all’implementazione Configurazione del sistema Dalla progettazione all’implementazione Configurazione del sistema Per garantire il corretto funzionamento delle componenti e la sicurezza del sistema, si è resa necessaria una fase di configurazione degli strumenti utilizzati. In particolare: 1.Installazione di XAMPP 2.Configurazione di Mercury Mail 3.Configurazione del web server Apache (HTTPS, Perfect Forward Secrecy)

37 Configurazioni iniziali - HTTPS(1) 1.Aprire un Prompt dei Comandi (start -> cmd -> Invio); 2.Posizionarsi in xampp\apache\bin; 3.Dopodichè andremo a generare una chiave RSA cifrata con 3-DES; a causa della cifratura verrà richiesta una password obbligatoria; Dopo aver scaricato e installato XAMPP è necessario compiere alcuni passi per l’abilitazione di HTTPS e PFS.

38 Configurazioni iniziali - HTTPS(2) 3.Andremo ora a generare un certificato.X509 partendo dalla chiave precedentemente generata; durante la generazione verranno chieste alcune informazioni per compilare il certificato, sono tutte opzionali ad eccezione di «Common Name» il quale deve corrisponde all’IP del server, o localhost nel caso in cui non si ha necessità di avere richieste dall’esterno;

39 Configurazioni iniziali - HTTPS(3) 4.A questo punto andare in xampp\apache\conf e creare due cartelle ssl.crt e ssl.key, se già esistenti cancellare quelle presenti; 5.Copiare all’interno delle cartelle precedentemente create rispettivamente i file server.crt e server.key, presenti in xampp\apache\bin; IMPORTANTE: effettuare un backup della cartella \xampp\apache\conf Dopo avere generato il certificato andiamo a configurare XAMPP in modo da utilizzare HTTPS 1.Recarsi in \xampp\apache\conf e aprire il file httpd.conf; 2.Trovare e decommentare ”#LoadModule ssl_module modules/mod_ssl.so”; 3.Trovare “ ” e scrivere, prima di esso, “include conf/extra/httpd-ssl.conf ”; 4.Andare ora in \xampp\php e aprire il file php.ini; 5.Cercare e decommentare “;extension=php_openssl.dll ”

40 Configurazioni iniziali - HTTPS(4) 6.Ritornare in xampp\apache\conf ed aprire il file httpd_ssl.conf; 7.Trovare: 8.Sostituirlo con:

41 Configurazioni iniziali - HTTPS(5) 9.Trovare e decommentare, se non già decommentate, le seguenti stringhe: SSLCeritificateFile “conf/ssl.crt/server.crt” SSLCertificateKeyFile “conf/ssl.key/server.key”; 10.Trovare: 11.Sostituirlo con: HTTPS abilitato!

42 Configurazioni iniziali – Forward Secrecy Per incrementare la sicurezza abbiamo deciso di utilizzare la Forward Secrecy applicata all’handshake di chiavi di HTTPS. Per abilitarla, su server Apache, è necessario: 1.Aprire il file httd-ssl.conf, presente in xampp\apace\conf; 2.Trovare « » ed inserire le seguenti righe: SSLProtocol all -SSLv2 -SSLv3 SSLHonorCipherOrder on SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS" 3.Riavviare XAMPP. Forward Secrecy abilitata!

43 Configurazioni iniziali – MercuryMail (1) Per l’invio di email,utile in fase di registrazione, è stata necessaria la configurazione di MercuryMail. Tale configurazione è composta da 23 steps : 1.Avviare MercuryMail dal pannello di controllo di XAMPP; 2.Aprire il pannello di controllo di MercuryMail;

44 Configurazioni iniziali – MercuryMail (2) 3.Andare in “Configuration” e scegliere “Protocol modules” 4.Disabilitare la spunta "MercuryB HTTP web server ","Mercury IMAP4rev1server ", "MercuryE SMTP end-to-end delivery client " e "MercuryCSMTP relaying client "; 5. Cliccare su "OK" e riavviare Mercury; 6. Riaprire il pannello di Mercury e andare in "Configuration" quindi scegliere "Mercury core module" e "General "; 7. Settare come "Internet name for this system" localhost o l'internet name predefinito; 8.Disabilitare la checkbox "Send copies of all errors to postmaster "; 9.Andare in "Local Domains" e controllare che l'internet name sia settato correttamente,altrimenti aggiungerlo; 10.Cliccare su ok; 11.Andare in "Configuration","MercuryS SMTP Server ", andare in "General“ e aggiungere un nome al proprio SMTP server sotto "Announce myself as";

45 Configurazione iniziali – MercuryMail (3) 12.Sotto "Listen on TCP/IP" scegliere il proprio numero di porta(di solito 25 ); 13. Aggiungere a "IP interface to use" l'indirizzo "127.0.0.1 " o l'indirizzo del server esterno; 14.Ora limitare gli accessi solo per la macchina locale quindi In "Connection Control " cliccare su "Add Restriction" e mettere come IP range da "127.0.0.1 " a "127.0.0.1 "; 15.Selezionare "Allow connections “, lasciare tutte le altre checkboxes deselezionate; 16.Chiudere e aprire "Conguration", "MercuryP POP3 Server " e andare in "General "; 17.Scegliere "Listen on TCP port ",scrivere "110 " e in "IP interface to use" inserire "127.0.0.1 "; 18.In "Connection control " seguire i procedimenti del passo 13 infine cliccare su OK;

46 Configurazione iniziali – MercuryMail (4) 19.Andare in "Configuration" e scegliere "MercuryC SMTP Client "; 20. In "Smart host name" inserire l'indirizzo email SMTP ad esempio per gmail sarà smtp.gmail.com; 21.Andare in "Connection port/type" e inserire 25 per un server senza SSL o 465 per l'utilizzo di SSL; 22.In "Login username e Password " inserire le credenziali di accesso al server SMTP; 23.Andare in "Configuration" e scegliere "Manage local users ", se non sono presenti aggiungere "Admin" e "postmaster " altrimenti la configurazione è terminata.

47 Configurazione iniziali – MercuryMail (5) A tal punto bisogna configurare PHP. 1.Andare in xampp/php/php.ini 2.Aprire php.ini 3.Cercare la linea “ [mail function] " e settare : "SMTP=localhost "; "smtp_port=25 "; "sendmail_from=postmaster@localhost” 4.Salvare il file e riavviare Apache;

48 Indice della presentazione 1.Introduzione e scopo del progetto 2.Sensori 3.Architettura del sistema 4.Funzionalità 5.La sicurezza del sistema 6.Dalla progettazione all’implementazione 7.Implementazione 8.Esempi di utilizzo

49 Implementazione – Client Web Il client Web è composto dalle seguenti pagine: - Login.php: pagina php che permette all’utente di effettuare l’accesso al sistema; - GestioneDati.html: pagina scritta in HTML5 che permette all’utente di poter scegliere se acquisire o visualizzare i dati del suo dispositivo; -VisualizzaDati.php: pagina php che permette la visualizzazione dei dati acquisiti in precedenza in forma tabellare; CryptoSensors Login.php GestioneDati.htmlVisualizzaDati.php

50 Implementazione – Client Android (1) Il client Android è composto dalle seguenti pagine: - HomeActivity: activity che permette all’utente di scegliere se registrarsi o autenticarsi; - RegistrationActivity: activity che permette all’utente di effettuare la registrazione; - LoginActivity: activity che permette all’utente di effettuare l’autenticazione; - MainActivity: activity contenente le funzionalità dell’applicazione.

51 Implementazione – Client Android (1) LoginActivity HomeActivityRegistrationActivity MainActivity

52 Indice della presentazione 1.Introduzione e scopo del progetto 2.Sensori 3.Architettura del sistema 4.Funzionalità 5.La sicurezza del sistema 6.Dalla progettazione all’implementazione 7.Implementazione 8.Esempi di utilizzo

53 Esempio di utilizzo – Client Android 1 I dati sono stati inviati al server. 1 2 A questo punto viene inviata una mail all’indirizzo indicato per completare la registrazione. Registrazion e Login

54 Esempio di utilizzo – Client Web Lettura dati dal database Accesso Controllo credenziali dal server

55 Grazie per l’attenzione


Scaricare ppt "Alessandra Zullo Gabriele Lombari CryptoSensors Prof. Alfredo De Santis."

Presentazioni simili


Annunci Google