Dans ce chapitre, nous allons décrire le processus de la réalisation de notre simulation qui a pour
objectif de mettre en œuvre la solution décrite dans le chapitre précédent. Pour ce faire, nous allons
commencer par la définition de l’environnement matériel et logiciel utilisés dans le développement
de notre simulation. Ensuite, nous décrivons l’implémentation des différents algorithmes
nécessaires. Enfin, nous allons présenter les principales interfaces graphique de notre application.
Dans cette section, nous décrirons les différentes ressources matérielles et logicielles utilisées dans
le processus de la réalisation de notre simulation.
Tout le travail est réalisé sur un PC portable lenovo-ThinkPad-W540 caractérisé par : Processeur :
Intel® Core™ i7-4800MQ CPU @ 2.70GHz × 8
Système d’exploitation : Ubuntu 18.04.4
Type de système d’exploitation : 64 bits
RAM :16 Go
Pycharm
PyCharm est un environnement de développement intégré utilisé pour programmer en Python. Il
permet l'analyse de code et contient un débogueur graphique. c'est un logiciel multi-plateforme qui
fonctionne sous Windows, Mac OS X et Linux.
PyCharm permet également la gestion des tests unitaires, l'intégration de logiciel de gestion de
versions, et supporte le développement web.Il aide également les programmeurs à utiliser Python de
manière plus efficace dans les projets Big Data et Data Science. Il supporte plusieurs bibliothèques
scientifiques largement utilisées pour Python.
Trois versions sont disponibles . La figure 4.1 montre le logo de PyCharm.
- PyCharm CE (la version gratuit Community Edition, diffusé sous licence Apache. : c'est cette
version que nous allons utiliser)
- PyCharm Pro (la version professionnelle du logiciel, diffusé sous
licence propriétaire)
- PyCharm Edu (la version éducative du logiciel)
Langage Python
Python est un langage de programmation interprété populaire multi-paradigme et multi plateformes,
offrant des outils de haut niveau et une syntaxe simple à utiliser. Il favorise la programmation
impérative structurée, fonctionnelle et orientée objet.. La version majeure la plus récente de Python
que nous avons utilisé est Python3.
Bibliothèques importées:
Une bibliothèque est un ensemble de fonctions qui sont regroupées et mises à disposition afin
qu'elles puissent être utilisées sans avoir à les réécrire , parmi les bibliothèque importants que nous
avons utilisée sont :
Charm :
Charm est un framework permettant de prototyper rapidement des cryptosystèmes avancés. Basé
sur le langage Python, Cette bibliothèque comprend des schémas de cryptage à clé publique, des
schémas de cryptage basés sur l'identité, des schémas de cryptage basés sur des attributs, des
signatures numériques. Il a été conçu dès le départ pour minimiser le temps de développement et la
complexité du code tout en favorisant la réutilisation des composants. Elle est utilisée pour fournir
l’algorithme CP-ABE.
Crypto :
Est une bibliothèque qui fournit des outils de cryptographie primitive implémentés en langage
Python. Elle est utilisée pour fournir l’algorithme AES.
Tkinter :
Est la bibliothèque graphique libre d'origine pour le langage Python, permettant la création
d'interfaces graphiques.
Matplotlib :
Est une bibliothèque du langage de programmation Python destinée à tracer et visualiser des
données sous formes de graphiques. Elle offre un export possible en de nombreux formats
matriciels (PNG, jPEG…).
Pour la construction du chiffrement CP-ABE dans notre application, nous avons prévu 3 utilisateurs
avec des ensembles d’attributs spécifique pour chacun d’eux comme illustre la figure 4. 2. Ces derniers
peuvent accéder à la plateforme de localisation des objets connectés mobiles afin que chacun d’entre
eux puisse localiser ses propres objets seulement ou bien il a les droits de privilèges pour effectuer cette
action.
Figure 4.2
Pour cela nous avons désigner le premier utilisateur (user1) comme un propriétaire de données qui a
prés définit la politique d’accès utilisée pour le chiffrement des données de localisation de tous ses
objets connectés mobiles afin d’autoriser uniquement qui peut voir la localisation de ses objets.
Notre politique d’accès est constituée d’une sélectionne de quatre attributs (DRAR, DSI, AT, BEK)
et de trois ports logiques comme montre la figure 4.3 :
Figure 4.3
Figure 4.4
Cette interface a été développée dans le but de faciliter la gestion du l’application par la création de
deux boutons :
- Le bouton démarrer permet d’accéder au plan de positionnement des objets connectés mobiles,
l’autorité d’attribut et le Cloud.
- Le bouton annuler permet de quitter l’application.
Au niveau de cette section nous allons expliqués les différents étapes qui nous offre la possibilité de
visualiser comment se déroule le scénario de déplacement de nos objets connectés mobiles et les
processus de chiffrement nécessaires qui ont été mis en œuvre pour protéger leurs données de
localisation :
- Plan (X,Y,Z=0) qui nous permettre de visualiser le déplacement de nos objets ainsi l’envoie de
chaque donnée de localisation.Nous présentons la donnée de localisation par les coordonnées
longitude et latitude qui sont donnée par le couple X et Y récupérés du plan de mouvement. Tels
que chaque couple représente un nouveau emplacement de l’objet.
- Espace de saisie pour le nombre d’objets connectés : cette dernière va nous permettre de saisir le
nombre d’objets qu’on souhaite suivre leur emplacement selon la demande de chaque utilisateur.
- Un bouton start qui permet de lancer le mouvement des objets connectés et d’autres
fonctionnalités que nous allons les voir par la suite une fois nous appuyons sur start.
Figure 4. 5
lorsque nous cliquant sur le bouton start que nous avons expliqué son rôle précédemment nous
allons obtenir :
premièrement nous visualisons au niveau du terminal de tous les processus de générations de clés et
le chiffrement de la politique d’accès qui sont été établies avec succès, ces derniers sont illustrés ci-
dessous :
Lorsque l’autorité d’attribut réussit à déchiffrer cette politique d’accès, elle l’utilise pour le
chiffrement de CP-ABE, cette dernière donne un contrôle d’accès sur qui peut déchiffrer la clé
symétrique Ks.
Deuxièmement, après le passage par toutes ces processus avec succès nous allons visualiser le
positionnement de l’autorité d’attributs et le cloud suivant des positions fixes sur le plan que nous
avons assignées pour toute exécution du programme. Par ailleurs, nous visualisons que les objets
connectés mobiles circulent suivant des trajectoires aléatoires avec une vitesse .
En effet lorsque l’objet commence a se déplacer sur la trajectoire, il est synchronisé a récupérer
périodiquement chaque 20pas de la trajectoire sa donnée de localisation qui est représentée par des
coordonnées (x,y) de ce plan (la période de récupération peut être changer selon l’utilisateur).
Cette étape est primordiale pour protéger la donnée de localisation de l’objet qui a été récupérée
précédemment. La figure suivante représente le résultat du processus de chiffrement de la donnée
de localisation au niveau de l’objet connecté par l’algorithme AES en utilisant la clé symétrique
Ks.
Puis cette donnée chiffrée elle sera envoyée vers le cloud pour le stockage. Tandis que le moment de
l’écoute de cette communication entre l’objet et le cloud est exprimé par des liens tracés
périodiquement en rouge comme est illustrée dans la figure 4.6. Par conséquent, cette dernière
montre la donnée de localisation de l’objet récupérer au niveau des coordonnées suivante (X= , Y=).
cette donnée est chiffrée comme suit ensuite elle est stockée dans le cloud.
En liaison avec l’interface précédente, l’interface illustrée dans la figure 4.7 représente le
déplacement de l’objet connecté.
Figure 4.7
Chaque clé de l’algorithme CP-ABE a été générée pour effectuer une tache spécifique :
la clé publique PK a été utilisée pour le chiffrement de la clé symétrique Ks.
La clé principale MSK a été utilisée pour la génération de la clé SK avec l’association de la liste
d’attributs de chaque utilisateur.
Et la clé SK a été utilisée pour le déchiffrement de la clé symétrique Ks si seulement si elle satisfait
la politique d’accès.
La figure 4.10 montre la réussite de processus de chiffrement de la politique d’accès au niveau de l’objet
et le processus de déchiffrement de cette dernière au niveau de l’autorité.
Ainsi,la figure 4.9 représente la génération de la paire de clés ECDHE utilisée pour la génération de
la clé symétrique Ks.
figure 4.9
La figure 4.10 montre la réussite de processus de chiffrement de la politique d’accès au niveau de l’objet
et le processus de déchiffrement de cette dernière au niveau de l’autorité.
Figure 4.10
Chiffrement de la donnée :
La clé symétrique ks est chiffrée par l’algorithme CP-ABE comme suit : ks chiffrée=(PK, A, ks).
L’affichage illustré dans la figure ci-dessous est une vue du print dans le terminal sur le résultat du
processus de chiffrement de la clé Ks au niveau de l’autorité d’attribut à l’aide de l’algorithme CP-
ABE.
Figure 4.11
la figure 4.12 suivante présente les résultats obtenus lors des tests d’évaluation effectués, nous
avons fait une comparaison entre le temps de chiffrement pris par l’algorithme AES et CP-ABE
respectivement. Nous remarquons que le temps de chiffrement pris par le nœud IoT pour chiffrer la
politique d’accès et sa donnée de localisation avec le chiffrement symétrique en utilisant
l’algorithme AES n’a pas dépassé les 150 nS. Par contre le temps pris par le chiffrement par attribut
CP-ABE pour chiffrer la clé Ks au niveau de l’autorité dépasse 0.03mS , cette valeur est
comparable avec le temps pris par le chiffrement AES . Cela montre la rapidité et l’efficacité de
l’algorithme AES qui ne consomme pas trop de ressources des nœuds IoT .Avec l’hétérogénéité
d’un environnement IoT cela est approprié ,surtout lorsque nous avons un nœud IoT mobiles qui
est limité en ressources (capacité de calcul, énergie ). Nous pouvons, donc, dire que la notion de
temps réel est respectée avec ce résultat.
Figure 4.12
Espace utilisateur
Dans notre application on a trois utilisateurs par défaut. Par conséquent, nous avons prévu un
pseudo et un mot de passe pour chacun d'eux à savoir user1 , user2 , user3 (qui sont déjà ajoutées
dans un fichier- text qui représente la liste des utilisateurs.
Figure 4.13
Interface d’authentification
Cet espace d'authentification est dédie à l’utilisateur, il constitue la fenêtre d'accueil de notre
application de côté de l’utilisateur, il permet à ce dernier de se connecter à l’application par
l’insertion de son pseudo et mot de passe, Cette étape permet de vérifier la disponibilité du compte
utilisateur et nous lui attribuons les droits et privilèges nécessaires. Pour cela deux cas de figure
peuvent se présenter :
Premier cas :
-Si l'utilisateur fait une erreur lors de la saisie de son mot de passe ou de son pseudo ou bien il n’est
pas enregistré sur la plateforme un message d’erreur s’affiche (voir figure 4.15). Il doit donc saisir à
nouveau ces informations correctes afin de pouvoir accéder à ses fonctionnalités.
Figure
4.14
figure
4.15
Deuxième cas :
-Si l’utilisateur est enregistré et fait entrer correctement ses informations de connexion, il peut
accéder à l’espace suivant.
Figure 4.16
Suivre la localisation de mes objets IoT :
C’est au niveau de cette interface que l’utilisateur va permettre de récupérer les données de
localisation de ses objets connectés mobiles après avoir transmis
données d’une manière sécurisé de l’expéditeur (objet) jusqu’au destinataire (utilisateur).
Pour que l’utilisateur récupère les données il doit passer par les étapes qui constitue cette
interface suivante comme illustre la figure 4.17 :
figure 4.17
1- la barre
« Choisir un objet
connecté » : à cette
étape il doit choisir l’objet qu’il souhaite localiser en fonction de l’identifiant ID de son objet
désiré , l’affichage de cette liste est lié au nombre d’objet connectés choisis au niveau de l’interface
du plan de mouvement.
2- le bouton « Demander la CT » : il doit cliquer sur ce bouton pour lancer la demande de la liste
qui contient toutes les positions traversé par son objet auprès du cloud. Lorsqu’il reçoit cette liste, il
sera en mesure de sélectionner la position qu’il veut la récupérer.
3- Le bouton « Demander la Ks » : En s'appuyant sur ce bouton , une demande de la clé Ks sera
envoyé au près du cloud. Puis , lorsque l'utilisateur reçoit cette clé chiffrée ,un message 'bien reçu.."
sera affiché.
Cette clé sera principalement utilisée par la suite pour le chiffrement de la donnée de localisation.
4- le bouton « Demander la SK » : il doit cliquer sur ce bouton pour lancer la demande de la clé
SK. Cette demande est effectué auprès de l’autorité d’attribut. Ensuite dés qu’il reçoit la clé, un
message de confirmation de réception est affiché à son niveau.
5- le bouton ‘Déchiffrer la CT’ : lorsque un utilisateur s’appuie sur ce bouton deux scénario
peuvent se présenter :
1er scénario :
Si l’utilisateur qui a demandé cette donnée est le propriétaire de donnée (user1) ou l’utilisateur
autorisé par ce dernier (user3),le déchiffrement de l’emplacement de l’objet choisi réussira.
Autrement dit, l’utilisateur possède une clé SK avec des attributs qui satisfont la politique d’accès
ce qui lui permet de déchiffrer la clé symétrique Ks chiffrée par le CP-ABE avec sa clé SK. Ensuite
il utilise cette clé symétrique pour déchiffrer la donnée de localisation avec l’algorithme AES et
l’obtiendra en clair comme montre la figure 4.18
figure 4.18
2 eme scénario :
Figure 4.19
Conclusion :
A travers ce chapitre nous avons pu appliquer les notions théoriques acquises, nous avons mis en
exergue les différentes étapes de processus de simulation de notre solution tout en respectant la
conception élaborée. En spécifiant les outils de développement et les librairies utilisés. Nous avons
présenté les différentes interfaces graphiques qui composent notre application tout en exposant les
fonctions qui constituent chaque espace de l’application.