Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
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.
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 é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.
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.
vii
TABLE DE MATIERES
DEDICACES .............................................................................................................................. i
REMERCIEMENTS .................................................................................................................. ii
AVANT-PROPOS ...................................................................................................................... i
RESUME ................................................................................................................................... vi
INTRODUCTION GENERALE................................................................................................ 1
viii
1.2.3.2 L’algorithme AES........................................................................................... 17
ix
2.4.3.1 Besoins Fonctionnels ...................................................................................... 34
x
4.1.1 Interface de conversation ................................................................................... 54
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
xiii
SACCH: Slow Associated Control Channel
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
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.
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.
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].
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].
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]
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.
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.
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].
8
1.2.1 Objectifs
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.
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].
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].
- 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
La machine Enigma
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].
12
1.2.2.2 La cryptographie Moderne
Les années 70 ont été marquées par plusieurs avancées majeures à savoir :
13
1.2.3 Chiffrement symétrique
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
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].
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
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].
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.
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.
Pour une clé de 128, 192 ou 256, AES nécessite respectivement 10, 12 ou 14 tours.
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é.
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 :
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].
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
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).
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
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].
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 :
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.
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.
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].
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 :
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].
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].
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].
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].
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
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.
Pour i = 0 à 21 faire
Fin pour
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
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.
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].
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].
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].
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 :
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
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
Le tableau suivant montre une comparaison entre notre application XSMS et l’autre
application étudier plus haut.
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.
33
2.4.2 Description de l’Existant
Cette section décrit les besoins (fonctionnels et non fonctionnels) auxquels doit répondre
l’application à développer.
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)
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.
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.
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.
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.
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.
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).
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.
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.
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:
39
Figure 3. 3: diagramme de cas d’utilisation
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.
40
Figure 3. 4: Diagramme de Séquence envoi de SMS
41
Figure 3. 6: Diagramme de séquence supprimer un SMS
42
3.1.2.3 La vue structurelle ou statique
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.
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 :
- 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 :
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é.
44
3.2 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 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.
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.
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
47
3.4 Les interfaces de l’application XSMS
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.
Interface de tchat
Cette interface permet de montrer les conversations par rapport à un seul utilisateur. Cette
interface est constituée des champs suivant :
48
- Le champ « Envoyer » : Permet l’utilisateur d’envoyer son SMS.
3.5 Implémentation
49
de facilité de prise en main et de manipulation, nous avons choisi Android Studio pour
développer notre application XSMS.
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.
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.
Tout comme le module d’envoi, nous devons activer la permission dans le Manifest.
51
Figure 3. 17: Module de réception de SMS
Choix de l’AES
52
Figure 3. 18: Le module de 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.
Dans ce qui suit nous allons présenter les interfaces de notre application.
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.
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.
55
4.2 Tests et Résultats
Le Tableau 4.1 présente les téléphones Android avec lesquels nous avons effectués nos
tests.
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.
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
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.
57
4.3 Coût estimatif du projet
Hardware
Software
Autres
58
4.3.2 Estimation du cout de développement
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.
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 :
= .( . )
= .( )
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
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 :
,
= , . (1,724 ) = /
,
= , .( ) =
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.
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.
Le coût total estimatif du projet est présenté par le Tableau 4.5 ci-dessous.
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