Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoLodovico Valentini Modificato 9 anni fa
1
Cryptophone 2 Matteo Ferrari
2
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)
3
L’applicazione Una 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.
4
L’applicazione Il 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.
5
L’applicazione Chi 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.
6
L’applicazione Una 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: con la stringa che i due interlocutori devono scambiarsi a voce in modo da evitare attacchi di tipo Men in the Middle.
7
SMS come comando di richiesta chiamata In 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.
8
SMS come comando di richiesta chiamata
9
Socket: La comunicazione La 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().
10
Socket: La comunicazione waitForCallThread(). 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
11
Socket: La comunicazione waitForCloseCallThread(). 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.
12
Socket: La comunicazione doingCallThread(). 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.
13
Richiesta di Chiamata: Rifiutare
14
Richiesta di Chiamata: Accettare
15
Dynamic-link Library: Socket and Security Library Questa è 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);
16
Dynamic-link Library: Socket and Security Library int sock_crea(char* indIP, int numero, char* returnIP); Questa funzione permette di instanziare e inizializzare I socket su cui verranno trasmesse le chiavi.
17
Dynamic-link Library: Socket and Security Library sock_chiudi(); Rilascia le risorse e chiude I canali di comunicazione. Questa funzione viene invocata subito dopo la conclusione dello scambio delle chiavi.
18
Dynamic-link Library: Socket and Security Library int 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.
19
Dynamic-link Library: PjMedia Library In 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();
20
Dynamic-link Library: PjMedia Library int 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.
21
Dynamic-link Library: PjMedia Library int stop(); Questa funzione permette di fermare la comunicazione e rilascia le risorse occupate dalle strutture che la libreria pjmedia utilizza.
22
La chiamata è stata accettata. Cosa succede?
23
Staff CoachSport
24
Budget Budget info here
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.