UNIVERSITE EL ARBI BEN MHIDI OUM ELBAOUAGHI
FACULTE DES SCIENCES DE L’INGENIEUR
DEPARTEMENT INFORMATIQUE
Projet de fin d’études en vue d’obtention du diplôme
Master en informatique
Option : Système Distribué
Thème :
La sécurité des échanges E-mail en utilisant des algorithmes hybrides.
Présenté par : Dirigé par :
- Boutarfa Walida - M. Baaziz Mohammed
Année universitaire 2011/2012
Table des matières
Remerciement et dédicace.
Bibliographie.
Introduction générale :...……………………………………………………………….............1
Chapitre 01 : le réseau informatique.
Introduction : ……………………………………………………………………………….....3
1. Le réseau informatique :…………………………………………………………………….3
2. Réseau Internet : …………………………………………………………………………….4
2.1. Historique : ……………………………………………………………………………….4
2.2. Définition : ………………………………………………………………………………..5
2.3. Les services : ……………………………………………………………………………...5
2.3.a. E-mail : …………………………………………………………………………………5
2.3.b. Usenet : …………………………………………………………………………………5
2.3.c. Telnet : ………………………………………………………………………………….5
2.3.d DNS : ……………………………………………………………………………………5
2.3.e. La consultation du WWW :……………………………………………………………..6
2.3.f. Le courrier électronique : ……………………………………………………………....6
2.4. Les Protocoles :……………………………………………………………………………6
2.4.1. Un ensemble de protocoles :……………………………………………………………7
2.4.1.1. HTTP: (HyperText Transfer Protocol) :……………………………………………...7
2.4.1.2. FTP (File Transfert Protocol):…………………………………………………………7
2.4.1.3. Les protocoles de Messagerie : …………………………………………………….....7
3. Sécurité des réseaux informatiques :………………………………………………………..8
3.1. Vulnérabilité : ………………………………………………………………………….....8
3.2. Menace et risque :…………………………………………………………………………9
3.2.1. Les risques :……………………………………………………………………………..9
3.1.3. Les menace : ……………………………………………………………………………9
3.3. Les attaques : …………………………………………………………………………….10
3.3.1. Les attaques d‟accès :………………………………………………………………......10
3.3.2. Les attaques de modification :…………………………………………………………10
3.3.3. Les attaques par saturation (déni de service) :…………………………………………10
3.3.4. Les attaques de répudiation :…………………………………………………………...11
4. Les solutions proposées : ………………………………………………………………….11
4.1. Mécanisme de sécurité : ………………………………………………………………....11
5.1. Le protocole SSL/TLS (Secure Socket layer/ Transport Layer Sécurité Protocol) :……11
Conclusion :…………………………………………………………………………………..12
Chapitre 02 : la cryptographie.
Introduction : ………………………………………………………………………………...13
1. Terminologie : …………………………………………………………………………….13
1.1. Le Chiffrement :…………………………………………………………………………13
1.2.Le déchiffrement :………………………………………………………………………..13
1.3. Crypter (Chiffrer):……………………………………………………………………….13
1.4. Décrypter :……………………………………………………………………………….14
1.5. Clef:……………………………………………………………………………………..14
1.6. La cryptologie :………………………………………………………………………….14
1.7. La Cryptographie :……………………………………………………………………….14
1.8. Le Cryptogramme :……………………………………………………………………..14
1.9 Chiffre:…………………………………………………………………………………...14
1.10. La cryptanalyse :……………………………………………………………………….14
1.11. Un algorithme cryptographique :………………………………………………………14
1.12. Le Crypto système :…………………………………………………………………….14
2. Cryptage :…………………………………………………………………………………14
2.1. Le cryptage symétrique :………………………………………………………………..14
2.1.1. Le chiffre de César :…………………………………………………………………...15
2.1.1.a/ Algorithmes de chiffrement de flux (Stream Cipher) : …………………………….15
2.1.1.b/ Algorithme de chiffrement par bloc (Block Cipher) :………………………………15
2.1.2.Data Encryption Standard (DES) :…………………………………………………….16
2.1.2.a/ Fonctionnement :…………………………………………………………………...16
2.1.3. Le 3DES (Triple Data Encryption Standard) :………………………………………..19
2.1.3.a/ Fonctionnement :……………………………………………………………………19
2.1.4. Advanced Encryption Standard (AES) : …………………………………………….20
2.1.4.a/ La Recommandations de la NSA :………………………………………………….21
2.1.4.b/ Rijndael :……………………………………………………………………………21
2.1.4.c/ Fonctionnement : …………………………………………………………………..22
2.2. Le cryptage asymétrique :………………………………………………………………23
2.2.1. Rivest Shamir Adleman (RSA) :……………………………………………………...24
2.2.1.a/ Fonctionnement :……………………………………………………………………25
2.2.2. ElGamal : ……………………………………………………………………………26
2.2.2.a/ Fonctionnement :……………………………………………………………………26
2.3. La fonction de hachage :………………………………………………………………..27
2.3.1 Propriétés des fonctions de hachage :…………………………………………………27
2.3.1.1 Preimage résistance………………………………………………………………….27
2.3.1.2 2nd preimage résistance :……………………………………………………………27
2. 3.1.3 Collision résistance :……………………………………………………………….28
2.3.2 La fonction de hachage MD2 :………………………………………………………...28
2.3.2 La fonction de hachage MD5 :………………………………………………………...28
2.3.2.a/ Fonctionnement :……………………………………………………………………28
Conclusion :………………………………………………………………………………….30
Chapitre 03 : Analyse et conception.
Introduction : ………………………………………………………………………………...31
1. Introduction au problème et Spécification des besoins : ………………………………….31
1.1. La spécification: ………………………………………………………………………...31
1.1.1. Le cryptage et décryptage des messages : ……………………………………………31
1.1.2. Le transfert des messages vers un serveur de stockage : ……………………………...31
1.1.3. Stocker les messages en sécurité (crypté) : …………………………………………....32
2. Présentation de l‟UML : …………………………………………………………………...32
2.1. Définition : ……………………………………………………………………………....32
2.1.1 Diagramme de cas d'utilisation :………………………………………………………..32
2.1.1.1 Les cas d'utilisation de notre application :…………………………………………...33
2.1.1.1.2 Cas D‟utilisation créer un nouveau compte : ………………………………………33
2.1.1.1.2 Cas D‟utilisation Identification : ……….…………………………………………..34
2.1.1.1.3 Cas D‟utilisation lire un message : ………………………………………………...35
2.1.1.1.4 Cas D‟utilisation écrire un message : ………………………………………………35
2.1.1.1.5 Cas D‟utilisation supprimer un message : ………………………………………....36
2.1.2. Diagramme de séquence : ……………………………………………………………..38
2.1.2.1 les diagrammes de séquence de notre application :…………………………………..38
2.1.2.1.1 Diagramme de séquence du cas d‟utilisation « créer un nouveau compte »………38
2.1.2.1.2 Diagramme de séquence du cas d‟utilisation « identification »…………………...39
2.1.2.1.3 Diagramme de séquence du cas d‟utilisation « lire un message »…………………40
2.1.2.1.4 Diagramme de séquence du cas d‟utilisation « écrire un message »………………40
2.1.2.1.5 Diagramme de séquence du cas d‟utilisation « supprimer un message »…………41
2.1.3 Diagramme de classe : …………………………………………………………………41
3. Les tables de notre base de données : ……………………………………………………..43
Conclusion :…………………………………………………………………………………..43
Chapitre 04 : Réalisation et implémentation.
Introduction :…………………………………………………………………….44
1. Environnement de développement : ………………………………………………………44
1.1. . Net :………………………………………………………………………………….44
1.2. Le langage de développement C Sharp : …………………………………………….44
2. Implémentation de la base de données : …………………………………………………...44
2.1. La base de données :……………………………………………………………………..44
2.1.1. Les tables : ………………………………………………………………………….....44
2.1.2. Système de Gestion de Bases de Données :……………………………………………45
2.1.3. Langage de Manipulation de Bases de Données :……………………………………..45
3. Description de l‟application : ……………………………………………………………..46
3.1. Le rôle de chacune des couches : ……………………………………………………….46
3.1.1 La couche présentation :……………………………………………………………….46
3.1.2. La couche métier (logique de l'application) :……………………………………….…46
3.1.3. La couche accès aux données :………………………………………………………...46
3.2. Avantages de cette architecture :………………………………………………………...46
4. Quelques interfaces de notre application :………………………………………………....47
4.1 Espace de travail : ………………………………………………………………………..47
4.2 Espace d‟inscription : ……………………………………………………………………48
4.3 Espace d‟authentification : ………………………………………………………………48
4. 4 Espace de l‟écriture : ……………………………………………………………………50
Conclusion : ……………………………………………………………………………........51
Conclusion générale : ………………………………………………………...52
Table des figures :
Figure 2.1 : Le chiffrement symétrique:………………………………………..16
Figure 2.2 : Schéma de Feistel:………………………………………………….17
Figure 2.3 : Réseau de Feistel à n tours utilisant l'opérateur XOR:………….17
Figure 2.4 : Fonctionnement du DES:…………………………………………..18
Figure2.5 : Fonctionnement du triple DES :……………………………………20
Figure 2.6 : Fonctionnement de l‟AES : ………………………………………..23
Figure 2.7 : le chiffrement asymétrique :……………………………………....24
Figure 2.8 : Fonctionnement de RSA :………………………………………....25
Figure 2.9 : Exemple de fonction d‟ElGamel :………………………………...26
Figure 2.10 : le fonctionnement de la fonction de hachage : ………………..27
Figure 2.11 : La construction de Merkle-Damgard :………………………….29
Figure 2.12 : Vue générale de MD5 :…………………………………………...29
Figure 2.13 : Remplissage d'un message de 24 bits :………………………….30
Figure 3.1 : fiche technique pour décrire un cas d‟utilisation : …………….33
Figure 3.2 : Diagramme de cas d‟utilisation pour l‟ utilisateur:………………37
Figure 3.4 : Diagramme de classe :…………………..………………………….42
Figure 4.1 : Table d‟une base de données :……………..…………………......45
Figure 4.2 : L‟espace de travail du groupe des utilisateurs :………………….47
Figure 4.3 : Espace d‟inscription :………………………………………………48
Figure 4.4:La cible d‟inscription pour accéder à la session de l‟utilisateur: 48
Figure 4.5 : L‟Espace D‟Ecriture :………………………………………………50
Dédicaces
Je dédie ce travail à mes très chers parents pour leur soutien
incessant, à la personne qui m‟a vraiment encouragée et soutenue
durant toute l‟année, à ma petite famille et sans oublier ma petite sœur
Minnat-Allah.
Remerciements
A l'issue de ce travail, je remercie, en premier lieu, le bon Dieu de m‟avoir
donné la force et le courage de le mener à terme.
Je tiens, également, à exprimer ma sincère reconnaissance et ma profonde
gratitude à tous ceux qui ont contribué de près ou de loin à la réalisation de ce
mémoire notamment M. Benkhaled Rochdi dont les conseils et orientations
m‟ont été précieusement utiles, également à mon promoteur M. Baaziz
Mouhamed.
Je remercie fortement tous mes camarades de la promotion 2011-2012.
Enfin je remercie toute ma famille étendue.
Abstract
A key security solution is that cryptography is the study of methods for transmitting
data confidentially. To protect a message, we apply a transformation that makes it
incomprehensible. There are three cryptographic primitives; keyless Primitive, symmetric
primitive key and public key primitive each team has different branches. We are interested in
the public key primitive, it relies on the use of a distributed key and another key remains
secret. Among the algorithms of cryptography the most used one is the RSA (Rivest Shamir
Adleman). To this end, we will implement an application to exchange e-mails using the
advantage of RSA and symmetric key algorithm, implementing a hybrid algorithm for it and
improve safety performance.
Introduction générale
Introduction Générale :
Nous savons tous que l'homme ne peut pas survivre dans l'isolement. En tant que
membre de la société, il est dépendant des autres. Pour la plupart des choses qu'il doit
prendre l'aide des autres. Mais la question est, comment sait-on ce que l'autre veut? On
doit transmettre des pensées, des idées, des exigences, et d‟expériences à l'autre de telle
manière que celui-ci va les comprendre correctement. La même chose arrive aussi avec les
entreprises. Elles fournissent des informations aux clients, au gouvernement, propriétaires,
employés… etc. Et en même temps reçoit des informations d'eux.
Dans cette partie on va mettre en lumière, comment les gens expriment leurs pensées,
idées, messages, par le biais de la communication.
La communication peut être définie comme un processus de partage des faits, des
idées, des opinions, des pensées et de l'information par le biais de la parole, l'écriture, les
gestes ou les symboles utilisés entre deux ou plusieurs personnes. Ce processus de
communication comporte toujours des messages, qui doivent être transmis entre des parties. Il
ya deux parties l'une est « Emetteur », qui envoie le message et l'autre «récepteur», qui le
reçoit.
La communication concerne aussi bien l'être humain (communication
interpersonnelle, groupale...) ou la machine (télécommunications, nouvelles technologies...),
C'est en fait, une science partagée par plusieurs disciplines qui ne répond pas à une définition
unique.
On passe de la communication à la télécommunication, ce terme fut inventé en 1904
par E. Estaunié et signifie ″communiquer à distance″. Son but est donc de transmettre
un signal, porteur d‟une information (voie, musique, images, données…), d‟un lieu à un
autre lieu situé à distance. Parmi ses caractéristiques fonctionnelles on trouve la transmission
de l‟information à travers divers dispositifs de communication. Alors depuis des temps très
anciens les romains avaient un système de signaux militaires qui permettait de faire circuler
assez vite, les ordres et les nouvelles d‟importance. Cependant, ce n‟était que l‟échange
de quelques signes conventionnels qui codaient une signification globale du message
c‟est la communication visuelle. On distingue ainsi divers moyens tel que : le Télégraphe
visuel et mécanique, le Télégraphe électrique, le téléphone, la Radio, La télévision, Les
satellites de télécommunication, et l‟internet. Au cours du développement des dispositifs de
télécommunication, il est apparu indispensable de coder l'information à transmettre, pour
adapter l'information au canal de transmission (fibre optique,...).
De ce fait, le codage de l'information s'est révélé être un point-clef qui fait aujourd'hui
encore l'objet de recherches et de normalisation. Ce dernier est apparu par la suite du
problème de l‟insécurité de l‟information.
1
Introduction générale
Aucun réseau n‟est à l‟abri des attaques soit volontaires ou bien non à sa sécurité, alors
il faut prendre conscience d‟un fait sur une connexion réseau 99.9% des informations qui
circulent ne sont pas sécurisées et peuvent être intercepté par n‟importe qui. Et pour mettre
fin à l‟interception, la perception de la sécurité est un élément important à prendre en compte
dans la télécommunication.
L‟une des principales solutions de sécurité est la cryptographie qui représente l‟étude
des méthodes permettant de transmettre des données de manière confidentielle. Afin de
protéger un message, on lui applique une transformation qui le rend incompréhensible. On
distingue trois primitives de cryptographie :
- Primitive sans clé, primitive à clé symétrique et la primitive à clé publique chacune
d‟elle possède de différentes branches. Intéressons nous à la primitive à clé
publique, elle repose sur l‟utilisation d‟une clé diffusée et d‟une autre clé reste
secrète. Parmi les algorithmes de la cryptographie les plus utilisés on trouve le
RSA (Rivest Shamir Adleman).
A cet effet, nous allons implémenter une application d‟échanges des e-mails en
utilisant l‟avantage du RSA et de l‟algorithme à clé symétrique, en Implémentant un
algorithme hybride et cela pour améliorer la performance de sécurité.
2
Chapitre 01 : Le réseau informatique
Le réseau informatique
Introduction :
Avant l'existence des réseaux, les personnes qui souhaitaient partager des informations
devaient échanger oralement les informations, écrire des mémos, copier les informations sur
une disquette et la remettre à une autre personne qui devait recopier son contenu sur son
ordinateur.
Ces besoins ont été couverts par la suite par les réseaux informatiques.
1. Le réseau informatique :
Un réseau informatique est une collection d‟ordinateurs et d'autres dispositifs
interconnectés par câbles ou des infrastructures de télécommunication pour pouvoir
communiquer entre eux et partager les ressources et informations. Les réseaux sont de taille
variable; certains sont limités à un bureau et d'autres s'étendent aux dimensions de la planète.
Un réseau informatique peut servir plusieurs buts:
- Le partage de ressources (fichiers, applications et hardware.) ;
- La communication entre personnes (courrier électronique, discussion en direct…
etc.) ;
Parmi ses inconvénients on trouve le compromis entre sécurité et confort d‟utilisation
difficile.
Les types de réseau informatique sont :
On distingue généralement différents types de réseau selon leur taille, leur vitesse de
transfert de données ainsi que leur étendue. On fait généralement trois catégories de réseau :
- LAN (local area network) il s‟agit d‟un ensemble d‟ordinateurs appartenant à une
même organisation et reliés entre eux dans un petit air par un réseau.
- MAN (Métropolitain Area Network) interconnecte plusieurs LAN
géographiquement proches à des débits importants. Il permet à deux nœuds
distants de communiquer comme s‟ils faisaient partie d‟un même réseau local.
Alors un MAN est formé d‟un commutateur ou de routeurs interconnectés par des
liens hauts débits en générale en fibre optique.
3
Le réseau informatique
- WAN (Wide Area Network) interconnecte plusieurs LAN à travers de grandes
distances géographiques. Les débits disponibles sur un WAN résultent d'un
arbitrage avec le coût des liaisons (qui augmente avec la distance) et peuvent être
faibles. Ils fonctionnent grâce à des routeurs qui permettent de "choisir" le trajet le
plus approprié pour atteindre un nœud du réseau. Parmi les WAN ; le plus connu
est L‟Internet.
2. Réseau Internet :
2.1. Historique :
L‟historique d‟Internet remonte au années 1960, marquant la création de réseau
ARPAnet (Advenced Research Project Agency) pour le département américain de la défense,
à l‟origine, il s‟agit d‟un réseau coopératif d‟ordinateurs permettant le partage de données
stockées sur des serveurs distant, ainsi que l‟échange de message électroniques (e-mail)
[vos_01].
Arpanet, s‟étend alors progressivement aux universités américaines dans les années
1970.notamment l‟université de Californie à Los Angeles (UCLA) et l‟université Stanford à
Palo Alto, avant d‟être remplacé en 1990 par le réseau Internet [vos-01].
En 1991, Tim Berners-Lée du CERN à Genève met au point l‟interface d‟Internet
appelée « World Wide Web » [vos-01].
En Janvier 1992, internet society (ISOC) a fait une coordination de développement sur
Internet. En 1994, la création du Consortium W3C pour favoriser l‟interopérabilité sur le web,
4
Le réseau informatique
c'est-à-dire le développement de normes, W3C proposera en 1998 la norme XML
(eXtensive Markup Langage).
Aujourd‟hui, Internet permet à tout individu d‟accéder à une multitude de données
sous forme de divers format : texte, base de données, image, son, vidéo, [vos-01].
2.2. Définition :
Internet, acronyme d‟INTER communication Network, est un grand réseau mondial
associant des ressources de télécommunication et des ordinateurs serveurs et clients, destiné à
l‟échange des messages électroniques, information multimédias et fichiers.
Il représente l‟interconnexion physique des réseaux entre eux ou les données transitent
par des moyens de communication, tels que les câbles électroniques, fibre optique et/ou
moyenne de transmission par satellite.
2.3. Les services :
L‟Internet offre plusieurs services dont nous citons :
2.3.a. E-mail :
Anglais : « electronic mail ».
Français : « message électronique ».
L‟Email est un message électronique qui parvient n‟importe ou dans le monde en
quelque secondes ou minutes. De plus le destinataire n‟est obligé d‟être présent pour recevoir
Un message, Car ce dernier est stocké chez le serveur approprié.
2.3.b. Usenet :
Ensemble de machines reliées à différents réseaux qui véhiculent.
2.3.c. Telnet :
Permet l‟utilisation des ordinateurs à distance. Les scientifiques et les étudiants d‟en
servent régulièrement.
2.3.d DNS :
Domain Name Server : système de nom de domaine ou système d'affectation
de nom.
Système distribué de bases de données et de serveurs qui assure la traduction des noms
de domaine utilisés par les internautes en numéros IP utilisables par les ordinateurs. Mis au
point pour permettre aux internautes d'utiliser des noms dans la rédaction des adresses.
5
Le réseau informatique
2.3.e. La consultation du WWW :
Le www est un serveur multimédia, graphique, accessible dans le monde des PCs. Les
informations multimédia sont reliées entre elles par des liens hypertextes.
La navigation sur ce site s‟effectue grâce aux cliques de la souris qui permet de passer
d‟un serveur à un autre.
2.3. f. Le courrier électronique :
Le courrier électronique est aujourd'hui l'une des applications les plus populaires du
réseau. Utilisé pour des applications très variées - personnelles, professionnelles, associatives,
politiques… etc. ; celui-ci tend à prendre une place de plus en plus prépondérante par rapport
aux moyens de communication traditionnels. Outre son faible coût, la messagerie électronique
a l'avantage d'optimiser la communication et la diffusion d'informations. En revanche, il a
l‟inconvénient de l‟interception des données par un tiers.
2.4. Les Protocoles :
Un réseau fournit un canal de communications entre les machines
(ordinateurs,…). Pour que des machines soient capables d‟échanger (émettre et recevoir)
de l‟information à travers ce canal, il est nécessaire qu‟elles suivent un protocole
(commun) de communication.
Un protocole définit de manière précise l‟ensemble des règles à suivre pour permettre
l‟échange d‟informations.
Ces règles de communication concernent toutes les couches matérielles et
logicielles, des couches basses (physiques) aux couches les plus proches de l‟usager
(applications) : envoi de signaux dans les câbles, acheminement à travers les réseaux
interconnectés vers la machine destinataire, réception des données par la machine, par
l‟application de messagerie par exemple.
Les règles de communication permettent d‟assurer que toutes les données envoyées
arrivent en bonne et due forme au bon destinataire.
6
Le réseau informatique
2.4.1. Un ensemble de protocoles
Il n‟existe pas un protocole unique mais un ensemble de protocoles standards
permettant de répondre aux différents besoins d‟échange d‟informations.
Par exemple, pour la communication sur Internet, un ensemble de protocoles
est nécessaire, identifié sous le nom de protocole TCP/IP pour Transmission Control
Protocol/Internet Protocol. TCP/IP permet la transmission entre des machines repérées par
leurs adresses IP.
Il comporte notamment des protocoles dédiés à des rôles spécifiques (HTTP, FTP,
SMTP, etc).
2.4.1.1. HTTP: (HyperText Transfer Protocol)
HTTP est le protocole le plus utilisé sur Internet. Il permet la lecture sur un
navigateur (le client) de pages Web localisées par leur adresse URL sur un serveur
Web.
2.4.1.2. FTP (File Transfert Protocol) :
File Transfer Protocol permet le transfert de fichier. Il permet par exemple de
déposer un site sur un serveur Web en utilisant un logiciel dédié.
2.4.1.3. Les protocoles de Messagerie :
les protocoles SMTP (Simple Mail Transfer Protocol), POP (Post Office
Protocol) et IMAP (Internet Message Access Protocol) permettent l‟échange (envoi et
réception) de messages électroniques.
SMTP (Simple Mail Transfert Protocol) permet le transfert en mode connecté des
messages entre les serveurs (de l‟expéditeur et du destinataire), POP (Post Office Protocol)
permettent de récupérer son courrier sur un serveur de mail, et ne fonctionne qu‟en mode
connecté.
7
Le réseau informatique
Le protocole POP fonctionne grâce à des commandes textuelles envoyées au serveur
POP. Chacune des commandes envoyées par le client est composée d‟un mot clé,
éventuellement accompagnée par un ou plusieurs arguments. [Club de la sécurité des
systèmes d‟information français PDF].
3. Sécurité des réseaux informatiques :
La sécurité des réseaux informatiques est un sujet essentiel pour favoriser le
développement des échanges dans tous les domaines. La sécurité recouvre des aspects très
différents à la fois techniques, organisationnels et juridiques.
La perception de la sécurité est donc un élément important à prendre en compte dans
le développement des systèmes de protection.
3.1. Vulnérabilité :
Une vulnérabilité de sécurité est un défaut ou une faiblesse susceptible d'être exploité
pour violer un système ou les informations qu'il contient. Une vulnérabilité est susceptible
d'engendrer la mise à l'exécution d'une menace.
Les vulnérabilités d‟un système dépendent de nombreux facteurs. Les critères
primordiaux sont la complexité du système, sa répartition, sa sensibilité et sa mobilité.
Il existe quatre types de vulnérabilité:
1/les vulnérabilités du modèle des menaces proviennent de la difficulté à prévoir les
éventuelles menaces futures;
2/les vulnérabilités de conception et spécification proviennent d'erreurs ou d'oublis
dans la conception d'un système ou d'un protocole qui le rendent intrinsèquement vulnérable;
3/ les vulnérabilités d'implémentation proviennent d'erreurs au cours de
l'implémentation d'un système ou d'un protocole;
4/ les vulnérabilités d'exploitation et de configuration proviennent d'un mauvais usage
d'options dans des implémentations ou de politiques de déploiement déficientes (par exemple
la non-obligation d'utiliser le chiffrement dans un réseau Wifi).
8
Le réseau informatique
3.2. Menace et risque :
Un risque est les effets négatifs qui peuvent se produire en cas d'exploitation d'une
vulnérabilité de sécurité, autrement dit si une menace est mise à exécution. Le risque ne peut
jamais être éliminé mais un objectif de la sécurité est de réduire le risque à un niveau
acceptable. Pour cela, il faut comprendre les menaces et les vulnérabilités et appliquer des
contremesures appropriées (à savoir des services et des mécanismes de sécurité).
3.2.1. Les risques :
- Accès physique à la machine par un tiers ;
- Endommagement de fichiers (voulu ou non) ;
- Virus via disquette, CD-Rom, zip, etc.
- risque environnementale (humidité, variation de température, vase) ;
- Erreurs de manipulation.
- Destruction/modification de données.
- Lecture de données confidentielles.
- Virus qui se trouvent sur le réseau.
- surveillance (spyware).
3.2.2. Les menace :
L‟origine des menaces émane avant tout de l‟idéologie ambiante « il est interdit
d‟interdire » de la Toile, qui suscite l'apparition d‟effets nuisibles ou pervers, amplifiés par la
résonance de la taille du réseau.
Les menaces sont incarnées pêle-mêle par l‟irruption de sites qui hébergent des
serveurs suspects, par l‟encombrement des réseaux sous forme de contenus illicites ou de
messages non sollicités, par la pollution des messageries, la propagation de virus, le
téléchargement illégal de fichiers audio et vidéo, la circulation de fausses informations et par
l‟intrusion d‟informations cachées ou de logiciels malveillants. Enfin le réseau favorise la
9
Le réseau informatique
création de nids pour des implantations de sectes, de mafias ou bien de refuges pour
les réseaux de cybercriminels, voire bientôt de cyber terroristes.
3.3. Les attaques :
Les informations ou les systèmes d‟informations d‟une entreprise peuvent subir des
dommages de plusieurs façons ; certains intentionnels (malveillants), d‟autres par accident.
Ces événements seront appelés des attaques.
Il existe quatre catégories principales d‟attaque :
• L‟accès;
• La modification;
• Le déni de service;
• La répudiation.
3.3.1. Les attaques d’accès
Une attaque d‟accès est une tentative d‟accès à l‟information par une personne non
autorisée. Ce type d‟attaque concerne la confidentialité de l‟information (l‟interception de
données).
3.3.2. Les attaques de modification
Une attaque de type modification consiste, pour un attaquant à tenter de modifier des
informations. Ce type d‟attaque est dirigé contre l‟intégrité de l‟information.
3.3.3. Les attaques par saturation (déni de service)
Les attaques par saturation sont des attaques informatiques qui consiste à envoyer des
milliers de messages depuis des dizaines d'ordinateurs, dans le but de submerger les serveurs
d'une société, de paralyser pendant plusieurs heures son site Web et d'en bloquer ainsi l'accès
aux internautes.
Cette technique de piratage assez simple à réaliser est jugée comme de la pure
malveillance. Elle ne fait que bloquer l'accès aux sites, sans en altérer le contenu.
10
Le réseau informatique
3.3.4. Les attaques de répudiation
La répudiation est une attaque contre la responsabilité. Autrement dit, la répudiation
consiste à tenter de donner de fausses informations ou de nier qu‟un événement ou une
transaction se soient réellement passé.
4. Les solutions proposées :
4.1. Mécanisme de sécurité :
Un mécanisme de sécurité est conçu pour détecter, prévenir et lutter contre une attaque
de sécurité. Il comprit les caractères suivants:
• Chiffrement : algorithme généralement basé sur des clefs et transformant les
données. Sa sécurité est dépendante du niveau de sécurité des clefs.
• Signature numérique: données ajoutées pour vérifier l'intégrité ou l'origine des
données.
• Bourrage de trafic : données ajoutées pour assurer la confidentialité, notamment au
niveau du volume du trafic.
• Notarisation : utilisation d‟un tiers de confiance pour assurer certains services de
sécurité.
• Contrôle d’accès : vérifie les droits d‟accès d'un acteur aux données. N'empêche pas
l'exploitation d'une vulnérabilité.
4.2. Le protocole SSL/TLS (Secure Socket layer/ Transport Layer
Sécurité Protocol) :
La sécurisation des protocoles permet de sécuriser la communication entre le serveur
et le client messagerie.
- Le protocole SSL/TLS est constitue du quatre sous protocoles, chacun de ces sous
protocoles permet de garantir l‟un des critères de la sécurité parmi les suivants :
- L'authentification : réciproque des correspondants pour être sûr de son
interlocuteur
- L'intégrité des données transmises pour être sûr qu„elles n'ont pas été modifiées
accidentellement ou intentionnellement.
-
11
Le réseau informatique
- La confidentialité pour éviter que les données soient lues par des systèmes ou des
personnes non autorisées
- La non répudiation : assurer qu‟il est impossible, pour un correspondant, de nier
avoir reçu ou émis un message.
Il intercale entre le protocole transport (TCP) et le protocole applicatifs tels que ceux
utilisés dans l‟application de la messagerie (SMTP, POP, HTTP...)
En conclusion ce protocole utilise un sous protocole à négociation et un moyen de
cryptographie reconnu à l‟algorithme à clé publique RSA du nom du ses concepteurs Rivest,
Shamir, Adelman qu‟on va le détailler par la suite dans le prochain chapitre ainsi que d‟autre
algorithmes.
Conclusion
Ce manuel donne un aperçu de la sécurité dans les télécommunications et les technologies de
l'information, décrit des problèmes et indique les différents critères de la sécurité dans les
applications actuelles.
12
Chapitre 02 : La cryptographie
La cryptographie
Introduction :
De tout temps, les codes ont existé. Ils ont d'abord servi à retranscrire des
idées, à écrire un langage. L‟homme a perçu le besoin de cacher, de dissimuler
des informations personnelles ou confidentielles, et cela bien avant l'ère
informatique.
Mais avec ces nouveaux moyens de communication est arrivée la nécessité
de protéger le contenu de certains messages des inévitables curieux.
Ainsi est apparue la cryptographie, qui est la science ou l'art de dissimuler
ou cacher des messages ou textes ...etc. (c‟est dire de les rendre inutilisable...).
Donc la cryptographie étymologiquement la science du secret, elle ne peut
être vraiment considérée comme une science que depuis peu de temps. Cette
science englobe la cryptographie qui signifie l‟écriture secrète et la cryptanalyse
qui est l‟analyse de cette dernière.
La cryptologie est un art ancien et une science nouvelle :
- Un art ancien car Jules César l‟utilisait déjà ; Jules César (100 -44
avant J.-C.) employait une substitution simple avec l'alphabet
normal (il s'agissait simplement de décaler les lettres de l'alphabet
d'une quantité fixe (Il remplaçait chaque A dans ses messag es par un D,
chaque B par un E, et ainsi de suite à travers l‟alphabet)) dans les
communications du gouvernement. Ce chiffre était moins robuste, mais
à une époque où très peu de personnes savaient lire, cela suffisait. Seul
quelqu‟un qui connaissait la règle “décalé de 3” pouvait déchiffrer ses
messages.
- une science nouvelle parce que ce n‟est un thème de recherche
scientifique académique que depuis les années 1970. Cette discipline
est liée à beaucoup d‟autres, par exemple l‟arithmétique modulaire,
l‟algèbre, la complexité, la théorie de l‟information, ou encore les
codes correcteurs d‟erreurs.
1. Terminologie :
1.1. Le Chiffrement : c‟est une transformation syntaxique à l‟aide d‟une
clé de chiffrement d‟un texte clair en un message incompréhensible appelé texte
chiffré ou cryptogramme si on ne dispose pas d‟une clé de déchi ffrement. [Cours]
1.2. Le déchiffrement : c‟est l‟action qui permet de reconstruire le texte
en claire à partir d‟un texte chiffré. [WWW.SHC.FR]
1.3. Crypter (Chiffrer): Transformer un message afin qu'il ne soit lisible
qu'à l'aide d'une clef.
13
La cryptographie
1.4. Décrypter : c‟est l‟action qui permet de trouver le texte en clair sans
connaitre la clé de déchiffrement. [WWW.SHC.FR]
1.5. Clef : Dans un système de chiffrement, elle correspond à un nombre, un
mot, une phrase, etc. qui permet, grâce à l'algorithme de chiffrement, de chiffrer
ou de déchiffrer un message.
1.6. La cryptologie : c‟est une science mathématique qui comporte deux
branches. La cryptographie et la cryptanalyse. [WWW.SHC.FR]
1.7. La Cryptographie : c‟est l‟étude des méthodes permettant de
transmettre des données de manière confidentielle. Afin de protéger un message,
on lui applique une transformation qui lui rend incompréhensible. C‟est ce qu‟o n
appelle le chiffrement. Donc aujourd‟hui la science visant à créer des
cryptogrammes. [WWW.SHC.FR]
1.8. Le Cryptogramme : c‟est un message chiffré ; Le destinataire
légitime doit pouvoir déchiffrer le cryptogramme et obtenir le texte clair. [Cours]
1.9 Chiffre : Ensemble de procédés et ensemble de symboles (lettres,
nombres, signes, etc.) employés pour remplacer les lettres du message à chiffrer.
1.10. La cryptanalyse : c‟est l‟étude des procédés cryptographique dont
le but est de trouver des faiblesses et en particulier de décrypter des textes
chiffrés. Donc c‟est la science analysant les cryptogrammes en vue de les
décrypter. [WWW.SHC.FR]
1.11. Un algorithme cryptographique : c‟est une fonction
mathématique utilisée dans le processus de chiffrement et de déchiffrement.
1.12. Le Crypto système : est un ensemble composé d‟algorithmes
cryptographiques et de tous les textes en clairs, textes chi ffrés et clés possibles
2. Cryptage :
On trouve principalement deux grandes familles de cryptage à base de
clefs : le cryptage symétrique ou à clé secrète et le cryptage asymétrique ou à clé
à publique).
2.1. Le cryptage symétrique
Dans la cryptographie conventionnelle, aussi appelé e chiffrement à clé
secrète ou à clé symétrique, une seule et même clé est utilisée à la fois pour le
chiffrement et le déchiffrement. Ce procédé est à la fois simple et sûr.
14
La cryptographie
2.1.1. Le chiffre de César
Un exemple extrêmement simple de chiffrement conventionnel est un chiffre à
substitution. Un chiffre à substitution remplace un morceau d‟information par
un autre. Le plus souvent, cela est effectué en décalant des lettres de
l‟alphabet. Deux exemples sont l‟anneau décodeur secret du “Captain
Midnight”, que vous avez peut-être utilisé quand vous étiez enfant, et le
chiffre de Jules César. Dans les deux cas, l‟algorithme consiste en un
décalage de l‟alphabet, et la clé est le nombre de caractères à décaler. Par
exemple, si nous codons le mot “SECRET” en utilisant une valeur de 3 pour la
“clé de César”, nous décalons l‟alphabet de telle sorte que la troisième lettre
en descendant (D) commence l‟alphabet.
Donc en commençant avec
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Et en décalant le tout de 3, vous obtenez
DEFGHIJKLMNOPQRSTUVWXYZABC
Où D=A, E=B, F=C, et ainsi de suite.
En utilisant ce schéma, le texte clair, “SECRET” se chiffre comme
“VHFUHW”. Pour permettre à quelqu‟un d‟autre de lire le texte chiffré, vous
lui dites que la clé est 3.
Evidemment, c‟est de la cryptographie excessivement faible au regard des
normes actuelles, mais bon, cela marchait pour César, et cela illustre aussi
comment fonctionne la cryptographie conventionnelle.
On trouvera principalement parmi les algorithmes de crypto système
symétrique :
2.1.1.a/ Algorithmes de chiffrement de flux (Stream Cipher) :
Peuvent être définis comme étant des algorithmes de chiffrement par blocs,
où le bloc a une dimension unitaire (1 bit ou 1 octet…) ou relativement
petite. Leurs avantages principaux viennent du fait que la
transformation de chiffrement peut être changée à chaque symbole du texte
clair et du fait qu'ils soient extrêmement rapides. De plus, ils sont utiles dans
un environnement où les erreurs sont fréquentes car ils ont l'avantage de ne
pas propager les erreurs. Prenant un exemple le RC4 (Rivest Cipher 4).
[Emonet jean-Bruno
[email protected]]
2.1.1. b/ Algorithme de chiffrement par bloc (Block Cipher) :
Dans ce type de chiffrement, il y a une séparation du texte clair en blocs
d'une longueur fixe selon un alphabet, et un algorithme chiffre un bloc à la
fois. Une bonne sécurité est définie par une clé assez longue. Les clés
très longues sont plus coûteuses en travail à cause notamment de leur
génération, de leur transmission, de leur espace mémoire et de la
difficulté de s'en rappeler (mots de passe).La taille des blocs a un impact sur
la sécurité et sur la complexité : les blocs de grandes dimensions sont plus
sécuritaires mais sont plus lourds à implémenter. On trouve une liste non
exhaustive d‟algorithmes de ce type, tels que le DES (Data Encryption
Standard), le 3DES (Triple Data Encryption Standard), le Blowfish, l e AES
15
La cryptographie
(Advanced Encryption Standard), le Padding etc. [Emonet jean -Bruno
[email protected]]
Figure 2.1 : Le chiffrement symétrique.
2.1.2.Data Encryption Standard (DES) :
Data Encryption Standard, a été créé dans les laboratoires de la firme IBM
Corp. Il est devenu le standard du NIST en 1976 et a été adopté par le
gouvernement en1977. C'est un chiffrement qui transforme des blocs de 64
bits avec une clé secrète de 56 bits au moyen de permutations et de
substitutions. Le DES est considéré comme étant raisonnablement
sécuritaire.
Le DES est officiellement défini dans la publication FIPS 46 -3 et il est
public.
2.1.2.a/ Fonctionnement :
L'algorithme DES transforme un bloc de 64 bits en un autre bloc de 64
bits.
Il manipule des clés individuelles de 56 bits, représentées par 64 bits (avec
un bit de chaque octet servant pour le contrôle de parité). Ce système
de chiffrement symétrique fait partie de la famille des chiffrements itératifs
par blocs, plus particulièrement il s'agit d'un schéma de Feistel.
16
La cryptographie
Figure 2.3 : Réseau de Feistel à n Figure 2.2 : Schéma de
tours utilisant l'opérateur XOR Feistel
D'une manière générale, on peut dire que DES fonctionne en trois étapes :
- Permutation initiale et fixe d'un bloc.
- Le résultat est soumis à 16 itérations d'une transformation, ces itérations
dépendent à chaque ronde d'une autre clé partielle de 48 bits. Cette clé de
ronde intermédiaire est calculée à partir de la clé initiale de l'utilisateur
(grâce à un réseau de tables de substituti on et d'opérateurs XOR).
- Lors de chaque ronde, le bloc de 64 bits est découpé en deux blocs de 32
bits, et ces blocs sont échangés l'un avec l'autre selon un schéma de Feistel.
- Le bloc de 32 bits ayant le poids le plus fort (celui qui s'étend du bit 32
au bit 64) subira une transformation.
- Le dernier résultat de la dernière ronde est transformé par la fonction
inverse de la permutation initiale.
17
La cryptographie
Figure 2.4 : Fonctionnement du DES
18
La cryptographie
DES utilise huit tables de substitution (les S-Boxes) qui furent l'objet de
nombreuses controverses quant à leur contenu.
On soupçonnait une faiblesse volontairement insérée par les concepteurs. Ces
rumeurs furent dissipées au début des années 1990 par la découverte de
la cryptanalyse différentielle qui démontra que les tables étaient bien conçues.
[ fr.wikipedia.org][ www.commentcamarche.net]
2.1.3. Le 3DES (Triple Data Encryption Standard) :
C‟est un algorithme de chiffrement symétrique enchainant 3 applications
successives de l‟algorithme DES sur le même bloc de données de 64 bits, avec 2
ou 3 clés DES différentes. Cette utilisation de trois chiffrements DES a été
développée par Walter Tuchman (chef du projet DES chez IBM), il existe en e ffet
d‟autres manières d‟employer trois fois DES mais elles ne sont pas forcément
sûres.
2.1.3.a/ Fonctionnement :
La version de Tuchman utilise un chiffrement, suivi d'un déchiffrement
pour se conclure à nouveau par un chiffrement.
Le Triple DES est généralement utilisé avec seulement deux clés
différentes. Le mode d'usage standard est de l'utiliser en mode EDE (Encryption,
Decryption, Encryption) ce qui le rend compatible avec DES quand on utilise
trois fois la même clé.
Dans le cas d'une implémentation matérielle cela permet d'utiliser le même
composant pour respecter le standard DES et le standard Triple DES. Dans le
mode proposé par Tuchman, 3DES s'écrit plus formellement de cette manière :
Une autre variante de Triple DES est celle de Carl Ellison, mais elle ne fait
pas partie du standard défini pour 3DES :
Où est une fonction de transposition destinée à augmenter la diffusion.
Cette fonction prend en entrée un bloc de 8192 octets, remplit la graine d'un
générateur de nombres pseudo-aléatoires avec l'histogramme des octets, et
19
La cryptographie
mélange les octets du bloc grâce à la sortie du générateur. L'histogramme
n'est pas changé par les permutations et donc l'opération inverse est possible.
David Wagner a proposé une attaque sur le schéma d'Ellison en 1997.
Figure 2.5 : Fonctionnement du triple
DES
Même quand 3 clés de 56 bits différentes sont utilisées, la force effective de
l'algorithme n'est que de 112 bits et non 168 bits, à cause d'une attaque rencontre au milieu.
Cette attaque reste cependant peu praticable, en effet elle nécessite un stockage de données de
l'ordre de 256 mots de 64 bits, de plus ce stockage doit être « interrogeable » en un temps très
court. C'est pour éviter ce genre d'attaque que le Double DES est simplement proscrit et que
l'on passe directement à du Triple DES, le Double DES n'assure en effet qu'une force
effective moyenne de 57 bits.
Bien que normalisé (par exemple par le NIST), bien connu, et assez simple à implémenter, il
est assez lent, et appelé à être remplacé par des algorithmes plus modernes tels qu'AES,
également reconnu via le NIST aux États-Unis comme sûr pour tout échange d'information.
2.1.4. Advanced Encryption Standard (AES) :
AES est le sigle d'Advanced Encryption Standard, en français
« standard de chiffrement avancé ». Il s'agit d'un algorithme de chiffrement
symétrique, choisi en octobre 2000 par le NIST pour être le nouveau standard
de chiffrement pour les organisations du gouvernement des États -Unis.
20
La cryptographie
Il est issu d'un appel d'offre international lancé en janvier 1997 et aya nt
reçu 15 propositions. Parmi ces 15 algorithmes, 5 furent choisis pour une
évaluation plus poussée en avril 1999, MARS, RC6, Rijndael, Serpent, et
Twofish.
Au bout de cette évaluation, ce fut finalement le candidat Rijndael, du nom
de ses deux concepteurs Joan Daemen et Vincent Rijmen (tous les deux de
nationalité belge) qui a été choisi. Ces deux experts en cryptographie étaient déjà
les auteurs d'un autre algorithme : Square. Le terme d'AES remplace désormais
celui de Rijndael mais l'algorithme n'a pas été modifié. Ceci n'est pas
tout à fait vrai, AES est un sous -ensemble de Rijndael puisque il ne
travaille qu'avec des blocs de 128 bits alors que Rijndael offre des tailles de
blocs et de clefs qui sont des multiples de 32 ( compris entre 128 et 256 bits).
Ce faisant, l'AES remplace le DES (choisi comme standard dans les années
1970) qui de nos jours devenait obsolète, car il utilisait des clefs de 56 bits
seulement. L'AES a été adopté par le NIST (National Institute of Standa rds and
Technology) en 2001. De plus, son utilisation est très pratique car il
consomme peu de mémoire et n'étant pas basé sur des schémas de
Feistel, sa complexité est moindre et il est plus facile à implémenter. [Emonet
jean-Bruno [email protected]]
2.1.4. a/ La Recommandations de la NSA :
La NSA a annoncé que tous les finalistes qui avaient participé au
concours AES pouvaient être considérés comme sûrs et qu'ils étaient
suffisamment robustes pour chiffrer les données non-classifiées du
gouvernement américain. En juin 2003, le gouvernement américain a
annoncé que (traduction de la dépêche originale) :
"L'architecture et la longueur de toutes les tailles de clés de l'algorithme
AES (128,192 et 256) étaient suffisantes pour protéger des documents classifiés
jusqu'au niveau SECRET. Le niveau TOP -SECRET nécessite des clés de 192
ou 256 bits. L'implémentation de l'AES dans des produits destinés à la
protection des systèmes de sécurité nationa ux (ainsi que les
documents) doit faire l'objet d'une analyse et d'une certification par la
NSA avant leur acquisition et leur utilisation. [Emonet jean -Bruno
[email protected]]
2.1.4. b/ Rijndael
Rijndael a été conçu par Joan Daemen et Vincent Rijmen, deux chercheurs
de la Belgique, dans le but de devenir un candidat à l'Advanced Encryption
21
La cryptographie
Standard (AES) du NIST. Après avoir réussi à se classer dans les six
premiers, Rijndael a été choisi le standard en 2000, prenant la place du premier
véritable standard de la cryptographie : le DES.
Le chiffrement a une longueur de bloc variable, une longueur de clé
variable et un nombre de rounds variables. Par contre, Rijndael version "AES "
est restreint à des longueurs de clé de 128, 192 et 256 bits avec une longueur de
bloc fixée à 128 bits(en fait, Rijndael supporte également des tailles de blocs
variables, mais cela n'est pas retenu dans le standard).
Trois critères principaux ont été respectés dans sa conception :
– Résistance face à toutes les attaques connues.
– Rapidité du code sur la plus grande variété de plates -formes possible.
– Simplicité dans la conception.
Rijndael (1998) a été fortement influencé par son prédécesseur,
l'algorithme Square (1997). [Emonet jean -Bruno
[email protected]]
2.1.4. c/ Fonctionnement :
Le Rijndael procède par blocs de 128 bits, avec une clé de 128 bit
également. Chaque bloc subit une séquence de 5 transformations répétées 10 fois
:
- Addition de la clé secrète (par un ou exclusif).
- Transformation non linéaire d'octets : les 128 bits sont répartis en 16 blocs
de 8 bits, eux-mêmes dispatchés dans un tableau 4×4. Chaque octet est
transformé par une fonction non linéaire S.
- Décalage de lignes : les 3 dernières lignes sont décalées cycliquement vers
la gauche : la 2ème ligne est décalée d'une colonne, la 3ème ligne de 2
colonnes, et la 4ème ligne de 3 colonnes.
- Brouillage des colonnes : Chaque colonne est transformée par
combinaisons linéaires des différents éléments de la colonne (ce qui
revient à multiplier la matrice 4×4 par une autre matrice 4×4). Les calculs
sur les octets de 8 bits sont réalisés dans le corps à 28 éléments.
- Addition de la clé de tour : A chaque tour, une clé de tour est généré e à
partir de la clé secrète par un sous -algorithme (dit de cadencement). Cette
clé de tour est ajoutée par un ou exclusif au dernier bloc obtenu.
[ www.bibmath.net]
22
La cryptographie
Figure 2.6 : Fonctionnement de l’AES
2.2. Le cryptage asymétrique
Contrairement au cryptage symétrique, La cryptographie asymétrique, ou
cryptographie à clé publique, c‟est une méthode de chiffrement qui repose sur
l‟utilisation d‟une clé publique diffusée et d‟une clé privée, l‟une permettant de
coder le message et l‟autre de le décoder. Ainsi, l‟expéditeur peut utiliser la clé
publique du destinataire pour coder un message que seul le destinataire peut le
décoder en utilisant sa clé privée, garantissant la confid entialité du contenu.
Inversement, l‟expéditeur peut utiliser sa propre clé privée pour coder un
message que le destinataire peut décoder avec la clé publique ; c‟est le
mécanisme utilisé par la signature numérique pour authentifier l‟auteur d‟un
message. Tels que la connaissance de la clef de chi ffrement ne permet pas d‟en
déduire celle de la clef de déchiffrement.
23
La cryptographie
Le principal avantage de la cryptographie à clé publique est qu‟elle permet à
des gens qui n‟ont pas d‟accord de sécu rité préalable d‟échanger des messages de
manière sûre. La nécessité pour l‟expéditeur et le destinataire de partager des
clés secrètes via un canal sûr est éliminée; toutes les communications impliquent
uniquement des clés publiques, et aucune clé privée n‟est jamais transmise ou
partagée. Des exemples de crypto systèmes à clé publique sont Elgamal (du nom
de son inventeur, Taher Elgamal), RSA (du nom de ses inventeurs, Ron Rivest,
AdiShamir, et Leonard Aldeman), Diffie-Hellman (nommé ainsi, vous l‟avez
deviné, à cause de ses inventeurs), et DSA, l‟Algorithme de Signature Digitale
(inventé par David Kravitz).
On trouvera principalement parmi les algorithmes de cryptage symétrique :
Le RAS (du nom de ses inventeurs, Rivest Shamir Adleman), le
Cryptosystème de ElGamal (du nom de son inventeur, Taher Elgama), l‟Échange
de clés Diffie-Hellman (aussi du nom de ses inventeurs) etc. [Cours][
news:fr.misc.cryptologie, 1998]
Figure 2.7 : le chiffrement asymétrique.
2.2.1. Rivest Shamir Adleman (RSA) :
RSA signifie Rivest-Shamir-Adleman, en l'honneur de ses trois inventeurs
: Ron Rivest, Adi Shamir et Leonard Adleman qui l'ont inventé en 1977. Le
brevet de cet algorithme appartient à la société américaine RSA Data Security,
qui fait maintenant partie de Security Dynamics et aux Public Key Parteners,
(PKP à Sunnyvale, Californie, Etats-Unis) qui possèdent les droits en général sur
les algorithmes à clé publique. RSA est un algorithme à clé publique qui sert
aussi bien à la cryptographie de documents, qu'à l'authentification. Grâce au fait
qu'il était à clé publique, et au fait qu'il était très sûr, l'algorithme RSA est
devenu un standard de facto dans le monde.
L'implémentation fut achevée en 1978 par Rivest, Shamir et Adleman. Depuis, ce
système de chiffrement est appelé RSA, qui sont les initiales de
ces trois chercheurs.
Ronald Rivest, Adi Shamir et Leonard Adleman, dans A Method for Obtaining
24
La cryptographie
Digital Signatures and Public-key Cryptosystems, ont publié l‟idée d‟utiliser les
anneaux Z/nZ et le petit théorème de Fermat pour obtenir des fonctions trappes,
ou fonctions à sens unique à brèche secrète.
2.2.1.a/ Fonctionnement :
Le fonctionnement du crypto système RSA est basé sur la difficulté de
factoriser de grands entiers.
- Soit deux nombres premiers « p et q », et „‟d‟‟ un entier tel que d soit
premier avec (p-1)*(q-1)). Le triplet (p, q, d) constitue ainsi la clé privée.
- La clé publique est alors le doublet (n, e) créé à l'aide de la clé privée par
les transformations suivantes :
n=p*q;
e = 1/d mod ((p-1) (q-1)).
Soit M, le message à envoyer. Il faut que le message M soit premier avec la
clé n. En effet, le déchiffrement repose sur le théorème d'Euler stipulant que
si M et n sont premiers entre eux, alors :
M phi(n) = 1 mod(n)
Phi(n) étant l'indicateur d'Euler, et valant dans le cas présent (p-1)*(q-1).
Il est donc nécessaire que M ne soit pas un multiple de p, de q, ou de n. Une
solution consiste à découper le message M en morceaux Mi tels que le nombre de
chiffres de chaque Mi soit strictement inférieur à celui de p et de q. Cela suppose
donc que p et q soient grand, ce qui est le cas en pratique puisque tout le principe
de RSA réside dans la difficulté à trouver dans un temps
raisonnable p et q connaissant n, ce qui suppose p et q grands.
Le cryptage est effectué sur des nombres du texte en clair m qui sont
inférieurs à n en calculant m e mod n.
Le décryptage s‟effectue sur le texte crypté c en calculant cd mod n.
[ www.commentcamarche.net]
Texte en clair Cryptage Texte codé Décryptag Texte en clair
e
m c = me mod n c m = cd mod n m
Figure 2.8 : Fonctionnement de RSA. 25
La cryptographie
2.2.2. El Gamal :
L‟algorithme El Gamal est un algorithme de cryptographie asymétrique basé
sur les logarithmes discrets. Il a été créé par Taher Elgamal. Cet algorithme est
utilisé par le logiciel libre GNU Privacy Guard, de récentes versions de PGP, et
d‟autres systèmes de chiffrement, et n‟a jamais été sous la protection d‟un brevet
contrairement à RSA. Il peut être utilisé pour le chiffrement et la signature
électronique.
La sécurité de cet algorithme se fonde sur la difficulté à calculer un
algorithme discret dans un champ fini.
2.2.2.a/ Fonctionnement :
L'algorithme fonctionne comme suit :
Alice calcule h = gx avec pour un grand nombre premier p, g étant un
élément générateur de tel que g > 2 et , et divulgue sa clé
publique (p, g, h). La valeur x est sa clé privée.
Si Bob veut envoyer un message à Alice, il convertit d'abord son message sous la
forme d'un nombre.
Bob génère un nombre entier k aléatoirement et calcule c1 = gk et c2 = m.hk. Il
envoie (c1, c2) à Alice.
Alice peut reconstruire le message initial m en calculant c2 / c1x.
On remarque que :
p y
g k
x p
Texte en clair Cryptag Texte codé Décryptag Texte en clair
e e
m c1 = gk mod p (c1,c2) m = (c2/c 1 x) mod p m
c2 = m.hk mod p
Figure 2.9 : Exemple de fonction d’El Gamal
26
La cryptographie
2.3. La fonction de hachage:
Une fonction de hachage aussi appelée fonction de condensation c‟est
fonction qui permet de convertir une longueur quelconque en une chaine de taille
inferieure et généralement fixe. La chaine résultante est appelée empreinte ou
condensé de la chaine initiale.
Une seule direction
Messag
Empreinte
Fonction de hachage
Figure 2.10 : le fonctionnement de la fonction de
Une fonction de hachage a sens unique : c‟est une fonction facile à calculer
hachage
l‟empreinte d‟une chaine donnée mais il est difficile d‟engager une des chaines
qui ont une empreinte donnée et donc de déduire la chaine initiale à partir de
l‟empreinte. La fonction de hachage est dite « à brèche sec rète ».
[WWW.SHC.FR]
2.3.1 Propriétés des fonctions de hachage
Une fonction de hachage h est une fonction h :{0.1}* {0.1} n.
2.3.1.1 Preimage résistance
Étant donné une sortie y, il est difficile de trouver x tel que h (x) = y à sens
unique. En d‟autres termes, on ne peut pas trouver une fonction qui permet
d‟inverser le processus de hachage.
2.3.1.2 2nd preimage résistance :
Étant donné une entrée x, il est difficile de trouver x ′ tel que h (x ′) = h (x)
Faible résistance aux collisions. Autrement dit, une fonction de hachage est
résistante aux collisions faibles s‟il est difficile de construire des messages
différents possédant la même empreinte. On entend par calculatoirement difficile
voir impossible en un temps raisonnable même avec l‟aide d‟ordinateurs très
puissants. Cette définition empêche un éventuel attaquant de modifier le message
signé d‟une personne et ainsi imiter sa signature.
27
La cryptographie
2. 3.1.3 Collision résistance
Il est difficile de trouver x et x ′ tel que h (x) = h (x ′) Résistance forte aux
collisions. Idée : calculer une version condensée y d‟un message m. Le
condensé/résumé devrait être spécifique à ce message.
Parmi les fonctions de hachage en trouve : MD2, MD4, MD5, SHA1, etc.
2.3.2 La fonction de hachage MD2 :
MD2 pour Message Digest 2, est une fonction de hachage conçue par le
professeur Ronald Rivest du Massachusetts Institute of Technology en 1989.
C'est un algorithme de signature. Plutôt destiné aux processeurs de type 8 bits, le
MD2 n'est plus tellement employé. Il a été largement supplanté par le MD4 et
le MD5.
En 2004, une attaque décrite par Muller permet de forger un document à partir
d'une signature en seulement 2104 opérations au lieu des 2128 nécessaires dans
le cas d'une recherche exhaustive. Même si cette attaque est tout de même très
gourmande et impraticable à l'heure actuelle, le MD2 n'est à ce titre plus
considéré comme sûr.
2.3.2 La fonction de hachage MD5 :
MD5 (Message Digest 5) est une fonction de hachage cryptographique qui
calcule, à partir d‟un fichier numérique, son empreinte numérique (en
l‟occurrence une séquence de 128 bits ou 32 caractères en notation hexadécimale)
avec une probabilité très forte que deux fichiers différents donnent deux
empreintes différentes. MD5 peut aussi être utilisé pour calculer l‟empreinte d‟un
mot de passe ; c‟est le système employé dans GNU/Linux avec la présence
d‟un sel compliquant le décryptage. Ainsi, plutôt que de stocker les mots de
passe dans un fichier, ce sont leurs empreintes MD5 qui sont enregistrées, de
sorte que quelqu‟un qui lirait ce fichier ne pourra pas découvrir les mots de
passe.
2.3.2.a/ Fonctionnement :
MD5 utilise une construction de Merkle-Damgård. On découpe le message en blocs de taille
fixe de 512 bits. On traite ensuite les blocs séquentiellement grâce à une fonction de
compression qui écrase l'espace d'entrée et produit des données qui ne peuvent être inversées.
28
La cryptographie
Figure 2.11 : La construction de
Merkle-Damgård
Les entrées de cette fonction sont un bloc de 512 bits et une variable de 128 bits. Pour le
premier bloc du message, on définit un vecteur d'initialisation de 128 bits (imposé par le
standard) et on introduit les 512 bits dans la fonction de compression. Celle-ci retourne une
empreinte de 128 bits qui est transférée vers les 128 bits de la compression suivante. On traite
ainsi les blocs les uns après les autres en chaînant les résultats. La sortie du dernier bloc est
l'empreinte finale.
Figure 2.12 : Vue générale de MD5
29
La cryptographie
Des mesures doivent être prises si le message n'a pas suffisamment de bits pour remplir
complètement le dernier bloc (padding). Elle consiste à rajouter un bit '1' à la fin du message,
suivi d'une séquence de bits '0' dont la taille varie selon le remplissage nécessaire et la
longueur du message original codée sur 64 bits à la fin. Le message peut ensuite être haché
normalement. Le remplissage satisfait certaines propriétés : si l'on se contentait de rajouter
des bits '0' à la fin du message, alors les séquences comme '1010' et 101000' produiraient le
même condensé ce qui est inconcevable. [fr.wikibooks.org]
Figure 2.13 : Remplissage d'un
message de 24 bits
Conclusion :
Les algorithmes de chiffrement jouent un rôle important aussi bien au niveau
de la sécurité que des performances. Dans le cas de configurations réseaux
importantes, le choix d'un algorithme devient judicieux.
Parmi les algorithmes de sécurité, qu‟on a déjà cités, on s‟intéresse dans le
prochain chapitre par l‟algorithme de chiffrement asymétrique RSA et le
développement d‟un algorithme symétrique.
30
Chapitre 03 : Analyse et conception
Analyse et conception
Introduction
Cette partie est consacrée aux étapes fondamentales pour le développement de notre
système de télécommunication. Pour la conception de notre application, nous avons choisis de
modéliser avec le formalisme UML (Unified Modeling Language) qui offre une flexibilité
marquante qui s'exprime par l'utilisation des diagrammes.
1. Introduction au problème et Spécification des besoins :
La spécification des besoins est une étape primordiale au début de chaque démarche de
développement. Elle consiste à décrire l‟application voulue, son utilité et son usage en
répondant aux questions concernant le fonctionnement du système.
Notre système doit répondre aux exigences suivantes :
- Comme toutes les applications ou service de messagerie, notre application assure la
transmission des messages entre individus en toute sécurité et confidentialité et ça sera
grâce à un système de cryptage hybride inspiré des points forts de système de cryptage
divers.
1.1. La spécification:
On peut présenter notre application en trois couches,
Le cryptage et décryptage des messages.
Transfert des messages vers un serveur de stockage.
Stocker les messages en sécurité (crypté).
1.1.1. Le cryptage et décryptage des messages :
Les messages seront cryptés par un système de cryptage hybride entre cryptage
symétrique et asymétrique. Le choix du cryptage asymétrique était le fameux système RSA
son point fort est la protection des clés (la clé du décryptage reste privée à l‟abri), en revanche
le décryptage est trop lent. Et le cryptage symétrique connu par les algorithmes faciles à
exécuter mais non sécurisé à cause de l‟obligation d‟envoyer la clé au destinataire.
L‟idée est simple : crypter le message symétrique puis crypter sa clé un cryptage
asymétrique. Comme ça le transfert de la clé symétrique sera sécurisé et rapide à cause de la
taille insignifiante de la clé (1024 byte). D‟autre part ; le cryptage et le décryptage du message
sera rapide quelque soit sa taille.
En conclusion, on gagnera la sécurité du cryptage asymétrique et la gileté du cryptage
symétrique.
1.1.2. Le transfert des messages vers un serveur de stockage :
31
Analyse et conception
Le protocole de transfert est le TCP/IP.
1.1.3. Stocker les messages en sécurité (crypté) :
Les messages et les profiles des comptes des utilisateurs seront stocker sur une base de
donnée de MySQL.
2. Présentation de l’UML :
2.1. Définition :
UML (Unified Modeling Language), se définit comme un langage de modélisation
graphique et textuel destiné à comprendre et à définir des besoins, spécifier et documenter des
systèmes, esquisser des architectures logicielles, concevoir des solutions et communiquer des
points de vue. Il véhicule en particulier :
· Les concepts des approches par objets : classe, instance, classification, etc.
· Intégrant d'autres aspects : associations, fonctionnalités, événements, états,
séquences, etc.
UML définit neuf types de diagrammes divisés en deux catégories:
1. Diagrammes statiques (structurels) : diagramme de classe, d'objet, de composant,
de déploiement et de diagramme de cas d'utilisation.
2. Diagrammes dynamiques (comportementaux) : diagramme d'activité, de
séquence, d'état-transition et de diagramme de collaboration. [PAM05]
Pour la modélisation des besoins, nous utilisons les diagrammes UML suivant :
Diagramme de cas d'utilisation, diagramme de séquence, diagramme d‟objet et diagramme de
classe.
32
Analyse et conception
2.1.1 Diagramme de cas d'utilisation :
Les uses cases permettent de structurer les besoins des utilisateurs et les objectifs
correspondants d‟un système. Ils centrent l‟expression des exigences du système sur ses
utilisateurs Il est destiné à représenter les besoins des utilisateurs par rapport au système.
[con_00]
Il existe trois types de relations entre cas d‟utilisation :
- Une relation d‟inclusion : formaliser par la dépendance « include »
- Une relation d‟extension : formaliser par la dépendance « extend »
- Une relation de généralisation/spécification [con_00].
La représentation d‟un diagramme de cas d‟utilisation met en jeu les concepts suivant :
- Identification des acteurs :
Les acteurs d'un système sont les entités qui interagissent avec les systèmes. Dans ce
cas c‟est les interlocuteurs.
- Décrire les cas d'utilisations :
Décrire un cas d‟utilisation revient à décrire les scénarios les plus représentatifs dits
scénarios nominaux et les principaux cas d‟exception. On définit deux niveaux de description
d‟un cas d‟utilisation :
- Une description générale, appelée description textuelle.
- Une description des scénarios les pertinents. Nous utilisons pour cela la structure
de la fiche technique suivantes pour décrire un cas d‟utilisation :
« Nom de cas d‟utilisation »
« Description textuelle d‟un cas d‟utilisation »
« Liste des acteurs »
« Action en début du cas d‟utilisation »
« Action en cours du cas d‟utilisation »
« Action enfin du cas d‟utilisation »
Figure 3.1 : fiche technique pour décrire un cas d’utilisation
2.1.1.1 Les cas d'utilisation de notre application :
Créer un nouveau compte.
Identification.
Lire un message.
Ecrire et envoyer un message et le cas d‟utilisation supprimer un message.
33
Analyse et conception
2.1.1.1.1 Cas D’utilisation créer un nouveau compte :
Description textuelle :
Une personne désirant contacter le groupe de l‟organisme, elle doit
être membre du groupe.
Pour qu‟elle soit membre, elle doit remplir un formulaire de
renseignement.
Fiche technique :
Créer un nouveau compte
Ce cas d‟utilisateur permet à chaque personne d‟avoir son propre compte
Utilisateur
Début :
Accéder à l‟application.
En cours :
Le système affiche le formulaire d‟inscription.
L‟utilisateur remplit les champs du formulaire.
Enfin :
Ce cas se termine par un compte crée.
2.1.1.1.2 Cas D’utilisation identification :
Description textuelle :
Un contact peut accéder à son compte avec un login et un mot de
passe.
Dans le cas ou le login et le mot de passe ne sont pas valides, le
système affichera un message de refus d‟opération d‟accès au compte.
Dans le cas ou le login et le mot de passe sont valide, le système
affichera le compte.
Fiche technique :
Identification
Ce cas d‟utilisateur permet à chaque utilisateur d‟accéder à son compte.
Utilisateur
Début :
Le système affichera la page d‟authentification.
En cours :
Saisit le login et mot de passe de l‟utilisateur.
Le système vérifie les informations saisies.
Si le login et le mot de passe ne sont pas valide alors afficher un
message de refus d‟opération d‟accès au compte.
Enfin :
Ce cas se termine par l‟ouverture de la session.
34
Analyse et conception
2.1.1.1.3 Cas D’utilisation lire un message :
Description textuelle :
Après avoir accéder au compte, l‟utilisateur veut lire un message parmi
la liste existante.
Le système affichera la liste des messages.
L‟utilisateur sélectionne un message reçu.
Le système affichera le contenu du message.
Fiche technique :
Lire un message
Ce cas d‟utilisateur permet à l‟utilisateur de lire les messages reçu.
Utilisateur
Début :
Le système affichera la liste des messages.
En cours :
L‟utilisateur sélectionne un message reçu.
Le système affichera le contenu du message.
Enfin :
Ce cas se termine par l‟affichage des messages reçus.
2.1.1.1.4 Cas D’utilisation écrire un message :
Description textuelle :
Le système affichera à l‟utilisateur une page pour écrire un nouveau
message.
L‟utilisateur écrit un message pour l‟envoyer au contact.
Fiche technique :
Ecrire et envoyer un message
Ce cas d‟utilisateur permet à l‟utilisateur d‟écrire un message et l‟envoyer au
contact.
Utilisateur
Début :
L‟utilisateur demande l‟accès à la page d‟écriture.
En cours :
Le système affichera la page pour écrire un nouveau message.
L‟utilisateur écrit un message. Puis l‟envoyer
Enfin :
Ce cas se termine par la confirmation de l‟envoie et l‟affichage des
messages envoyés.
35
Analyse et conception
2.1.1.1.5 Cas D’utilisation supprimer un message :
Description textuelle :
Le système affichera à l‟utilisateur la liste des messages.
L‟utilisateur sélectionne un message de la liste affichée.
L‟utilisateur supprime le message.
Fiche technique :
Supprimer un message
Ce cas d‟utilisateur permet à l‟utilisateur de supprimer un message.
Utilisateur
Début :
Le système affichera la liste des messages.
En cours :
L‟utilisateur sélectionne un message à supprimer.
L‟utilisateur supprime le message sélectionné.
Enfin :
Ce cas se termine par afficher les messages restants.
36
Analyse et conception
Créer un nouveau compte
« Include »
Authentification
« Include » « Include »
Utilisateur Lire un message
Ecrire et envoyer un
message
« Include » « Extend »
Supprimer un message
Figure 3.2 : Diagramme de cas d’utilisation pour l’utilisateur.
37
Analyse et conception
2.1.2 Diagramme de séquence :
Le diagramme de séquence représente la succession chronologique des opérations
réalisées par un acteur. Il montre des interactions entre objets selon un point de vue temporel
(message asynchrones ou synchrones). La représentation se concentre sur l‟expression des
interactions [lass_01].
2.1.2.1 les diagrammes de séquence de notre application :
A partir des cas d‟utilisation précédents, nous avons les scénarios suivants :
2.1.2.1.1 Diagramme de séquence du cas d’utilisation « créer un
nouveau compte » :
Les scénarios : Créer un nouveau compte.
Utilisateur Application Serveur
Demande formulaire
Afficher le formulaire
Remplir le formulaire affiché
Sauvegarder les informations saisies
Compte crée
Afficher le compte
38
Analyse et conception
2.1.2.1.2 Diagramme de séquence du cas d’utilisation
« Identification » :
Les scénarios : Identification.
Le login et le mot de passe sont valides
Utilisateur Application Serveur
Demande d‟accès à la session
Le système affiche la page
D‟identification
Saisir le mot de passe et le login
Charger les informations
Afficher le compte
Session ouverte
39
Analyse et conception
2.1.2.1.3 Diagramme de séquence du cas d’utilisation «lire un
message » :
Les scénarios : lire un message.
Utilisateur Application Serveur
Demander la liste des messages reçus
Recharger la liste (via une requête)
Réponse
Afficher la liste des messages
Sélectionner un message reçu
Le chargement du contenu du message
Afficher le message
Traitement de message
Message ouvert
2.1.2.1.4 Diagramme de séquence du cas d’utilisation « Ecrire un
message »:
Les scénarios : écrire un message.
Utilisateur Application Serveur
Sélectionner un destinataire recharger les données du destinataire
Afficher le formulaire de l‟écriture Réponse
Remplir le formulaire et
Envoyer le message
Traitement du message
Envoyer le message et le sauvegarder
Le message est envoyé en sécurité
Le message est envoyé
40
Analyse et conception
2.1.2.1.5 Diagramme de séquence du cas d’utilisation « supprimer un
message » :
Les scénarios : supprimer un message.
Utilisateur Application Serveur
Demande la liste des messages reçus
Recharger la liste (via une requête)
Réponse
Afficher la liste des messages
Sélectionner un message à supprimer
Charger les données du message sélectionné
Demander la confirmation confirmer la sélection
Supprimer le message
Appliquer la requête de la suppression
Réponse
Afficher la liste des messages restants
2.1.3 Diagramme de classe :
Le diagramme de classe sert à extraire les classes métiers (ce sont les abstractions des
métiers ou entités informationnelle liées au domaine).
Une synthèse des classes et des objets manipulés dans ces diagrammes, permet de
dresser une liste de toutes les classes à modéliser. C‟est grâce aux diagrammes de séquence
que l‟on peut remontrer des méthodes et des classes.
41
Analyse et conception
Message
Id: integer;
Date: date;
Time: time;
Status: integer; Envoyés (liste)
Sender: string;
Recever: string;
Crypted_symkey: byte []
Text: text;
Public Créer () ;
Public Créer (); Public Ouvrir msg () ;
Public Decrypte symkey(); Public Fermer msg () ;
Public Decrypte msg(); Public Afficher la Liste () ;
Public Encrypte symkey(); Public Ajouter ();
Public Encrypte msg(); Public Supprimer ();
Public Send (); Public Afficher ();
Public Create symkey (); Public Fermer ();
Public Enregistrerclé() Charger ();
Public Charger_clé()
0. N
1. N
Liste
Int count ;
Public Ajouter ();
1.1 Public Supprimer ();
Public Afficher ();
Public Fermer ();
Public Charger ();
1.0
Utilisateur
Reçus (liste) Un: string
Pw : string
Fn:string
Ln : string
Public Ouvrir msg() ; Sex: string
Public Fermer msg() ; Date: string
Public Ajouter (); 1. N 1.1 Publickey : string
Public Supprimer ();
Public Afficher (); Publique Créer () ;
Public Fermer (); Figure 3.4 : Diagramme de classe
Charger ();
42
Analyse et conception
La signification des champs du diagramme de classe :
Id: identificateur du message.
Date: date.
Time: temps.
Status: lu ou non.
Sender: le destinateur.
Recever: le destinataire.
Crypted_symkey: la clé symétrique cryptée.
Text: le contenu du message.
Count : le nombre de message.
Un: Nom d‟utilisateur.
Pw : mot de passé.
Fn: nom;
Ln : prénom.
Sex: sexe.
Date: date de naissance.
Publickey : la clé publique.
3. Les tables de notre bases de données :
- Table ‘user’ :
User (Un, Pw, Fn, Ln, Sex, Bdate, Publickey).
- Table ‘message’ :
Message (Id; Date; Time; Status; Sender; Receiver; CryptedSymkey: Text).
Conclusion :
A travers cette partie du mémoire, nous allons appliquer et suivre les étapes du
développement décrites dans ce chapitre, en utilisant les concepts et les notations du langage
de modélisation UML. Pour objectif de créer une application concernant « la sécurisation des
échanges E-mail en utilisant des algorithmes hybrides ».
Dans le chapitre qui suit, nous allons présenter les différents outils de développement,
et de la réalisation, ainsi que l‟environnement de travail pour la création de l‟application.
43
Chapitre 04 : Réalisation et
implémentation
Réalisation et implémentation
Introduction
Dans ce chapitre, consacré à la réalisation et la mise en œuvre de notre application,
nous allons présenter l‟environnement de développement utilisé.
1. Environnement de développement :
1.1. Net :
Nous avons choisi la version du .net visuel express 2005 car elle fournit tous les
outils nécessaires pour développer, tester et déployer des applications, notamment une
importante bibliothèque de composants réutilisables, une suite d'outils de conception, de
modèles d'applications.
1.2. Le langage de développement C Sharp :
Nous avons choisi le C Sharp comme langage pour la simplicité de son syntaxe.
Le langage de programmation C# (ou prononcé C-Sharp) a été développé par la
société Microsoft, et notamment un de ses employés, ANDERS HEJLSBERG, pour la
plateforme .NET
Ce langage est orienté objet, avec un typage fort. Il est très proche du langage Java.
Le langage C# possède un certain nombre de caractéristiques communes avec d'autres
langages de programmation. Il sera donc plus facile de l'apprendre si ces autres langages sont
connus.
2. Implémentation de la base de données :
2.1. La base de données :
Une base de données est composée de données, les relations et procédures stockées
dans des mémoires de masse sous une forme structurée, et accessibles par des applications
différentes et des utilisateurs différents. [Sca05]
2.1.1. Les tables :
La table est l‟un des objets de la base de données. C‟est elle qui permet de stocker
toutes les informations. Une table contient généralement les informations sur un type d‟objet
précis. Par exemple une table « Users » qui contient toutes les informations sur l‟utilisateur
(Nom, Prénom, Age, sexe, etc.), une table « message » qui contient (Identificateur, date,
temps, statut, etc.). Ces tables peuvent être par la suite liées entre elles, ce que l‟on appelle les
relations.
44
Réalisation et implémentation
Une table est composée des lignes et de colonnes appelées respectivement
enregistrement et champs. Prenons le cas d‟une table « Users » :
Figure 4.1 : Table d’une base de données.
2.1.2. Système de Gestion de Bases de Données :
Un SGBD (Système de Gestion de Bases de Données) est un ensemble de logiciels
chargés d'assurer les fonctions minimales suivantes :
Le maintien de la cohérence des données entre elles.
Le contrôle d'intégrité des données accédées.
Les opérations classiques sur les données (consultation, insertion,
modification, suppression).
Les autorisations d'accès aux données. [Sca05]
Et pour la création des tables de notre base de données, on a utilisés le « navicate »
qui est un SGBDR (Système de Gestion de Bases de Données Relationnelles).
2.1.3. Langage de Manipulation de Bases de Données
SQL (Structured Query Language) est un langage de manipulation de bases de
données mis au point dans les années 70, il permet trois types de manipulations :
· La maintenance des tables : création, suppression, modification de la structure des
tables.
45
Réalisation et implémentation
- La manipulation des données : sélection, modification, suppression
d'enregistrements.
· La gestion des droits d'accès aux tables : contrôle des données; droits d'accès,
validation des modifications. [SB07]
3. Description de l’application :
Notre application est implémentée selon l‟architecture en modèle de trois couches.
L'architecture à trois niveaux est l'application du modèle la plus générale qui est le
multi-tiers. L'architecture du notre système est divisée en trois niveaux ou couches :
couche présentation.
Couche métier.
Couche accès aux données.
3.1. Le rôle de chacune des couches :
3.1.1 La couche interface d’utilisateur :
- Affiche les données.
- Envoie les demandes de l'utilisateur à la couche métier pour qu'elle les
effectue.
- Reçoit les résultats renvoyés par la couche métier et les affiche.
3.1.2. La couche métier (logique de l'application) :
- Reçoit et analyse les demandes de l'utilisateur.
- Retrouve et modifie les données via la couche données.
- Renvoie les résultats à la couche présentation.
3.1.3. La couche accès aux données :
- Modifie les données.
- Récupère les données.
- Assure la sécurité et l'intégrité des données.
[http://www.developpez.com]
3.2. Avantages de cette architecture :
Séparer l'application en 3 couches à de nombreux avantages :
- La gestion des données et la logique métier peuvent être indépendantes du type
d'interface.
46
Réalisation et implémentation
L‟utilisateur peut personnaliser son espace de travail comme bon lui semble pour
facilité d‟utilisation
- Les couches métier et données sont encapsulées :
Ces couches assurent l'intégrité des données en analysant les demandes du
client avant de les effectuer, et on gagne donc en robustesse. Pendant la
réalisation de la couche métier, on peut se concentrer sur la logique de
l'application et l'intégrité des données, sans se soucier de la présentation, et la
maintenance en devient plus facile.
- La couche présentation n'accédant pas directement aux données, la configuration de
l'accès aux données ne se fait alors que sur le serveur où réside la couche de données.
- Si la couche métier ou celle des données est modifiée, il n'y a pas de réinstallation à
faire sur les postes clients. [Http://www.developpez.com]
4. Quelques interfaces et leurs codes sources de notre application :
4.1 Espace de travail :
Figure 4.2 : L’espace de travail du groupe des utilisateurs
47
Réalisation et implémentation
4.2 Espace d’inscription :
Figure 4.3 : Espace d’inscription
4.3 Espace d’authentification :
Figure 4.4 : La cible d’inscription pour accéder à la session de l’utilisateur.
48
36
Réalisation et implémentation
Le code source suivant représente les différentes méthodes pour que
l’utilisateur soit authentifié :
namespace massanger
{
public partial class connexion : Form
{
public Form1 _parant;
public connexion()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string provider = "Data Source=localhost;Database=crypmsg;User
ID=root;Password=;charset=utf8;";
MySqlConnection link = new MySqlConnection(provider);
link.Open();
string sql = " select * from users where (un ='" +
textBox1.Text + "' and pw ='" + textBox2.Text + "') ";
MySqlCommand cmd = new MySqlCommand(sql, link);
MySqlDataReader Reader = cmd.ExecuteReader();
if (Reader.Read())
{
_parant.username = Reader.GetString("un");
_parant.password = Reader.GetString("pw");
_parant.session_started = true;
link.Close();
Close();
}
else
{
link.Close();
}
}
}
49
Réalisation et implémentation
4. 4 Espace de l’écriture :
Figure 4.5 : L’Espace D’Ecriture
Voici un morceau du code de notre application vérifiant le transfert du texte en
toute sécurité :
Le code source ci-dessus représente l‟algorithme hybride de chiffrement.
private void button1_Click(object sender, EventArgs e)
{
string nextID = getNextID();
StringToBinary();
orSymKey = RandomString(30);
string date = DateTime.Now.Year.ToString() + "-" +
DateTime.Now.Month.ToString() + "-" + DateTime.Now.Day.ToString();
string time = DateTime.Now.ToShortTimeString();
enSymKey = encryptSymKey(orSymKey);
enMessage = SymCrypt(orSymKey);
MySqlConnection link = new MySqlConnection(provider);
link.Open();
string sql = " insert into messages values ('" + nextID + "',
'" + date + "', '" + time + "', '" + Sender + "', '" + Recever + "', '0',
'" + enSymKey + "', '" + enMessage + "'); ";
MessageBox.Show(sql);
MySqlCommand cmd = new MySqlCommand(sql, link);
cmd.ExecuteNonQuery();
link.Close();
Close();}
50
Réalisation et implémentation
Conclusion :
C‟était l‟aspect technique qui est présenté dans le présent chapitre. Tout ce qui a été
utilisés pour que le travail de la conception se transforme en code source, exécuté coté
serveur, ou bien coté client, présentant ainsi les outils matériels et logiciels incluant
l‟environnement de développement.
51
Conclusion Générale
Conclusion générale :
Au cours de ce mémoire, nous avons présenté les différentes étapes de la conception et
la réalisation de notre application qui sert à sécuriser les échanges d‟E-mail.
Afin de satisfaire les besoins des utilisateurs nous avons commencé la conception en
utilisant le formalisme UML et la mise en œuvre des bases de données avec le gestionnaire de
bases de données Navicate, ensuite l'implémentation des requêtes SQL pour la manipulation
des données et enfin la concrétisation de l'application sous l'environnement de programmation
C Sharp.
Ce projet a fait l'objet d'une expérience intéressante, qui nous a permis d'améliorer nos
connaissances et nos compétences dans le domaine de la programmation.
Cependant des perspectives d'améliorations de notre application restent envisageables
telles que, pour permettre à l‟utilisateur à personnaliser le système de sécurité, permettre le
transfert des fichiers compressés, permettre de joindre des fichiers depuis l‟ordinateur …etc.
52
Bibliographie
[vos_01] : ANDREAS VOSS. Dictionnaire de l‟informatique et de l‟internet 2001.
WWW.SHC.FR :
[Cours] : Chapitre 2 cryptographies (Sécurité informatique 2011-2012)
Emonet jean-Bruno
[email protected] [fr.wikipedia.org]
www.commentcamarche.net
www.bibmath.net
News:fr.misc.cryptologie, 1998 :
[lass_01] : Annick Rocqes. LES CAHIERS DE PROGRAMMEUR/ UML modéliser
un site e_commerce. Edition Eyrolles 2003.
fr.wikibooks.org
[PAM05] : Nathalie GAERTNER Pierre-Alain MULLER. Modélisation objet avec
UML. Eyrolles édition, Avril 2005.
[con_00] : j.CONNALLEN.Concevoir des applications des applications web avec UML.
Edition EYROLLES 2000.
[Sca05] Robert Michel Di Scala. Les bases de l'informatique et de la programmation. Berti
d'Alger édition, 2005.
[SB07] Nazih SELMOUNE Souad BOUKHEDOUMA. Bases de données et SGBD. Les
manuels de l'étudiant. http : // www.pagesbleues-editions.com, pages bleues édition, 2007.
www.developpez.com
Introduction à la modélisation orientée objets avec UML. Olivier Sigaud.
[Club de la sécurité des systèmes d‟information français PDF]