Vous êtes sur la page 1sur 31

École Supérieure de Technologie Oujda

Département génie informatique


Filière DUT : Administrateur de Systèmes et Réseaux

RAPPORT DE STAGE DE FIN D’ÉTUDE

RAPPORT: Android Based Encrypted Chat


Message System
Réalisé par : Encadré par :
ZAAJ Naoufal Mr. IDRISSI Idriss
AMARA Younes

Année Universitaire : 2019-2020


Remerciements

Nous tenons à remercier dans un premier temps, toute l'équipe


pédagogique de l‘ESTO et les intervenants professionnels
responsables de la formation administration des systèmes et
réseaux, pour avoir assuré la partie théorique de celle-ci.

Nous exprimons nos profondes gratitudes et respectueuse


reconnaissance à notre encadreur :
Mr. IDRISSI Idriss

Pour sa bonne volonté d'accepter de nous encadrer, pour tout


le temps qu’il nous a octroyé et pour tous les conseils qu’il
nous a prodigué.

Résumé
La communication et l'interaction entre les uns et les autres
font désormais partie intégrante de la vie de chacun. De petites
conversations aux réunions dans des sociétés multinationales,
difficile de vivre sans communication. Au début, jadis, où il
n’y avait aucun moyen de communiquer à distance les lieux
où le seul moyen de conversation était les rencontres en face à
face. Alors que la génération a changé et que l'année a passé,
les technologies ont donné à la race humaine le pouvoir de
communiquer à l'étranger. Aujourd'hui, ces technologies
présentent un risque élevé de piratage. À assurez-vous que la
communication reste confidentielle, nous devons prendre des
mesures sérieuses. Ce document de recherche comprend les
détails d'une application de chat pour envoyer des messages
instantanés privés et confidentiels sans crainte d'interférence.

Abstract
Communication and interaction between one another are
becoming integral part of everyone’s life. From small
conversation to meetings in a multinational company it is
every difficult to live without communication. Initially, in
former days when their where no mediums for
communicating from distant places the only way of
conversation was face to face meet-ups. As the generation
changed and year passed the technologies gave human race
the power to communicate overseas. Today, those
technologies are under high risk of getting hacked. To make
sure the communication remains confidential we need to
take serious steps. This research paper includes the details
about a chat application to send private and confidential
instant messages without the fear of interference. A secure
communication path is created with encryption protocol.
Table des matières

Remerciements......................................................................................................2
Résumé..................................................................................................................3
Abstract.................................................................................................................4
Introduction générale.............................................................................................8
Chapitre 1 : Analyse du projet...............................................................................9
I. Le chiffrement.................................................................................................9
1. Qu’est-ce que le chiffrement de données ?.............................................9
2. À quoi sert le chiffrement de données ?................................................10
3. Quels sont les différents types de chiffrements de données ?..............10
4. Quels sont les différents algorithmes de chiffrement de données ?.....11
5. Quels sont les risques de sécurité ?.......................................................12
II. Le chiffrement de chat..................................................................................13
1. Introduction :..........................................................................................13
2. Exemples d’applications de chat sécurisé :............................................14
III. Présentation de l’Android.............................................................................15
1. Introduction............................................................................................15
2. Versions d’Android.................................................................................16
3. Architecture logicielle d’Android............................................................17
Chapitre 2 : Mise en place du projet....................................................................19
I. Les outils de développement utilisés............................................................19
1. IDEs.........................................................................................................19
2. Langages de programmation..................................................................20
3. Markup Language...................................................................................20
4. Outils Google..........................................................................................21
5. Adobe......................................................................................................22
II. Le type de chiffrement utilisé.......................................................................22
III. La création des émulateurs Android virtuels avec le test de l’application....24
1. La création des émulateurs virtuels :......................................................24
2. Test de l’application................................................................................30
IV. Conclusion....................................................................................................34
Bibliographie.......................................................................................................35
Liste de figures

Figure 1 Les versions android..............................................................................19


Figure 2 Architecture logicielle d’Android.........................................................20
Figure 3 Icon de Android studio..........................................................................21
Figure 4 icon de la langage Java..........................................................................22
Figure 5 icon de la langage xml...........................................................................23
Figure 6 Icon de Firebase....................................................................................23
Figure 7 icon de Adobe Xd...................................................................................24
Figure 8 Le chiffirement bout en bout................................................................25
Figure 9 Le chiffrement bout en bout au à travers dun serveur........................26
Figure 10 l'ajout d’un émulateur.........................................................................27
Figure 11 le choix d'un mobile............................................................................28
Figure 12 configuration du mobile......................................................................29
Figure 13 le choix d'un API..................................................................................29
Figure 14 Connexion de Android studio avec Firebase.......................................30
Figure 15 Real time database..............................................................................31
Figure 16 design de l'Accueil..............................................................................32
Figure 17 fenêtre de l’utilisateur.........................................................................32
Figure 18 icon de l'application............................................................................33
Figure 19 lancement de deux émulateurs..........................................................34
Figure 20 test de l'application............................................................................35
Figure 21 les messages chiffrés dans le Firebase................................................36
Introduction générale

Les applications de messagerie sont courantes dans les smartphones


Android depuis leur sortie, mais bien qu'il existe un nombre croissant
d'applications de confidentialité disponibles, il existe également un nombre
croissant d'applications de chat cryptées.

Ceux-ci visent à mieux protéger les utilisateurs dans un monde Internet


où les sociétés de marketing tentent de plus en plus non seulement de suivre
les utilisateurs, mais aussi de lire leurs messages. De plus, la messagerie privée
implique traditionnellement des copies de vos sessions de chat à enregistrer
sur les serveurs de l'entreprise, qui pourraient être exposées et publiées en
ligne par une attaque de piratage réussie.

La messagerie instantanée cryptée garantit la confidentialité et la sécurité


en vous assurant que seule la personne à qui vous envoyez vos messages peut
réellement les lire. Un puissant logiciel de cryptage intégré aux applications de
messagerie signifie que tout tiers interceptant ces messages ne pourra pas les
lire.

Avec la popularité toujours croissante des téléphones Android, les


applications de messagerie instantanée cryptées sont devenues de plus en plus
populaires. Par exemple, (WhatsApp, Telegram, Viber, Line…).

8
Chapitre 1 : Analyse du projet

I. Le chiffrement 

Le chiffrement des données permet de protéger la confidentialité des


données en les encodant sous une forme qu’il est impossible de déchiffrer
sans la clé adéquate. Découvrez tout ce que vous devez savoir à ce sujet.
Les entreprises, tout comme les particuliers, génèrent et manipulent de plus
en plus de données. Malheureusement, qu’il s’agisse des données
personnelles d’un individu ou de données critiques pour une organisation,
elles sont de plus en plus convoitées par les hackers. C’est la raison pour
laquelle il est important de chiffrer les données.

1. Qu’est-ce que le chiffrement de données ?

Le chiffrement des données consiste à convertir les données afin que


seules les personnes pourvues d’une clé secrète ou d’un mot de passe soient
en mesure de les lire. On utilise une clé de chiffrement pour chiffrer les
données, et une clé de déchiffrement pour les déchiffrer. Alors qu’elles sont
initialement en text brut (plaintext), les données chiffrées sont en texte chiffré
(ciphertext).
Le chiffrement est l’une des méthodes les plus efficaces et populaires en
entreprise pour sécuriser les données. Il est aussi de plus en plus utilisé par les
particuliers pour préserver la confidentialité de leurs communications. Par
exemple, des applications de messageries comme WhatsApp ou Telegram
proposent le chiffrement des messages. De même, sur internet, le chiffrement
est utilisé pour protéger les informations de l’utilisateur pendant qu’elles sont
transférées entre le navigateur et le serveur.

2. À quoi sert le chiffrement de données ?

Le principal objectif du chiffrement de données est de protéger la


confidentialité des données numériques tandis qu’elles sont stockées sur des
systèmes informatiques et transmises via internet ou d’autres réseaux.
9
Les algorithmes de chiffrement de données modernes permettent aussi de
vérifier l’origine d’un message, et de s’assurer que le contenu du message n’a
pas été changé depuis son expédition.

3. Quels sont les différents types de chiffrements de données ?

On distingue deux principaux types de chiffrement de données : le chiffrement


asymétrique, et le chiffrement symétrique. Ces deux types diffèrent au niveau
dans la façon dont les données sont déchiffrées.
Dans le cas du chiffrement symétrique, la même clé est utilisée pour le
chiffrement et le déchiffrement du message ou du fichier. Dans le cas du
chiffrement de données asymétrique, deux clés sont utilisées : une clé
publique, et une clé privée. La clé publique peut être partagée avec n’importe
qui, mais la clé privée doit impérativement être protégée.

Le chiffrement symétrique présente l’avantage d’être beaucoup plus rapide.


Cependant, sachant qu’il est nécessaire de transmettre la clé au destinataire
pour chaque déchiffrement, cette solution peut rapidement s’avérer trop
fastidieuse pour les entreprises qui doivent gérer et distribuer de grandes
quantités de clés. C’est la raison pour laquelle la plupart des services de
chiffrement de données se sont adaptés aux besoins des entreprises et
proposent un algorithme asymétrique pour échange la clé secrète après avoir
utilisé un algorithme symétrique pour chiffrer les données.

4. Quels sont les différents algorithmes de chiffrement de


données ?

Le standard de chiffrement de données (DES) obsolète a été remplacé par des


algorithmes de chiffrement plus modernes. Parmi les plus populaires
aujourd’hui, on compte l’AES, le RSA, le Triple DES, et le Twofish.

Tous ces algorithmes ne se valent pas. Certains sont plus adaptés que d’autres
pour chiffrer certains types de données. De plus, ils peuvent être plus ou moins

10
performants en fonction des différents types d’infrastructures. Par exemple,
certains seront plus rapides si vous avez beaucoup de mémoire et peu de
puissance de calcul et vice-versa.
 L’algorithme de cryptage symétrique AES (Advanced Encryption
Standard) :
L'AES (Advanced Encryption Standard) est, comme son nom l'indique, un
standard de cryptage symétrique destiné à remplacer le DES (Data Encryption
Standard) qui est devenu trop faible au regard des attaques actuelles.
 L’algorithme de cryptage asymétrique RSA :
Le chiffrement RSA (nommé par les initiales de ses trois inventeurs) est un
algorithme de cryptographie asymétrique, très utilisé dans le commerce
électronique, et plus généralement pour échanger des données confidentielles
sur Internet. Cet algorithme a été décrit en 1977 par Ronald Rivest, Adi Shamir
et Leonard Adleman. RSA a été breveté1 par le Massachusetts Institute of
Technology (MIT) en 1983 aux États-Unis. Le brevet a expiré le 21 septembre
2000.

5. Quels sont les risques de sécurité ?

Pour contourner le chiffrement, on utilise souvent la méthode de l’attaque par


force brute. Il s’agit d’essayer de multiples clés au hasard jusqu’à ce que l’une
d’entre elles fonctionne. Par conséquent, il est préférable d’utiliser des clés
plus longues pour réduire le pourcentage de chances que la bonne clé soit
trouvée de cette façon. Cependant, plus la clé de chiffrement est longue, plus le
déchiffrement nécessite de puissance de calcul.
Les hackers peuvent aussi utiliser les attaques par canaux cachés, consistant à
exploiter des failles dans l’implémentation du chiffrement plutôt que dans le
chiffrement lui-même. Ces attaques peuvent réussir si le système comporte
une erreur dans son design ou son exécution.
Enfin, la technique de la cryptanalyse consiste à trouver une faiblesse dans le
chiffrement et à l’exploiter. Cette technique peut fonctionner lorsqu’une faille
est présente dans le chiffrement en lui-même.

11
II. Le chiffrement de chat

1. Introduction :

L'utilisation des médias sociaux augmente avec l'augmentation de la


population. Ces dernières années, les applications de chat se sont améliorées
et a apporté des améliorations substantielles aux médias sociaux en raison de
leurs caractéristiques distinctives, qui attirent le public. Il offre des messages en
temps réel et fournit divers services comme texte, images, données, etc. De
plus, les plates-formes croisées, notamment Android et iOS, sont prises en
charge. Il y a maintenant 100 millions d'utilisateurs mobiles qui utilisent des
applications de chat mensuelles. La sécurité est de la plus haute importance
dans les applications de chat, mais peu prennent cela au sérieux. Il est très
important de rendre l'application plus sécurisée pour une meilleure
communication. À l'heure actuelle, où la plupart des applications de chat
utilisent le protocole de couche Transport pour la sécurité. Il est difficile de
garantir la sécurité des données. En tant que, le fournisseur de services a le
plein accès à tous les messages envoyés et reçus par leur utilisateur.
Dans ce projet, nous nous concentrons principalement sur la sécurité et la
confidentialité des messages des utilisateurs en proposant le chiffrement de
bout en bout.
Notre application s'assure que le message utilisateur envoyé par l'expéditeur
est original et n'est pas manipulé par un interlocuteur.

2. Exemples d’applications de chat sécurisé :

 WhatsApp : WhatsApp est l'une des applications les plus utilisées pour
communiquer. Il fournit à l'utilisateur des fonctions d'envoi de messages
texte, d'images, de vidéos et d'audio. WhatsApp a récemment introduit
le chiffrement de bout en bout. Cependant, comme WhatsApp est privé
et non l'open source, il est nécessaire de vérifier s'il l'est vraiment
comme annoncé. WhatsApp affirme que les messages stockés sur leur
stockage sont au format crypté. Ni l'un ni l'autre des employés de

12
WhatsApp ne peut lire les données originales ni les modifier, les
manipuler. Ils affirment également que les images et vidéos sur leur
stockage sont cryptées.

 WeChat : Cette application de chat est leader sur le marché chinois.


WeChat est la troisième application de messagerie populaire du marché
disponible sur différentes plates-formes, notamment iOS et Android. Il
prend en charge l'envoi de messages vocaux, vidéo, photos et texte.
WeChat ne fournit pas de cryptage de bout en bout, ce qui signifie que
les méthodes de cryptage utilisées sont basées sur le cryptage à clé
publique, mais l'utilisateur doit faire confiance aux serveurs WeChat.

 Viber : Viber fournit des messages texte intants et des appels VoIP à
l'utilisateur. En utilisant viber, une personne peut appeler l'autre
utilisateur qui n'est pas sur viber, cela coûte quelques centimes par
minute. Viber fournit un chiffrement de bout en bout pour les messages
texte en privé et en groupe, mais les images et les vidéos sont stockées
au format d'origine sur leur stockage. Des inconnus vous ajoutent à la
liste d'amis sans autorisation dans Viber. Leur stockage local n'est pas
sécurisé.

 Facebook Messenger : Facebook Messenger est l'application de chat la


plus populaire. Ils donnent à l'utilisateur le choix d'utiliser le chiffrement
de bout en bout ou non. Les messages généraux fournissent uniquement
le cryptage TLS. Le chat secret du message Facebook fournit un cryptage
de bout en bout pour les messages texte, mais il scanne les images pour
vérifier tous les cas de maltraitance d'enfants. Si de telles images sont
détectées, elles sont supprimées immédiatement et signalées.

III. Présentation de l’Android

1. Introduction

Android est un système d'exploitation libre basé sur le noyau Linux et


comporte une interface utilisateur développée en Java. Il est destiné
13
pour les appareils mobiles comme par exemple les smartphones, les
tablettes tactiles, les assistants personnels PDA (Personal Digital
Assistant), les baladeurs, les montres ou smartwatches, lunettes,
voitures, télévision, électroménager, etc.
Android a été initialement créé par une petite entreprise spécialisée
dans le développement d’applications mobiles qui s’appelle Android Inc,
fondée en 2003 aux Etats Unies. En août 2005 Google l’a racheté.

Actuellement, le développement d'Android est contrôlé par l'Open


Handset Aliance, c'est un regroupement de plus de 50 entreprises
dirigées par Google.
Avec l'explosion des ventes des smartphones, Android a pu prendre au
fil des années une place importante dans le marché des téléphones
mobiles. Il est actuellement le système d’exploitation le plus utilisé dans
le monde pour faire fonctionner les smartphones et les tablettes. Les
principaux concurrents d'Android sont Apple avec l'iPhone, Microsoft
avec Windows Mobile.
Le développement d'applications mobiles Android est habituellement
réalisé à l'aide du langage de programmation Java (Java SE : Java
Standard Edition) en utilisant le kit de développement SDK (Software
Development Kit) Android développé par Google.

Le SDK fourni de la documentation, des API (librairies Java d'Android) et


un ensemble d’outils en ligne de commande ou intégrés à un éditeur tel
que Android Studio ou Eclipse permettant de compiler, de déboguer les
applications, d'y ajouter une signature numérique et de créer le fichier
APK (Android Package).
Ce dernier est le package Android de l'application qui sera déployé sur un
émulateur Android AVD (Android Virtual Device) ou sur un appareil
mobile réel (handset).

2. Versions d’Android

Les différentes versions d'Android ont toutes des noms de desserts ou de


sucreries.

14
Figure 1 Les versions android

3. Architecture logicielle d’Android

La plate-forme Android se compose d'une pile de composants logiciels


qui est divisé en cinq couches comme le montre le graphique suivant :

15
Figure 2 Architecture logicielle d’Android

16
Chapitre 2 : Mise en place du projet

I. Les outils de développement utilisés

1. IDEs

Android Studio

Figure 3 Icon de Android studio

Android Studio est l'environnement de développement intégré officiel


(IDE) du système d'exploitation Android de Google, construit sur le
logiciel IntelliJ IDEA de JetBrains et conçu spécifiquement pour le
développement Android. Il est disponible en téléchargement sur les
systèmes d'exploitation Windows, macOS et Linux. Il remplace les outils
de développement Eclipse Android (ADT) comme IDE principal pour le
développement d'applications Android natives.

3. Langages de programmation

17
Java

Figure 4 icon de la langage Java

Java est un langage de programmation et une plate-forme informatique


qui ont été créés par Sun Microsystems en 1995. Java est rapide, sécurisé
et fiable. Java est présente sur plusieurs fronts : des ordinateurs
portables aux centres de données, des consoles de jeux aux
superordinateurs scientifiques, des téléphones portables à Internet…

4. Markup Language

XML

Figure 5 icon de la langage xml

Extensible Markup Language est un langage de balisage qui définit un


ensemble de règles pour l’encodage des documents dans un format à la
fois lisible par l’homme et lisible à la machine. Les spécifications XML
1.0 de 1998 du World Wide Web Consortium et plusieurs autres

18
spécifications connexes, toutes libres de normes ouvertes, définissent
XML.

5. Outils Google

Figure 6 Icon de Firebase

Firebase

Firebase est une plateforme de développement d'applications mobiles et


web qui fournit aux développeurs un pack d'outils et de services pour les
aider à développer des applications de haute qualité, à élargir leur base
d'utilisateurs et à gagner plus de profits. Firebase offres beaucoup
d’outils tel que : Real time database, Push notification, Firebase
Analytics, Firebase Authentification, Firebase Cloud Messaging…

6. Adobe

Adobe Xd

Figure 7 icon de Adobe Xd

19
Adobe XD est un outil de conception d’expérience utilisateur vectorielle
pour les applications Web et les applications mobiles, développé et
publié par Adobe Inc. Il est disponible pour MacOs et Windows, bien qu’il
existe des versions pour iOS et Android pour aider à prévisualiser le
résultat du travail directement sur les appareils mobiles.

II. Le type de chiffrement utilisé

Qu’est-ce que le chiffrement de bout en bout ?

Tout d’abord, commençons par une mise à jour rapide de ce qu’est E2EE (End-
to-End Encryption) et comment il fonctionne. E2EE est simple : lorsque vous
tapez un message de chat, il est crypté sur votre appareil mobile (ou dans votre
navigateur) et n’est décrypté que lorsque votre partenaire de chat le reçoit et
souhaite l’afficher dans la fenêtre de chat.

Figure 8 Le chiffirement bout en bout

Le message reste crypté pendant qu’il voyage sur Wi-Fi et Internet, à travers le
cloud / serveur Web, dans une base de données, et sur le chemin du retour à
votre partenaire de chat. En d’autres termes, aucun des réseaux ou serveurs
n’a une idée de ce que vous deux discutez.

Figure 9 Le chiffrement bout en bout au à travers dun serveur

20
Pour le chiffrement et le décryptage, l’instance AES d’Android Cipher est
utilisée. La chaîne de message est d’abord convertie en Octet, puis
cryptée à l’aide de la méthode AES, puis l’octet chiffré est converti en
Chaîne à l’aide d’un jeu de caractères standard. Cette chaîne d’octets
cryptée est ensuite stockée dans la base de.

Ainsi, comme les données stockées dans la base de données Firebase


sont sous forme cryptée, même si quelqu’un est en mesure d’obtenir
l’accès à la base de données, le message réel ne sera pas lisible par la
personne jusqu’à ce qu’il ou elle a la méthode de cryptage et la clé
disponible avec lui.

De même, du côté du décryptage, la chaîne reçue de la base de données


est convertie en octet à l’aide du même jeu de caractères (utilisé du côté
du chiffrement). Une fois que les données d’octet cryptées sont
disponibles, le chiffrement du mode de décryptage est utilisé pour
décrypter les données. Les données décryptées sont ensuite converties
de l’octet au format lisible String. Ensuite, cette chaîne de sortie, après
avoir été triée dans l’ordre chronologique, s’affiche dans la vue de liste
de notre disposition d’application que l’utilisateur peut voir.

III. La création des émulateurs Android virtuels


avec le test de l’application

1. La création des émulateurs virtuels :

On clique sur AVD manager


Puis sur Create Virtual Device

21
Figure 10 l'ajout d’un émulateur

Et on choisit un Mobile et on clique sur Next

Figure 11 le choix d'un mobile

On choisit un API convenable et on clique sur Next

22
Figure 12 configuration du mobile

Et puis on finish

Figure 13 le choix d'un API

23
Connexion de Android studio avec Firebase

1. Cliquez sur Tools > SDK Manager.

2. Cliquez sur l’Onglet SDK Tools.

3. Vérifiez la Case Google Repository, et cliquez surOK.

4. Cliquez sur OK pour installer.

5. Cliquez sur Background pour terminer l’installation en arrière-plan, ou attendre que


l’installation se termine et cliquez sur Finish.

Vous pouvez maintenant ouvrir et utiliser l’Assistant Windows dans Android Studio par
Suivant les étapes suivantes :

1. Cliquez sur Tools > Firebase pour ouvrir l’Assistant window.

2. Cliquez pour développer l’une des fonctionnalités répertoriées (dans notre cas on
va utilisez Real time Database), puis cliquez sur Get Started pour vous connecter à
Firebase et ajouter le code nécessaire à votre application.

Figure 14 Connexion de Android studio avec Firebase

24
Figure 15 Real time database

25
Design de l’application

Figure 16 design de l'Accueil Figure 17 fenêtre de l’utilisateur

Figure 18 icon de l’application

26
2. Test de l’application

On lance l’application dans deux émulateurs


Et on clique sur le buton « CLICK HERE TO
START » 

Figure 19 lancement de deux émulateurs

27
Et on test si le message va être transmis et reçu

Figure 20 test de l'application

Le message a été transmis par l’émulateur 1 et reçu dans


émulateur 2
Nous vérifions si le message a été chiffre dans le Firebase

28
Figure 21 les messages chiffrés dans le Firebase

Tout va bien !

29
IV. Conclusion

Dans ce projet, nous avons présenté le fonctionnement et


l'implémentation d'une application de chat chiffrée.
Comment les messages sont chiffrés sur l'appareil avant de
passer au serveur. Cependant, cette application ne traite pour
l'instant que des messages texte, nous sommes impatients de
crypter les images avant de les envoyer au serveur en
utilisant des techniques de vision par ordinateur. Les
performances de l'application sur des centaines d’utilisateurs
ne sont pas encore testées car nous devons créer un
utilisateur fictif. Les tests de performances et le cryptage
d'images figurent dans notre future liste de tâches.

30
Bibliographie

https://fr.wikipedia.org/wiki/Chiffrement#:~:text=Le%20chiffrement
%20(souvent%20appelé%20cryptage,clé%20de%20(dé)chiffrement.

https://fr.wikipedia.org/wiki/Android

https://fr.wikipedia.org/wiki/Chiffrement_de_bout_en_bout

https://www.allure.com/story/best-encrypted-secure-messaging-apps

https://www.techradar.com/best/best-encrypted-messaging-app-
android#:~:text=Encrypted%20instant%20messaging%20ensures%20privacy,be
%20able%20to%20read%20them.

https://developer.android.com/studio

https://fr.wikipedia.org/wiki/Android_Studio

https://firebase.google.com/?
gclid=CjwKCAjwi_b3BRAGEiwAemPNU8TuioreXjBxnjBNsuA2vSh7kmErU4hR5M
mL-frg1usz5rK3fh13NhoCSrIQAvD_BwE

31

Vous aimerez peut-être aussi