cryptophone 2 matteo ferrari. descrizione del problema e soluzioni adottate. realizzare...

24
Cryptophone 2 Matteo Ferrari

Upload: lodovico-valentini

Post on 02-May-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Cryptophone 2

Matteo Ferrari

Page 2: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Descrizione del Problema e Soluzioni adottate.

Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto pre-esistente scritto in C++.

Riutilizzare la logica esistente mediante utilizzo di librerie (DLL)

Implementazione dello scambio di sms come richiesta di chiamata (permettendo l’utilizzo della lista contatti)

Page 3: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

L’applicazioneUna volta avviata l’applicazione

si presenta nella sua schermata principale

In questo stato l’applicazione è già operativa e pronta a ricevere

richieste di chiamate. Usando il pad numerico è possibile inserire manualmente l’indirizzo ip da

chiamare. Se però vogliamo chiamare un nostro contatto in rubrica (che a

sua volta dispone di questo software) possiamo accedere a quest’ultima

selezionando il menù Contact => Call a contact.

Page 4: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

L’applicazioneIl risultato è il seguente

Nella listBox verranno elencati i contatti memorizzati sul telefono e sarà possibile selezionanrne uno. È possibile ritornare alla schermata

principale selezionando il tasto Return senza scatenare nessuna azione oppure, dopo aver selezionato il

contatto, avviare la chiamata mediante il controllo Call.

Page 5: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

L’applicazioneChi riceve una chiamata vedrà

comparire la seguente schermata

Ora l’utente ha la possibilità di decidere se rifiutare o accettare il

collegamento. In caso di richiesta di chiamata via SMS (selezionando il contatto dalla rubrica), nella prima

textBox comparirà il numero del Contatto e nella seconda il nome. In

caso la richiesta di chiamata avvenga immettendo direttamente l’indirizzo

ip, coparirà solamente una sola textBox con l’indirizzo ip che ha

effettuato la richiesta.

Page 6: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

L’applicazioneUna volta accettata la chiamata

verrà mostrata la seguente schermata

In questa fase della chiamata verranno generate le chiavi di

sicurezza e scambiate mediante socket utilizzando i servizi messi a

disposizione da una delle due librerie. Se lo scambio delle chiavi ha esito positivo verrà avviato il processo pjmedia che permette la vera e

propria comunicazione. Se la comunicazione viene avviata con

successo, la scritta Wait... si trasforma in SAS: <codiceSAS> con

la stringa che i due interlocutori devono scambiarsi a voce in modo da

evitare attacchi di tipo Men in the Middle.

Page 7: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

SMS come comando di richiesta chiamataIn questa nuova versione dell’applicazione è

possibile chiamare un contatto presente in rubrica senza conoscere il suo indirizzo ip. Per far questo si ha il bisogno di utilizzare uno strumento in più: gli SMS. L’applicazione è impostata per intercettare gli sms e gestire solo quelli che iniziano con “Cryptophone:” evitando di farli gestire dal sistema operativo. L’utilizzo degli SMS risulta totalmente trasparente all’utente (che ovviamente dovrà essere informato, all’atto dell’installazione, dell’utilizzo della messaggistica). Nel messaggio l’utente manda la richiesta di chiamata insieme all’indirizzo ip sul quale è raggiungibile.

Page 8: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

SMS come comando di richiesta chiamata

Page 9: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Socket: La comunicazioneLa comunicazione avviene

mediante l’utilizzo dei socket. I metodi che agiscono su di essi sono per natura bloccanti quindi il loro lavoro è stato relegato a thread appositi. Ve ne sono 3 che gestiscono 3 aspetti diversi.

waitForCallThread(). waitForCloseCallThread(). doingCallThread().

Page 10: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Socket: La comunicazionewaitForCallThread().

Questo thread si mette in ascolto di richieste di chiamata e, al loro arrivo, fa comparire il form per accettare o rifiutare la chiamata. Una volta accettata instanzia il form che gestirà tutti gli aspetti della chiamata

Page 11: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Socket: La comunicazionewaitForCloseCallThread().

Questo thread si mette in ascolto di eventuali comandi di interruzione che il partner della chiamata genera (come la chiusura prematura di una comunicazione) e agisce su una varibile interna del form di chiamata per permetterne la chiusura.

Page 12: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Socket: La comunicazionedoingCallThread().

Questo thread permette, ricavato l’ip (dall’sms o dal textbox relativo), di effettuare una richiesta di chiamata. Se accettata abilità l’inizializzazione del form che gestirà la comunicazione.

Page 13: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Richiesta di Chiamata: Rifiutare

Page 14: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Richiesta di Chiamata: Accettare

Page 15: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Dynamic-link Library: Socket and Security LibraryQuesta è la prima delle due DLL. Mette

a disposizione 3 funzioni che permettono la generazione e lo scambio delle chiavi di sicurezza necessarie alla crittografia del flusso audio. I metodi che esporta sono I seguenti:

int sock_crea(char* indIP, int numero, char* returnIP);

sock_chiudi();int sock_scambioChiavi(char* keyTX,

char* keyRX, char* keyVocal);

Page 16: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Dynamic-link Library: Socket and Security Libraryint sock_crea(char* indIP, int

numero, char* returnIP);

Questa funzione permette di instanziare e inizializzare I socket su cui verranno trasmesse le chiavi.

Page 17: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Dynamic-link Library: Socket and Security Librarysock_chiudi();

Rilascia le risorse e chiude I canali di comunicazione. Questa funzione viene invocata subito dopo la conclusione dello scambio delle chiavi.

Page 18: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Dynamic-link Library: Socket and Security Libraryint sock_scambioChiavi(char* keyTX,

char* keyRX, char* keyVocal);

Questa funzione genera le chiavi da utilizzare e utilizza I socket precedentemente creati per scambiare le chiavi pubbliche. Inoltre genera il codice SAS che verrà mostrato dall’applicazione per evitare gli attacchi di tipo Men In The Middle.

Page 19: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Dynamic-link Library: PjMedia LibraryIn questa seconda dll vengono

messe a disposizione le funzioni che permettono di attivare la libreria pjmedia incaricata effettuare la vera comunicazione crittografata. I metodi esportati sono:

int start(char* ip, char* port, char* codec, char* keyTX, char* keyRX);

int stop();

Page 20: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Dynamic-link Library: PjMedia Libraryint start(char* ip, char* port,

char* codec, char* keyTX, char* keyRX);

Questa funzione inizializza le strutture della libreria pjmedia, prende in ingresso i parametri che son stati generati dall’altra dll e attiva microfono e altoparlante del telefono permettendo il flusso audio crittografato.

Page 21: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Dynamic-link Library: PjMedia Libraryint stop();

Questa funzione permette di fermare la comunicazione e rilascia le risorse occupate dalle strutture che la libreria pjmedia utilizza.

Page 22: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

La chiamata è stata accettata.Cosa succede?

Page 23: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

Staff

Coach Sport

Page 24: Cryptophone 2 Matteo Ferrari. Descrizione del Problema e Soluzioni adottate. Realizzare un’interfaccia grafica in C# per dispositivi Mobile di un progetto

BudgetBudget info here