Vous êtes sur la page 1sur 80

DEDICACE

A MA FAMILLE

I
REMERCIEMENTS
De nombreuses personnes ayant contribués scientifiquement, intellectuellement ou
techniquement à la réussite de ce projet, nous tenons sincèrement à leur exprimer ici notre
gratitude et notre profonde reconnaissance. Nous saisissons donc cette opportunité pour
remercier particulièrement :

 Les membres du jury, qui n’ont ménagés aucun effort à accepter d’évaluer notre
travail : nous nous sentons honorés ;
 Pr RUBEN MOUANGUE, directeur de l’Ecole Nationale Supérieur Polytechnique de
Douala pour l'honneur qu'il nous fait de permettre la présentation de nos travaux ;
 Dr. Jean NDOUMBE, chef de département de la filière Télécommunications et
Technologie de l’information et de la Communication (TTIC), pour sa clairvoyance, ses
conseils et l’endurance au travail qu’il a cultivé en nous durant notre formation
d’ingénieur.
 M. Ebenezer MAKA MAKA, notre encadreur académique pour sa très grande
disponibilité, ses encouragements, ses conseils, l’orientation, la rigueur et le soutien
inconditionnel qui nous a permis d’améliorer ce travail et nos capacités ;
 Nos enseignants de l’ENSPD et en particulier ceux du Département de TTIC, qui ont
toujours sus répondre en temps opportun à nos diverses interpellations et qui ont assuré
notre formation durant tout ce cycle ;
 Nos camarades de promotion, pour les échanges de documentations ayant ainsi
facilité l’élaboration de notre travail et aussi pour avoir cultivé un esprit de solidarité
et de fraternité avec nous, facilitant ainsi notre insertion dans le milieu éducatif.
 Notre gratitude à tous ceux qui nous ont soutenus de près ou de loin dans cette œuvre et
donc les noms restent anonyme mais plutôt prestigieusement considérés.

ii
AVANT-PROPOS
Le Cameroun dispose de nombreuses écoles d’ingénieurs qui forment des citoyens aptes
à diriger des travaux d’art ou d’industrie, en vue de donner un nouveau souffle à son
développement technologique et de lutter contre le sous-développement. C’est dans cette
optique que se situe l’Ecole Nationale Supérieur Polytechnique de Douala.

L’Ecole Nationale Supérieur Polytechnique de Douala est un établissement d’enseignement


supérieur qui offre les cursus de formation suivants :

- Cursus Ingénieur dans les spécialités suivantes :


 Génie Qualité-Hygiène-Sécurité-Environnement industriel ;
 Génie informatique et télécommunication ;
 Génie maritime et portuaire ;
 Génie des procédés ;
 Génie civil ;
 Génie énergétique ;
 Génie automobile et mécatronique ;
 Génie mécanique ;
 Génie physique et technologie biomédicale ;
 Génie électrique et système intelligent.

- Cursus des sciences de l’ingénieur (Licence-Master-Doctorat) dans les spécialités


suivantes :
 Mécanique et matériaux ;
 Géophysique, eau et environnement ;
 Electronique, électrotechnique, automatisme et télécommunication ;
 Energie ;
 Chimie appliquée ;
 Science des données et intelligence artificielle

- Cursus de masters professionnels dans les spécialités suivantes :


 Hydrocarbures et développement durable ;

iii
 Géotechnique et infrastructure ;
 Construction métallique et mécanique ;
 Génie industriel et maintenance ;
 Ingénierie thermique et énergie ;
 Génie informatique option ingénierie logiciel ;
 Mécatronique et gestion technique des équipements.

Les diplômes suivants y sont délivrés pour les différents cursus :

- Ingénieur de conception pour le cursus Ingénieur ;

- Licence, master et doctorat en science de l’ingénieur pour le cursus sciences de


l’ingénieur ;

- Master professionnel pour le cursus master professionnel.

Les étudiants y sont admis par voie de concours en 1ere année et en 3e année pour le cursus
d’ingénieur et 1ere année pour le cursus des sciences de l’ingénieur et sur étude de dossier pour
le master professionnel. Les enseignements y sont organisés en cours magistraux, travaux
dirigés, travaux pratiques, travaux personnels, visites d’entreprise et stages techniques. Le
processus de formation académique, requiert des étudiants de l’Ecole d’effectuer des stages
professionnels en entreprise ; ceci pour permettre à l’étudiant non seulement à se familiariser
avec l’entreprise, mais aussi d’acquérir une dextérité et des compétences professionnelles dans
un environnement réel.
Les études sont effectuées en trois cycles. Les enseignements du 1er cycle s’étalent sur six
semestres et ont pour principal objectif « d’initier les étudiants aux techniques industrielles »
afin d’assister les ingénieurs. La validation de toutes les Unités d’Enseignement (UE) du 1er
cycle correspondant au quota requis donne droit à une admission au 2nd cycle et à l’obtention
d’une Licence en science de l’ingénieur pour le cursus science de l’ingénieur.
Le 2nd cycle s’étend sur quatre semestres dit de « spécialisation ». Les étudiants ayant choisi
leur filière en fin de premier cycle se spécialisent en choisissant un axe pour l’élaboration d’un
profil particulier et personnel. En effet, l’étudiant a un quota d’unités d’enseignements
obligatoires et des optionnelles au choix en fonction de son profil. Les objectifs du 2nd cycle
sont:

iv
 Donner à l’étudiant les connaissances professionnelles, technologiques et managériales
de pointes pour une compétence efficiente en entreprise ;
 D’initier l’étudiant à la recherche. Les études du 2nd cycle sont sanctionnées par la
validation de tous les stages et Unités d’Enseignement correspondant au nombre de
crédits indiqués et, l’obtention du Diplôme d’Ingénieur de l’Ecole Nationale Supérieure
Polytechnique de Douala pour le cursus d’ingénieur, celui de master 2 en science de
l’ingénieur pour le cursus science de l’ingénieur donnant lieu au passage au 3eme cycle
et celui de master 2 professionnel pour le cursus master professionnel. A la fin de notre
étude, il est obligatoire de produire un mémoire qui sera présenté devant un jury
compétent.
Dans le cadre de la dernière année de formation à l’Ecole Nationale Supérieur
Polytechnique de Douala, spécialité Télécommunications et Technologies de l'information et
de la Communication, nous avons travaillé sur le thème « AMELIORATION DE LA
SECURITE COMMUNICATIONNELLE PAR MESSAGERIE A L’AIDE DES
METHODES CRYPTOGRAPHIQUES » et présentons ce document en vue de l’obtention
du Diplôme d’Ingénieur de l’ECOLE NATIONALE SUPERIEURE POLYTECHNIQUE DE
DOUALA.

v
RESUME
Le SMS (Short Message Service) est une des plus vieilles méthodes d’échange de
messages entre deux ou plusieurs interlocuteurs au travers d’un réseau mobile. Les messages
étant chiffrés au niveau de l’interface radio grâce à l’algorithme A5 /1 et sauvegardés en texte
claire au niveau de l’opérateur de téléphonie mobile. Les récentes avancés dans le domaine
nous ont montrés que cet algorithme n’était plus du tout sécurisé. Il est dont plus facile pour
des personnes malveillantes d’avoir Accès à nos sms en utilisant des techniques de craquage.
Pour assurer la confidentialité de ces SMS nous devons optés pour un chiffrement de bout en
bout. Ainsi, notre travail «AMELIORATION DE LA SECURITE
COMMUNICATIONNELLE PAR MESSAGERIE A L’AIDE DES METHODES
CRYPTOGRAPHIQUE » propose une solution efficace permettant l’échange de SMS
sécurisés entre les différents utilisateurs à l’aide de l’algorithme Advanced Encryptions
Standard (AES) sur l’environnement Android. Ensuite nous allons présenter les tests de notre
application sur différents téléphones Android.

Mots Clés : Chiffrement, confidentialité, SMS, Android et AES

vi
ABSTRACT
Short Message Service (SMS) is the oldest application for exchanging messages
between communicating parties in cellular network used by mobile phones. These messages
are encrypted over-the-air with A5/1 algorithm and stored as clear text at network operator.
Recent developments have shown that this algorithm is not secure any more. Compromising an
access to network operator registers gains access to SMS also. For assuring privacy the SMS
application must provide end-to-end encryption. Our work « INCREASING MESSAGING
COMMUNICATION PRIVACY USING CRYPTOGRAPHIC METHODS » present an
efficient solution for encrypting SMS between communicating parties using Advanced
Encryption Standard (AES) algorithm in Android environment. Furthermore we are going to
present the test carried on different android phones.

Keywords: Encryption, Privacy, SMS, Android and AES

vii
TABLE DE MATIERES
DEDICACES .............................................................................................................................. i

REMERCIEMENTS .................................................................................................................. ii

AVANT-PROPOS ...................................................................................................................... i

RESUME ................................................................................................................................... vi

ABSTRACT ............................................................................................................................. vii

TABLE DE MATIERES ......................................................................................................... viii

LISTE DES TABLEAUX ........................................................................................................ xii

LISTE DE SIGLES ET DES ABREVIATIONS .................................................................... xiii

LISTE DE FIGURE ................................................................................................................. xv

INTRODUCTION GENERALE................................................................................................ 1

CHAPITRE 1: ETAT DE L’ART SUR LA NOTION DE SMS ET LA CRYPTOGRAPHIE . 2

1.1 Le Service SMS ........................................................................................................... 2

1.1.1 Notions sur le Service SMS ................................................................................. 2

1.1.2 Généralités sur le Short Message Service (SMS)................................................. 3

1.1.3 Fonctionnement du réseau GSM .......................................................................... 4

1.1.3.1 Architecture d’un réseau GSM ......................................................................... 4

1.1.3.2 Le SMS : Architecture et composants .............................................................. 5

1.1.3.3 La Transmission d’un SMS au sein du réseau GSM ........................................ 6

1.2 GENERALITES SUR LA CRYPTOGRAPHIE ......................................................... 8

1.2.1 Objectifs ............................................................................................................... 9

1.2.2 Evolution de la cryptographie .............................................................................. 9

1.2.2.1 La cryptographie de l’antiquité......................................................................... 9

1.2.2.2 les Premiers vrais Systèmes de cryptographie ................................................ 10

1.2.2.2 La cryptographie Moderne ............................................................................. 13

1.2.3 Chiffrement symétrique...................................................................................... 14

1.2.3.1 L’algorithme DES........................................................................................... 15

viii
1.2.3.2 L’algorithme AES........................................................................................... 17

1.2.4 Chiffrement asymétrique .................................................................................... 18

1.2.4.1 L’algorithme RSA .......................................................................................... 19

1.2.4.2 Deffie et Hellman ........................................................................................... 20

1.2.5 les fonctions de Hachages .................................................................................. 22

CHAPITRE 2 : METHODE DE SECURISATION DE LA COMMUNICATION PAR


SMS .......................................................................................................................................... 23

2.1 Sécurité dans le réseau GSM ..................................................................................... 23

2.1.1 Authentification dans le réseau GSM ................................................................. 24

2.1.2 Chiffrement ........................................................................................................ 25

2.2 Généralités sur l’Algorithme A5 ............................................................................... 26

2.2.1 Description de l’algorithme A5 .......................................................................... 26

2.2.1.1 L’algorithme A5/1 .......................................................................................... 26

2.2.1.2 L’algorithme A5/2 .......................................................................................... 29

2.2.2 Attaques contre l’algorithme A5 ........................................................................ 30

2.2.2.1 Attaque par compromis temps mémoire ......................................................... 30

2.2.2.2 Attaque par force brute ................................................................................... 30

2.2.2.3 Attaque par corrélation ................................................................................... 31

2.2.2.4 Attaque par deviner et déterminer (GD) ......................................................... 31

2.3 Présentation des Applications Existantes .................................................................. 31

2.3.1 TextSecure .......................................................................................................... 31

2.3.2 Silence ................................................................................................................ 32

2.3.3 Tableau comparatif ............................................................................................. 33

2.4 Cahier de Charges ...................................................................................................... 33

2.4.1 Objectifs du projet .............................................................................................. 33

2.4.2 Description de l’Existant .................................................................................... 34

2.4.3 Expression des besoins ....................................................................................... 34

ix
2.4.3.1 Besoins Fonctionnels ...................................................................................... 34

2.4.3.2 Besoins non fonctionnels ................................................................................ 34

2.4.4 Solution adoptée ................................................................................................. 34

2.4.4.1 Choix de la méthode d’analyse et de Conception........................................... 34

2.4.4.2 Choix du langage de programmation.............................................................. 35

CHAPITRE 3 : DEVELOPPEMENT LOGICIEL ........................................................... 36

3.1 Analyse et Conception ............................................................................................... 36

3.1.1 Présentation d'UML............................................................................................ 38

3.1.2 Les Vues et diagrammes d’UML ....................................................................... 38

3.1.2.1 La vue fonctionnelle ....................................................................................... 39

3.1.2.2 La vue dynamique .......................................................................................... 40

3.1.2.3 La vue structurelle ou statique ........................................................................ 43

3.2 Schéma fonctionnel de l’application ......................................................................... 45

3.3 Présentation de X-TALK ........................................................................................... 46

3.3.1 Description de X-Talk ........................................................................................ 46

3.3.2 Envoi du SMS .................................................................................................... 46

3.3.2.1 Réception du SMS .......................................................................................... 47

3.4 Les interfaces de l’application XSMS ....................................................................... 48

3.5 Implémentation .......................................................................................................... 49

3.5.1 Environnement de développement ..................................................................... 49

3.5.2 Langage de programmation ................................................................................ 50

3.5.3 Etudes de quelques modules d’Android Studio ................................................. 50

3.5.3.1 Le module d’envoi de SMS ............................................................................ 51

3.5.3.2 Le module de réception de SMS..................................................................... 51

3.5.3.3 Le module cryptographique ............................................................................ 52

CHAPITRE 4 : Implémentation et Coût du projet............................................................ 54

4.1 Présentation de l’interface Homme-Machine ............................................................ 54

x
4.1.1 Interface de conversation ................................................................................... 54

4.1.2 Interface de tchat ................................................................................................ 55

4.1.3 Interface Nouvelle Conversation ........................................................................ 55

4.2 Tests et Résultats ....................................................................................................... 56

4.3 Coût estimatif du projet ............................................................................................. 58

4.3.1 Estimation du cout des équipements .................................................................. 58

4.3.2 Estimation du cout de développement ............................................................... 59

4.3.2.1 Contexte du développement d’un logiciel ...................................................... 59

4.3.2.2 Estimation de la charge................................................................................... 59

4.3.2.3 Cout du logiciel .............................................................................................. 60

CONCLUSION GENERALE .................................................................................................. 62

REFERENCES BIBLIOGRAPHIQUES ................................................................................. 63

xi
LISTE DES TABLEAUX
Tableau 1. 1: comparaison chiffrement symétrique et asymétrique............................................... 21
Tableau 2. 1: Tableau comparatif des solutions existantes………………….………………………….33
Tableau 4. 1: Spécification de téléphones Android utilisés pour le test………………….……………………56
Tableau 4. 2: Détails des besoins pour la réalisation du projet ....................................................... 58
Tableau 4. 3: Classification des paramètres en fonction du type de projet.................................... 60
Tableau 4. 4: Coût de productivité du logiciel .................................................................................. 61
Tableau 4. 5: Coût total estimatif du projet ...................................................................................... 61

xii
LISTE DE SIGLES ET DES ABREVIATIONS
2G: Second Generation

3DES: Triple Data Encryption Standard

AES: Advanced Encryption Standard

BSC: Base Station Controler

BSS: Base Sub System

BTS: Base Transceiver Station

CBC: Cipher Block Chain

CFB: Cipher Feedback

CTR: Counter Mode

DES: Data Encryption Standard

ECB: Electronic Code Book

GSM: Global System for Mobile Communication

HLR: Home Location Register

LSFR: Linear Shift Feedback Register

MO: Mobile Originated

MSC: Mobile Switching Center

MT: Mobile Terminated

OFB: Output FeedBack

OMC: Operation and Maintenance Center

OSS: Operation Sub System

PDU: Protocol Data Unit

RC5: Rivest Cipher 5

RSA: Rivest Shamir Adleman

xiii
SACCH: Slow Associated Control Channel

SDCCH: Standalone Dedicated Control Channel

SME: Short Message Entity

SMS: Short Message Service

SMSC: Short Message Service Center

SMS-GMSC: Short Message Service-Gateway Mobile Switching Center

SMS-IWMSC: Short Message Service-Inter Working Mobile Switching Center

SMS-MO: Short Message Service-Mobile Originated

SMS-MT: Short Message Service-Mobile Terminated

UDH: User Data Header

xiv
LISTE DE FIGURE
Figure 1. 1: Trame concaténation des SMS [3] ...................................................................................... 4
Figure 1. 2: Architecture fonctionnelle d'un réseau GSM [4] ................................................................ 5
Figure 1. 3: Schéma d’architecture d’envoi de SMS [5] ........................................................................ 5
Figure 1. 4: Acheminement d'un SMS-MO [4] ...................................................................................... 7
Figure 1. 5: Acheminement d'un SMS – MT [4] .................................................................................... 7
Figure 1. 6: Chiffrement et déchiffrement [8] ........................................................................................ 8
Figure 1. 7 : Le code Atbash [11]......................................................................................................... 10
Figure 1. 8: principe du code de césar [12] .......................................................................................... 11
Figure 1. 9: Tableau de vigenère [14] .................................................................................................. 11
Figure 1. 10: La machine enigma [15] ................................................................................................. 12
Figure 1. 11: cryptographie symétrique [20] ........................................................................................ 14
Figure 1. 12: Principe de fonctionnement DES [19] ........................................................................... 16
Figure 1. 13: Principe de fonctionnement AES [21] ............................................................................ 17
Figure 1. 14: cryptographie asymétrique [20] ...................................................................................... 18
Figure 2. 1: clé d’authentification Ki [23]………………………………………………………………………………….23
Figure 2. 2: Processus d’authentification [25]...................................................................................... 25
Figure 2. 3: processus de chiffrement [26] ........................................................................................... 26
Figure 2. 4: L’algorithme A5/1[27]...................................................................................................... 27
Figure 2. 5: L’algorithme A5/2 [30]..................................................................................................... 29
Figure 3. 1: Historique de la constitution d’UML [40]……………………………………………………………………..37
Figure 3. 2: Trois axes de modélisation UML...................................................................................... 38
Figure 3. 3: diagramme de cas d’utilisation ......................................................................................... 40
Figure 3. 4: Diagramme de Séquence envoi de SMS ........................................................................... 41
Figure 3. 5: Diagramme de Séquence envoi de SMS ........................................................................... 41
Figure 3. 6: Diagramme de séquence supprimer un SMS .................................................................... 42
Figure 3. 7: Diagramme de séquence rechercher un SMS ................................................................... 42
Figure 3. 8: Diagramme de classe de l’application .............................................................................. 44
Figure 3. 9: Schéma fonctionnel de l’application................................................................................. 45
Figure 3. 10: Trame X-Talk lors de l’envoi de SMS............................................................................ 46
Figure 3. 11: Processus d’envoi/Réception X-Talk.............................................................................. 47
Figure 3. 12: Interface de conversation ................................................................................................ 48
Figure 3. 13: interface de tchat........................................................................................................... 49
Figure 3. 14: Module activation permission envoi de SMS ................................................................. 51

xv
Figure 3. 15: Module d’envoi de SMS ................................................................................................. 51
Figure 3. 16: Module activation permission réception de SMS ........................................................... 51
Figure 3. 17: Module de réception de SMS.......................................................................................... 52
Figure 3. 18: Le module de chiffrement ............................................................................................... 53
Figure 3. 19: Le module de déchiffrement ........................................................................................... 53

Figure 4. 1: Interface de conversation XSMS ...................................................................................... 54


Figure 4. 2: Interface de chat XSMS .................................................................................................... 55
Figure 4. 3: Interface Nouvelle Conversation XSMS .......................................................................... 55
Figure 4. 4: Temps de chiffrement et déchiffrements de XSMS.......................................................... 56
Figure 4. 5 : Présentation du chiffrement de l’application ................................................................... 57

xvi
INTRODUCTION GENERALE
Dans le domaine de la télécommunication, on parle surtout des échanges d’informations.
Depuis déjà plusieurs années, l’évolution de la technologie de la télécommunication ne cesse
de surprendre les utilisateurs et même de leur apporter une grande assistance. L’intérêt de la
télécommunication découle essentiellement de la rapidité et de la facilité des échanges. De nos
jours, l’utilisation de ces appareils mobiles est devenue une partie intégrante de notre vie. On
les utilise pour passer des appels locaux ou internationaux, pour envoyer des messages, ou
encore pour naviguer sur le net. La téléphonie mobile est devenue un moyen incontournable
pour la communication. Ce système a beaucoup évolué depuis des années et plusieurs
technologies ont été découvertes et adoptées pour une meilleure utilisation.

Suite à ces évolutions, le nombre d’utilisateurs des smartphones accuse une


augmentation. Néanmoins la sécurité de données échangées à partir de ces appareils mobiles
reste toujours un point sensible, c’est ainsi que plusieurs techniques de piratage ont été
développées par les hackers. Certaines servent à copier les données qu’on dispose dans nos
appareils, d’autre servent à intercepter les données en cours de transmission. C’est suivant une
telle lancée que ce travail s'est articulé autour de « AMELIORATION DE LA SECURITE
COMMUNICATIONNELLE PAR MESSAGERIE A L’AIDE DES METHODES
CRYPTOGRAPHIQUES ».

En effet, on cherche à mettre sur pied un environnement apte pour développer et


déployer une application destinée à des téléphones portables. L’objectif de ce travail consiste à
réaliser un crypto-système Android pour l’échange des SMS dans le réseau GSM. Par
conséquent, nous avons décomposé notre travail en quatre parties. La première partie du projet
est dédiée essentiellement à l’étude du service SMS ainsi que la généralité sur la cryptographie.
Ensuite, la deuxième partie contient des explications sur les méthodes de sécurisation de la
communication par SMS. La troisième partie présente le développement logiciel et enfin, la
quatrième partie présente l’application et les résultats des tests effectués sur plusieurs
téléphones Android.

1
CHAPITRE 1: ETAT DE L’ART SUR LA NOTION DE SMS ET
LA CRYPTOGRAPHIE
Les messages courts (SMS) sont devenus un phénomène mondial, depuis leur avènement
en 1992 avec le tout premier message « MERRY CHRISTMAS » de NEIL PAPWORTH [1].
En général, ce service est utilisé si le correspondant ne peut pas parler, pour ne pas déranger ses
correspondants ou pour limiter la facture, etc. En effet, la technologie des messages courts
permet à un utilisateur de composer un message textuel à partir de son terminal mobile et de
l'envoyer à un destinataire possédant également un téléphone radio mobile ou à une application
SMS. Avec l’évolution de la technologie, ce service de communication fait face à des menaces
de toutes sortes. Le moyen de sécurité prévu à la base pour assurer la confidentialité lors des
échanges de ces messages n’est plus sécurise. Dans ce chapitre nous allons présenter l’histoire
du SMS, son fonctionnement dans le réseau GSM et enfin présenter la cryptographie et ses
différents algorithmes.

1.1 Le Service SMS

1.1.1 Notions sur le Service SMS

A l’origine l’idée du message viendrait de l’ingénieur finlandais Matti-Makkonen qui


travaillait pour l’entreprise Telia Soneira (avant de passer chez Nokia) et dont le but était d’aider
les personnes malentendantes à communiquer. Avec l’apparition de la norme GSM (Global
System for Mobile Communications), les pays scandinaves avaient proposé d’ouvrir le SMS
au grand public. Ainsi, le premier SMS commercial fut envoyé le 3 décembre 1992 par un
employé de Sema Group, Neil Papworth, depuis son ordinateur (les téléphones mobiles n’ayant
pas encore de clavier) sur le cellulaire Orbitel 901 de Richard Jarvis, un des dirigeants de
Vodafone. Nous pouvons voir son contenu dans [1]. A cette période encore le SMS n’était pas
destiné au grand public, il devait permettre aux opérateurs d’informer les abonnés. C’est
seulement deux ans plus tard en 1994 que le fabricant NOKIA lance le tout premier téléphone
portable avec clavier permettant d’écrire un SMS : le NOKIA 2010.

Les nombreux opérateurs de téléphonie mobile ont tardé à offrir ce service à leurs
clients. En effet ils étaient particulièrement sceptiques et pensaient encore que ce type de
message ne détrônerait jamais les appels vocaux. A cette époque le téléphone était destiné
uniquement aux appels. Ce n’est finalement qu’à la fin des années 90 que le SMS est enfin
adopté. Tous les opérateurs proposent alors ce service. Il devient donc possible d’écrire à un

2
correspondant et ce quel que soit son opérateur. Un véritable tournant dans l’histoire du SMS.
Ainsi entre 1997 et 1999, les opérateurs lancent leurs premières offres. Tous les facturent à
l’unité : 1 franc par message. Le succès est immédiat, entre autres grâce à son coût bien moins
élevé qu’un appel traditionnel. Les jeunes en raffolent et s’approprient son utilisation [2].

1.1.2 Généralités sur le Short Message Service (SMS)

La communication par SMS est un moyen permettant aux abonnés mobiles de


s’échanger des messages courts. Un SMS peut être envoyé ou reçu à partir d’appareils tels que
les téléphones mobiles, smartphones, tablettes, ordinateurs et même les téléphones fixes. Ces
messages échangés doivent avoir une taille maximale de 140 octets (1120 bits) de données qui
doivent être transmisses sur le réseau. Ils sont codés sur 7, 8 ou 16 bits, ce qui donne
160(160*7/8), 140 (140*8/8) ou 70 (70*16/8) caractères qu’un abonné peut écrire. Le choix
du nombre de bits à utiliser pour coder un message se fait en fonction des caractères du texte.
Le codage par défaut utilisé est de 7 bits et les caractères spéciaux tel que “\ ^ € { } [ ] ~”
utilisent jusqu’à deux caractère de 7 bits. Le codage de 8 bits est nécessaire pour l’envoi de
caractères spéciaux tels que “š ž ê”. Les caractères chinois, arabes, thaïs et cyrilliques sont codés
sur 16 bits. Cependant, du point de vue de l’utilisateur, plusieurs caractères peuvent être
envoyés dans un même texte. Cela se fait en concaténant plusieurs SMS.

SMS est un service “Store and Forward service”, ce qui signifie qu’au lieu d’être
transmis directement aux destinataires, les messages sont d’abord envoyés à une entité
intermédiaire appelée Service Center(SC), puis sont transférés au destinataire. Ceci est une
caractéristique très importante car si le destinataire n’est pas en ligne, le message est stocké
dans la SC. Quand l’utilisateur sera en ligne, le réseau va contacter la SC et le message sera
envoyé vers lui. Une autre caractéristique importante est la possibilité de la confirmation de
livraison du SMS. L’expéditeur peut choisir d’être informé lorsque la remise du message est
terminée c’est à dire lorsque l’utilisateur correspondant a correctement reçu le message.

Les SMS de plus de 160 caractères sont segmentés par le réseau. Le récepteur doit
concaténer les pièces du message. Pour que la concaténation soit possible, un en-tête est ajouté
à l’unité de données de protocole(PDU) du SMS. Cet en-tête est appelé en-tête de données
utilisateur (UDH). Le nombre maximal de SMS pouvant être concaténés de cette manière est
de 255, ce qui donne une longueur de maximale du message concaténé de 34170 octets
(255*134 octets). Si le message est compressé, l’algorithme de Huffman est le plus souvent

3
utilisé dans GSM. Ces octets incluent également les en-têtes de compression et le pied de
compression [3].

Figure 1. 1: Trame concaténation des SMS [3]

1.1.3 Fonctionnement du réseau GSM

1.1.3.1 Architecture d’un réseau GSM

Le réseau GSM est dit de « seconde génération » (2G), contrairement à la première


génération de téléphones portables, pour laquelle les communications fonctionnent selon un
mode entièrement analogique, utilise les bandes de fréquences 900 MHz et 1800 MHz et est
constitué de trois sous-systèmes, à savoir :

 le Base Sub system (BSS) appelé en français « Sous système radio », qui assure les
transmissions et gère la ressource radio il comprend essentiellement les stations de base
(BTS), et leurs contrôleurs (BSC)
 le Network Sub System (NSS) appelé en français « Sous système réseau »qui
comprend l'ensemble des fonctions nécessaires à l'établissement des appels et à la
mobilité est essentiellement constitué de MSC (Mobile Service Switching Centre), VLR
(Visitor Location Register), HLR (Home Location Registrer) ;
 le sous-système d'exploitation OSS, dont l'OMC (Operation and Maintenance Center)
qui est l'équipement principal, permet à l'opérateur d'administrer son réseau.

Le centre des messages courts (SMSC), localisé au niveau du sous-système réseau (NSS),
fonctionne comme une plateforme d'enregistrement et de transfert des SMS. La figure 1.2
représente l'architecture du réseau GSM et met en exergue les circuits de parole et de
signalisation (ou de messages courts).

4
Figure 1. 2: Architecture fonctionnelle d'un réseau GSM [4]

1.1.3.2 Le SMS: Architecture et composants

La transmission de SMS entre un appareil mobile et un destinataire (autre mobile, clé


3G avec le logiciel idoine, équipement fixe, ...) et réciproquement peut être réalisée à travers
différents protocoles tels que le SS7 dans le cadre du protocole standard GSM, ou encore par
TCP/IP avec le même standard. Les messages sont envoyés avec l’opération supplémentaire
forward_short_message, dont la longueur de charge utile (payload) est limitée par les
contraintes du protocole de signalisation à savoir 140 octets au maximum [5].

Figure 1. 3: Schéma d’architecture d’envoi de SMS [5]

 SME (Short Message Entity) : Le SME est tout équipement pouvant émettre ou
recevoir des SMS. Exemples : Mobile GSM, GPRS ou UMTS, VMS (Voice Messaging
System), Un ordinateur sur internet

5
 SC ou SMSC (Short Message Service Center) : Le SMSC permet de gérer le transfert
de messages SMS (textes ou binaires) vers les terminaux mobiles, voire avec les
émetteurs. En particulier, quand un abonné envoie un SMS vers un autre, le terminal
transmet en réalité le SMS vers le SMSC. Le SMSC stocke le message puis le transmet
au destinataire lorsque celui-ci est présent sur le réseau (terminal allumé, et prêt à
recevoir).Le SMSC fonctionne sur le mode Store & Forward. Le rôle de la SMSC est
de relier les SMS entre SMEs, gérer les accusés de réception, gérer le routage des SMS
et assurer l'interface avec le réseau mobile (PLMN) via le protocole SS7 etc.
 SMS-GSMSC : Le SMS-Gateway MSC est une passerelle qui reçoit les SMS du
SMSC, interroge le HLR pour les aspects routage et droits et envoie ensuite le SMS au
visited MSC (MSC auquel le terminal destinataire est rattaché). Le SMS-Gateway MSC
est utilisé pour la procédure dans le cas de l'envoi d'un SMS "Mobile Terminated" (MT
SMS), c’est à dire destination d'un terminal mobile.
 SMS-IWMSC : Le SMS-InterWorking MSC est une mesure MSC qui permet de
recevoir un message court à partir du réseau mobile et de le soumettre au SMSC. Le
SMSGMSC et le SMS-IWMSC sont généralement intégrés dans le SMSC. Le SMS-
IWMSC est utilisé pour la procédure Mobile Originated (MO) SMS : SMS envoyés
depuis un terminal.

1.1.3.3 La Transmission d’un SMS au sein du réseau GSM

Pour une communication vocale, le canal de contrôle est utilisé pour initier la
communication qui est ensuite transmise sur un canal de trafic. Les SMS, par contre, sont
acheminés directement sur un canal de contrôle. Initialement, le canal de transit des SMS, avait
été conçu pour la transmission de messages de maintenance de l'opérateur vers les exploitants
du réseau ; ce qui explique les limitations que connaît le service SMS. C'est ainsi que la taille
d'un SMS normal a été limitée à 160 caractères en alphabet latin, ou à 140 octets de données
digitales, en dehors des données utilisées pour la transmission du message. A la lumière de ce
qui précède, il n'est plus excusable de s'étonner de recevoir un message et un appel, de façon
simultanée. En dehors de l'interface air, où les SMS sont convoyés au travers des canaux
(SDCCH, SACCH), leur acheminement entre les divers équipements du réseau est géré par le
protocole MAP. Lorsqu'un SMS est envoyé d'un mobile à un autre ou encore à une application
de traitement des SMS (Service de Messages Succincts), il est décomposé en deux étapes. Le

6
texto issu du terminal vers le SMSC est qualifié de SMS-MO tandis que celui quittant le SMSC
vers le mobile destinataire est qualifié de SMS-MT.

 Cas d’un SMS-MO


La première étape consiste à ce que le SMS envoyé atteigne le centre des messages courts
(SMSC) ; En effet, lorsque le SMS est envoyé, il passe successivement par les équipements
tels que les BTS, BSC, MSC /VLR avant de rejoindre le IWMSC qui se charge de le router
vers le SMSC approprié. Si à ce niveau le texto est bien reçu, un acquittement de bonne
réception est envoyé au MSC/VLR, qui à son tour l'envoi au mobile.

Figure 1. 4: Acheminement d'un SMS-MO [4]

 Cas d’un SMS-MT


La seconde étape se résume au trajet du SMS du centre de messagerie au mobile
destinataire. Dans ce cas, le SMSC envoi d'abord une requête de localisation au HLR, qui
l'indique le MSC/VLR au niveau duquel il est enregistré. S'il est accessible, le SMSC le lui
délivre. Après avoir reçu le sms, le mobile renvoi au SMSC un acquittement de réception
par le biais du MSC/VLR.

Figure 1. 5: Acheminement d'un SMS – MT [4]

7
1.2 GENERALITES SUR LA CRYPTOGRAPHIE

L’origine de la cryptologie mot réside dans la Grèce antique. La cryptologie est un mot
composé de deux éléments : «cryptos », qui signifie caché et « logos » qui signifie mot. La
cryptologie est aussi vieille que l’écriture elle-même, et a été utilisé depuis des milliers d’années
pour assurer les communications militaires et diplomatiques. Par exemple, le célèbre empereur
romain Jule César utilisait un algorithme de chiffrement pour protéger les messages à ses
troupes. Dans le domaine de la cryptologie, on distingue : la cryptographie et la cryptanalyse.
Le cryptographe cherche des méthodes pour assurer la sûreté et la sécurité des conversations
alors que le Crypto-analyste tente de défaire le travail ancien en brisant ses systèmes. La
cryptographie traditionnelle est l’étude des méthodes permettant de transmettre des données de
manière confidentielle et la cryptanalyse, à l’inverse est l’étude des procédés cryptographiques,
qui dépendent d’un paramètre appelé clé [6], [7].

La cryptographie est une science mathématique qui comporte deux branches : la


cryptographie et la cryptanalyse.

Le mot cryptographie est un terme générique désignant l’ensemble des techniques


permettant de chiffrer des messages, c’est-à-d permettant de les rendre inintelligibles sans
une action spécifique.

La cryptanalyse, à l’inverse, est l’étude des procédés cryptographiques dans le but de


trouver des faiblesses, en particulier, de pouvoir décrypter des messages chiffrés. Le
décryptement est l’action consistant à trouver le message en clair sans connaitre la clef de
déchiffrement.

Figure 1. 6: Chiffrement et déchiffrement [8]

8
1.2.1 Objectifs

La cryptographie est généralement utilisée pour sécuriser les informations. On recherche en


particulier les propriétés suivantes:

 Confidentialité (ou Secret) : Seul le destinataire doit être capable de déchiffrer les
messages. Il ne doit pas être possible a une autre personne d’obtenir des informations
significatives à partir de ce qu’elle observe.
 Intégrité : La destination doit être capable de déterminer si le message a été modifié
(durant sa transmission)
 Authentification : le destinataire doit être capable d’identifier l’expéditeur du message
et de vérifier qu’il en est bien l’auteur.
 Non-répudiation : en conséquence des points 2. et 3. , l’expéditeur ne peut nier être
l’auteur du message.
 Anti-replay : le message ne peut être envoyé plusieurs fois sans que le destinataire ne
puisse distinguer.
 Preuve de délivrance : l’expéditeur doit avoir un moyen de prouver que le destinataire
a bien reçu le message.

La cryptographie fournit des mécanismes pour atteindre tous ces objectifs. Cependant,
certains ne sont pas toujours nécessaires, pratiques ou même souhaitables dans certains
contextes. Par exemple un expéditeur peut vouloir rester anonyme.

1.2.2 Evolution de la cryptographie

Utilisé depuis l’antiquité, l’une des utilisations les plus célèbre de cette époque est le
chiffrement de césar, nommé comme référence à jules césar qui l’utilisation pour ses
communications secrètes. Mais la cryptographie est bien antérieure à cela : le plus ancien
document chiffré est une recette secrète de poterie qui date du XVIe siècle avant J.-C., qui a été
découverte dans l’actuelle Irak. L’historien en cryptographie David Kahn considère
l’humaniste Leon Battista Alberti comme le père de la cryptographie occidentale, grâce à trois
avancées significatives : « la plus ancienne théorie occidentale de cryptanalyse, l'invention de
la substitution poly alphabétique, et l'invention du code de chiffrement » [9].

1.2.2.1 La cryptographie de l’antiquité

Le premier exemple indéniable de cryptographie remonte au moins au Ve siècle avant


notre ère. En effet, les Spartiates (Grèce) du temps avaient développé une méthode originale

9
pour l’échange de messages secrets. Celle-ci est basée sur le fait que deux copies identiques
d’un bâtonnet, appelé Scytale, soit en possession de l’envoyeur et du récepteur du message.
Pour préparer un message, on enroule en spirale autour de la scytale une bandelette de
parchemin (ou de cuir), pour ensuite écrire le message le long de la scytale. Une fois déroulée
la bandelette ne contient plus qu’une suite apparemment incompréhensible de lettres.
Cependant, pour décoder le message il suffit simplement d’enrouler la bandelette sur la scytale
jumelle. Comme la méthode est assez simple, il leur fallait bien entendu la conserver secrète
[10].

Durant cette même ère, les hébreux utilisaient une technique de chiffrement appelé
Atbash pour cacher les messages. Cette technique consiste simplement à inverser l’ordre des
lettres de l’alphabet. La figure 1.7 nous montre le fonctionnement de l’Atbash [11].

Figure 1. 7 : Le code Atbash [11]

1.2.2.2 les Premiers vrais Systèmes de cryptographie

Il existe trois types de chiffrement par substitution à savoir :

- Mono alphabétique (remplace chaque lettre du message par une autre lettre de
l’aphabet) ;
- Poly alphabétique (utilise une suite de chiffres mono alphabétiques (la clé) réutilisée
périodiquement) ;
- Poly grammes (substitue un groupe de caractères dans le message par un autre groupe
de caractères) ;

 Le code césar
Le code de César est la méthode cryptographique, par substitution mono alphabétique,
la plus ancienne. Cette méthode consiste à décaler l’alphabet d’une ou plusieurs lettres. Le
chiffrement s'effectue très facilement, en listant les lettres de l'alphabet les unes à la suite
des autres, puis en plaçant au-dessous ces mêmes lettres décalées d'un certain nombre de
rang donné. Pour chiffrer un message, il suffit alors de remplacer la lettre prise dans la
première ligne par la lettre correspondante dans la seconde. Ainsi, « Prends garde aux Ides
de Mars » se transforme en « Suhqgv jdugh dxa Lghv gh Pduv » [12].

10
Figure 1. 8: principe du code de césar [12]

 Le chiffrement de vigenère

En France, en 1586, Blaise de Vigenère, diplomate, présente dans le « Traicté des


chiffres ou secrètes manières d’escrire », une technique de cryptage par substitution poly
alphabétique. Ce chiffrement utilise une clé qui permet de remplacer chaque caractère. Plus
la clé est grande et diversifiée, plus le chiffrement est solide. Des passages entiers de
certaines œuvres littéraires pouvaient ainsi être utilisés. Expéditeur et destinataire avaient
juste besoin de posséder chacun un exemplaire de l’œuvre utilisée pour décrypter le
message. Le chiffrement de Vigenère ne sera cassé qu’en 1854 [13].

Figure 1. 9: Tableau de vigenère [14]

 La machine Enigma

La cryptographie avait joué un rôle déterminant pendant la période de la première guerre


mondiale, apportant un avantage énorme aux Français, plus talentueux pour déchiffrer les
messages de l’ennemi. Pour Winston Churchill, la cryptologie aurait été un élément
essentiel de la victoire des alliés et aurait même écourté la durée de la guerre d’un an ou
deux. C’est dans le contexte de cette prise de conscience qu’un ingénieur hollandais, Hugo
Alexander invente une machine à chiffrer électromagnétique. Son invention est reprise par

11
un Allemand, le Dr Arthur Scherbius. C’est la naissance d’Enigma, une machine portable
utilisant des rotors sur cylindres afin de chiffrer et déchiffrer des messages. La machine fut
utilisée par les Allemands pendant la seconde guerre mondiale. Les messages cryptés pas
Enigma étaient réputés indéchiffrables, c’était mésestimer les talents des cryptologues alliés
qui ont ainsi réussi à prendre un avantage considérable sur l’ennemi. Alan Turing, « père
de l’informatique » avec sa « Machine de Turing », avait été sollicité par le gouvernement
britannique pour participer au décryptage de messages de l’armée allemande provenant
d’Enigma. Turing avait rejoint les cryptologues de Bletchey Park, lieu secret entre Oxford
et Cambridge, qui fut le quartier général des services du Chiffre britannique durant la
Seconde Guerre mondiale. Les équipes de cryptologues de Bletchey Park réussirent à
vaincre les chiffres d’Enigma et de Lorenz. Le premier utilisé dans la transmission des
nombreux messages de l’armée nazie et le second plus spécifiquement utilisé pour les
messages des hauts dirigeants. Le cryptage d’Enigma a cédé à l’attaque « par force brute »,
autrement dit en testant une à une toutes les combinaisons possibles [15].

Figure 1. 10: La machine enigma [15]

12
1.2.2.2 La cryptographie Moderne

Claude Shannon est considéré par plusieurs comme le père de la cryptographie


mathématique [16]. Il a travaillé pendant plusieurs années dans les Laboratoires Bell où il a
produit un article intitulé A Mathematical Theory of Cryptography (Une théorie
mathématique de la cryptographie). Cet article a été écrit en 1945 et a été publié dans le Bell
System Technical Journal en 1949. Shannon a continué son travail en produisant un autre article
intitulé A Mathematical Theory of Communication. La guerre avait poussé Shannon à
s'intéresser à la cryptographie parce que les messages secrets sont une application intéressante
de la théorie de la communication. Il est communément admis que son premier article, publié
en 1949, a été le point de départ du développement de la cryptologie moderne. Shannon a
défini les deux principaux objectifs de la cryptologie : le secret et l'authentification. Il a mis
l'accent sur l'exploration du secret décrivant ainsi deux types de secret. Les premiers sont ceux
conçus avec l'intention de protéger un message contre des adversaires disposant de ressources
infinies pour décoder un message (le secret théorique), et les seconds sont ceux qui visent à
protéger un message contre des adversaires ayant des ressources limitées pour décoder un
message (le secret pratique). La plupart des travaux de Shannon concernent le secret
théorique. Le travail de Shannon a influencé la recherche sur la cryptographie jusque dans
les années 1970 comme le démontre le fait que les développeurs de la cryptographie à clé
publique, Martin Hellman et Whitfield Diffie, ont mentionné les articles de Shannon comme
une de leurs influences principales. Son travail a également influencé les conceptions
modernes de chiffrement à clé secrète. À la fin des travaux de Shannon, les progrès de la
cryptographie ont ralenti jusqu'à ce que Hellman et Diffie présentent leur document sur
la cryptographie à clé publique.

Les années 70 ont été marquées par plusieurs avancées majeures à savoir :

 Le développement du chiffrement symétrique ou encore cryptographie a clé privée


 Le développement du chiffrement asymétrique a clé publique

 Le développement des fonctions de hachage

13
1.2.3 Chiffrement symétrique

La cryptographie à algorithmes symétriques utilise la même clé pour les processus de


chiffrement et de déchiffrement ; cette clé est le plus souvent appelée « secrète ». Le chiffrement
consiste à appliquer une opération (algorithme) sur les données à chiffrer à l’aide de la clé
privée, afin de les rendre inintelligibles. Ainsi, le moindre algorithme peut rendre le système
quasiment inviolable (la sécurité absolue n’existant pas) [17].

Toutefois dans les années 40 Claude Shannon démontra qu’être totalement sûre, les
systèmes à clefs privées doivent utiliser des clefs d’une longueur au moins égale à celle du
message à chiffrer [7], [18], [19].

Principe de base

Un expéditeur et un destinataire souhaitant communiquer de manière sécurisée à l’aide


du cryptage conventionnel doivent convenir d’une clé et ne pas la divulguer. Dans la majorité
des systèmes de cryptages symétriques la clé de chiffrement et la clé de déchiffrement sont
identiques.

Figure 1. 11: cryptographie symétrique [20]

On distingue deux grandes catégories de chiffrement symétrique :

1. Le chiffrement par flot (Stream Cipher)

Les méthodes ‘par flot’ chiffrent les bits ou octets individuellement en appliquant une
transformation qui varie avec le temps. Un chiffrement par flot traite des données de
longueur quelconque sans avoir besoin de les découper. Il se présente souvent sous la forme
d’un générateur de nombres pseudo-aléatoire avec lequel on opère un XOR (eXclusive OR)
entre un bit à la sortie du générateur et un bit provenant des données. Les chiffrements par

14
flot sont souvent utilisés dans des situations ou la taille du message ne peut être déterminée
à l’ avance, par exemple quand les données doivent être traitées aussitôt qu’elles sont reçues
(télécommunications) [17].

2. Le chiffrement par bloc (block cipher)

Les chiffrements par bloc sont plus répandus que ceux qui traitent des flots des données.
La principale différence vient du découpage des données en blocs de taille généralement
fixe (souvent une puissance de deux comprise entre 32 et 512 bits). Les blocs sont ensuite
chiffrés les uns après les autres au moyen de la clé et d’un mode opératoire[17].

Il existe 5 types de chiffrement par bloc Electronic Code Book(ECB), Cipher Block
Chaining(CBC), Cipher Feedback(CFB), Output Feedack(OFB) et Counter mode(CTR).

Quelques algorithmes de chiffrement symétriques très utilisés sont DES, 3DES, AES et
RC5

1.2.3.1 L’algorithme DES

Le Data Encryption Standard (standard de chiffrement de données a été publié en 1977,


et fut ainsi le premier algorithme cryptographie à petite clé secrète (56 bits) à avoir été rendu
public. Le DES consiste en un réseau de Feistel de 16 tours : le message à chiffrer est découpé
en blocs de 64 bits, chacun d'eux étant séparé en deux sous-blocs de 32 bits.

Le cahier des charges était le suivant :

 L’algorithme repose sur une clé relativement petite, qui sert à la fois au chiffrement et
au déchiffrement.
 L’algorithme doit être facile à implémenter, logiciellement et matériellement, et doit
être très rapide.
 Le chiffrement doit avoir un haut niveau de sûreté, uniquement lié à la clé, et non à la
confidentialité de l’algorithme [18], [19].

Principe du DES

Le DES n’est qu’un code produit dont l’idée vient de Shannon : il combine
simultanément diffusion et confusion qui sont des méthodes peu sûres quand on les utilise
séparément. Néanmoins, leur combinaison permet d’atteindre un niveau de sécurité assez
considérable. Nul ne pourrait démontrer l’inviolabilité d’un tel produit, mais l’aspect
aléatoire du produit des bits chiffrés rendait la tâche très difficile à tout crypto-analyste. La

15
diffusion utilise ici des permutations dont le but est d’éclater dans le fichier crypté la
redondance présente dans le fichier clair. La confusion qui a pour but de compliquer la
liaison entre le fichier crypté et les clés secrètes, utilise ici des substitutions, non linéaires,
de façon à produire un système cryptographique qui résiste à toute cryptanalyse
mathématique.

Notons que à l’origine, le DES est un code à blocs de 64 bits. Le fichier clair est donc
découpé en plusieurs blocs de 64 bits. La transformation d’un bloc comporte 16 itérations
d’un processus de codage, qui effectue respectivement une étape de confusion, puis une
étape de diffusion [18], [19].

En effet, la sécurité des données cryptées repose sur une clé secrète de 64 bits
(succession de 0 et de 1), mais en fait seuls 56 bits servent réellement à définir la clé. Les
bits 8, 16, 24, 32,40, 48, 56, 64 sont des bits de parité (=bits de détection d’erreur). Le 8éme
bit est fait en sorte que sur les 8 premiers bits, il y ait un nombre impair de 1. Par exemple,
si les 7 premiers bits sont 1010001, le 8éme bits est 0. Ceci permet d’éviter les erreurs de
transmission [19].

Figure 1. 12: Principe de fonctionnement DES [19]

16
1.2.3.2 L’algorithme AES

AES est un algorithme de chiffrement symétrique, choisi en octobre 2000 par le NIST
(National Institute of Standards and Technology) pour être le nouveau standard de chiffrement
pour les organisations du gouvernement des États-Unis. Il est issu d'un appel à candidatures
international lancé en janvier 1997 et ayant reçu 15 propositions. Au bout de cette évaluation,
ce fut le candidat Rijndael (prononcer "Rayndal"), du nom de ses deux concepteurs Joan
Daemen et Vincent Rijmen (tous les deux de nationalité belge) qui a été choisi.

Principe de fonctionnement

L'algorithme prend en entrée un bloc de 128 bits (la clé fait 128, 192 ou 256 bits. Les
128 bits en entrée sont « mélangés » selon une table définie au préalable.

Ces octets sont ensuite placés dans une matrice de 4x4 éléments et ses lignes subissent
une rotation vers la droite.

L'incrément pour la rotation varie selon le numéro de la ligne.

Une transformation est ensuite appliquée sur la matrice par un XOR avec une matrice
clé.

Finalement, un XOR entre la matrice et une autre matrice permet d'obtenir une matrice
intermédiaire.

Ces différentes opérations sont répétées plusieurs fois et définissent un «tour».

Pour une clé de 128, 192 ou 256, AES nécessite respectivement 10, 12 ou 14 tours.

L'algorithme AES n'est pas cassé à la date d'aujourd'hui.

Figure 1. 13: Principe de fonctionnement AES [21]

17
Malgré toutes ses évolutions et ses mises en œuvre, la cryptographie à clé secrète est
toujours entravée par un défaut : la condition sine qua non de son succès est et restera le secret
de sa clé Bien qu'ayant pu au fil du temps réduire sa taille, les cryptographes ont toujours
été confrontés au problème de la transmission de cette clé.

1.2.4 Chiffrement asymétrique

La cryptographie asymétrique à clé publique est apparue pour la première fois en 1976 avec
la publication d’un ouvrage sur la cryptographie par Whitfield Diffie et Martin Hellman, c’est
méthode de chiffrement qui s’oppose à la cryptographie symétrique. Dans un tel crypto
système, les clés existent en paires d’où l’appellation bi-clés :

 Une clé publique pour le chiffrement.


 Une clé secrète pour le déchiffrement.

L’utilisateur d’un crypto système asymétrique, choisit une clé aléatoire (la clé privé), à
partir de cette clé et en appliquant la fonction à sens unique il calcule la clé publique qu’il
diffuse au travers d’un canal non sécurisé. Lorsqu’une personne désire lui envoyer un message
il lui suffit de chiffrer ce dernier à l’aide de la clé publique. Le destinataire sera en mesure de
déchiffrer le message à l’aide de sa clé privé. Ce système est basé sur une fonction facile à
calculer dans un sens (appelé fonction à trappe à sens unique) et mathématiquement très difficile
à inverser sans la clé privée appelé trappe[7], [17], [19].

Figure 1. 14: cryptographie asymétrique [20]

Les principaux algorithmes asymétriques à clé publiques sont RSA (Rivest Shamir Adleman),
DSA (Digital Signature Algorithm) et Diffie-Hellman (échange de clé) [17].

18
1.2.4.1 L’algorithme RSA

Le principe

Le premier système à clé publique solide à avoir été inventé, et le plus utilisé
actuellement, est le système RSA. Publié en 1977 par Ron Rivest, Adi Shamir et Leonard
Adleman de l'Institution de technologie du Massachusetts, le RSA est fondé sur la difficulté de
factoriser des grands nombres, et la fonction à sens unique utilisée est une fonction "puissance".

L’algorithme de chiffrement

1. Choisir p et q, deux nombres premiers distincts ;

2. calculer leur produit n  p  q , appelé module de chiffrement ;

3. calculer   n   p 1 q 1 (c'est la valeur de l'indicatrice d'Euler en n) ;

4. choisir un entier naturel e premier avec   n  et strictement inférieur à   n  ,

appelé exposant de chiffrement ;

5. calculer l'entier naturel d , inverse de e    n , et strictement inférieur à φ(n),

appelé exposant de déchiffrement ; d peut se calculer efficacement par l'algorithme


d'Euclide étendu.

Comme e est premier avec   n  , d'après le théorème de Bachet-Bézout il existe deux

entiers d et k tels que ed  1  k  n , c'est-à-dire que ed  1   n   et eest bien inversible

modulo   n  .

Le couple (n, e) ou (e, n) est la clé publique du chiffrement, alors que sa clé privée est le
nombre d , sachant que l'opération de déchiffrement ne demande que la clef privée d et
l’entier n, connu par la clé publique (la clé privée est parfois aussi définie comme le couple
(d, n) ou le triplet (p, q, d).

Si M est un entier naturel strictement inférieur à n représentant un message, alors le

message chiffré sera représenté par M  C  n et l'entier naturel C étant choisi strictement
e

inférieur à n.

19
Pour déchiffrer C , on utilise d, l'inverse de e mod  p 1 q 1 , et l'on retrouve le

message clair M par M  C  n [22].


d

1.2.4.2 Deffie et Hellman

Parallèlement à leur principe de cryptographie à clé publique, Diffie et Hellman ont


proposé un protocole d'échanges de clés totalement sécurisées, basé sur des fonctions difficiles
à inverser.

1. Choisir n et p, deux nombres premiers distincts ;


2. L’entité A génère un nombre aléatoire a et l’entité B génère un nombre aléatoire b
3. A calcule Ka=namod p ; B calcule Kb=nbmod p
4. L’entité A transmet Ka à B ; L’entité B transmet Kb à A
5. Echange de données chiffrées : s = (Ka)b = (Kb)a = nabmod p

s est le secret commun de l’entité A et B

Les avantages
 Le problème consistant à se communiquer la clé de déchiffrement n’existe plus, dans
la mesure où les clés publiques peuvent être envoyées librement. Le chiffrement par
clés publiques permet donc à des personnes d’échanger des messages chiffrés sans
pour autant posséder de secret en commun, seule la clé secrète à besoin d’être
conservée de manière secrète.
 Selon l’usage, une paire de clé (publique/secrète) peut être utilisée plus longtemps
qu’une clé symétrique.
 La cryptographie à clé publique permet de réaliser des schémas de signature
électronique assurant un service de non répudiation.
 Dans un grand réseau, le nombre de clés est beaucoup plus petit que dans un système
symétrique car seulement 2n clés sont nécessaires s’il y a n utilisateurs dans le réseau
[7], [17], [19].

20
Les inconvénients
 Tout le challenge consiste à s’assurer que la clé publique que l’on récupère est bien
celle de la personne à qui l’on souhaite faire parvenir l’information chiffrée.
 Les performances des systèmes asymétriques sont beaucoup moins bonnes que
celles des systèmes symétriques car ces systèmes nécessitent de pouvoir calculer sur
des grands nombres.
 La taille des clés est généralement plus grande pour ces systèmes que pour les
systèmes à clé secrète.

Aucun crypto système à clé publique n’a été prouvé inconditionnellement sur, car
la base de ces crypto systèmes sont la fonction à sens unique dont la réciproque est en
pratique impossible à calculer et donc le crypto système impossible à casser, mais on
n’a pas la certitude qu’une fonction considérée aujourd’hui à sens unique ne sera pas
demain résolu et considérée comme banale. La cryptographie à clé publique nécessite
la mise en place d’une infrastructure de gestion de clé afin d’éviter les attaques par le
milieu [7], [17], [19].

Le tableau suivant montre une comparaison entre chiffrement symétrique et


asymétrique :

Tableau 1. 1: comparaison chiffrement symétrique et asymétrique

Chiffrement symétrique Chiffrement asymétrique


Sécurité Plus sécurisé Moins sécurisé
Performance Consomme moins de Consomme plus de
ressources ressources
Vitesse Rapide Lent
Utilisation Facile à mettre en œuvre Plus difficile a utilise

21
1.2.5 Les fonctions de Hachages

Le hachage est une fonction appliquée à une chaîne de caractères ou de bits pour
produire une valeur de hachage (une suite de bits). La valeur de hachage est une empreinte
numérique du message. La valeur de hachage est également appelée message digest ou somme
de contrôle. La fonction de hachage fournit une sortie de longueur fixe : quelle que soit la
longueur du message qu'on lui soumet, la fonction de hachage produit toujours une valeur de
hachage contenant le même nombre de bits.

Une fonction de hachage cryptographique est une fonction de hachage qui possède certaines
caractéristiques. En particulier, une fonction de hachage cryptographique est une fonction à
sens unique, c'est-à-dire une fonction dont l'inverse est impossible à calculer, même en utilisant
une grande puissance de calcul durant une longue période de temps. Les fonctions de hachage
cryptographique sont généralement utilisées pour :

 Vérification de l’intégrité d’un message


 Signature de documents
 Validation de mots de passe

Dans ce chapitre, nous avons décrit le fonctionnement du SMS dans un réseau GSM et nous
avons vu les différents équipements utilisés lors de sa transmission. Nous avons aussi décrit
quelques algorithmes de chiffrements les plus utilisés, mais bien sûr il en existe beaucoup
d’autres. Le choix de l’algorithme doit dépendre de l’application envisagée et donc des
caractéristiques désirées et de l’espace mémoire disponible. Dans notre projet nous avons décrit
les méthodes de chiffrement moderne comme algorithme AES (clé secrète) et l’algorithme
RSA (clé publique).

Dans le prochain chapitre, nous allons décrire la sécurité des SMS dans un réseau GSM puis
nous allons présenter les applications qui proposent une solution d’amélioration de la sécurité
de ces SMS.

22
CHAPITRE 2: METHODE DE SECURISATION DE LA
COMMUNICATION PAR SMS
Le but de notre travail est d’apporter une amélioration à la sécurité des échanges des SMS
au travers d’un réseau mobile afin de garantir la confidentialité de cet échange. Pour atteindre
ce but, Nous avons conçu une application androïde (XSMS) permettant le chiffrement bout-en-
bout des SMS. Dans ce chapitre, nous présenterons tout d’abord les différents mécanismes de
sécurité utilisés dans le réseau GSM, ensuite nous passerons en revue les différentes
applications qui existent sur le marché et enfin nous ferons un cahier de charge de notre
application.

2.1 Sécurité dans le réseau GSM

Lorsqu’un abonné souscrit à un abonnement mobile auprès d’un opérateur, il reçoit un


identifiant unique appelé IMSI (International Mobile Subscriber Identity). Ce numéro d ’IMSI
est stocké sur la carte SIM. Un téléphone mobile ne peut être utilisé que si une carte SIM valide
a été insérée dans l’équipement mobile.

Une clé Ki est attribuée à l’usager, lors de l’abonnement, avec l’IMSI. Elle est stockée
dans la carte SIM de l’abonné et dans l’AUC (Authentication Center qui fait généralement
partie du HLR) au niveau du réseau. Afin d’éviter toute possibilité de lecture de la clé Ki, celle-
ci n’est jamais transmise, ni sur l’interface radio, ni sur le réseau.

Figure 2. 1: clé d’authentification Ki [23]

23
Le centre d’authentification AuC dispose de l’algorithme d’authentification A3, de
l’algorithme de génération de la clé de chiffrement A8 et des clés Ki des clients du réseau GSM.
Le BTS dispose de l’algorithme de chiffrement A5 pour le chiffrement des données usager et
des données de signalisation. La carte SIM du mobile dispose de l’algorithme d’authentification
A3, de l’algorithme de génération des clés de chiffrements A8, de la clé d’authentification
individuelle de l’utilisateur Ki. L’algorithme de chiffrement A5 est contenu dans l’équipement
mobile. Les algorithmes A3 et A8 sont quant à eux les mêmes pour tous les clients d’un même
réseau GSM [24].

La sécurité GSM est axée sur deux plans : authentification et chiffrement.

2.1.1 Authentification dans le réseau GSM

L’authentification au niveau du GSM se fait par la station de base qui envoie un


challenge au mobile. Le mobile utilise alors la clé ki stocké dans sa carte SIM afin de fournir
une réponse. Cette phase permet d’authentifier le mobile et non l’utilisateur.

Afin de recevoir un appel/faire un appel ou envoyer/recevoir un SMS, le mobile doit


s’authentifier auprès du réseau. Le processus d’authentification est comme suit :

 Une clé d’authentification unique est programmée sur la carte SIM. Le centre
d’authentification (AUC) contient une base de données qui contient qui mappe la clé Ki
avec la carte SIM. Cette base de données est sécurisée
 Lorsqu’un abonné veut effectuer un appel, un nombre aléatoire (RAND) de 128 bits est
instantanément généré par l’AUC et transmis à la carte SIM.
 L’algorithme A3 qui est stocké dans la carte SIM utilise ce RAND et la clé Ki pour
générer un nombre de 32 bits appelé SRES (Signed Response Number)
 Le même processus est fait par l’AUC
 Le mobile transmet le SRES à l’AUC
 L’AUC compare le SRES reçu avec le SRES générer de son coté
 Le mobile est authentifié si et seulement si les deux SRES sont identiques [25].

24
Figure 2. 2: Processus d’authentification [25]

2.1.2 Chiffrement

Le GSM utilise les informations stockées sur la carte SIM du téléphone afin de fournir une
communication chiffrée. Le chiffrement dans le réseau GSM est uniquement pour les
communications entre un téléphone mobile et la station de base. Le reste de la transmission sur
le réseau ou le relais radio n’est pas protégé. Ainsi, il pourrait facilement être écouté ou modifié.
Dans certains pays, la fonction de chiffrement de la station de base n’est pas du tout
activée, laissant l’utilisateur totalement inconscient du fait que la transmission n’est pas
sécurisée. Le chiffrement dans le GSM est réalisé par l’utilisation d’une clé secrète partagée.
Si cette clé est compromise, il sera possible que la transmission soit écoutée et que le téléphone
soit cloné (l’identité du téléphone peut être copiée). Une clé de 64-bits est utilisé afin d’assurer
la confidentialité des données. Il n’est pas possible de chiffré toutes les données ; par exemple
certaines informations de routage doivent être envoyées en texte clair. Le processus de
chiffrement est le suivant :

 L'AuC génère un nombre aléatoire (RAND) de 128 bits et l'envoie à la MS.


 Le RAND et le nombre Ki sont traités par l'algorithme A8 des deux côtés
 L'algorithme A8 produit une clé de chiffrement de 64 bits (Kc).

25
 L'algorithme A5 prend la clé Kc et les données à transmettre comme entrée et chiffre en
conséquence les données.
 L'algorithme A5 est différent pour chaque fournisseur de services et était très secret
[26].

Figure 2. 3: processus de chiffrement [26]

2.2 Généralités sur l’Algorithme A5

2.2.1 Description de l’algorithme A5

En GSM, le chiffrement est réalisé entre le mobile et la BTS dans le mode circuit. Il
existe trois versions de l’algorithme A5 qui sont A5/0, A5/1 et A5/2, en fonction du niveau
de chiffrement permis. En GPRS est une nouvelle version de l’algorithme A5 qui est conçue
spécialement pour la transmission de paquets, c’est l’algorithme A5/3 [23].

2.2.1.1 L’algorithme A5/1

L'algorithme A5/1 est construit d'une manière plus simple à partir de trois registres à
décalage à rétroaction linéaire (LFSR) R1, R2 et R3 de longueurs 19, 22 et 23 bits
respectivement. Le bit droit de chaque registre est étiqueté comme bit zéro. Les robinets
(Taps : bits xoré pour produire le feedback) de R1, R2 et R3 sont placés à des positions de

26
bits 13, 16, 17, 18 pour R1, 20 et 21 pour R2 et des positions des bits 7, 20, 21, 22 pour le
troisième registre R3.

Lorsqu'un registre est décalé, les valeurs des robinets sont xorés ensemble et le résultat
est stocké dans le bit de la position zéro du registre à gauche décalée. Les registres sont
décalés avec une procédure en utilisant une règle majoritaire. Chaque registre a un seul
robinet (bits xoré pour produire le feedback) pour contrôler son décalage, le bit 8 pour R1,
le bit 10 pour R2, et le bit 10 pour R3. A chaque cycle d'horloge, une fonction majoritaire
des robinets de contrôle de décalage est calculée et seuls les registres dont le robinet égale
le bit majoritaire sont décalés. Par conséquent, au moins deux registres sont décalés à
chaque étape [27].

Figure 2. 4: L’algorithme A5/1[27]

L'algorithme A5 / 1 prend en entrée une clé Kc de 64 bits et un numéro de trame Fn de


22 bits et produit une clé de chiffrement (keystream) de 228 bits. La sortie est le résultat des
bits 18, 21 et 22 xorés ensemble.

Les 114 premiers bits de la séquence de clé sont utilisés pour chiffrer le trafic de la
liaison descendante de la station de base BTS vers la station mobile MS, tandis que les 114
derniers bits sont réservés pour le chiffrement du trafic de la liaison montante du MS vers
la BTS [27], [28].

De l'initialisation à la génération de la clé de chiffrement de 228 bits (keystream), le


processus est effectué comme suit :

Etape 1 : Tous les trois registres sont mis à 0. Ensuite, pendant 64 cycles, la clé est mélangée
dans les registres en parallèle à l'aide de l'algorithme suivant :

27
Pour i = 0 à 63 Faire

R1 [0] = R1 [0] ⊕Kc [i]

R2 [0] = R2 [0] ⊕Kc [i]

R3 [0] = R3 [0] ⊕Kc [i]

Décalage de tous les trois registres selon le schéma régulier.

Fin pour

Où Ri [0] désigne le bit le moins signifiant lsb du registre Ri, Kc [0] le bit le moins signifiant
lsb dans la clé Kc et Kc [29] est le bit le plus significatif. Il est important de noter que la
règle majoritaire n'est pas appliquée à ce stade.

Etape 2 : 22 cycles supplémentaires sont décalés, ignorant ainsi la fonction majoritaire. Au


cours de cette période, le numéro de trame Fn est xoré avec le bit le moins signifiant lsb des
registres de la même manière qu'avec la clé Kc, qui est:

Pour i = 0 à 21 faire

R1 [0] = R1 [0] ⊕Fn [i]

R2 [0] = R2 [0] ⊕Fn [i]

R3 [0] = R3 [0] ⊕Fn [i]

Décalage de tous les trois registres selon le schéma régulier.

Fin pour

Etape 3 : 100 cycles supplémentaires sont effectuées en appliquant la règle majoritaire,


mais sans production de sortie. Le contenu des registres à la fin de cet état est ce que nous
appelons l'état initial de l’algorithme A5 / 1 [28] .

Etape 4 : 228 cycles sont réalisés pour produire 228 bits de keystream qui présente la clé
de chiffrement xoré avec le message en clair (plaintext), afin de crypter les données.

28
2.2.1.2 L’algorithme A5/2

A5/2est un algorithme de chiffrement par flot utilisé en GSM en dehors de l'Europe. Il


est basé sur la combinaison non-linéaire de quatre registres à décalage à rétroaction linéaire
(LFSR) de longueurs 19, 22, 23, 17 bits désignés par R1, R2, R3 et R4, respectivement.
Chaque registre est mis à jour par son propre polynôme primitif de rétroaction. Les
fonctions de contre-réaction de R1, R2 et R3 de l’algorithme A5 / 2 sont les mêmes que
ceux des registres R1, R2 et R3 de l’algorithme A5 / 1.

Figure 2. 5: L’algorithme A5/2 [30]

Le décalage des registres R1, R2 et R3 est commandé par le registre R4 qui sera décalé
régulièrement dans chaque cycle d'horloge. La majorité des bits, R4 (3), R4 (7) et R4 (10),
est calculé et un résultat binaire selon la règle majoritaire est obtenu. Si le résultat est le
même que R4 (3), alors R2 est décalé, si le résultat est le même que R4 (7), alors R3 est
décalé, et si le résultat est le même que R4 (10), alors le registre R1 est décalé.

Après cette étape le Registre R4 sera décalé. Il est évident que le mécanisme de contrôle
de décalage des registres R1, R2 et R3 dépend de la règle majoritaire dans les deux
algorithmes A5 / 1 et A5 / 2. Cependant, les entrées de ce mécanisme sont fournies par le
registre R4 dans le cas de l’algorithme A5 / 2 et par les registres R1, R2 et R3 dans le cas
de l’algorithme A5/1.

Le bit de sortie est généré de la façon suivante : dans chaque registre le majoritaire, entre
deux bits en complément avec un troisième bit, est calculé ; les résultats de tous les
majoritaires et le bit le plus signifiant de chaque registre sont Xorés pour produire un bit de
sortie [30].

29
2.2.2 Attaques contre l’algorithme A5

Peu après que l'algorithme A5 soit rendu public et examiné par des experts, il était
évident que le cryptage peut être attaqué et cassé par des méthodes faciles. Le principal
défaut c’était la taille de la clé Kc. Les algorithmes A5/1 et A5/2 n'ont pas été conçu avec
des connaissances cryptographiques modernes. La complexité de recherche exhaustive
maximale est seulement de 264 dans l’algorithme A5/1.En outre, la taille de la clé réelle est
de 54 au lieu de 64 car les 10 derniers bits sont mis à zéro, ce qui réduit la recherche à 254.

La sécurité des algorithmes de chiffrement par flux A5 a été soumise à plusieurs attaques
de cryptanalyse. Ces attaques sont de différentes natures, ils sont en générale de type :
attaques par compromis temps mémoire, attaques par force brute, attaques par corrélation
où attaques diviser et déterminer.

2.2.2.1 Attaque par compromis temps mémoire

Connue sous le nom anglais de Time memory trade off attacks (TMTO).Ce genre
d'attaque travaille au niveau de l'état interne du système de chiffrement donné. Le point
focal de l'attaquant est de trouver l'état interne qui génère un keystream donné. La
cryptanalyse par compromis temps-mémoire est utilisée pour récupérer les clés de leur trace
cryptée, basée sur des tables pré calculées. Cette méthode a été formalisée par Martin
Hellman dans son article « a cryptanalytic time-memory trade-off » publié en 1980.
L'attaquant cherche à trouver une correspondance entre les chiffrements de flux avec le
chiffrement de flux pré calculée enregistré précédemment dans une table. S'ils sont adéquats
alors la clé est déterminée [31].

2.2.2.2 Attaque par force brute

L'attaque par force brute est une méthode utilisée dans la cryptanalyse pour trouver un
mot de passe ou une clé en testant toutes les combinaisons possibles une par une. Cette
méthode est généralement considérée comme la plus simple envisageable, mais le temps
augmente avec la longueur du mot de passe ou de la clé recherchée. En théorie, la
complexité d'une attaque de force brute est une fonction exponentielle. Cette méthode est
peut être combinée avec l'attaque par arc en ciel (Rainbow Tables) et l’attaque par
dictionnaire pour trouver rapidement la clé secrète [31].

30
2.2.2.3 Attaque par corrélation

Une corrélation est une méthode d'analyse cryptographique utilisée contre le générateur
de chiffrement par flux, il est possible de l'exploiter lors de l'existence d'une corrélation
possible entre la sortie du générateur de chiffrement et celle de l'un des registres utilisés
pour déchiffrer les données [31].

2.2.2.4 Attaque par deviner et déterminer (GD)

Ceci est encore un autre type d'attaques qui vise à découvrir une partie des états internes
du chiffrement afin d'en extraire les autres états de keystream connus. Guess and determine
attack (GD) est considérée comme l'une des premières attaques sur A5 / 1 [31].

La messagerie SMS a des failles de sécurité supplémentaires en raison de son attribut


store and forward, et le problème des SMS qui peut être effectué via Internet et leurs
contenus passent à travers différents réseaux et peut être exposé à diverses vulnérabilités et
attaques.

2.3 Présentation des Applications Existantes

Avec toutes ces failles de l’algorithme A5, certaines applications ont été développées
pour améliorer la sécurité lors de l’échange de SMS. Cette solution consiste à créer un système
de chiffrement de bout en bout. Nous allons présenter ces différentes applications : TextSecure
et Silence.

2.3.1 TextSecure

TextSecure est une ancienne application mobile gratuite sur Android. Elle permet
d'envoyer des SMS chiffré à d'autres utilisateurs de l'application. Elle était développée par
Open Whisper Systems et distribuée comme logiciel libre et open source sous la
licence GPLv3. TextSecure a été remplacé par Signal, du même éditeur, le 29 juillet 2014
[32]. Les raison de ce remplacement sont les suivantes :

 L’envoi des SMS/MMS chiffrés ne peut se faire de façon transparente : les


utilisateurs doivent manuellement créer un premier échange de clés. Le problème est
que les gens ne savent pas tous ce que représente réellement « une clé », ce qui rend
moins efficace ce genre de solution.
 L’arrivée de la compatibilité iOS : avec Signal, iOS se voit disposer d’une solution
compatible avec TextSecure. Cependant, iOS ne possède pas d’API qui permet à Signal

31
d’envoyer/recevoir des SMS programmés. Ce qui rend impossible la lecture
des SMS chiffrés. Cela peut donc perturber les utilisateurs.
 Paranoïa sécuritaire : en voulant se focaliser sur la sécurité des SMS et MMS, les
développeurs n’ont plus de temps à accorder au développement de TextSecure afin de
la rendre meilleure.

TextSecure était le premier protocole à utiliser le protocole Signal qui est aujourd’hui
implémenté par les applications de messagerie tel que WhatsApp, Facebook et Messenger
pour le chiffrement des conversations [33]. Le protocole combine l’algorithme double
ratchet avec des prekeys et un triple échange de cles Diffie-Hellman (3-DH), ainsi que
des Curve25519, AES et Keyed-Hash message authentication code comme primitives
[34].

Limites de TextSecure

TextSecure étant devenu signal, il ne supporte plus l’envoi de SMS sécurisé. Pour
utiliser cette nouvelle version, Signal, il faut utiliser son numéro de téléphone pour
vérification lors de l’installation de l’application, faut être connecté à internet.

2.3.2 Silence

Silence est un logiciel libre, open source de chiffrement de messagerie, issu


d'un fork du logiciel TextSecure. Il permet l'échange sécurisé de messages de type SMS
et MMS avec d’autres utilisateurs de Silence. Les messages stockés sur votre appareil sont
chiffrés localement, ce qui permet de les protéger en cas de perte, vol ou saisie de l'appareil
[35].

Apres le démarrage d’une session chiffrée dans silence, tous les


messages SMS ou MMS envoyés à l'interlocuteur seront automatiquement chiffrés avant de
partir, et déchiffrés à l'arrivée. Le flux n'est donc disponible en clair à aucun autre moment
que dans la mémoire de l'applicatif au départ, et à l'arrivée. Cette opération de chiffrement
déchiffrement automatique implique que seul le récipiendaire sera en mesure de décoder le
message envoyé, de manière automatique, tant que la session chiffrée durera.
Les clés utilisées pour chiffrer les messages sont stockées sur le seul téléphone, et sont
protégées par une couche de chiffrement supplémentaire si l'utilisateur à une passe
phrase paramétrée. Il utilise les mêmes algorithmes de chiffrement comme son prédécesseur
TextSecure [36].

32
Limites de Silence

 Ne prends pas en considération les messages précédents qui sont dans le téléphone.
 Echange de clés se fait de façon manuel

2.3.3 Tableau comparatif

Le tableau suivant montre une comparaison entre notre application XSMS et l’autre
application étudier plus haut.

Tableau 2. 1: Tableau comparatif des solutions existantes

caractéristiques TextSecure Silence


Envoi de SMS Plus supporter En claire/Chiffrer
Echange de clés Automatique Manuel
Protocol utilisé Signal Signal
Type de chiffrement Hybride Hybride
Plateforme Android/IOS Android
Utilise Internet Oui Non

2.4 Cahier de Charges

Un cahier des charges a pour fonction de formaliser un besoin afin que ce dernier soit
compris par l’ensemble des acteurs impliqué dans le projet. Il précise l’ensemble des
spécifications attendues.

2.4.1 Objectifs du projet

L’objectif final de ce projet est de produire une application permettant le chiffrement de


bout-en-bout de nos SMS. Cette application permettra donc de garantir la confidentialité des
utilisateurs lors de leurs échanges par SMS.

33
2.4.2 Description de l’Existant

Quelques applications dans le sens de l’amélioration de la confidentialité des SMS ont


déjà été réalisées. Ceux-ci sont brièvement décrits dans la section 2.3 de ce chapitre.

2.4.3 Expression des besoins

Cette section décrit les besoins (fonctionnels et non fonctionnels) auxquels doit répondre
l’application à développer.

2.4.3.1 Besoins Fonctionnels

Les besoins fonctionnels ou besoins métiers représentent les actions que le système doit
exécuter, il ne devient opérationnel que s’il les satisfait. Cette application doit couvrir
principalement les besoins fonctionnels suivants [37]:

 Envoi de SMS
 Réception de SMS
 Gérer les SMS (Supprimer, rechercher)

2.4.3.2 Besoins non fonctionnels

Cette application doit être compatible avec tous les téléphones Android. Elle doit
satisfaire aux besoins suivant :

 Etre ergonomique
 Etre invisible : Son fonctionnement ne doit pas interférer avec celui des autres
applications.
 Le code doit être clair pour permettre des futures évolutions ou améliorations.

2.4.4 Solution adoptée

L’application devant faire preuve de transparence et de performance, le choix de la


méthode d’analyse et du langage de programmation ne doit pas être fait au hasard.

2.4.4.1 Choix de la méthode d’analyse et de Conception

Une méthode d’analyse et de conception a pour objectif de formaliser les étapes


préliminaires du développement d’un système afin de rendre son développement plus fidèle aux
besoins du client. Il existe plusieurs méthodes d’analyse et de conception à savoir : RACINES,
MERISE, NIAM, OMT (Object Modeling Technique), Booch, UML etc. Chacune de ces
méthodes a été mise sur pied pour résoudre un problème persistant (robustesse, maintenance,

34
sécurité…) dans l’industrie du développement logiciel. Le choix d’une méthode d’analyse
dépend essentiellement de la composition de l’équipe. Il n’est pas conseillé de choisir une
méthode qui implique une formation préalable de la majorité des membres du groupe. Afin de
réduire le temps d’apprentissage d’une nouvelle méthode, nous avons opté pour la méthode
d’analyse UML.

2.4.4.2 Choix du langage de programmation

Il existe de nombreux langages de programmation qui permettent d’écrire le code dans


un langage. Ce langage doit être compilé afin d’être compréhensible par l’ordinateur. Le choix
de ce langage est primordial, car de lui va dépendre le temps de développement et la
performance de l’application. Plusieurs langages s’offrent à nous à savoir Java, C++, C, C#,
PHP etc.

Notre choix porte sur le langage java Android studio ceci pour les raisons ci-après :

 Son IDE (Android Studio), est suffisamment riche et propose assez d’outils permettant
de faciliter le développement (coloration syntaxique, complétion automatique,
compilateur intégré, aide locale et en ligne, debugger très performant).
 C’est un langage qui nous est familier.
 Forte communauté

Dans ce chapitre, nous avons vu la sécurité dans le réseau GSM. Nous avons aussi décrit
l’algorithme de chiffrement A5 utilisé par défaut pour garantir la sécurité de nos SMS.
Néanmoins cet algorithme est vulnérable. Pour contribuer à l’amélioration de la sécurité de nos
SMS, nous avons proposé l’application XSMS qui utilise le protocole X-Talk pour l’échange
dynamique des clés de chiffrement lors d’une conversation par SMS. Dans la suite de notre
travaille, nous allons faire l’analyse et la conception de notre application ainsi que son
implémentation.

35
CHAPITRE 3: DEVELOPPEMENT LOGICIEL
Dans ce chapitre, Nous allons dans un premier temps présenter brièvement l’outil d’analyse
que nous avons utilisé pour implémenter les modules principaux de notre application. Ensuite
produire un organigramme de fonctionnement de l’application et présenter les interfaces de
l’application. Pour finir, nous ferons l’implémentation proprement dite de ces modules.

3.1 Analyse et Conception

L’analyse et la conception d'une application font appel aux méthodes et langages de


modélisation orientée objet. À chacune des différentes phases de la conception d’un logiciel
correspondent des problèmes ou des contraintes différentes. Naturellement, ces niveaux ont fait
l’objet de recherches méthodologiques considérables depuis les années 80. Il en résulte que de
nombreuses méthodes de développement ou d’analyse de logiciel ont vu le jour, chacune plus
ou moins spécialisée ou adaptée à une démarche particulière, voire à un secteur industriel
particulier (bases de données, matériel embarqué, etc.). Celles-ci ayant été développées
indépendamment les unes des autres, elles sont souvent partiellement redondantes ou
incompatibles entre elles lorsqu’elles font appel à des notations ou des terminologies
différentes.

De plus, à chaque méthode correspond un ou plusieurs moyens (plus ou moins formel) de


représentation des résultats. Celui-ci peut être graphique (diagramme synoptique, plan physique
d’un réseau, organigramme) ou textuel (expression d’un besoin en langage naturel, jusqu’au
listing du code source). Dans les années 90, un certain nombre de méthodes orientées objets ont
émergé, en particulier les méthodes :

 OMT (Object Modeling Technique) de James RUMBAUGH


 BOOCH de Grady BOOCH
 OOSE (Object Oriented Software Engineering) de Ivar JACOBSON à qui l’on doit les
Use Cases.

En 1994, on recensait plus de 50 méthodologies orientées objets. C’est dans le but de


remédier à cette dispersion que les « poids-lourds » de la méthodologie orientée objets ont
entrepris de se regrouper autour d’un standard.

En octobre 1994, Grady Booch et James Rumbaugh se sont réunis au sein de la société
RATIONAL [38] dans le but de travailler à l’élaboration d’une méthode commune qui intègre
les avantages de l’ensemble des méthodes reconnues, en corrigeant les défauts et en comblant
36
les déficits. Lors de OOPSLA’95 (Object Oriented Programming Systems, Languages and
Applications, la grande conférence de la programmation orientée objets), ils présentent
UNIFIED METHOD V0.8. En 1996, Ivar Jacobson les rejoint. Leurs travaux ne visent plus à
constituer une méthodologie, mais un langage. Leur initiative a été soutenue par de
nombreuses sociétés, que ce soit des sociétés de développement (dont Microsoft, Oracle,
Hewlett-Packard, IBM – qui a apporté son langage de contraintes OCL –, ...) ou des sociétés de
conception d’ateliers logiciels. Un projet a été déposé en janvier 1997 à l’OMG (Object
Management Group, qui s’est rendu célèbre pour la norme CORBA [39] ) en vue de la
normalisation d’un langage de modélisation. Après amendement, celui-ci a été accepté en
novembre 97 par l’OMG sous la référence UML-1.1. La version UML-2.0 est la plus rependue
et la plus utilisée à nos jours [40]. C’est cette dernière que nous utiliserons pour la modélisation
de notre application. Nous pouvons résumer l'historique de la constitution d'UML par la figure
ci-dessous.

Figure 3. 1: Historique de la constitution d’UML [40]

37
3.1.1 Présentation d'UML

UML est un langage graphique de modélisation. UML est issue de la fusion en 1997 de
trois langages de modélisation (les plus utilisés à l’époque) à savoir : OMT (Object Modeling
Technique) de James RUMBAUGH, BOOCH de Grady BOOCH et OOSE (Object Oriented
Software Engineering) d’Ivar JACOBSON comme nous l’avons précisé plus haut. UML est
aujourd’hui le standard de modélisation orienté objet le plus utilisé en génie logiciel, il est géré
par l’OMG (Object Management Group) qui fait évoluer le standard. Cette partie sera
essentiellement basée sur la présentation des vues et diagrammes principaux associés à chaque
vue.

3.1.2 Les Vues et diagrammes d’UML

UML est un langage graphique, il est donc basé sur l’utilisation des diagrammes (13 au
total). Ces diagrammes sont organisés en vues. Une vue étant un moyen de décrire un système
suivant un angle donné. À chaque vue correspond des diagrammes UML. UML modélise un
système selon trois axes ou vues à savoir : la Vue fonctionnelle, la vue dynamique et la vue
statique. On peut observer ci-dessous à la figure 3.2 le schéma modélisant ces trois axes (les
diagrammes mis entre parenthèses sont ceux qui retiendront notre attention dans chaque vue).

Figure 3. 2: Trois axes de modélisation UML

38
3.1.2.1 La vue fonctionnelle

Encore appelée vue interactive, elle illustre les interactions entre les différents
acteurs/utilisateurs et le système, sous forme d’objectif à atteindre d’un côté et sous forme
chronologique de scénario d’interactions typiques de l’autre. Elle se compose de trois
diagrammes : le diagramme des cas d’utilisation, le diagramme des séquences, diagramme de
classe.

 Diagramme de cas d’utilisation

Ces diagrammes permettent de représenter les exigences du point de vue purement fonctionnel
du système à réaliser. Un cas d’utilisation fait référence à un usage particulier du système utilisé
à une fin précise. À chaque cas d’utilisation doit être associé un acteur (utilisateur humain,
dispositif matériel ou autre système) du système qui peut le réaliser. Un cas d’utilisation peut
être inclus dans un autre ou étendre un autre. Les relations d’inclusion sont utilisées pour
indiquer que la réalisation d’un cas d’utilisation passe par la réalisation préalable d’une autre
tandis que la relation d’extension quant à elle est utilisée pour indiquer qu’un cas d’utilisation
ajoute un comportement à un autre.

 Présentation des cas d’utilisation de l’application

Pour mieux comprendre les cas d’utilisation que nous allons présenter ci-dessous il est
intéressant d’identifier chaque acteur avec ses différents rôles pour enfin ressortir facilement
ces différents cas d’utilisation. Un acteur représente un rôle joué par un utilisateur humain ou
un autre système qui interagit directement avec le système étudié. Un acteur participe à au
moins un cas d’utilisation. Un acteur peut consulter et/ou modifier directement l’état du
système, en émettant et/ou en recevant des messages susceptibles d’être porteurs de données.

Dans notre cas, nous avons un acteur qui est l’Utilisateur ayant un accès au système. Les
opérations qu’il peut effectuer sont:

 Envoyer et recevoir des SMS


 Parcourir ses SMS
 Supprimer des SMS
 Rechercher des SMS

La figure 3.3 présente le diagramme de cas d’utilisation de notre application.

39
Figure 3. 3: diagramme de cas d’utilisation

3.1.2.2 La vue dynamique

La vue dynamique est orientée algorithme et traitement, elle vise à décrire l’évolution des
objets complexes du programme tout au long de leur cycle de vie. De leur naissance à leur mort,
les objets voient leurs états changés et ce à cause de leur interaction avec d’autres objets du
programme. La vue dynamique est constituée des diagrammes d’états, des diagrammes
d’activité, des diagrammes de séquence et des diagrammes de communication.

 Diagramme de séquence

Les diagrammes de séquences mettent en valeur les échanges de messages (déclenchant des
événements) entre acteurs et objets (ou entre objets et objets) de manière chronologique
(l’évolution du temps se lisant de haut en bas). Chaque colonne correspond à un objet (décrit
dans le diagramme des classes), ou à un acteur (introduit dans le diagramme des cas). La ligne
de vie de l’objet représente la durée de son interaction avec les autres objets du diagramme. Les
différents diagrammes de séquence de notre application sont présentés sur les figures ci-
dessous.

La figure 3.4 représente le diagramme de séquence lié à l’envoi et à la réception du SMS


chiffré, de la procédure de chiffrement et déchiffrement ainsi que de l’insertion du SMS dans
la base de données.

40
Figure 3. 4: Diagramme de Séquence envoi de SMS

Figure 3. 5: Diagramme de Séquence envoi de SMS

La figure 3.6 représente le diagramme de séquence lié à la suppression d’un SMS. On


suppose que l’utilisateur ait envie de supprimer certains de ses SMS reçus.

41
Figure 3. 6: Diagramme de séquence supprimer un SMS

La figure 3.7 représente le diagramme de séquence lié à la recherche d’un SMS. On


suppose que l’utilisateur ait envie de trouver un SMS rapidement.

Figure 3. 7: Diagramme de séquence rechercher un SMS

42
3.1.2.3 La vue structurelle ou statique

La vue structurelle présente la structuration des données et identifie les objets/composants


constituant le programme, leurs attributs, opérations et méthodes, ainsi que les liens ou
associations qui les unissent. Elle regroupe également les classes fortement liées entre elles en
des composants les plus autonomes possibles. Cette vue a pour objectif principal de modéliser
la structure des différentes classes d’une application orientée objet ainsi que leurs relations. La
vue statique est constituée des diagrammes de classes, des diagrammes de packages, des
diagrammes d’objets, des diagrammes de structure composite, des diagrammes de déploiement.

 Diagramme de classe

Le diagramme de classe est le diagramme le plus important dans la modélisation UML (il
est le diagramme prioritaire pour les outils de génération automatique de code). Ces
diagrammes sont représentés avec plus ou moins d’exhaustivité selon que l’on est en phase
d’analyse, de conception ou d’implémentation. Avant de dessiner un diagramme de classe il est
donc important de tenir compte de la phase dans laquelle on se trouve ; ainsi donc en phase
d’implémentation on cherche à décrire chaque classe, ses attributs et ses méthodes en pensant
déjà au code qui les implémentera tout en prenant en compte les contraintes matérielles de
temps d’exécution, d’architecture, etc.

 Présentation des concepts utilisés dans le diagramme de classe

Les concepts élémentaires que nous présentons dans cette section sont les plus employés
pour la réalisation de la vue structurelle d’un modèle UML et ceux que nous avons utilisé pour
la réalisation de notre diagramme de classe.

- Une classe

De façon sémantique, en UML une classe définit la structure commune d’ensemble d’objets
et permet la Construction d’objets instances de cette classe. Une classe est identifiée par son
nom.

De façon graphique, une classe se représente à l’aide d’un rectangle sous forme de tableau
à une colonne et trois lignes ; qui contient le nom de la classe (première ligne et éventuellement
le nom du package auquel elle appartient) viennent ensuite les propriétés (deuxième ligne) de
la classe puis ses opérations (troisième ligne).

43
- Les propriétés ou attributs

Pour une classe, une propriété peut être vue comme une forme simple d’association entre
les objets (instances) de la classe et un objet de classe standard. Il s’agit d’une variable qui est
en général propre à l’objet ou qui est peut être commun à tous les objets de la classe (on parle
alors de propriété de classe). Dans un diagramme de classe les propriétés de la classe sont notées
de la façon suivante :

<NomAttribut> : <Type> = [<valeur par défaut>].

- Les opérations

Une opération peut être vue comme une tâche que doit effectuer l’objet lorsqu’on lui fait
appel. En programmation elle représente une méthode de la classe. Dans un diagramme de
classe la notation des opérations se fait de la façon suivante :

<NomOpération> (ListeParamètres) : <TypeRetour>

On distingue deux catégories d’opérations :

o Celles qui modifient l’état de l’objet (ses attributs) : ces opérations sont appelées
modifiants ou mutateurs.
o A l’opposé des opérations d’accès ou accesseurs qui ne se contentent que de
retourner la valeur d’une propriété.

La figure 3.8 suivante présente le diagramme de classe de notre application :

Figure 3. 8: Diagramme de classe de l’application

44
3.2 Schéma fonctionnel de l’application

La figure 3.9 représente le schéma fonctionnel de l’application. Son observation permet


de comprendre les différents processus mis en œuvre pendant l’envoi et la réception d’un SMS.

Figure 3. 9: Schéma fonctionnel de l’application

45
3.3 Présentation de X-TALK

Afin d’automatiser l’échange de clé lors d’une conversation et ceci pour chaque SMS,
nous avons opté pour l’implémentation d’un protocole d’échange de clés cryptographiques
nomme X-TalK.

X-Talk a les fonctions suivantes :

 Génération de la clé (Seed)


 L’échange de la clé de chiffrement lors de l’envoi d’un SMS
 La régénération de la clé (lors de la réception du message)

3.3.1 Description de X-Talk

X-Talk consiste juste à constituer une trame qui sera envoyé comme un SMS au travers
du réseau de l’opérateur. Puis le destinateur pourra lire cette trame et déchiffrer le SMS envoyé.
Pour cela il doit posséder l’application XSMS. La figure 3.10 nous montre la trame formée par
X-Talk.

Figure 3. 10: Trame X-Talk lors de l’envoi de SMS

Indicateur de trame : permet de déterminer le début et la fin de la trame. Il permet aussi de


déterminer si le SMS reçu est chiffrer ou pas

Taille seed : Détermine la taille du Seed

Seed : La "Seed" (graine) est le nombre que va utiliser l'algorithme de génération de nombre
pseudo-aléatoire. Avec cette graine nous pouvons générer le même nombre pseudo-aléatoire
autant qu’on le souhaite.

SMS chiffré : C’est le message destine au destinataire

3.3.2 Envoi du SMS

Les étapes sont les suivantes :

1. L’utilisateur rédige son SMS et click sur le bouton d’envoi


2. Le Seed est générer
3. Une clé secrète de 16-caracteres est générée automatiquement à l’aide de ce Seed

46
4. Le SMS est chiffré en utilisant l’AES et la clé secrète générée
5. Les différentes trames sont construites
6. Les trames sont encapsulées pour être transporté au travers du réseau de l’opérateur.
Cette étape ne dépend pas de nous.

A chaque envoi d’un SMS, une trame est constituée. La clé secrète n’est jamais transmît sur
le réseau mais la Seed

3.3.2.1 Réception du SMS

Les étapes de réception sont les suivantes :

1. L’application reçoit entièrement le SMS


2. Lecture de la trame
3. Le décodage du Seed est effectué
4. Régénération de la clé secrète de 16-caracteres à l’aide du Seed décodé
5. Le SMS est enfin déchiffrer à l’aide de cette clé secrète
6. Le destinataire a accès au SMS déchiffré

La figure suivante décrit l’échange de SMS avec notre application :

Figure 3. 11: Processus d’envoi/Réception X-Talk

47
3.4 Les interfaces de l’application XSMS

L’interface est un espace qui permet à l’utilisateur d’une application quelconque de


communiquer avec le système dans lequel l’application est installée. XSMS possède plusieurs
interfaces de communications avec son utilisateur. Sur ces interfaces, y figurent plusieurs
boutons et des zones de saisie des numéros qui nous serviront à retrouver le téléphone. Nous
avons l’interface de conversation et l’interface de tchat.

 Interface de conversation

Cette interface permet juste d’afficher les dernières conversations de l’utilisateur. Ceci est
rangé en fonction de la date du SMS reçu. Cette interface permet juste de montre les derniers
messages reçus ou envoyés.

Figure 3. 12: Interface de conversation

 Interface de tchat

Cette interface permet de montrer les conversations par rapport à un seul utilisateur. Cette
interface est constituée des champs suivant :

- Le champ « nom » : affiche le nom du contact de la conversation.


- Le champ « numéro » : affiche le numéro du contact de la conversation.
- Le champ « saisir un SMS » : Permet à l’utilisateur de saisir un SMS.

48
- Le champ « Envoyer » : Permet l’utilisateur d’envoyer son SMS.

Figure 3. 13: interface de tchat

3.5 Implémentation

L’implémentation (codage ou programmation) est « la traduction dans un langage de


programmation des fonctionnalités définies lors de la phase de conception ». Dans cette section,
nous présentons d’abord l’environnement de développement Android Studio. Ensuite les
langages de programmation utilisés et enfin nous présenterons quelques modules d’Android
studio ainsi que le code de quelques modules développés ici.

3.5.1 Environnement de développement

À l'origine, de 2009 à 2014, Google propose un environnement de développement


officiel une distribution spécifique de l'environnement Éclipse qui contient les SDK (Software
Development Kit) d’Android. Le 8 décembre 2014, Android Studio passe de version bêta à
version stable 1.0 et cet environnement devient alors conseillé par Google, et Éclipse est
délaissée. Tout comme Éclipse incorporant le SDK, Android Studio permet principalement
d'éditer les fichiers Java et les fichiers de configuration d'une application Android. Il propose
des outils permettant de gérer le développement d'applications multilingues et de visualiser la
mise en page des écrans sur des écrans de résolutions variées simultanément. Pour des raisons

49
de facilité de prise en main et de manipulation, nous avons choisi Android Studio pour
développer notre application XSMS.

3.5.2 Langage de programmation

Android est un OS (Operating System) mobile open source développé en langage Java.
Historiquement, Java a été développé en 1990 par le projet de Sun Microsystem dont les
particularités étaient mises sur l'indépendance, l'orienté objet et la légèreté. En 1995, Java fait
un grand succès sur le développement des applets (applications du côté clients) et également
sur les servlets (applications du côté des serveurs) sur internet. Et en 2009, Java est devenue la
propriété d'Oracle.

Java est un langage de programmation haut niveau qui est orienté objet. Ce langage fait
partir de la famille des langages dite langage à classe. Le langage Java fait partir de langage de
POO (Programmation Orientée Objet) qui est basé sur les classes, les objets et des interactions
entre les objets. Ce langage est populaire aujourd'hui pour diverses raisons à savoir :

 L’absence de pointeurs.
 La bonne gestion autonome de la mémoire.
 Unification autour de l'objet c'est-à-dire un maximum de chose est considéré comme
objet.
 Vastes librairies disponibles API (Application Programming Interface).
 Indépendances à la plateforme d'exécution.
 Variétés d'applications notamment pour les desktops, pour les web, pour les systèmes
embarqués, etc.

Ce langage utilisé pour la programmation Android présente un grand intérêt pour les
programmeurs, étant donné que les bibliothèques disponibles existent pour faciliter la
programmation. Android Studio, grâce aux API, qu'il contient intègres quelques ressources dont
il est important de les présenter puisqu’elles ont permis le fonctionnement de XSMS.

3.5.3 Etudes de quelques modules d’Android Studio

Pour des besoins de fonctionnalités de notre application, plusieurs modules d'Android


Studio ont été utilisés. Il est à noter que chaque module joue un rôle particulier et c'est
l'ensemble de ces modules qui a parmi à ce que notre objectif soit atteint en terme de bon
fonctionnement. Les modules utilisés dans notre application sont : le module d’envoi de SMS,
le module de réception et le module cryptographique.

50
3.5.3.1 Le module d’envoi de SMS

Ce module a été utilisé pour permettre l’envoi d’un SMS par l’utilisateur. Pour pouvoir
envoyer un SMS, l’utilisateur doit avoir du crédit de communication nécessaire pour lui
permettre d’envoyer un SMS. Pour utiliser ce module, il suffit de demander la permission dans
le Manifest.

Figure 3. 14: Module activation permission envoi de SMS

La figure 3.14 nous montre le module permettant l’envoi du SMS :

Figure 3. 15: Module d’envoi de SMS

3.5.3.2 Le module de réception de SMS

Tout comme le module d’envoi, nous devons activer la permission dans le Manifest.

Figure 3. 16: Module activation permission réception de SMS

La réception d’un SMS ne nécessite pas d’avoir du crédit de communication. Il faut


juste que le téléphone soit allumé. La figure 3.16 présente le mode de réception de SMS.

51
Figure 3. 17: Module de réception de SMS

3.5.3.3 Le module cryptographique

 Choix de l’AES

Divers algorithmes de chiffrement et de déchiffrement sont en place. Ainsi notre choix


s’est tourné sur l’algorithme AES suite aux avantages qu’il présente. L’AES nécessitent très
peu d’espace dans la RAM et travail avec une très grande rapidité. Le principal avantage est
qu'il est très facile à utiliser et très simple à comprendre. Cette interface utilisateur est tellement
simple et léger que la fonctionnalité principale du chiffrement et déchiffrement des SMS
s’effectue de façon très efficace.

Le module cryptographique est constituée à la fois du module de chiffrement et du


module de déchiffrement. La fonction AES étant déjà implémenter en java, il suffit juste de
faire appel en ajoutant les informations nécessaire (clé secrète et le texte clair) pour son bon
fonctionnement. Les figures 3.18 et 3.19 montre le module de chiffrement et déchiffrement
respectivement.

52
Figure 3. 18: Le module de chiffrement

Figure 3. 19: Le module de déchiffrement

Dans ce chapitre, nous avons vues l’analyse et la conception de notre application. Nous
avons modélisé au travers de différents diagrammes d’UML, le cas d’utilisation, le diagramme
de séquence ainsi que le diagramme de classe. Ensuite nous avons réalisé les interfaces de notre
application à l’aide du logiciel Balsamiq Mockups. Pour finir, nous avons présenté les modules
principaux de notre application. Tout ceci nous a permis d’avoir un prototype fonctionnel de
notre application dont les tests et le cout estimatif feront l’objet du chapitre suivant.

53
CHAPITRE 4: IMPLEMENTATION ET COÛT DU PROJET
XSMS est une application développée pour des plates-formes Android. Ce chapitre marque
la fin de notre travail. Dans ce dernier chapitre, nous allons tout d’abord présenter les principales
interfaces fonctionnelles de notre applications, puis présenter les tests effectués sur différents
téléphones Android et enfin donner le cout estimatif de la réalisation de cette application.

4.1 Présentation de l’interface Homme-Machine

Dans ce qui suit nous allons présenter les interfaces de notre application.

4.1.1 Interface de conversation

Cette interface offre un aperçu de la page de conversion (accueil pour notre cas) de notre
application. Elle offre à l’utilisateur la visualisation de ces derniers messages envoyés ou reçus.

Figure 4. 1: Interface de conversation XSMS

54
4.1.2 Interface de chat

Cette permet à l’utilisateur de visualiser ses messages envoyés avec un contact spécifique et lui
permet aussi d’envoyer un message à ce contact.

Figure 4. 2: Interface de chat XSMS

4.1.3 Interface Nouvelle Conversation

Cette interface permet à l’utilisateur de démarrer une nouvelle conversation avec un de


ces contacts ou même avec un numéro non enregistres.

Figure 4. 3: Interface Nouvelle Conversation XSMS

55
4.2 Tests et Résultats

Ce test consiste à envoyer un SMS et de calculer le temps de chiffrement et déchiffrement


de ce SMS sur plusieurs smartphones. Le SMS envoyer contient le mot « Bonjour ».

Le Tableau 4.1 présente les téléphones Android avec lesquels nous avons effectués nos
tests.

Tableau 4. 1: Spécification de téléphones Android utilisés pour le test

Téléphone Mobile Samsung Itel A33 Huawei Y9


Galaxy Note 4
Modèle SM-N910V W5001P JKM-LX1
Version d’Android 5.0.1 8.1.0 9
Processeur Snapdragon CPU 4 core Hisilicon kirin
805 (4 cœurs) 710 (8 Cœurs)
Vitesse Horloge 2.7GHz 1.30GHz 2.2GHz
RAM 3Go 1Go 4Go
Espace de stockage 32Go 16Go 64Go

La figure 4.4 montre le temps de chiffrement et de déchiffrement des SMS sur nos
téléphones Android que nous avons utilisés pour faire nos tests.

Temps de chiffrement et déchiffrement XSMS


120
100
Temps eN MS

80
60
40
20
0
Galaxy Note 4 Huawei Y9 2019 Itel A33
Encryption time(ms) 16 40 51
Dencryption time(ms) 1 5 49
Titre de l'axe

Dencryption time(ms) Encryption time(ms)

Figure 4. 4: Temps de chiffrement et déchiffrements de XSMS

56
De la figure 4.4, nous pouvons en déduire que le temps de chiffrement et de
déchiffrement varie en fonction des capacités du téléphone Android utilisé. Alors plus la
capacité du téléphone est grande, plus le temps de chiffrement/déchiffrement est plus court.

Figure 4. 5 : Présentation du chiffrement de l’application

57
4.3 Coût estimatif du projet

4.3.1 Estimation du cout des équipements

Le Tableau 4.2 ci-dessous présente la liste des équipements nécessaires à la réalisation


de notre travail. Les montants donnes sont pris en FCFA.

Tableau 4. 2: Détails des besoins pour la réalisation du projet

Désignation Prix unitaire Quantité Prix total

Hardware

Ordinateurs portables 150 000 01 150 000

Disque Dur externe 50 000 01 50 000

Modem wifi 30 000 01 30 000

Téléphone Android 60000 01 60000

Software

Windows 10 168 350 01 168 350

PowerAMC 84 800 01 84 800

Balsamiq Mockups 20 000 01 20 000

Autres

Connexion Internet 10 000 5(mois) 50000

Total 613 150

58
4.3.2 Estimation du cout de développement

4.3.2.1 Contexte du développement d’un logiciel

Tout logiciel développé se fait en fonction de la demande du client. Cette demande est
rédigée par un ingénieur informaticien. La précision de ce contexte nous permet de comprendre
des notions telles que le cout de développement ou le contrat des besoins du client.

4.3.2.2 Estimation de la charge

a. Définition des concepts clés pour la compréhension de l’estimation de la charge

La charge est la quantité de travail qu’une personne peut réaliser en jour/homme (J/h), en
mois/homme (M/h) ou en année/homme (A/h). La taille du projet se mesure à sa charge. L’ordre
de grandeur est donné selon les normes ISO :
• Charge < 6 M/h très petit projet
• 6 M/h ≤charge ≤12 M/h petit projet
• 12 M/h ≤charge ≤30 M/h projet moyen
• 30 M/h ≤charge ≤100 M/h grand projet
• 100 M/h =charge très grand projet
La durée du projet dépend de la charge et du nombre de personnes infectées. Par exemple
60M/h peuvent être fait:
 Par 1 personne pendant 5 ans
 Par 10 personnes pendant 6 mois
 Par 60 personnes pendant 1 mois
b. Estimation de la charge

Barry W. Boehm propose en 1981 une méthode (COCOMO : Constructive Cost Model) basée
sur la corrélation entre la taille d’un projet et sa charge en fonction des hypothèses suivantes :

 Il est facile à un informaticien d'estimer le nombre de lignes source.


 La complexité d'écriture d'un programme est la même quel que soit le langage de
programmation.
- Formules

Les formules suivantes permettent d’estimer la charge et le délai d’un projet :

= .( . )
= .( )

59
Avec: K. isl égale au nombre de milliers de lignes sources et les paramètres a, b, c et d qui
dépendent de la catégorie du projet.

- Classification

Projet simple: < 50 000 lignes

Projet moyen: 50 000≤ lignes ≤300 000

Projet complexe: > 300 000 lignes

Tableau 4. 3: Classification des paramètres en fonction du type de projet

Type de projet Charge en M /h Délai en M


Simple a= 3,2 ; b=1,05 c= 2,5 ; d= 0,38

Moyen a=3 ; b=1,12 c=2 ; d=0,35

Complexe a=2,8 ; b=1,2 c=2,5 ; d=0,32

D’après la méthode de COCOMO, notre projet correspond à un projet simple cars nous
avons 1724 lignes de codes. Ainsi le calcul de notre charge et du delai se fait de la facon
suivante :

Paramètres: a= 3,2 ; b=1,05, c= 2,5 ; d= 0,38

,
= , . (1,724 ) = /
,
= , .( ) =

4.3.2.3 Cout du logiciel

L’unité de coût des logiciels s’exprime traditionnellement en Mois/homme (M/h) ou en


Année/homme (A/h) qu’il ne faut pas confondre avec la durée du développement. Par exemple
l’emploi de trois ingénieurs sur une durée de 18 mois correspond à un coût de 54M/h ou 4,5
A/h. Le « volume » ou la « taille » d’un logiciel est généralement exprimé en nombre de lignes
de code source ou d’instructions (en abrégé ls ou kls pour millier de lignes source) que comporte
le logiciel livré et prêt à l’emploi. C’est ce paramètre, qui correspond à la partie exécutable sur
machine, qui a été retenu comme indicateur principal de la quantité d’information contenue
dans le logiciel. La productivité d’un développement s’exprimera en ls/h. Cet indicateur dénote

60
la difficulté de fabrication du logiciel. Ces unités peuvent avoir, selon la SGR (Standish Group
Report) un ordre de grandeur. On a:

 1 H/An = 1350h,
 1 h=10€,
 Productivité =2 à 5 lignes/h.

Notre logiciel correspond à 5M/h soit 0,42A/h qui nous donne une durée de 567 heures,
une productivité de 3 lignes par heures. Nous obtenons le tableau 4.4 ci-dessous.

Tableau 4. 4: Coût de productivité du logiciel

Nombre de lignes A/h Heures Coût

1724 0.42 567 3 713 850

Du coût estimatif de la recherche, des équipements et de la productivité du logiciel, on obtient


un total estimatif de 4,327,000FCFA

- Main d’œuvre des ingénieurs

La main d’œuvre des ingénieurs est égale à Te x 30% = 1 298 100 FCFA Te= total estimatif du
logiciel). Le logiciel étant développé par un ingénieur, celui-ci percevra en moyenne une main
d’œuvre de : 1 298 100 FCFA.

- Cout total estimatif du projet

Le coût total estimatif du projet est présenté par le Tableau 4.5 ci-dessous.

Tableau 4. 5: Coût total estimatif du projet

Total estimatif Main d’œuvre de l’ingénieur Coût total estimatif du projet

3 713 850 FCFA 1 298 100 FCFA 5 625 100 FCFA

Dans ce chapitre, nous avons présenté tout d’abord les fonctionnalités du logiciel à travers
ses interfaces, les résultats des tests sur différents téléphones Android et enfin estimer le cout
du projet.

61
CONCLUSION GENERALE
Le protocole de communication pour la téléphonie mobile, GSM, est encore très utilisé à
travers le monde. Malheureusement c'est un système vieillissant, reposant sur des algorithmes
de chiffrements obsolètes qui ne permettent pas de garantir aux abonnées une parfaite
confidentialité de leurs communications.

Notre projet s’intègre dans cette perspective pour réaliser un crypto-système avec un
algorithme plus puissant que ces algorithmes du GSM, dans le but d’assurer la confidentialité
de nos SMS à travers le réseau GSM.

Pour aboutir à ces objectifs, nous avons exploité les technologies avancées des nouveaux
mobiles présents sur le marché. Particulièrement, la technologie ANDROID sur laquelle a été
développée notre application.

Cette expérience a été une occasion pour nous familiariser avec les notions de
l’informatique embarquée sur les terminaux mobiles. De plus, nous avons approfondi nos
connaissances dans le développement orienté objet à base du langage JAVA et la
programmation des applications mobile ANDROID. Nous avons programmé une application
qui permet l’échange des SMS crypté à l’aide de l’algorithme cryptographie symétrique AES.

62
REFERENCES BIBLIOGRAPHIQUES
[1] Le Parisien, « Le tout premier SMS a 20 ans ». .
[2] « L’ Histoire du SMS », Texting House : L’extension SMS pro, juill. 06, 2018. .
[3] Diana-Minodora Ciuraru, Lavinia Hilohi, Antoine Mercier, Xavier Lagrange, « SMS
over LTE: services, architecture and protocols ». 2006.
[4] G. Tchapo TANTE-, « Implémentation d’un portail SMS à base du logiciel KANNEL »,
2015. .
[5] « Le-SMS-Architecture-et-composants.pdf ». Consulté le: sept. 27, 2020. [En ligne].
Disponible sur: https://developer.orange.com/od-uploads/Le-SMS-Architecture-et-
composants.pdf.
[6] Hervé Schauer, « « Introduction à la cryptographie » ». 2001.
[7] L. Ghislaine, « Introduction à la cryptologie; , 1998 ». .
[8] « Principe du Cryptage PGP ». http://laurent.flaum.free.fr/pgpintrofr.htm (consulté le
oct. 07, 2020).
[9] S. Singh, « Histoire des codes secrets, New York, Anchor Books, , 411 p. (ISBN 978-0-
385-49532-5), p. 14–20. » 2000.
[10] Fran¸cois Bergeron et Alain Goupil, « La cryptographie de l’Antiquité `a l’Internet ».
fevrier 2006.
[11] « Les chiffres hébreux ». https://www.apprendre-en-ligne.net/crypto/subst/atbash.html
(consulté le oct. 07, 2020).
[12] la rédaction de Futura, « Qu’est-ce que le chiffrement de César ? », Futura.
https://www.futura-sciences.com/sciences/questions-reponses/mathematiques-quest-ce-
chiffrement-cesar-8032/ (consulté le oct. 07, 2020).
[13] Friedrich L. Bauer, « , Decrypted Secrets : Methods and Maxims of Cryptology, New
York, Springer, , 4e éd. (ISBN 3-540-24502-2). » 2006.
[14] « Le chiffre de Vigenère ». http://mathweb.free.fr/crypto/poly/vigenere.php3 (consulté le
oct. 07, 2020).
[15] « « Décryptage de Ultra : Ce que savaient les Alliés » [archive], sur livresdeguerre.net »,.
mai 17, 2009.
[16] Bell System Technical Journal, vol. 27, no 3, « « A Mathematical Theory of
Communication » ». juill. 1948.
[17] M. Riguidel, « , Quelque rappels sur les techniques cryptographiques ». 2002.
[18] Ibrahim A. Al-Kadi Cryptologia, « Origins of cryptology: The Arab contributions ».
1992.
[19] Guy Chassé, Maitre assistant de mathématiques, Ecole des Mines de Nantes.,
« « Cryptographies Mathématiques » »,. .
[20] D. CARELLA, « Principes de base de la cryptographie - Cryptographie - David
CARELLA’s Web Site ». http://david.carella.free.fr/fr/cryptographie/principes-de-
base.html (consulté le oct. 11, 2020).
[21] « Figure 4 : Fonctionnement de l’algorithme AES », ResearchGate.
https://www.researchgate.net/figure/Fonctionnement-de-lalgorithme-
AES_fig4_295120965 (consulté le oct. 03, 2020).
[22] « Rivest, Shamir et Adleman ». p. 122 1978.
[23] EFORT, « Sécurité Mobile 2G, 3G et 4G: Concepts, Principes et Architectures »,. [En
ligne]. Disponible sur: http://www.efort.com.
[24] EFORT, « Sécurité Mobile 2G, 3G et 4G:Concepts, Principes et Architectures ». 2010.
[25] « GSM Authentication Procedure ». https://www.ques10.com/p/48395/gsm-
authentication-procedure-1/ (consulté le sept. 30, 2020).

63
[26] « GSM Authentication Procedure ». https://www.ques10.com/p/48395/gsm-
authentication-procedure-1/ (consulté le sept. 27, 2020).
[27] N. Boudriga, « Security of Mobile Communications, Auerbach Publications Taylor &
Francis Group, ISBN 978 0 8493 7941 3 »,. 2010.
[28] M. Glendrange, K.Hove et E. Hvideberg, « Decoding GSM, mémoire de master,
Norwegian University of Science and Technology »,. juin 2010.
[29] J. Keller et B. Seitz, « A hardware-based attack on the A5/1 stream cipher, rapport
technique, Fern Universitat in Hagen »,. Germany 2001.
[30] S. Petrovic et A. Fuster-Sapater, « Cryptanalysis of the A5/2 Algorithm, Cryptology
ePrint Archive, Report 2000/052 »,. 2000, [En ligne]. Disponible sur:
http://eprint.iacr.org.
[31] K.M Suwais, « Intelligent Adaptive Model for Secure A5/1 Stream Cipher, International
Journal of Information Processing and Management. Volume 2, Numero 1 »,. janv.
2011.
[32] « Comment chiffrer ses sms sous android ! - Rebellyon.info ».
https://rebellyon.info/Comment-chiffre-ses-sms-sous.html (consulté le oct. 03, 2020).
[33] « “Moxie Marlinspike” - 40 Under 40 », Fortune, sept. 22, 2016.
https://web.archive.org/web/20160923212029mp_/http://fortune.com/40-under-
40/moxie-marlinspike-31/ (consulté le oct. 03, 2020).
[34] « End-To-End Encryption with the Signal Protocol | Engineering at MindLink ».
https://engineering.mindlinksoft.com/end-to-end-encryption-with-the-signal-protocol/
(consulté le oct. 03, 2020).
[35] « Silence », Framalibre, janv. 03, 2017. https://framalibre.org/content/silence (consulté
le oct. 03, 2020).
[36] « Silence | Besoin de vie privée ? » https://silence.im/fr/ (consulté le oct. 03, 2020).
[37] Laurent Piechocki/ Frédéric Di Gallo, « Cours UML », dition -2008 2007.
[38] site de RATIONAL (principal acteur de UML),
« http ://www.rational.com/UML/resources.html ».
[39] https://themeforest.net/user/dan_fisher, « OMG | Object Management Group ».
https://www.omg.org/ (consulté le oct. 04, 2020).
[40] Olivier Sigaud, « Introduction à la modélisation orientée objets avec UML, support de
cours « Génie Logiciel et Programmation Orientée Objet » de l’ENSTA », 2004.

64

Vous aimerez peut-être aussi