Home
Rapport final
Contents
1. page 38 sur 40 R f rences bibliographiques AAR Al107a Al107b Ben Buc06 CAc Dev12 eCW11 eFeT09 Fou04 Pie University College London Gower Street London WC1E 6BT United Kingdom Alfarez Abdul Rahman Department of ComputerScience The pgp trust model http www wim uni koeln de uploads media The_PGP_Trust_Model pdf Open Handset Alliance Industry leaders announce open platform for mobile devices 2007 http www openhandsetalliance com press_110507 html Open Handset Alliance Open handset alliance releases android sdk 2007 http www openhandsetalliance com press_111207 html Mustapha Benjada Pki public key infrastructure http www securiteinfo com cryptographie pki shtml Johannes Buchmann Introduction la cryptographie Dunod 2006 CAcert org Cacert wiki http wiki cacert org Android Developers Platform versions 2012 http developer android com resources dashboard platform versions html Laurent Bloch et Christophe Wolfhugel S curit Informatique Principes et m thode Eyrolles 2011 Etude en FORmation en T l communication Short message service Principe et architecture 2009 http www efort com r_tutoriels SMS_EFORT pdf The Eclipse Foundation History of eclipse 2004 http www eclipse org org tthistory Laurent Piechocki Uml en francais http uml free fr page 39 sur 40
2. HO A AmD 90 Figure 20 Chiffrer un SMS Lecture d un SMS ERSMS Emulateur 5554 Figure 21 Liste des contacts Lorsque l utilisateur choisit Voir les SMS re us il arrive alors sur une page listant tous les contacts qui lui ont envoy un message En cliquant sur un de ces contacts l utilisateur acc de alors la liste des derniers sms re us de ce contact Il peut ainsi voir la date du sms et son contenu d chiffr si besoin Cette liste est pour le moment limit aux 10 derniers sms afin de limiter le temps de chargement L utilisateur peut galement cliquer sur le bouton R pondre qui l enverra alors sur la page Ecrire un SMS avec le champ destinataire initialis au num ro du contact 5 PROGRAMME page 34 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche ERSMS Ceci est un test Figure 22 Liste des SMS 5 2 Parties impl ment Actuellement le programme permet d envoyer un SMS chiffr et sign de r cup rer un certificat sur le serveur au format XML ou d en v rifier la validit Mise Jour ou R vocation de plus les certificats sont stock s dans une base de donn e interne au portable permettant une utilisation prochaine plus rapide Enfin une fois le SMS re u on peut v rifier la signature de celui ci et si elle est correct nous le d chiffrons pour le lire Mais la connexion https avec le serveur ne fonctionne pas le
3. une instance d une classe Acteur objet Classe I i i i messageSimple s un objet cr dynamiquement I I ligne de vie i messageMinut D 1 messageSynchroneg gt K s i i i i i i l messageAsinchrone gt d truire X i i i I ll messageD robant i mort de l objet Figure 2 Pr sentation d un diagramme de s quence 2 2 ANDROID Android est un syst me d exploitation SE open source Il est disponible pour des smart phones ou des tablettes principalement mais est aussi utilis comme SE pour les ordinateurs pour des MP3 des montres Il a t annonc le 5 Novembre 2007 par l Open Handset Alliance une association de plusieurs entreprises li es aux technologies mobiles constructeurs op rateurs mobiles diteurs de logiciels dont les membres fondateurs sont Aplix Ascender Corporation Audience Broadcom China Mobile eBay Esmertec Google HTC Intel KDDI Living Image LG Marvell Motorola NMS Communications Noser NTT DoCoMo Inc Nuance Nvidia PacketVideo Qualcomm Samsung SiRF SkyPop SONIVOX Sprint Nextel Synaptics TAT The Astonishing Tribe Telecom Italia Telef nica Texas Instruments T Mobile et Wind River Al107a Ce syst me d exploitation a t cr dans le but de favoriser l innovation sur les appareils mobiles en proposant aux d veloppeurs un environnement ouvert o ils peuvent acc der
4. UNIVERSIT DE VERSAILLES 5 ST QUENTIN EN YVELINES Rapport du TER SMS s curis sur Smart Phones PROJET DE MASTER 1 Auteurs Encadrants GUILLAUME J r my DALLOT L onard LAGNY Blanche ROJAT Antoine R sum du document L objet du pr sent rapport est de pr senter le travail effectu dans le cadre du travail d tude et de recherche dont le sujet est Envoi de SMS s curis sur smart phone par J r my GUILLAUME et Blanche LAGNY Ces travaux sont encadr s par L onard DALLOT Chercheur en cryptologie PRISM UVSQ et Antoine ROJAT Doctorant en cryptographie PRISM UVSQ Le travail demand est de mettre en place s curit une application permettant le chiffrement de SMS sur smart phone et de cr er un programme pour pouvoir transmettre un message s curis sur le syst me d exploitation Android 23 Mai 2012 Sommaire 1 Introduction 2 Programmes Utilis s 2 UM ele ca rl sl e ad tt e A 2 2 ANDROID sita e a E men a A te dde dd ur A 8 4 2 21 Android SDE it ts Def RE PROD A bi do 2 2 2 La programmation Android 2253 A ECLIPSE ht bas 80508 a R ai te Bus MAN ae mine RER Le 3 Cryptographie et Architecture de confiance 3 1 Cryptographie sym triqu vo 4444 2 4 4 4 a e nee en un de ie nn 44 3 2 Cryptographie asym trique 4 4 4445 o a domi etat at nan a er an die be Dh a 3 3 Choix du syst me de chiffrement 3 14 L ale
5. Cette classe fera appel la classe SmsManager du paquet android telephony Nous avons galement cr notre propre BroadcastReceiver pour l envoi des messages Celui ci nous permettra de v rifier la bonne mission des messages envoy s ou dans le cas contraire d afficher un message d erreur pr cis sur la cause du non envoi ArrayList lt String gt msgList SmsManager getDefault divideMessage msg ArrayList lt Pendinglntent gt sentlntents new ArrayList lt Pendinglntent gt msgList size for int i 0 i lt msgList size i Intent sendInt new Intent ENVOYER sendInt putExtra PART Partie i 3 CRYPTOGRAPHIE ET ARCHITECTURE DE CONFIANCE page 18 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche Pendinglntent sendResult Pendinglntent getBroadcast SendSMSActivity this 0 sendInt Pendinglintent FLAG _CANCEL _CURRENT sentIntents add sendResult SmsManager getDefault sendMultipartTextMessage num null msgList null null Le message sera d coup en une liste de SMS pour que le destinataire le voit comme un seul message Celui ci sera ensuite envoy gr ce la m thode sendMultipartTextMessage de la classe SmsManager Les arguments de la fonction sont le num ro du destinataire le num ro de l exp diteur ou null pour utiliser le SMSC d fini par d faut sur le t l phone un PendingIntent permettant de v rifier l mission du
6. toutes les fonctionnalit s sauf les pilotes contenus dans le noyau Linux pilotes de l appareil photo de l cran du WiFi qui ne sont accessible que par le framework de d veloppement Il propose galement aux constructeurs une plus grande libert dans le design de leur produits La plate forme Android est compos e d un noyau de Linux 2 6 d une machine virtuelle Java Dalvik Virtual Machine de plusieurs biblioth ques Elle est ce jour en version 4 0 et la version 5 0 a t annonc e pour l t 2012 2 2 1 Android SDK Le 12 Novembre 2007 une semaine apr s avoir annonc l arriv e d Android Open Handset Alliance met dis position l Android Software Development Kit Android SDK afin que les d veloppeurs puissent avoir tous les outils n cessaires pour programmer des applications Android A1107b Parmi ces outils on trouve de la documen tation des exemples de codes des APIs des outils de d bogage un emulateur Android Virtual Device La documentation est une documentation Javadoc permettant de documenter les diff rentes m thodes des APIs Dans l Android SDK se trouve galement un plugin Eclipse Android Development Tools ADT qui permet de programmer des applications Android en utilisant Eclipse La derni re version de 1 Android SDK permet aux applications cr es de fonctionner sur Android 4 0 cependant comme nous avons voulu mettre disposition notre application pour le plus d utilisate
7. atoire provenant du num ro sp cifi La m thode boolean verifNum String num va nous servir pour effectuer les actions concernant la v rification du num ro g n ration de la valeur al atoire envoi de SMS et r ception Random r new Random String message String value0f r nextInt 1000 on 1 envoie SmsManager getDefault sendTextMessage num null message null null on attend try Thread sleep 5000 catch InterruptedException e TODO Auto generated catch block e printStackTrace on verifie qu on l a bien recu Uri uriSMS Uri parse content sms inbox String projection new String body String selection address String selectionArgs new String num Cursor curseur getContentResolver query uriSMS projection selection selectionArgs date DESC LIMIT_1 if curseur moveToFirst if curseur getString curseur getColumnIndex body equals message return true return false La g n ration du nombre al atoire est effectu e gr ce la classe Random du paquet java util L envoi du SMS se fait avec la classe SmsManager comme dans la classe SendSMSActivity que nous avons tudi pr c demment Ici nous n utiliserons que le contenu du message et le num ro du destinataire Nous attendons ensuite cinq secondes pour recevoir le SMS Cette valeur a t choisie afin d avoir un temps d attente assez l
8. divers langages tel que le Java php openSSL mais aussi Android Inconv nient L inconv nient principal est le fait que la s curit du syst me n est que conjectur aussi s r que le probl me de la factorisation 3 CRYPTOGRAPHIE ET ARCHITECTURE DE CONFIANCE page 9 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche Conclusion Pour ce projet nous avons d cid d utiliser le crypto systeme RSA parce qu il est suffisamment rapide pour l usage effectu dans le projet et aussi parce qu il est d j impl ment sur ANDROID RSA dans notre application Pour la programmation du syst me RSA nous avons utilis des classes qui taient d j d finies dans les paquets java security pour la g n ration des clefs et javax crypto pour le chiffrement et d chiffrement Tout le code correspondant cette partie se trouve dans la classe RSA de notre code La premi re m thode de cette classe a pour signature static KeyPair generateKeyPair Elle est utilis e pour g n rer une paire de clefs KeyPairGenerator kpg KeyPairGenerator getInstance RSA on prend des clefs de taille 1024 bits et un modulo 65537 RSAKeyGenParameterSpec rsa new RSAKeyGenParameterSpec 1024 RSAKeyGenParameterSpec F4 kpg initialize rsa kp kpg8 generateKeyPair Nous avons utilis l algorithme de g n ration des clefs d j impl ment dans le paquet java security en faisant appel aux cla
9. du client e clarifier filtrer et organiser les besoins e d finir le contour du systeme mod liser e identifier les fonctionnalit s principales du syst me e permettre une meilleure compr hension du systeme e servir d interface entre tous les acteurs du projet Pour cela UML propose depuis la version 2 3 13 types de diagrammes dont les deux principaux diagramme des classes et diagramme de s quence sont d finis ci dessous Diagramme des classes Le diagramme des classes permet de mod liser les classes et interfaces d un syst mes ainsi que les diff rentes relations entre les l ments le constituant Il existe quatre types de relations qui sont L h ritage Elle est repr sent par un trait et un triangle a une extr mit reliant deux classes La classe fille celle en contact avec le triangle h rite de tous les attributs et les m thodes de l autre classe on dit la classe m re L association Elle est repr sent par un trait reliant deux classes Elle repr sente une connexion s mantique entre les deux classes L agr gation Elle est repr sent par un trait reliant deux classes dont l une des extr mit s est un losange vide Il repr sente une relation ensemble l ment et dont l l ment peut exister sans appartenir un ensemble La composition Elle est repr sent par un trait reliant deux classes dont l une des extr mit s est un losange plein Il repr sente une relation ensemb
10. int removeCertif String numero va nous permettre de supprimer un certificat de la table String whereArgs new String numero return bdd delete TABLE_CERTIF COL_NUMERO 7 whereArgs Cette suppression se fait gr ce la m thode delete qui prend en argument la table le contenu de la clause WHERE et un tableau contenant les valeurs de cette clause La m thode Certificat cursorToCertif Cursor curs va nous tre utile pour que lorsque l on recherche un certificat dans la table le r sultat nous soit rendu sous la forme d un Certificat et non pas sous celle d un Cursor 4 SCH MA DU PROJET page 30 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche if lcurs moveToFirst return null On cree un certificat Certificat cert new Certificat cert setNumero curs getString curs getColumnIndex COL_NUMERO cert setAlgorithme curs getString curs getColumnIndex COL_ALGO cert setModulo new Biglnteger curs getString curs getColumnIndex COL_M0D cert setExposant new Biglnteger curs getString curs getColumnIndex COL_EXP cert setSign curs getString curs getColumnIndex COL_SIGN curs close Le seul appel cette requ te est fait depuis la fonction getCertificat qui doit renvoyer le certificat correspondant un num ro Le r sultat de la requ te correspondante ne contiendra donc qu un seul certificat C est pourquoi nous ne p
11. la conna tre donc la seule pouvoir d chiffrer le message Bob Alice Hello Hello o Chiffre _ Alice Alice D chiffre A tE gqdbv gqdbv fjndn findn Figure 5 Repr sentation du fonctionnement de la cryptographie sym trique Avantages L un des avantages de la cryptographie asym trique est la transmission des clefs contrairement la cryptographie sym trique il n est pas n cessaire de poss der un canal priv pour transmettre la clef publique puisque un pirate en obtenant la clef transmise ne pourra qu crire un message Le deuxi me avantage est le nombre de clef ainsi pour pouvoir communiquer de fa on confidentielle deux deux nous ne sommes plus oblig de poss der n x n 1 2 clefs mais n 1 clefs suffisent notre clef publique notre clef priv et la clef publique de chaque personne pr sente dans le syst me Pour finir l arriv e de nouveau utilisateurs ne demande que peu d effort il suffit de cr er un couple de clef et de diffuser la clef publique cr e Inconv nients Il y a deux probl mes avec la cryptographie asym trique le premier est que toutes les personnes du syst me peuvent nous envoyer des messages chiffr s partir d une clef or il est n cessaire de connaitre l identit de l metteur pour pouvoir juger la pertinence du message ce qui n est possible qu en utilisant la notion de signature Le deuxi me probl me est que lorsque l on r cup re une clef publique nous ne p
12. nous ont envoy des SMS Nous r cup rons le champ address qui correspond au num ro de t l phone de l exp diteur HashMap lt String String gt map new HashMap lt String String gt String address curseur getString curseur getColumnIndex address l adresse recuperee contient l indicatif pays qui n est pas forcement dans Phone NUMBER String selectionPhone ContactsContract CommonDataKinds Phone NUMBER LIKE String selectionArgsPhone new String 1 address substring 3 String projectionPhone new String ContactsContract CommonDatakKinds Phone CONTACT_ID Cursor phoneCursor getContentResolver query uriPhone projectionPhone selectionPhone selectionArgsPhone null Le num ro r cup r contient toujours l indicatif pays 33 pour un num ro fran ais par exemple or le num ro stock dans la table Phone est celui rentr par l utilisateur donc il ne contient pas forc ment cet indicatif C est pourquoi nous avons du utiliser une s lection avec le mot clef LIKE et couper le num ro de t l phone pour supprimer l indicatif Nous effectuons une requ te sur la table Phone afin de r cup rer l identifiant du contact pour retrouver son nom 4 SCH MA DU PROJET page 26 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche String name String id phoneCursor getString phoneCursor getColumnIndex ContactsContrac
13. sign v rifier sa signature l aide de la fonction verifieSignature de la classe Signer et si nous trouvons un message commen ant par l octet 127 indiquant qu il est chiffr appeler la fonction RSADecode de notre classe RSA avec ce message et avec la clef r cup r e on recupere l address de l expediteur Intent thisIntent getlntent address thisIntent getExtras getString address ArrayList lt HashMap lt String String gt gt mylist SMStoList address SimpleAdapter adapter new SimpleAdapter this mylist R layout listesmselement_layout new String Date Message new int R id date R id body list setAdapter adapter Dans la m thode principale nous devons tout d abord r cup rer le num ro pass par la classe ReadSMSActivity avec la clef address Ensuite une fois la liste des SMS r cup r e gr ce la m thode SMStoList nous cr ons un adaptateur comme nous l avions fait dans la classe ReadSMSActivity avec les colonnes date et message Classe Certificat Cette classe va d finir un objet Certificat Cet objet a pour champs numero pour le num ro de t l phone modulo et exposant pour la clef publique algorithme pour indiquer quel algorithme utiliser seul RSA est support pour le moment et sign pour la signature du certificat La m thode public Certificat fromXML String xml va nous permettre de convertir une cha ne XML en un objet Certificat
14. 859 1 else chiffre t new String encodeByte ISO 8859 1 Pour cette m thode nous utiliserons la classe Cipher du paquet javax crypto Cette classe va nous permettre de chiffrer le message envoyer Pour cela nous initialisons d abord un Cipher le constructeur doit prendre en param tre une cha ne repr sentant soit le nom de l algorithme utiliser RSA AES soit l algorithme le mode et le padding C est cette derni re m thode que nous avons utilis nous instancions donc un nouvel objet Cipher qui utilisera l algorithme RSA le mode ECB et le padding PKCS 1 v1 5 Nous devons ensuite d couper le message en bloc de plus petite taille Pour un RSA classique avec une taille de clefs de 1024 bits la taille maximum d un bloc est de 128 octets Or ici nous utilisons en plus un padding qui rajoute 11 octets au bloc de donn es nous avons donc une taille maximum de bloc de 117 octets C est pourquoi nous d coupons le message en bloc de 117 octets et chiffrons ces blocs un par un Le chiffrement effectif des donn es se fait gr ce la m thode doFinal de la classe Cipher Cette m thode prenant en argument un tableau d octet nous devons convertir le message c est le r le de la m thode getBytes de la classe String Nous avons pr cis un encodage en argument car l encodage par d faut est l UTF 8 et nous avons d couvert que la pr sence d octets repr sentant des caract res non affichable DEL
15. Charlie como bia Lise ma de dus BR A AE ee de ee mine Be RS 17 Ici Alice fait confiance Bob car son certificat a t sign par une AC en qui elle a confiance Elle fait galement confiance Charlie car elle peut trouver une AC qui fait la fois confiance son AC et a cello deCha lie cular ec a aa a 18 Sch ma d projet cd o de M A AA A dd Debut y dut ras da 20 changes lors de lenvoi d un SMS 0 rd das LE o da RS a 22 changes lors de la lecture d un SMS 23 change lors de la cr ation d un compte 23 Page d accueil sii RDS Rte ane a a M aan ae Ge ED a 32 G n rer Son cettilicatia tisy Lis MA d De Li Be M AA NN RU ML EAN A NL de BE 32 Ecrire an SMS to sent en A AA A done AA de ah mi ABUS A 33 Choisit le d stinataire 2an sus ed tte E A da dp dia dd de te 33 Chifre un SMS Los ti h e o Mate AAA ti at 4 EUR ANR 34 Liste des Contacts 2242 Hans ie Que mas ER Re n due AA a dia fus ds 34 Listedes SMS os os are dent me a Das re A A gen te Re A A Ps hs pente Pet 35 page 36 sur 40 Liste des tableaux 1 R partition des versions d Android sur smartphones au 1 Mai 2012 o page 37 sur 40 Liste des algorithmes 1 G n ration des Clefs avec RSA 2 Chiffrement des messages avec RSA 3 D chiffrement des messages avec RSA
16. ER String selection ContactsContract Contacts HAS_PHONE_NUMBER 7 String selectionArgs new String 1 p Cursor contacts ctx getContentResolver query contactUri projection selection selectionArgs null Nous effectuons ensuite une requ te sur URI des contacts Le tableau projection correspond aux colonnes que nous voulons r cup rer ici l identifiant du contact le nom du contact et s il a au moins un num ro de t l phone ou non La cha ne selection nous permet d apporter une condition sur la colonne indiquant si le contact un num ro Cette condition est pr cis e juste en dessous dans le tableau selectionArgs qui contient la liste des arguments de la s lection un argument est identifi par le caract re dans la s lection Le contact doit donc avoir au moins un num ro de t l phone La ligne suivante permet de r cup rer le r sultat de la requ te ainsi cr e Le dernier argument de cette requ te est pour l ordre des lignes du r sultat l quivalent d ORDER BY en SQL ce que nous n utiliserons pas pour cette requ te String phone _projection new String ContactsContract CommonDatakKinds Phone NUMBER Pp String phone_selection ContactsContract CommonDataKinds Phone CONTACT_ID String phone_selectionArgs do String contactld contacts getString contacts getColumnIndex ContactsContract Contacts _ID phone_selectionArgs new String contactl
17. En effet lorsque nous demandons un certificat au serveur il nous le renverra sous la forme d une cha ne XML afin de faciliter la v rification de la signature Certificat c new Certificat SAXParserFactory spf SAXParserFactory newlInstance SAXParser sp try sp spf newSAXParser XMLReader xr sp getXMLReader CertificatHandler dataHandler new CertificatHandler xr setContentHandler dataHandler xr parse new InputSource new StringReader xml c dataHandler getCertif Pour analyser une cha ne XML nous utiliserons la librairie SAX et une classe que nous avons cr e CertificatHandler qui d finit le comportement de l analyseur lorsqu il rencontre un tag Elle nous servira de contentHandler soit de gestionnaire de contenu Nous devons donc construire un XMLReader afin de pouvoir lui passer la cha ne XML pour qu il analyse Pour cela nous devons construire un SAXParser qui est lui m me g n r par un SAXParserFactory Classe CertificatHandler Cette classe tend DefaultHandler qui est la classe par d faut pour g rer les v nements SAX Elle va nous permettre de d finir les actions de l analyseur lorsqu il commencera l analyse du document lorsqu il rencontrera un tag particulier La premi re des m thodes que nous modifions est la m thode public void startDocument qui est appel e lorsque l analyseur commence lire un nouveau document dans notre cas une cha ne de caract
18. MS est en relation avec la classe RSA pour chiffrer ou d chiffrer un message avec la classe Signer pour g n rer ou v rifier la signature d un message et les classes Certificat BaseDeDonnee et CommServeur pour la r cup ration des clefs Cryptographie La partie Cryptographique g re le chiffrement le d chiffrement et la signature d un message Les fonctions associ es a cette partie sont e La g n ration des clefs e Le chiffrement de SMS e Le d chiffrement de SMS e La signature d un SMS e La v rification de signature Elle se d compose en deux classes l une pour le chiffrement et le d chiffrement nomm e RSA et la deuxi me pour la gestion de la signature cr ation et v rification appel e Signer Gestion des clefs La gestion de clef consiste e Stocker notre clef publique sur un serveur dans le but de la diffuser e R cup rer une clef publique pour envoyer un message e R voquer un certificat que l on a mis en ligne Pour cela nous avons les fonctions associ es suivantes e Le stockage des certificats r cup r s 4 SCH MA DU PROJET page 20 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche L envoi d un certificat un serveur e La r cup ration d un certificat correspondant un num ro de t l phone e La r vocation de certificat partir du t l phone ou d un ordinateur e La transmission des clefs que l on a r cup r es C
19. NUL faisait chouer le d chiffrement dans cet encodage 3 CRYPTOGRAPHIE ET ARCHITECTURE DE CONFIANCE page 10 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche Une fois le chiffrement fait nous rajoutons un octet au d but du message afin de diff rencier les messages chiffr s des clairs lors de l affichage et ainsi viter le d chiffrement d un message clair Cet octet doit correspondre un caract re qui ne peut pas tre pr sent dans un message clair nous avons donc choisi 127 qui correspond DEL Enfin la derni re m thode de cette classe est public static String RsaDecode String chiffre PrivateKey privatei qui servira d chiffrer des messages byte smsByte messByte null String dechiffre Cipher c c Cipher getInstance RSA ECB PKCS1Padding c init Cipher DECRYPT _MODE privateli chiffre chiffre substring 1 for int i 0 i lt chiffre length i 128 if i 128 gt chiffre length smsByte chiffre substring i getBytes ISO 8859 1 else messByte c doFinal smsByte dechiffre t new String messByte ISO 8859 1 smsByte chiffre substring i i 128 getBytes ISO 8859 1 Comme pour la m thode pr c dente nous utilisons la classe Cipher avec le m me triplet algorithme mode et padding Nous enlevons ensuite le premier octet du message qui est l octet 127 ajout pour la diff renci
20. SMS et un pour v rifier sa transmission Pour la cr ation des PendingIntent nous cr ons tout d abord un Intent dont l action sera ENVOYER Nous ra joutons galement dans l Intent la partie du message concern e afin d avoir des messages d erreur plus pr cis Enfin nous cr ons un Pendinglntent qui transmettra l Intent C est cet Intent qui sera r cup r par le BroadcastReceiver que nous avons cr au d but de la classe 3 CRYPTOGRAPHIE ET ARCHITECTURE DE CONFIANCE page 19 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche 4 Sch ma du Projet 4 1 Diagramme UML Le projet se d compose en trois parties distinctes qui sont la partie SMS la partie cryptographique et la partie gestion des clefs Nous en faisons la description ci dessous ainsi que celle des messages travers les diff rentes fonctionnalit s Cryptographie Cy Gestion de clef Figure 12 Sch ma du projet SMS Dans cette partie nous g rons les services n cessaires pour les SMS c est dire que c est dans cette partie que nous allons r cup rer le message chiffrer le num ro de t l phone du destinataire que nous allons envoyer les SMS et que nous allons les lire en les d chiffrant si besoin Les fonctions associ es cette partie sont e La r ception lecture de SMS e L envoi de SMS e La v rification du num ro de t l phone du propri taire La partie S
21. Sign Message Transmet Sign Message Fonction Message Figure 6 Principe de fonctionnement de la signature Mise en place Dans notre cas nous utilisons le crypto syst me RSA dont la primitive de la fonction de chiffrement est la fonction de d chiffrement ce qui permet d viter un rajout de code De plus la signature est cr a partir du message chiffr transmit en utilisant la fonction de hachage SHA1 3 CRYPTOGRAPHIE ET ARCHITECTURE DE CONFIANCE page 11 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche La signature dans notre application La signature d un message est impl ment e dans la classe Signer de notre code Cette classe utilisera la classe Signature du paquet java security dans laquelle sont impl ment s plusieurs algorithmes de cr ation et de v rification de signature dont celui utilisant la fonction de hachage SHA 1 et l algorithme RSA que nous utiliserons Cette classe contient donc 2 fonctions public static String signeMess String mess PrivateKey privKey et public static boolean verifieSignature String sign String mess PublicKey pubkey La fonction signeMess prend en argument le message signer et la clef priv e de Putilisateur qui va lui servir de clef de signature Signature s Signature getlInstance SHAlwithRSA s initSign privKey s update mess getBytes ISO 8859 1 byte signature s sign String signatureString n
22. _CERTIF table_certificat private final String COL_NUMERO Numero private final String COL_SIGN Signature private final String COL_MOD Modulo private final String COL_EXP Exposant private final String COL_ALGO Algorithme private SQLiteDatabase bdd private BaseDeDonneesOpenHelper bddoh public BaseDeDonnee Context context On cree la BDD et sa table bddoh new BaseDeDonneesOpenHelper context NOM_BDD null VERSION_BDD bdd bddoh getWritableDatabase Comme pour la classe BaseDeDonneesOpenHelper nous avons d finis des String contenant le nom de nos colonnes et celui de la table Nous avons galement d fini un champ SQLiteDatabase bdd qui va nous servir pour r cup rer ou pour modifier les donn es de notre base et un BaseDeDonneesOpenHelper bddoh pour cr er si besoin la base de donn e et pour la r cup rer Le constructeur de notre classe va cr er un nouvel objet BaseDeDonnees0OpenHelper qui va nous servir initialiser notre objet bdd La base de donn es ainsi que la table seront ainsi cr es si besoin Nous demandons les acc s criture la base car nous v rifions chaque envoi si le certificat n a pas t modifi et s il l a t nous devons le mettre jour Il y a donc toujours une possibilit pour que nous ayons crire dans la base de donn es La m thode long insertCertificat Certificat c va nous servir ins rer un nouvea
23. _TEXT_NOT NULL COL_EXP _TEXT_NOT _NULL u COL_SIGN _TEXT Nous avons galement d fini des String pour la table le nom des colonnes et la requ te de cr ation de la table La m thode void onCreate SQLiteDatabase db est la m thode appel e lorsque la base de donn e est cr e C est donc ici que nous allons cr er notre table que nous allons appeler table_certificat db execSQL CREATE_BDD Nous devons seulement appeler la m thode execSQL qui va ex cuter la requ te d crite pr c demment et ainsi cr er la table qui contiendra les certificats La deuxi me m thode impl ment e est void onUpgrade SQLiteDatabase db int oldVersion int newVersion qui va tre appel e si lors de la mise jour de notre application nous avons besoin de changer la structure de la table Il suffira alors de changer le num ro de version pass en argument dans le constructeur db execsSQL DROP TABLE IF EXISTS TABLE_CERTIF onCreate db Pour le moment nous supprimons simplement la table pour la recr er ensuite 4 SCH MA DU PROJET page 29 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche Classe BaseDeDonnee C est dans cette classe que nous allons acc der aux donn es de notre table table certificat private final int VERSION_BDD 1 private final String NOM_BDD ter db private final String TABLE
24. a requ te HttpResponse et HttpEntity pour r cup rer la r ponse du serveur Cette r ponse sera ensuite convertie en cha ne de caract re puis en un objet JSON Les champs de cet objet seront ensuite r cup r l aide de la m thode getString String clef de l objet JSONObject 4 SCH MA DU PROJET page 31 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche 5 Programme 5 1 Manuel d utilisation Accueil ERSMS Ecrire un SMS Voir les SMS re us Figure 16 Page d accueil La page d accueil est la page que l utilisateur d couvre lorsqu il ouvre l application A partir de cette page Putilisateur peut choisir d envoyer un message en appuyant sur Ecrire un SMS ou de lire ses sms en appuyant sur Voir les SMS re us Cependant lorsque l utilisateur ouvre l application pour la premi re fois c est une autre page qui va s afficher lui permettant de cr er un nouveau certificat Figure 17 G n rer son certificat L utilisateur doit donc rentrer son num ro avec l indicatif pays et appuyer sur Valider Une fois ceci fait il devra alors attendre quelques secondes afin de savoir si son num ro a t v rifi ou non Au cours de ce temps d attente il recevra un sms contenant seulement un chiffre qu il ne faudra pas supprimer il s agit de la v rification Une fois la v rification faite l application retournera automatiquement la page d accue
25. al 0 sinon Une fois que nous avons un curseur contenant le r sultat de la requ te il ne nous reste plus qu le stocker avec le nom du contact dans la liste finale Classe SendSMSActivity La vue de cette classe comprend trois boutons et deux zones de texte une pour le destinataire et une pour le message envoyer Afin de faciliter l envoi d un message un de nos contacts nous avons utilis une zone de texte qui s auto compl te nous devons donc charger la liste des contacts ce qui se fait dans la classe ListContact Si l utilisateur appuie sur le bouton encode Chiffrer nous v rifions alors que nous disposons de la clef publique de l exp diteur dans notre base de donn es en faisant appel la classe BaseDeDonnee Si c est le cas nous v rifions qu il s agit bien de la bonne clef gr ce la fonction signature0K de la classe CommServer sinon nous r cup rons directement le certificat de l exp diteur gr ce la fonction recupCertif de la m me classe Une fois la clef r cup r e nous chiffrons le message gr ce la fonction RSAEncode de la classe RSA Si Putilisateur appuie sur le bouton signe Signer et si le message est chiffr nous chargeons notre clef priv e et signons le message gr ce la m thode signeMess de la classe Signer Dans le cas contraire nous affichons un message indiquant l utilisateur qu il doit d abord chiffrer le message ceci afin de permettre de v rifier l int
26. application n utilisant pas forc ment tous ces composants nous allons seulement voir ceux dont nous nous sommes servis Les activit s Une activit correspond une page de l interface utilisateur Par exemple dans notre application la page d accueil correspond une activit la page permettant d crire un SMS une autre Une activit est donc compos e de deux l ments une classe qui tend Activity du paquet android app et une interface utilisateur qui peut tre soit dans un fichier XML externe soit d finie dans la classe Les Intents Les Intents permettent des composants de votre application de communiquer avec d autres composants qu il s agisse d une autre activit dans votre application ou bien d une application diff rente Ils permettent par exemple d informer les applications d un appel entrant ou bien que le niveau de batterie est faible Nous allons donc utiliser les Intents lorsque nous allons changer d activit dans notre application ou bien lorsque nous voudrons envoyer un message au syst me Android pour l informer qu une action s est produite par exemple dans notre application nous enverrons un Intent au syst me lorsque nous enverrons un SMS Les Pendinglntents Les Pendinglntents sont des Intents que l on demande une autre application de lancer de notre part Par exemple les widgets sur un bureau sont ex cut s par interface de navigation le launcher de la part de l application cor
27. arcourons pas le curseur et ne regardons que la premi re ligne Nous remplissons ensuite notre objet Certificat gr ce aux manipulateurs les m thodes commen ant par set que nous avons d finis dans la classe Certificat Enfin la derni re m thode Certificat getCertif String numero va nous permettre de r cup rer le certificat d un contact String columns new String COL_NUMERO COL_EXP COL_MOD COL_ALGO COL_SIGN String selection COL_NUMERO String selectionArgs new String numero Cursor curs bdd query TABLE_CERTIF columns selection selectionArgs null null null Nous construisons donc notre requ te la s lection se fera sur la colonne numero dont la valeur devra tre gale au numero pass en argument Les 3 derniers param tres de la m thode query correspondent respectivement aux GROUP BY HAVING et ORDER BY que nous n utiliserons pas ici Classe CommServer C est dans cette classe que se font toutes les communications avec le serveur Le format utilis pour les r ponses du serveur est le format JSON qui a l avantage d tre simple mettre en place il existe deux classes en Java qui nous permettront de traiter directement les donn es re ues les classes JSONArray et JSONObject du paquet org json et il existe une fonction en PHP qui est le langage utilis pour notre serveur pour transformer un tableau en un objet de type JSON json_encode Cette classe di
28. as imagin d utiliser notre programme pour perme ttre d utiliser notre t l phone comme une carte bancaire via le service SMS envoi d un demande de virement 6 CONCLUSION page 35 sur 40 Liste des figures No E amp ND H 11 12 13 14 15 16 18 19 20 21 22 Pr sentation des relations dans un diagramme des classes 3 Pr sentation d un diagramme de s quence 4 Principe de la cryptographie sym trique 7 R partition des clefs dans la cryptographie Asym trique 8 Repr sentation du fonctionnement de la cryptographie sym trique 8 Principe de fonctionnement de la signature 11 Ici Alice fait confiance Bob car son certificat a t sign par une AC en qui elle a confiance Elle fait galement confiance Charlie car elle peut trouver une AC qui fait la fois confiance son AC et celle de Charlie ooo e ea 20e pe a A a mule M A una nn 14 Organisation d un r seau Web of Trust du point de vue d un utilisateur 15 Organisation d un r seau CAcert 16 Ici Alice fait confiance Bob car son certificat a t sign par une AC en qui elle a confiance Elle fait galement confiance Charlie car elle peut trouver une AC qui fait la fois confiance son AC et a celled
29. ateExponent toString editor commit Les pr f rences sont g r es par la classe SharedPreferences Nous r cup rons celles contenues dans le fichier keys afin de pouvoir en rajouter Les clefs sont g n r es l aide de notre classe RSA Afin de pouvoir charger les clefs pour les utiliser pour d chiffrer ou chiffrer un message nous avons du les stocker sous la forme d un modulo et d un exposant public ou priv selon la clef Pour stocker une nouvelle pr f rence nous devons r cup rer un diteur l aide de la m thode edit C est dans cet diteur que nous allons ajouter les pr f rences une par une sous la forme d un couple clef valeur Une fois les pr f rences ajout es il ne reste plus qu les valider Apr s la g n ration des clefs nous retournons la classe MainActivity Classe ListContact Cette classe va nous permettre de g n rer une liste des contacts enregistr s avec leur num ro de t l phone Pour r cup rer des ressources du t l phone nous devons d j r cup rer leur identifiant URI Uri contactUri ContactsContract Contacts CONTENT_URI Uri phoneUri ContactsContract CommonDataKinds Phone CONTENT_URI Le premier URI nous servira r cup rer les noms des contacts et le second leur num ro String projection new String ContactsContract Contacts _ID ContactsContract Contacts DISPLAY_NAME ContactsContract Contacts HAS_PHONE_NUMB
30. ation de code Classe MainActivity Cette classe est celle qui va d finir ce qu on va voir lorsqu on d marre l application Lorsqu un utilisateur ouvre l application deux cas se pr sentent il peut s agir d une premi re utilisation ou non Pour v rifier dans quel cas nous sommes nous regardons si nous trouvons des pr f rences d finies par l application ici modulo qui correspond au module de chiffrement des clefs charge le contenu du fichier de preference keys dans lequel sont stockees les clefs SharedPreferences pref this getSharedPreferences keys Context MODE_PRIVATE pref getString renvoie la valeur de modulo si la preference existe ou une chaine vide si ce n est pas le cas if pref getString modulo equals Si nous ne trouvons pas le modulo dans les pr f rences nous appelons la classe PremiereUtilisationActivity qui se chargera entre autres de g n rer ces clefs La vue de cette classe dispose de deux boutons ecrire et lire Ces boutons appellent respectivement les classes SendSMSActivity qui envoie les SMS et ReadSMSActivity qui lit les SMS Classe PremiereUtilisation Activity Cette classe va nous servir enregistrer un nouvel utilisateur Afin de v rifier son identit nous lui demandons d entrer son num ro de t l phone puis nous lui envoyons un SMS avec une valeur al atoire et enfin nous v rifions dans les SMS re us s il a bien cette valeur al
31. ation des messages clairs et chiffr s puis nous d coupons le message en bloc de 128 octets pour les d chiffrer un par un En effet le chiffrement d un bloc en RSA avec une taille de clefs de 1024 bits sera un bloc de 128 octets qui sera ventuellement concat n avec un autre bloc si le message est trop long c est pourquoi nous devons les s parer avant de les d chiffrer 3 5 Les signatures La signature est un m canisme permettant d assurer l int grit du message et d authentifier l auteur de ce message Sch ma de signature Pour cr er une signature l metteur va utiliser le message sur lequel il va appliquer la primitive de la fonction de chiffrement fonction qui annule le chiffrement d un message avec la clef publique qui utilise comme argument le message et la clef priv de l metteur Ensuite l metteur va transmettre le message chiffr et la signature Enfin apr s la r ception le r ceptionnaire va chiffrer la signature avec la clef publique de l metteur si l on obtient le message alors l on est s r de l identit de l metteur dans l hypoth se o l on a certifi la possession de la clef publique car seul la personne connaissant la clef priv associ e la clef publique de chiffrement utilis pu cr er cette signature de plus pour modifier le message al atoire il faut aussi changer la signature ce qui n ai pas faisable pour un pirate sans chang l identit de l metteur Message
32. blique si c est elle qui l a g n r e Une Autorit de Certification AC va alors v rifier ces informations et si elle est convaincue qu il s agit bien d Alice va g n rer un certificat qu elle signera Elle va ensuite r cup rer le certificat sign par AC Ben Supposons maintenant que Bob un autre utilisateur veuille envoyer un message Alice Il r cup re donc son certificat et regarde le nom de l Autorit de Certification qui l a sign afin de pouvoir r cup rer la clef publique de PAC Une fois cette clef r cup r e il v rifie la signature du certificat afin de v rifier son int grit Ensuite deux 3 CRYPTOGRAPHIE ET ARCHITECTURE DE CONFIANCE page 12 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche cas se pr sentent soit Bob conna t PAC et lui fait confiance soit il ne la conna t pas Dans le premier cas il peut alors envoyer un message chiffr Alice avec sa clef publique qu il a r cup r Dans le deuxi me cas il doit regarder qui a sign le certificat de PAC S il s agit d un certificat sign par une AC qu il conna t alors il peut s arr ter et envoyer le message Alice sinon il continue remonter la cha ne certificats jusqu trouver une AC qu il conna t ou bien jusqu tomber sur une autorit racine c est dire une autorit qui a elle m me sign son certificat et dans laquelle nous devons avoir confiance sinon
33. ce fait confiance Bob car son certificat a t sign par une AC en qui elle a confiance Elle fait galement confiance Charlie car elle peut trouver une AC qui fait la fois confiance son AC et celle de Charlie Le service SMMO Le service fonctionne de la mani re suivante e L interface GSM SMS GMSC re oit un message court du centre SMS SMSC e L interface demande des informations de routage du message au registre de localisation HLR qui lui per mettent de relayer le message au centre de redirection MSC appropri MSC auquel est rattach e la station mobile destinataire 3 CRYPTOGRAPHIE ET ARCHITECTURE DE CONFIANCE page 17 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche e Le HLR utilise ce num ro pour rechercher les informations de routage qu il retourne au SMS GMSC travers la r ponse Cette r ponse contient l identifiant du destinataire IMSI et l adresse du MSC de rattachement e Le SMS GMSC d livre le message court au MSC e Le MSC met une requ te son registre des visiteurs VLR en vue d obtenir des informations relatives au destinataire Le param tre pass dans cette requ te est l IMSI du destinataire e A partir de PIMSTI fourni par le MSC le VLR identifie la zone de localisation LA du mobile destinataire Le VLR lance alors une proc dure de paging technique consistant effectuer une recherche sur l ensemble de la zone o est suscept
34. d Cursor phones ctx getContentResolver query phoneUri phone_projection phone_selection phone_selectionArgs ContactsContract CommonDataKinds Phone IS_SUPER_PRIMARY DESC if phones moveToFirst do try number phones getString phones getColumnIindex ContactsContract CommonDataKinds Phone NUMBER name contacts getString contacts getColumnIndex ContactsContract Contacts DISPLAY_NAME list add name number catch Exception e Log i this getClass getName e getMessage while phones moveToNext phones close while contacts moveToNext 4 SCH MA DU PROJET page 25 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche Le probl me que nous rencontrons ici est qu un contact peut avoir plusieurs num ros Nous devons donc pour chaque contact r cup rer la liste de ses num ros Pour cela nous allons effectuer une requ te sur PURI corre spondant aux num ros de t l phone Cette requ te aura les arguments suivants pour la projection nous ne r cup rons que le num ro de t l phone pour la s lection nous nous servirons de l identifiant r cup r dans la requ te pr c dente pour n avoir que les num ros du contact courant pour l ordre nous allons faire en sorte de faire appara tre le num ro principal du contact en premier IS SUPER PRIMARY est une constante qui vaut 1 si le num ro est le princip
35. du possesseur puis on analysera la signature 3 CRYPTOGRAPHIE ET ARCHITECTURE DE CONFIANCE page 15 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche AC racine Assurers 2 Utilisateurs Charlie Alice Bob Figure 9 Organisation d un r seau CAcert R vocation des clefs deux cas se pr sentent soit l utilisateur n est pas un assureur donc on peut r voquer son certificat sans cons quence soit il s agit d un Assureur et dans ce cas il faut retirer tous les points d assurance qu il a donn aux autres utilisateurs Si cela entra ne la perte du statut d assureur pour un utilisateur il faut enlever les points que celui ci donner d autres utilisateurs et ainsi de suite G n ration des certificats La g n ration du certificat est faite lors de la r cup ration de la clef publique de l utilisateur sur le serveur Un champs assurance point dans le certificat permet de donner des points l utilisateur seulement pour les Assureur 3 6 4 Avantages et inconv nients Chain of trust Avantage Il est tr s flexible et autorise une automatisation du syst me de signature Inconv nient Il faut faire confiance l autorit de certification et aux utilisateurs Web of trust Avantages Syst me d centralis et un acc s un nombre de clefs important rapidement ne n cessite pas d autorit Inconv nient R vocation des clefs compliqu es mettre
36. e Mais nous pouvons voir que travers ce protocole que les SMS circulent dans le r seau GSM sans aucune protection des messages lors des transmissions Pour pallier ce manque de s curit nous proposons de chiffr les SMS gr ce la cryptographie sym trique Pour cela nous avons cr un programme utilisant la version normalis de RSA pr sent dans ANDROID et r cup rant les clefs des diff rents utilisateurs sur un serveur de clefs que nous avons impl ment La suite du rapport est organis e en quatre parties Dans la premi re partie nous pr senterons les programmes utilis s Ensuite nous pr senterons toutes les notions ainsi que les choix que nous avons effectu s pour le projet Enfin nous pr senterons le d coupage des diff rentes parties du code Pour finir nous pr senterons le programme en lui m me avec un manuel d utilisation les am liorations que l on peut apporter 1 INTRODUCTION page 1 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche 2 Programmes Utilis s 2 1 UML UML Unified Modeling Language est un langage de mod lisation graphique base de pictogrammes il est issu de la fusion des pr c dents langages de mod lisation Booch OMT OOSE UML est maintenant un standard d fini par P Object Management Group OMG Pie dont la derni re version diffus e est UML 2 4 1 en aout 2011 Le but de ce langage est de e comprendre et structurer les besoins
37. e la chaine or si une autorit ne se prot ge pas correctement alors tout les descendants dans la chaine sont compromis alors qu il n y a aucun moyen de connaitre la s curit de PAC 3 6 2 Web Of Trust Principe Le mod le Web Of Trust est assez diff rent du premier mod le il s agit d un mod le de confiance d centralis c est dire qu un utilisateur peut signer la clef d un autre il n y a plus d Autorit de Certification AAR Au fur et mesure des signatures s ajouteront soit gr ce des key signing party o des gens s changent en main propre des hach s de leur clef publique ce qui permet de v rifier leur certificat et donc de le signer soit parce qu il s agit de quelqu un que vous connaissez d j Ces signatures permettent aux personnes cherchant votre clef publique de v rifier l authenticit de votre clef Il existe plusieurs niveaux de confiance qui sont on a confiance dans sa clef et dans les clefs qu il nous transmet on a confiance dans sa clef mais pas dans les clefs qu il nous transmet et enfin on ne fait pas du tout confiance Supposons maintenant qu un utilisateur Bob veuille envoyer un message Alice il doit alors chercher sa clef Bob va alors regarder les signatures de ce certificat et chercher quelqu un qu il conna t et en qui il a confiance parmi les signataires S il n en existe aucun il va alors chercher parmi les signataires des clefs des premiers signataires jusq
38. en place recherche des diff rents chemins de confi ance CAcert Avantage Les m mes que pour le Chain Of Trust et permet en plus de d l guer la v rification des identit s Inconv nient Il faut v rifier que les Assurer sont fiables r vocation des clefs compliqu s 3 6 5 Choix final Dans ce projet on peut se permettre de faire un syst me laxiste puisque l on va v rifier le num ro de t l phone au niveau de l application De plus la r vocation des clefs doit tre simple car il n est pas rare de se faire voler son t l phone Enfin nous devons pouvoir mettre en place un syst me simple pour pouvoir effectu de fr quente misa jours des clefs De ce fait nous avons d cid d utiliser le mod le de Chain of trust en utilisant un unique serveur qui va servir d autorit racine de serveur de stockage et de liste de r vocation 3 CRYPTOGRAPHIE ET ARCHITECTURE DE CONFIANCE page 16 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche 3 7 Envoi du message Envoi des SMS sous Smart phone L envoi des SMS sous smart phone s effectue selon le protocole Short Message Service Point to Point d fini dans la norme mobile GSM 03 40 permettant l envoi de message court travers les canaux de signalisations eFeT09 Ce protocole s effectue gr ce deux services e le premier est le service Short Message Mobile Terminated Point to Point SMMT qui permet la transmiss
39. er avec pour argument l activit dans laquelle le SimpleAdapter va tre la liste contenant les donn es sous forme de map le layout qui va d finir comment se fera l affichage une liste des noms de colonnes qui seront associ s chaque l ment de la collec tion et les vues qui correspondront chacune de ces colonnes il s agit ici de textView d finies dans le layout listeboitereceptionelement layout HashMap lt String String gt map HashMap lt String String gt list getltemAtPosition position Intent intent new Intent ReadSMSActivity this ReadSMSContactActivity class intent putExtra address map get Numero startActivity intent Enfin lorsque l on clique sur un des contacts de la liste nous r cup rons la map associ e contenant le nom et le num ro du contact et nous cr ons un nouvel Intent qui va indiquer que l on veut maintenant ex cuter la classe ReadSMSContactActivity Avant de d marrer l Intent nous passons galement le num ro du contact qui nous servira pour r cup rer les messages envoy par ce num ro Classe ReadSMSContact Activity Cette classe va servir afficher tous les SMS d un m me contact La m thode ArrayList lt HashMap lt String String gt gt SMStoList String address va nous servir r cup rer ces SMS Uri uriSMS Uri parse content sms inbox String selection address 7 String selectionArgs new String addres
40. ette partie est compos e de trois classes la premi re est la classe Certificat qui va nous permettre de stocker toutes les donn es d un certificat dans un seul objet ensuite la classe BaseDeDonnee qui va g rer la base de donn e du t l phone o l on stocke les certificats d j r cup r s et enfin la derni re classe qui s occupe des changes avec le serveur et qui est appel CommServeur 4 2 D tail des fonctionnalit s Pour notre projet nous avons r fl chi six fonctionnalit s qui sont e L envoi d un SMS chiffr e La lecture d un SMS chiffr La cr ation d un compte La r cup ration et le stockage d un certificat e La mise jour d un certificat e La r vocation d un certificat Envoi d un SMS chiffr Pour envoyer un SMS chiffr la classe SMS va demander la classe BaseDeDonnee le certificat du destinataire S il n y a pas de certificat dans la base de donn es on le demande la classe CommServeur et on v rifie la signature du certificat Si celle ci est correcte on la stocke dans notre base de donn es Sinon on fait la mise jour du certificat que l on stocke sur la BDD Puis elle retourne la clef la classe SMS qui va envoyer une demande de chiffrement du message la classe RSA Lecture d un SMS chiffr Lors de la lecture d un SMS chiffr et sign la classe SMS va demander la classe Signature de v rifier la signature du message Pour cela nous devon
41. ew String signature ISO 8859 1 sign SIGNATURE signatureString Nous instancions tout d abord un objet Signature en lui indiquant que l algorithme utiliser est SHA 1withRSA Nous initialisons ensuite la clef qui servira chiffrer le hach avec la clef priv e de l utilisateur pass e en argument Nous passons ensuite le message signer qui sera un tableau d octet Comme pour notre classe RSA nous utilisons l encodage ISO 8859 1 afin d viter toute erreur lors de la v rification de la signature Enfin nous signons le message gr ce la m thode signO de la classe Signature et convertissons le r sultat en String afin qu il soit pr sentable dans le message De plus nous rajoutons au d but de la signature une cha ne que nous avons d fini comme tant gale SIGN gt Cette cha ne nous permettra de savoir si un message est sign ou non et de pouvoir distinguer la signature du reste du message La fonction verifieSignature prend en argument la signature v rifier sign le message mess et la clef publique de la personne qui a sign le message pubkey sign sign substring SIGNATURE length s Signature getInstance SHAIwithRSA s initVerify pubkey s update mess getBytes ISO 8859 1 return s verify sign getBytes ISO 8859 1 Tout d abord il faut supprimer la cha ne SIGNATURE qui nous sert de d limiteur de la signature Ensuite nous utilis
42. grit et la provenance d un message avant de tenter de le d chiffrer Enfin si l utilisateur appuie sur le bouton envoie Envoyer nous r cup rons les donn es entr es dans les champs dest et text correspondant respectivement au destinataire et au message et nous envoyons le message en utilisant le code pr sent lors de l analyse de l envoi d un message Classe ReadSMSActivity Cette classe va nous servir afficher la liste des contacts qui nous ont envoy des SMS En cliquant sur un de ces contacts on pourra alors afficher les SMS dont il est l exp diteur Nous utiliserons la m thode public ArrayList lt HashMap lt String String gt gt SMStoList afin de r cup rer la liste des contacts sous la forme d une liste de couple noms num ro Uri uriSMS Uri parse content sms inbox Uri uriPhone ContactsContract CommonDataKinds Phone CONTENT_URI Uri uriContact ContactsContract Contacts CONTENT_URI Nous aurons besoin de 3 URIs la premi re pour obtenir les SMS re us la seconde pour obtenir l id d un contact partir de son num ro de t l phone et enfin la derni re pour trouver le nom d un contact partir de son id String projection new String DISTINCT _address Cursor curseur getContentResolver query uriSMS projection null null null La premi re requ te que nous effectuons va nous permettre de r cup rer tous les num ros des personnes qui
43. ible de se trouver le mobile demand Si le VLR ne conna t pas l identit du destinataire un message est alors mis afin de lancer la proc dure de paging sur toutes les LA d pendant du MSC e Le MSC effectue la proc dure de paging sur la zone de localisation du destinataire e La station mobile destinataire r pond positivement e Le VLR retourne une r ponse au MSC autorisant ce dernier relayer le message court la station mobile destinataire e Le MSC achemine le message court au destinataire et re oit un acquittement e Le MSC inclut ce rapport dans un r ponse retourn au SMS GMSC e Le SMS GMSC passe le rapport au SMSC Le service peut tre sch matis de cette mani re y ENVOI_MESSAGE MAP_SEND_ROUTING_INFO_FOR SM MAP SEND_ROUTING_ INFO FOR SM ack 1 MAP_MT_FORWARD_SHORT_MESSAGE gt MAP SEND_INFO_FOR MT_SMS j MAP_PAGE k PAGING_REQUEST PAGING_RESPONSE MAP_SEND_INFO_FOR_MT_SMS_ack le TRANSFERE_SMS j H k MAP_MT_FORWARD_SHORTMESSAGE_ack i H RAPPORT DE LIVRAISON Figure 11 Ici Alice fait confiance Bob car son certificat a t sign par une AC en qui elle a confiance Elle fait galement confiance Charlie car elle peut trouver une AC qui fait la fois confiance son AC et celle de Charlie Envoi du SMS dans notre projet L envoi des SMS depuis notre application est g r par la classe SendSMSActivity
44. il Si la v rification n a pas pu tre effectu e l utilisateur verra alors une pop up s afficher lui indiquant que son num ro n a pas t accept 5 PROGRAMME page 32 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche Ecriture d un SMS Oe 5 13 pm Entrez le nom du destinataire Figure 18 Ecrire un SMS L criture d un message se fait en 2 temps Premi rement l utilisateur va crire son message ainsi que choisir le destinataire De 3 pm Jean Dupond 012 345 6789 Jean Dupond 987 654 3210 maom Figure 19 Choisir le destinataire Pour choisir son destinataire lutilisateur peut taper les lettres du pr nom ou du nom du contact pour qu une liste de propositions apparaisse Il peut galement choisir de rentrer directement un num ro de t l phone si son destinataire n est pas enregistr dans son t l phone Ensuite il va pouvoir choisir de chiffrer le message le signer seulement si le message est chiffr ou alors l envoyer Lorsque l utilisateur chiffre ou signe son message le contenu du message se met jour dans l affichage Il est donc impossible de le modifier par la suite 5 PROGRAMME page 33 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche ERSMS D y Z So00 7 X 0x0000g0 05 amp Di0 0EY lt 0D z Dx 2y011 0000yE0r xOa v DOO 0 p0 P0000Q006 D dVO6 0000 00 34
45. ion du message vers un serveur et la gestion de l acquittement de celui ci e le deuxi me est le service Short Message Mobile Originated Point to Point SMMO qui g re la transmission du message entre le serveur de stockage et le portable destinataire Le service SMMT Le service fonctionne de mani re suivante e L metteur remet le SMS son centre de redirection des messages MSC de rattachement e Le MSC met un message son registre des visiteurs VLR pour lui demander le num ro de t l phone de l metteur et pour v rifier qu aucune restriction n est impos e cet metteur e Le VLR retourne alors une r ponse e Si la r ponse est positive le MSC met le message l interface r seau normalis GSM SMS IWMSC e L interface le retransmet son tour au centre SMS SMSC Le SMSC stocke le message et les adresses dans sa m moire e Le SMSC retourne une r ponse rapport de livraison au SMS IWMSC e Ce rapport est retourn par le SMS IWMSC au MSC e Le MSC retourne l metteur un message de rapport du statut du SMS Le service peut tre sch matis de cette mani re SMS_SUBMIT i gt MAP_SEND_INFO_FOR_MO_SMS i gt f MAP_SEND_INFO_FOR_MO_SMS_ack e MAP MO FORWARD_SHORT_MESSAGE i gt TRANSFERT_MESSAGE ACQUITTEMENT E i MAP MO FORWARD_SHORT MESSAGE_ack ke i f i SMS STATUS REPORT le Figure 10 Ici Ali
46. l ments d un tel anneau Cr ation des cl s Les clefs de RSA sont form es de e deux nombres premiers distincts p et q e le produit N pxq e les entiers distincts e et d premier avec p 1 et q 1 tel que ex d 1mod p 1 q 1 et sont g n r s selon l algorithme suivant Algorithme 1 G n ration des Clefs avec RSA p nbr_premier Stocke un nombre premier q nbr_premier Stocke un nombre premier Nurpxq e Alea premier p 1 q 1 d Euclide Etendu p 1 q 1 e Algorithme qui calcule d tel que e d 1 mod p 1 q 1 Return N e la clef publique et N d la clef priv Chiffrement Le chiffrement de RSA se fait en passant le message la puissance e modulo N Algorithme 2 Chiffrement des messages avec RSA Input La clef publique N e le message M C M mod N Return Le chiffr C D chiffrement Le d chiffrement de RSA se fait en passant le chiffr la puissance d modulo N Algorithme 3 D chiffrement des messages avec RSA Input La clef priv e N e le message C M amp Cd mod N Return Le message M Avantages L un des avantages du crypto syst me RSA est d avoir un d veloppement simple il est compos d algorithme facile impl menter de plus il est le syst me de cryptographie asym trique le plus utilis dans le monde et il est consid r comme un standard en Cryptographie Enfin il d j est impl ment dans
47. la s curit de la chaine est d truite 3 CRYPTOGRAPHIE ET ARCHITECTURE DE CONFIANCE page 13 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche AC racine Utilisateurs Charlie Alice Bob Figure 7 Ici Alice fait confiance Bob car son certificat a t sign par une AC en qui elle a confiance Elle fait galement confiance Charlie car elle peut trouver une AC qui fait la fois confiance son AC et celle de Charlie Fonctionnalit s R cup ration des clefs Bob effectue une demande Alice pour r cup rer son certificat Alice va lui transmettre puis la r ception de celui ci il va v rifier la signature R vocation Pour r voquer son certificat Alice va envoyer un message l AC La r vocation s effectuera en mettant sur la liste de r vocation le certificat Ainsi lors de l utilisation de la clef on v rifiera si le certificat n est pas dans la liste de r vocation et dans le cas contraire une demande de r cup ration de la clef sera effectu G n ration des certificats Pour g n rer son certificat Alice va transmettre AC des informations sur son identit ainsi que sa clef publique L AC en recevant la demande va v rifier l identit d Alice si la v rification est positive elle va compl ter le certificat et le signer pour le retransmettre Alice La limite La limite principale du chain of trust est de devoir faire confiance toutes les AC d
48. le l ment et dont l l ment ne peut exister sans appartenir un ensemble 2 PROGRAMMES UTILIS S page 2 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche association Classe M re Attribut 1 Attribut 2 sp ciolistior p N 4 relarion Phir age Classe 1 Y g n ralisation composition Composant 1 Composant 2 Figure 1 Pr sentation des relations dans un diagramme des classes Diagramme de s quence Le diagramme de s quence permet de mod liser les interactions entre les acteurs et le syst me au cours du temps Pour mod liser les interactions cinq types de message ont t d fini le message simple Un message dont l exp diteur ne donne aucune caract ristique d envoi ou de r ception parti culi re le message avec dur e de vie L exp diteur est bloqu pendant un temps donn mais il est lib r si au bout du temps imparti le message n est pas pris en compte le message synchrone L exp diteur est bloqu jusqu la prise en compte du message le message asynchrone Aucune interruption de l exp diteur peut importe que le message soit trait ou non le message d robant N interrompt pas l exp diteur et ne d clenche une op ration chez le r cepteur uniquement si il attendait le message 2 PROGRAMMES UTILIS S page 3 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche un acteur un objet
49. nature G n ration des signatures La g n ration d une signature est faite apr s la v rification de l identit physique du possesseur Chaque personne faisant confiance cet utilisateur peut ensuite rajouter sa signature et indiquer le niveau de confiance La limite Le gros probl me du Web of Trust est la r vocation des clefs en effet il est commun dans un tel sch ma de trouver des clefs sign s gr ce une clef r voqu Ce qui a pour cons quence de fausser la confiance en cette clef 3 6 3 CAcert Principe CAcert est un syst me hybride entre le Web of Trust et le Chain of Trust En effet la structure globale est identique celle d un mod le Chain of Trust mais il y a la pr sence de super utilisateurs Assurer qui peu vent signer les certificats des utilisateurs apr s les avoir rencontrer et ainsi leur faire gagner des points d assurance Au bout d un certain nombres de ces points votre certificat pourra avoir une dur e de validit sup rieure et avec encore plus de point vous pouvez passer le test vous permettant de devenir vous m me un super utilisateur Il faudra repasser ce test r guli rement si vous voulez garder votre statut De plus dans ce syst me l autorit de certification va automatiquement signer un certificat partir du moment o l adresse email est valide CAc Fonctionnalit s R cup ration des clefs elle s effectue via la r cup ration d un certificat sign au pr s
50. nt Environment c est dire qu il contient un diteur de code un compilateur et un d bogueur Il est de plus open source sous licence EPL Eclipse Public License Il a t con u par IBM en Novembre 2001 et est g r depuis 2004 par Eclipse Foundation consortium d diteurs de logiciels Fou04 Eclipse est multi plateformes il fonctionne sur Linux comme sur Windows ou Mac OS Il a t a Porigine cr pour le d veloppement dans le langage Java mais est aujourd hui multi langages gr ce un syst me de plugins Le plugin Android pour Eclipse nous a galement permis d avoir directement acc s un mulateur pour pouvoir tester notre application sur diff rentes versions d Android afin de v rifier sa compatibilit 2 PROGRAMMES UTILIS S page 6 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche 3 Cryptographie et Architecture de confiance Pour permettre de chiffrer des SMS nous avons d tudier les deux types de cryptographie que sont la cryp tographie sym trique et l asym trique Buc06 eC W11 Mais aussi des notions suppl mentaires pour palier au inconv nient de la cryptographie choisi tel que les signatures ou les infrastructures de confiance pour la cryptogra phie asym trique Pour ce faire nous allons d abord pr senter les deux types de chiffrement expliquer le choix puis 3 1 Cryptographie sym trique La cryptographie sym trique est la plus ancienne f
51. ong pour envoyer et recevoir un message tout en essayant de bloquer le moins possible notre programme Pour la v rification de la r ception nous voulions au d part utiliser un BroadcastReceiver qui s ex cuterait lorsque le SMS serait re u mais il aurait fallu mettre un syst me de minuteur au bout duquel nous consid rerions que le num ro donn tait faux ce qui tait plus compliqu Nous r cup rons ensuite avec une requ te sur PURI pour Uniform Resource Identifier soit identifiant uniforme de ressource SMS le dernier message provenant du num ro donn Si ce message vaut le nombre al atoire g n r alors nous renvoyons vrai sinon nous renvoyons faux Si la m thode verifyNum nous renvoie vrai nous g n rons alors la paire de clefs priv e et publique que nous stockons dans les pr f rences 4 SCH MA DU PROJET page 24 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche SharedPreferences pref this getSharedPreferences keys Context MODE_PRIVATE final KeyPair kp RSA generateKeyPair RSAPublicKey pub RSAPublicKey kp getPublic RSAPrivateKey priv RSAPrivateKey kp getPrivate SharedPreferences Editor editor pref edit editor putString numero num editor putString modulo pub getModulus toString editor putString exposant_public pub getPublicExponent toString editor putString exposant_prive priv getPriv
52. ons la classe Signature et nous instancions notre objet avec le m me algorithme que pr c demment SHAIwithRSA En revanche nous n initialisons pas la clef gr ce la fonction initSign mais gr ce initVerify qui initialise la clef dans le but de v rifier une signature Nous initialisons ensuite le contenu du message qui a t sign et nous appelons la fonction verify qui prend en argument la signature du message et qui renvoie vrai si la signature est v rifi e et faux sinon 3 6 Gestion des clefs Nous devons maintenant trouver un moyen pour qu un utilisateur puisse r cup rer la clef publique de la personne qui il veut envoyer un message Nous pouvons mettre cette clef disposition sur un serveur de clefs mais il faut alors un moyen de s assurer qu il s agit bien de la clef publique de l utilisateur voulu en effet si Charlie met sa propre clef publique sur le serveur en se faisant passer pour Bob alors il pourra lire les messages adress s Bob Nous avons tudi les trois mod les classiques de ces mod les avant de les comparer entre eux pour enfin choisir celui qui nous paraissait le plus adapt notre projet 3 6 1 Chain Of Trust Le principe du mod le Chain Of Trust est le suivant supposons qu une nouvelle utilisatrice Alice veuille prouver la possession de sa clef publique Elle doit alors envoyer un document contenant des donn es permettant de l identifier nom mail t l phone ainsi que sa clef pu
53. orithme RSA te LA dis 4 he gs A a due ee aimants 3 0 Lies Signatures eg nai ans ee LUE D BR DS En anaE d ve de Ma A Ar gene edit af 4 41 dd 3 0 z Gestion d s Clefs saiya orreri a NME D eee ne ea MN ir Poe A LR LE 336 1 Chin Of Trusted des hd UE LEE meet gta ne ou afin de han dE HAE 3 6 2 Web Of Trusti a a ares en dde Manual ee Un Re A ei a ET 3 0 8 CAGE LE ELLES ta me Rosa a die ne LEE LR MMS er 3 6 4 Avantages et inconv nients 3 02 Cho finaliste he a NS A LR MES mr pe en an el Re aa D Re tu 3 7 Envoi du message mu 2m 4 80 4 due D on a A a a E a de a 4 Sch ma du Projet 4T Diagramme UML upon EAU E te E NN apres aTa rt e amp ee 4 2 D tail des fonctionnalit s 4 3 Explication de code aa ue A der ele a de al A di LE de e 5 Programme 5 1 Manuel d utilisation se us Diam ets ur dar ae hop a Brin te 5 En Ge a 5 2 Parties impl ment ui fs 5e add Le ns UP MANN se a Luis LM es 5 3 Am liorations possibles DA Le probleme rencontr r s mn ut Ce ae R a AA NS ALEA A en de eo ELA RAA Sor APportduiprojel LE GS ARE RL AU E AS E A RS AE A ie 6 Conclusion Liste des figures Liste des tableaux Liste des algorithmes R f rences bibliographiques 35 36 37 38 39 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche 1 Introd
54. orme de chiffrement des traces de son utilisation ont t d couverte sur des documents de l poque de Jules C sar Le principe fondamentale de ce type de cryptographie est que l on utilise une unique clef que l on partage entre deux personnes pour chiffrer et d chiffrer un message c est la connaissance de cette clef qui permet d assurer l identit de l metteur Ainsi si un pirate d couvre la clef il pourra crire un message en usurpant l identit d une des deux personne Hello Hello Chiffre Alice Alice D chiffre Ter Frsdn gt AE Nhacj Nhdcj Figure 3 Principe de la cryptographie sym trique Avantages En g n ral les algorithmes de chiffrement sym trique sont souvent tr s bien adapt s l architecture du processeur utilis ils sont donc tr s bien appropri s au chiffrement de grande quantit de donn es tr s rapidement De ce fait pour un niveau de s curit donn la cryptographie sym trique est beaucoup plus rapide D autre part ils utilisent des clefs de tailles inf rieures pour un niveau de s curit donn par exemple 1 AES utilise des clefs de taille maximales de 256 bits tandis que les clefs pour RSA sont de 1024 bits Inconv nient Le probl me de la cryptographie sym trique est le nombre de clef g rer lorsque l on souhaite communiquer de fa on confidentielle deux deux communiquer avec une personne pr cise sans que les autres personnes du syst me ne puissen
55. ouvons savoir si la clef provient effectivement d Alice ou si elle provient d un pirate ce faisant passer pour Alice Pour r soudre ce probl me la solution la plus courante est l utilisation des mod les de confiance qui permettent de v rifier l identit de l metteur d une clef 3 3 Choix du syst me de chiffrement Dans ce projet nous allons avoir des utilisateurs qui s ajoute r guli rement et voulant communiquer avec une multitude de personne de mani re confidentielle deux deux de ce fait nous avons choisi d utiliser la cryptographie asym trique De plus la vitesse de la cryptographie sym trique n est pas un r el avantage dans ce projet puisque nous n allons chiffrer que peu de long message 3 CRYPTOGRAPHIE ET ARCHITECTURE DE CONFIANCE page 8 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche 3 4 L algorithme RSA L algorithme RSA a t publi en 1978 par Rivest Shamir et Adleman dans leur article A Method for Obtaining Digital Signatures and Public Key Cryptosystems Ce syst me cryptographique asym trique est aujourd hui le plus utilis dans l industrie Sa popularit vient la fois du fait qu il a t un des premiers sch mas proposer une instanciation concr te de la cryptographie asym trique et de la simplicit de son impl mentation Ce sch ma fonctionne dans un anneau du type Z nZ autrement dit les messages clairs et les messages chiffr s sont des
56. re Dans cette m thode nous allons juste initialiser inCertif et inClef qui sont des bool ens que nous utiliserons pour v rifier que le certificat est bien format La m thode startElement String uri String localName String name Attributes attributes est ap pel e lorsque l analyseur commence lire un nouvel l ment il rencontre une nouvelle balise Le nom de cette balise est contenu dans localName if localName equalsIgnoreCase certificat this c new Certificat inCertif true 4 SCH MA DU PROJET page 28 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche Ici si nous sommes dans un tag certificat nous initialisons un nouvel objet Certificat qui contiendra les donn es que nous lirons et nous initialisons inCertif vrai pour indiquer que nous sommes dans un l ment certificat La m thode characters char ch int start int length va r cup rer les caracteres contenus entre 2 balises Ces caract res sont stock s dans le tableau ch de l indice start length String lecture new String ch start length if buffer null buffer lecture Dans notre objet CertificatHandler nous avons une String buffer qui contiendra les caract res lus Cette cha ne est remise null d s que nous finissons de lire un l ment Enfin la m thode endElement String uri String localName String name est appel e lorsque l analyseur li
57. respondant au widget Les BroadcastReceiver Les BroadcastReceiver sont des r cepteurs d Intent Un BroadcastReceiver est con stamment l coute et va r agir lorsqu il verra un Intent qui lui est destin En effet un BroadcastReceiver poss de un filtre d Intent Dans notre application par exemple nous avons cr un BroadcastReceiver qui r agit lorsqu il voit un Intent dont l action est une cha ne valant com uvsq tersms envoyer qui correspond l envoi d un SMS partir de notre application Le Manifest Le Manifest Android n est pas exactement un composant de votre application Il s agit en r alit d un fichier contenant la description de votre application sa version les activit s les BroadcastReceiver les permissions dont elle a besoin SQLite Dans une application vous pouvez cr er votre base de donn es SQLite pour stocker des informations Dans notre programme par exemple nous en cr erons une pour stocker les certificats de nos contacts SQLite est une base de donn es relationnelles l g re gratuite et open source Un des int r ts de SQLite par rapport d autres bases de donn es est qu elle ne n cessite pas de serveur pour s ex cuter tout se fait dans l application 2 PROGRAMMES UTILIS S page 5 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche 2 2 3 ECLIPSE Eclipse est un Environnement de D veloppement Int gr ou IDE pour Integrated Developme
58. s String projection new String date body Cursor curseur getContentResolver query uriSMS projection selection selectionArgs date DESC LIMIT_10 Nous pr parons donc notre requ te pour r cup rer les SMS nous voulons que l exp diteur soit le num ro pass en argument de la m thode et nous voulons r cup rer la date et le contenu du message Nous renseignons galement un ordre du plus r cent au plus ancien et une limite que nous avons fix e 10 pour viter que le chargement soit trop long SharedPreferences pref this getSharedPreferences keys Context MODE_PRIVATE BigInteger modulo new Biglnteger pref getString modulo null BigInteger priv new Biglnteger pref getString exposant_prive null RSAPrivateKeySpec privateKeySpec new RSAPrivateKeySpec modulo priv KeyFactory keyFactory KeyFactory getInstance RSA privKey PrivateKey keyFactory generatePrivate privateKeySpec 4 SCH MA DU PROJET page 27 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche Nous chargeons ensuite notre clef priv e pour pouvoir d chiffrer les messages re us si besoin Cette clef est stock e dans les pr f rences sous la forme d un modulo et d un exposant ceci afin de pouvoir cr er directement notre clef partir du constructeur de la classe RSAPrivateKeySpec Nous pourrons alors si le message est
59. s r cup rer le certificat dans la classe BaseDeDonnee S il n y a pas de certificat on le demande au Serveur On v rifie alors la signature du certificat et si la elle est correcte on stocke le certificat dans notre base Si nous avons un certificat dans note base nous v rifions qu il est encore jour en envoyant sa signature au serveur Celui ci va alors comparer les 2 signatures et si elles ne correspondent pas renvoyer le nouveau certificat que nous allons alors stocker dans notre base Enfin une fois ce certificat r cup r nous en r cup rons la clef publique avec la classe Certificat Nous pouvons donc v rifier la signature de notre message et si celle ci est correcte nous pourrons alors envoyer le message d chiffrer la classe RSA avec notre clef priv e charg e depuis nos pr f rences Cr ation d un compte Pour cr er un compte l utilisateur va permettre la classe SMS de v rifier le num ro de t l phone pour lequel on va g n rer le certificat puis l utilisateur va demander la classe Certificat de cr er un certificat Pour cela elle va demander la classe RSA de g n rer les clefs puis va envoyer la demande au serveur de cr er un compte et d y associer le certificat pr c demment g n r Pour cela la classe CommServer va envoyer une requ te contenant le pseudo le mot de passe le num ro de t l phone et le certificat au format XML Si le pseudo du compte n est pas d j utilis no
60. spose de plusieurs m thodes qui correspondent la cr ation des diff rentes requ tes que nous pouvons envoyer ainsi qu l analyse de leur r ponse Elle dispose galement d une m thode qui va effectuer l envoi d une requ te Cette m thode a pour signature public static JSONObject execRequete String url ArrayList lt NameValuePair gt nvp DefaultHttpClient httpclient new DefaultHttpClient HttpPost hp new HttpPost url hp setEntity new UrlEncodedFormEntity nvp HttpResponse response httpclient execute hp HttpEntity entity response getEntity is entity getContent BufferedReader reader new BufferedReader new InputStreamReader is ISO 8859 1 StringBuilder sb new StringBuilder String line null while line reader readLine null sb append line An is close result sb toString L argument url de la m thode correspond donc l url de la page de notre serveur traitant la requ te par exemple creation_compte php pour la cr ation d un nouveau compte Le deuxi me argument est un tableau de couple clef valeur correspondant aux param tres de la requ te ceux qui seront r cup r s sur le serveur par un POST clef puisque nous utilisons la m thode POST Pour l envoi de la requ te nous nous servons de classes disponible dans le paquet org apache http Les quatres classes majeures sont DefaultHttpClient HttpPost pour l envoi de l
61. sses KeyPairGenerator et RSAKeyGenParameterSpec La premi re de ces classes permet de g n rer une paire de clef publique et priv e mais n est pas sp cifique RSA c est pourquoi nous avons eu besoin de la deuxi me afin de pr ciser les sp cificit s que nous d sirions Celles ci sont pass es en argument au constructeur de RSAKeyGenParameterSpec le premier est la taille des clefs en bits le second est la valeur de l exposant public pour lequel nous avons utilis une valeur pr d finie qui est RSAKeyGenParameterSpec F4 et qui correspond 65537 soit 216 1 La seconde m thode est public static String RSAEncode String mess PublicKey public1 Elle est utilis e pour chiffrer le message mess avec la clef publique public1 byte messByte smsByte encodeByte null String chiffre null Cipher c Cipher getInstance RSA ECB PKCS1Padding c init Cipher ENCRYPT _MODE publici on d ecoupe en bloc de 117 bytes for int i 0 i lt mess length i 116 if i 116 gt mess length messByte mess substring i getBytes ISO 8859 1 else messByte mess substring i i 116 getBytes ISO 8859 1 encodeByte c doFinal messByte if i 0 on rajoute un octet au d ebut pour diff erencier les messages chiffres smsByte new byte encodeByte length 1 smsByte 0 127 for int j 0 j lt encodeByte length j smsByte j 1 encodeByte j chiffre new String smsByte ISO 8
62. t l phone portable nous signale qu il n y a pas de certificat et les algorithmes de signature du certificat ne sont pas les m mes que ce pr sent sur Android de ce fait les signatures test es ne sont pas reconnu or nous ne savons pas ce qui diff rencie les deux algorithmes Le travail restant est l impl mentation d un nouveau mode d op ration diff rent de VECB de cr er un serveur plus s curis 5 3 Am liorations possibles Les am liorations que nous avions envisag es taient de pouvoir transf rer un certificat par SMS sans avoir passer par le serveur de pouvoir transf rer les SMS s curis s vers un autre portables en changeant le chiffr et enfin de pouvoir transf rer sa clef priv via le Bluetooth par exemple 5 4 Le probl me rencontr L organisation L organisation du temps a t une difficult importante du projet au fil des semaine nous nous sommes rendu compte que nous perdons du temps parce que nous nous dispersions en effectuant plusieurs tache en m me temps 5 5 Apport du projet Ce projet nous a permis d apprendre la programmation Android d illustrer et d approfondir nos connaissances sur les infrastructures clef publique et la s curit WEB et enfin l importance des sch mas UML en d but de projet 6 Conclusion Avec ce projet nous pouvons d sormais utilis le service de SMS pour envoyer des informations confidentielles ou alors d velopper les services de paiement par SMS et pourquoi p
63. t CommonDatakKinds Phone CONTACT_ID String selectionContact ContactsContract Contacts _ID 7 String selectionArgsContact new Stringl id String projectionContact new String ContactsContract Contacts DISPLAY_NAME Cursor contactCursor getContentResolver query uriContact projectionContact selectionContact selectionArgsContact null if contactCursor moveToFirst name contactCursor getString contactCursor getColumnIndex ContactsContract Contacts DISPLAY_NAME contactCursor close n map put Numero address map put Nom name Nous effectuons enfin la derni re requ te sur la table Contact afin de r cup rer le nom de l exp diteur Nous allons donc chercher le nom DISPLAY NAME du contact dont l identifiant ID correspond l identifiant r cup r pr c demment CONTACT_ID Si nous obtenons un r sultat nous le stockons dans une collection map que nous ajouterons la liste de contacts renvoyer ArrayList lt HashMap lt String String gt gt mylist SMStoList SimpleAdapter adapter new SimpleAdapter this mylist R layout listeboitereceptionelement_layout new String Nom Numero new int R id nom R id numero list setAdapter adapter Une fois cette liste r cup r e nous cr ons un adaptateur pour pouvoir remplir la listView que l utilisateur voit sur l cran Pour cela nous construisons un nouveau SimpleAdapt
64. t le d chiffrer dans un r seaux contenant n personnes Dans ce cas il nous est n cessaire de poss der n x n 1 2 clefs 3 2 Cryptographie asym trique C est en 1976 que le concept de cryptographie le concept de cryptographie asym trique a merg suite aux travaux de Diffie et de Hellman qui propos rent un protocole permettant de s entendre sur une clef sans avoir besoin d un secret commun au pr alable Cependant il a fallu attendre 1978 pour que Rivest Shamir et Adleman publient le sch ma RSA permettant d changer un message chiffr sans avoir besoin d un secret commun Dans la cryptographie asym trique nous avons la pr sence de deux cl s li es l une est publique et permet de chiffrer un message et la deuxi me est priv e et permet de d chiffrer ce message Ainsi pour que Bob transmette un message Alice Il sera n cessaire qu Alice poss de deux cl s l une transmise Bob via le canal public et la deuxi me qu elle conserve de mani re priv e 3 CRYPTOGRAPHIE ET ARCHITECTURE DE CONFIANCE page 7 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche Alice Bob CR mm A 19 Figure 4 R partition des clefs dans la cryptographie Asym trique Pour transmettre le message Alice Bob va chiffrer le message avec la cl publique d Alice et envoyer le message sur le canal public quand Alice re oit le message elle le d chiffre avec sa cl priv e elle est la seule
65. t une balise fermante C est dans cette m thode que nous remplissons les champs du certificat selon la balise rencontr e if localName equalsIgnoreCase numero 4 if inCertif this c setNumero buffer toString buffer null Par exemple si nous sommes dans une balise fermante numero qui contient le num ro de t l phone nous savons que celui ci est contenu dans buffer nous pouvons donc mettre le champ numero de Certificat la valeur trouv e dans buffer Classe BaseDeDonneesOpenHelper La classe BaseDeDonneesOpenHelper tend la classe SQLiteOpenHelper du paquet android database sqlite Cette classe va se charger de la cr ation de notre base de donn e si elle n existe pas d j de sa mise jour et de son ouverture pour acc der aux donn es Nous devons r impl menter deux m thodes ainsi que le constructeur de cette classe Pour ce dernier nous avons simplement utilis le constructeur de SQLiteO0penHelper private final String TABLE_CERTIF table certificat private final String COL_NUMERO Numero private final String COL_SIGN Signature private final String COL_MOD Modulo private final String COL_EXP Exposant private final String COL_ALGO Algorithme private final String CREATE_BDD CREATE_TABLE_ TABLE_CERTIF _ COL_NUMERO _TEXT_PRIMARY_KEY _ COL_ALGO _TEXT_NOT_NULL COL_MOD
66. u ce qu il trouve quelqu un en qui il a confiance Chaque utilisateur est libre de d terminer des param tres tels que le nombre de liens maximums dans un chemin le reliant un autre utilisateur ou le nombre minimum de chemins diff rents le menant un utilisateur Fonctionnalit s 3 CRYPTOGRAPHIE ET ARCHITECTURE DE CONFIANCE page 14 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche Vous A gt B Aa sign le certificat de B avec une confiance totale A gt B Aa sign le certificat de B avec une confiance partielle A gt B Aa sign le certificat de B avec une confiance nulle 2 Utilisateurs en qui vous n avez pas confiance 2 Utilisateurs en qui vous avez confiance Figure 8 Organisation d un r seau Web of Trust du point de vue d un utilisateur R cup ration des clefs elle s effectue en demandant au possesseur de lui transmettre ainsi que les signatures associ es de l il va cr er le chemins des personnes et pr ciser le niveau de confiance de la clef en fonction du nombre de chemins du nombre de personnes qui constituent le chemin du niveau de confiance donn chacune R vocation des clefs La r vocation d une clef s effectue en ne la donnant plus lors d une demande Cette suppression entra ne la perte pour toutes les clefs sign s par la personne dont les clefs ont t r voqu es de cette sig
67. u certificat dans la table ContentValues values new ContentValues values put COL_NUMERO c getNumero values put COL_SIGN c getSign values put COL_ALGO c getAlgorithme values put COL_EXP c getExposant toString values put COL_MOD c getModulo toString return bdd insert TABLE_CERTIF null values Nous utilisons la classe ContentValues pour stocker les couples nom de colonne valeur que nous allons ins rer dans la table Cette insertion se fait gr ce la fonction insert qui prend en argument la table une cha ne qui indique la colonne mettre NULL si Pon veut ins rer une ligne vide que l on n utilisera pas ici et un objet ContentValues contenant les valeurs ins rer La m thode int updateCertif String numero Certificat c va nous servir mettre jour un certificat lorsque celui ci a t r voqu par exemple String whereArgs new String numero return bdd update TABLE_CERTIF values COL_NUMERO _ _7 whereArgs La m thode pour mettre jour une table est update qui prend en argument la table les nouvelles valeurs associ es aux colonnes correspondantes un objet ContentValues utilis de la m me fa on que dans la m thode pr c dente une String pour indiquer le contenu de la clause WHERE dans la requ te SQL et un tableau de String pour les valeurs dans cette clause remplac es par dans la cha ne s lection La m thode
68. uction L histoire de la t l phonie commen a avec la publication d un article de Charles BOURSEUL dans Pillustration le 26 ao t 1854 sous le titre Transmission lectrique de la parole un article qui pose les principes de la t l phonie mais c est en 1863 que l un des premiers dispositif exp rimental fonctionnel fut cr la mise en contact avec le correspondant s effectuait alors par l action d une op ratrice Ensuite Almon STROWGER vers 1891 qui d veloppa un nouveau type de t l phone dans le but de supprimer l intervention humaine lors d un appel Pour ce faire il a cr le t l phone automatique qui tablit la ligne via un num ro Enfin la derni re volution notable est l arriv e des t l phones portables dans les ann es 80 ce qui a entra n le d veloppement de nombreux services annexes notamment le service SMS Pour finir c est le 23 septembre 2008 que fut lanc la premi re version d Android le seul syst me d exploitation mobile permettant le d veloppement gratuit d application Le SMS est un service int gr dans les t l phones permettant d envoyer des messages courts un contact via le r seau GSM Pour cela le protocole utilis est Short Message Service Point to Point SMS PP Ce protocole utilise le principe de Store and forward qui pour transmettre le SMS l envoie un centre SMS qui le stocke jusqu la r ussite de la r ception du message par le destinatair
69. urs possible elle sera compat ible partir d Android 2 1 version qui concernait encore 5 5 des smartphones au ler mai 2012 Dev12 En effet Android assure la r tro compatibilit des applications c est dire qu une application fonctionnant sur Android 2 1 fonctionnera sur Android 4 0 De plus il n y a pas eu de changements majeurs entre les versions 2 1 et 2 2 sur les 2 PROGRAMMES UTILIS S page 4 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche APIs que nous utilisons alors qu entre la version 1 6 et 2 1 il y en a eu notamment sur la gestion des contacts et nous ne voulions pas programmer en utilisant des m thodes d pr ci es Platform Codename API Level Distribution Android 1 5 Cupcake 3 0 3 Android 1 6 Donut 4 0 7 Android 2 1 Eclair 7 5 5 Android 2 2 Froyo 8 20 9 Android 2 3 Android 2 3 2 Gingerbread 9 0 5 Android 2 3 3 Android 2 3 7 Gingerbread 10 63 9 Android 3 0 Honeycomb 11 0 1 Android 3 1 Honeycomb 12 1 0 Android 3 2 Honeycomb 13 2 2 Android 4 0 Android 4 0 2 Ice Cream Sandwich 14 0 5 Android 4 0 3 Android 4 0 4 Ice Cream Sandwich 15 4 4 Tableau 1 R partition des versions d Android sur smartphones au 1 Mai 2012 2 2 2 La programmation Android Une application Android est constitu e de plusieurs composants des activit s des fournisseurs de contenus des Intents des services Une
70. us ajoutons la clef priv e dans nos pr f rences sinon on demande un autre pseudo l utilisateur 4 SCH MA DU PROJET page 21 sur 40 GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche chiffreSMS getCertif recupCertif Pas de certificat insertCertif an A A AA AA A A AA E A supprCertif majCertif getPublicKey Figure 13 changes lors de l envoi d un SMS R cup ration et stockage d un certificat Pour r cup rer un certificat l utilisateur va envoyer une requ te au serveur avec la classe CommServer contenant le num ro de t l phone du certificat r cup rer Le serveur va alors v rifier qu il poss de dans sa base de donn e un certificat associ au num ro re u Si c est le cas il enverra alors ce certificat sous la forme d une cha ne XML ainsi que la signature de ce certificat que la classe Signer pourra alors v rifier Le format XML a t choisi pour sa simplicit d utilisation aussi bien pour analyser une cha ne XML que pour en construire une partir d un objet Le stockage des certificats s effectue gr ce aux classes BaseDeDonnee et BaseDeDonneesOpenHelper qui nous ont permis de cr er notre propre table SQLite qui sera sauvegard e dans le t l phone C est dans cette table que nous entrerons les donn es contenues dans un certificat Mise jour d un certificat Pour mettre jour un certificat l
71. utilisateur va demander la classe Certificat de cr er un nouveau certificat Pour cela elle va demander la classe RSA de g n rer les clefs puis va envoyer la demande au Serveur de modifier le certificat du compte Si la modification est valid e la connexion au compte est valid e nous modifions la clef priv e dans nos pr f rences sinon on ne sauvegarde pas les changements R vocation d un certificat Pour supprimer un certificat l utilisateur va envoyer une requ te de suppression notre serveur avec la classe CommServeur La r ponse cette requ te nous indiquera si l op ration de suppression a bien t effectu e si c est le cas alors nous supprimons la clef priv e de nos pr f rences sinon aucune modification n est effectu e 4 SCH MA DU PROJET page 22 sur 40 j r my 2 GUILLAUME J LAGNY Blanche Smart Phones 2 2 curis sur Rapport du TER SMS s mm 1 1 1 1 1 1 1 addCertif recupCertif A fi ARA getCertif A h Signature correcte Pas de Certificat lectureSMSfrom Message sign lectureSMS 2 Figure 14 Echanges lors de la lecture d un SMS creationCompte generateKey Z Figure 15 Echange lors de la cr ation d un compte page 23 sur 40 2 4 SCHEMA DU PROJET GUILLAUME J r my Rapport du TER SMS s curis sur Smart Phones LAGNY Blanche 4 3 Explic
Download Pdf Manuals
Related Search
Related Contents
Minka Lavery 1974-1-138 Installation Guide BTW Pans Installation Manual FALCOM C2D-SI Simulink User's Guide HTC Desire HD Black Samsung RE-C23RB User Manual Copyright © All rights reserved.
Failed to retrieve file