Vous êtes sur la page 1sur 67

‫الجمهىريت الجسائريت الديمقراطيـت الشعبيــت‬

République algérienne démocratique et populaire


‫وزارة التـعليــم العالـي و البحــث العلمــــي‬
Ministère de l’enseignement supérieur et de la recherche scientifique
‫المركس الجامعي لعين تمىشنت‬
Centre Universitaire Belhadj Bouchaib d’Ain-Temouchent
Institut de Technologie
Département de Génie Electrique

Projet de fin d’études


Pour l’obtention du diplôme de Master en :
Domaine : SCIENCE ET TECHNOLOGIE
Filière : Electronique
Spécialité : Génie de Télécommunications

Thème
Mise en œuvre d’une infrastructure à clé publique
et test de validation avec openssl
Présenté Par :
1) ABDELKADER Fatima Zohra
2) FAETAN Soumia

Devant les jurys composés de :


Dr. BEMMOUSSAT Chems-Eddine MCB C.U.B.B (Ain Temouchent) Président
Dr. SLIMANE Zohra MCA C.U.B.B (Ain Temouchent) Encadrant
Dr. DEBBAL Mohammed MCB C.U.B.B (Ain Temouchent) Examinateur

Année universitaire 2016/2017


Dédicaces

Dédicace

Je dédis ce mémoire à ma chère mère, qui m’a encouragé à aller de


l’avant et qui m’a donné tout son amour et son soutien.
A la mémoire de mon père qui nous a quittés voilà dix ans.
A Mes tantes, Mes oncles
Cousins, Cousines Samira Iman Karima Sabrina et Zahra…
A Mes frères et Mes sœurs
A ma chère amie Karima
A toute la famille khatir Abdelkader et Faetan
Une spéciale dédicace à mon meilleur ami Youcef qui m’a encouragé
pendant toute la durée de ce mémoire
Sans oublier ma super binôme Soumia et mes très chères amis :
Mohamed, Chahinez, Amel, Fatima, Iman, Bouchra…

Fatima Zohra

i
Dédicaces

Dédicace
Je dédis ce mémoire
A Mes chères parents ma mère et mon père
Pour leur soutien, leurs patience leur encouragements
A Mon cher mari Zakariya
Pour leur confiance et leur amour
A Mes chèrs frères Sabih, Madjid et Walid.
A toute la famille faetan, tires, haddou, abdelkader
Mes tantes, Mes oncles, Cousin et Cousine
Amel, fatom, imen, aya,
Sans oublié ma super binôme Fatima Zohra
Une spéciale dédicace à ma meilleur amie karima
Mes très chers amis : Chahinez, ilhem, asma, ikram, karima, hassiba
les enfants: tassneem,rimesse,racim,assil,wassim,houssam,
sofiene,sendoce,aya,ritadj,
A tous que j’aime et à tous qui m’aiment. Et à tous ceux qui ont
contribué de près ou de loin pour que ce projet soit réalisable, je vous
remercie.

Soumia
ii
Remerciements

Remerciements

Ce travail s’inscrit dans le cadre d’un projet de fin d’étude mené au niveau du
département de Génie Electrique du Centre Universitaire BELHADJ Bouchaib d’Ain
Témouchent
Nous tenons à remercier, et en premier lieu, ALLAH le tout puissant pout toute les
grâces qu’il nous a offert, pour nous donné le courage et la volonté de finir ce mémoire.

Ce travail n’aura pu voir le jour sans nos parents, grâce à leurs sacrifices et dévouement,
nous avons pu réaliser nos ambitions. Nous tenons à leur exprimer nos sincères remerciements.

Nous exprimons notre sincère reconnaissance et profonde estime envers notre encadreur
Madame ABDELMALEK Zohra et co-encadreur Monsieur ABDEMALEK Abdelhafid.
Nous les remercions pour leurs conseils, le temps précieux qu'ils nous ont accordé et pour leur
soutien au cours de ce dur labeur. Leurs conseils et remarques constructifs étaient très
bénéfiques pour notre travail.
Notre gratitude et nos respects à Monsieur BEMMOUSSAT Chems eddine pour avoir
accepté la présidence du jury.
Notre respectueuse considération pour Monsieur DEBBAL Mohamed pour accepter de
faire partie de ce jury.
Nous voudrions exprimer nos vifs remerciements à tous les professeurs de notre spécialité
Qui nous ont enseigné et pour leurs valeureux conseils.

Enfin, nous adressons nos sincères remerciements à BEKKAI Youcef pour son soutien
pendant ce travail, à tous nos proches amis qui ont contribués de près ou de loin à la réussite de
ce mémoire.

iii
Résumé

La sécurité est un enjeu majeur des technologies de l’information et de la


communication. Avec le développement de l'Internet, et les exigences internationales en ce
qui concerne la sécurité civile, les besoins de sécurité sont de plus en plus importants. Le
développement de services électroniques tels le banking, le commerce, le gouvernement, la
carte bleue, la carte nationale d’identité et le passeport biométrique, impliquent de nouveaux
besoins comme, l’authentification des entités communicantes, l’intégrité des messages
échangés, la confidentialité et la non-répudiation des transactions.
Ces besoins en sécurité sont résolus par la cryptographie moderne et par la mise en
œuvre de systèmes basés sur les certificats électroniques. Ces certificats qui permettent
d’authentifier une entité en faisant un lien entre celles-ci et leur clé publique sont établis et
gérés grâce aux infrastructures de gestion de clés (Public Key Infrastructure, PKI) qui sont
considérées actuellement comme les piliers des transactions sécurisées.
Les travaux de recherche présentés dans ce document consistent à émettre des
recommandations relatives à la mise en place d’infrastructures à clé publique (PKI). C’est
cette infrastructure qui va être détaillée dans ce document, nous expliquons la procédure à
suivre pour la gestion des clés, des certificats et leur utilisation.
Dans ce mémoire nous aborderons au premier lieu les informations générales sur la
cryptographie, nous verrons ensuite les différentes normes des PKI, où nous étudierons les
certificats électroniques.
En second lieu, nous expliquons les étapes de déploiement d’une CA auto-signé
réalisé pratiquement au moyen de l’API Openssl, avec un test de validation visant à sécuriser
un site web (protocole https, port 443).

Mots clés : SSL, Openssl, PKI, VMWARE, Serveur Web, Certificat, Autorité de certification, https,
port 443, cryptographie asymétrique, clé publique, sécurité,

Abstract
Security is a major issue in information and communication technologies. With the
development of the Internet, and international requirements with regard to civil security,
security needs are increasingly important. The development of electronic services such as
banking, commerce, government, blue card, national identity card and biometric passport
imply new needs such as authentication of communicating entities, integrity of messages
exchanged, confidentiality and non-repudiation of transactions.

iv
These security needs are solved by modern cryptography and the implementation of
systems based on electronic certificates. These certificates, which enable an entity to be
authenticated by linking them to their public key, are established and managed using the
Public Key Infrastructures (PKI) that are currently considered the pillars of secure
transactions.

The research presented in this document consists of making recommendations on the


establishment of public key infrastructure (PKI). It is this infrastructure that will be detailed in
this document. We explain the procedure to be followed for the management of keys,
certificates and their use.

In this brief, we will first discuss the general information on cryptography, and then we will
see the different PKI standards, where we will study electronic certificates.
Secondly, we describe the steps involved in deploying a self-signed CA with the Openssl API,
with a validation test to secure a website (https protocol, port 443).

Keywords : SSL, Openssl, PKI, VMWARE, Web Server, Certificate, Certification authority, https,
port 443, Asymetric Cryptography, Public key, security,

v
Table des matières

Table des matières

Dédicace…………………………………………………………………………………. i
Remerciements……………………………………………………………………………. iii
Résumé …………………………………………………………………………………... iv
Table des matières……………………………………………………………………….... vi
Liste des figures…………………………………………………………………………... ix
Liste des abréviations……………………………………………………………………... xii

Introduction générale…………………………………………………………………....... 1

Chapitre I :
Cryptographie asymétrique et Infrastructure à clé publique (PKI)

I.1 Introduction…………………………………………………………….……………… 3
I.2 Généralité sur la cryptographie asymétrique..………………………………………… 4
I.3 Les clés du chiffrement………………………………………………………………... 4
I.3.1 Confidentialité ……………………………………………………………………... 5
I.3.2 Authentification …………………………………………………………………….. 5
I.3.3 Non -répudiation …………………………………………………………………… 6
I.3.4 Intégrité ………………………….…………………………………………………. 6
I.4 Le Hachage …………………………………………..……………………………….. 6
I.5 Les clés, leurs types et leurs utilités ..…………………………………………………. 6

vi
Table des matières

I.5.1 Chiffrement symétrique …………………………...………………………………... 7


1.5.2 Chiffrement asymét.rique …………………………………………………………. 7
1.5.3.1 Principes de base …..……………………………………………………………... 7
I.5.3.2 Confidentialité.……….………………………………………………….....….….. 9
I.5.3.3 Chiffrement et Signature………………………………………………………….. 10
I.6 Algorithmes RSA……………..………………………………………………………. 10
I.6.1 Principe de fonctionnement ………………………………………………………... 11
I.6.2 Codage …………………………………………………………………….……….. 11
I.6.3 Décodage …………………………………………………………………………… 11
I.6.4 Détermination des clés………….…………………………………………………… 11
I.6.5 Choix de n ………………………………………………………………………….. 12
I.6.6 Choix de e et d…………………………………………………..………………….. 12
1.7 Algorithme DSA ………………...…………………………………………………… 12
I.8 Les certificats électroniques.…………………………………………………………... 13
I.8.1 Les types de certificats..…………………………………………………………….. 13
I.8.2 Le certificat X.509 ………………………………………………………………….. 14
I.9 Formats ASN1, PEM et DER ..……………………………………………………….. 16
I.9.1 Format ASN1 ………………………………………………………………………. 16
I.9.2 Format DER ………………………………………………………………………… 16
I.9.3 Format PEM ………………………………………………………………………... 17
I.10 Infrastructure à clé publique ………………………………………………………… 17
I.10.1 Autorité de Certification (CA) ..…………………………………………………… 17
I.10.2 Autorité d’enregistrement (RA) ..………………………………………………….. 18
I.11 Conclusion………………………………………………………………………….. 18

Chapitre II :
Présentation de l’API Openssl

II.1 Introduction…………………………………………………………………………... 19
II.2 Le protocole SSL……………………………………………………………………... 19
II.2.1 Openssl………………………………………………………………………...…... 20

vii
Table des matières

II.2.2 Installation d’openssl sur Windows 7………………………………………………... 20


II.3 Commandes d’Openssl les plus utilisées …….………………………………………. 26
II.4 Conclusion……………………………………………………………………………. 28

Chapitre III :
Création et test d’une infrastructure à clés publiques avec Openssl

III.1 Introduction……………….…………………………………………………………. 29
III.2 Présentation de VMware Workstation………………………………………………. 30
III.3 Installation de VMware Workstation et création d’une machine virtuelle………….. 30
III.3.1 Etapes de l’installation de VMware Workstation………………………………… 30
III.3.2 Création de nouvelle machines virtuelles…………………………………………. 34
III.4 Plateforme de test……………………………………………………………………. 34
III.4.1 Installation d’un serveur web (Apache) sur W7………………………………….. 37
III.5 Création d’une autorité de certification racine sur la machine W7………………….. 38
III.5.1 Création de CA…………………………………………………………………….. 38
III.5.2 Installation du certificat du CA sur XP……………………………………….…… 42
III.5.3 Création du certificat pour le serveur web………………………………………… 44
III.6 Configuration d’Apache et test de https……………………………………………... 45
III.7 Conclusion…………………………………………………………………………… 48

Conclusion générale………………………………………………………………………. 49
Bibliographie……………………………………………………………………………… 51

viii
Liste des figures

Liste des figures

Chapitre I :
Cryptographie asymétrique
et Infrastructure à clé publique (PKI)

Figure. 1.1 - Cryptographie asymétrique 5


Figure. 1.2 - Réalisation d‘une empreinte 8
Figure. 1.3 - Déchiffrement et le recalcul de l’empreinte 9
Figure. 1.4 - Chiffrement de message 10
Figure. 1.5 - Certificat d’identité 13
Figure. 1.6 - Certificat d’attribut 14
Figure. 1.7 - Format X.509 15

Chapitre II :
Présentation de l’API Openssl

Figure. 2.1 - Première étape de l’installation d’openssl 21


Figure. 2.2 - Deuxième étape de l’installation d’openssl 21
Figure. 2.3 - Troisième étape de l’installation d’openssl 22
Figure. 2.4 - Quatrième étape de l’installation d’openssl 22
Figure. 2.5 - Cinquième étape de l’installation d’openssl 23
Figure. 2.6 - Sixième étape de l’installation d’openssl 23
Figure. 2.7 - Septième étape de l’installation d’openssl 24
Figure. 2.8 - Lancement d’openssl 24
Figure. 2.9 - Création de chemin d’openssl étape 1 25
Figure. 2.10 - Création de chemin d’openssl étape 2 25
Figure. 2.11 - Création de chemin d’openssl étape 3 25
Figure. 2.12 - Création de chemin d’openssl étape 4 26

ix
Liste des figures

Chapitre III :
Création et test d’une infrastructure
à clés publiques avec Openssl

Figure. 3.1 - Première étape de l’installation de VMware 30


Figure. 3.2 - Deuxième étape de l’installation de VMware 31
Figure. 3.3 - Troisième étape de l’installation de VMware 31
Figure. 3.4 - Quatrième étape de l’installation de VMware 32
Figure. 3.5 - Cinquième étape de l’installation de VMware 32
Figure. 3.6 - Sixième étape de l’installation de VMware 33
Figure. 3.7 - Septième étape de l’installation de VMware 33
Figure. 3.8 - Dernière étape de l’installation de VMware 34
Figure. 3.9 - Création d’une machine virtuelle 34
Figure. 3.10 - Configuration de deux machines sur le même réseau 35
Figure. 3.11 - Désactivation de par feu 1 35
Figure. 3.12 - Désactivation de par feu 2 36
Figure. 3.13 - Capture d’écran IPconfig sur XP 36
Figure. 3.14 - Capture d’écran IPconfig sur W7 36
Figure. 3.15 - Capture d’écran ping sur XP 37
Figure. 3.16 - Capture d’écran Ping sur W7 37
Figure. 3.17 - Installation d’Apache 37
Figure. 3.18 - Fonctionnement de http sur W7 38
Figure. 3.19 - Capture d’écran présentant la création d’une paire de clé du CA 39
Figure. 3.20 - Capture d’écran présentant la clé du CA au format PEM 39
Figure. 3.21 - Capture d’écran présentant la clé du CA au format text 40
Figure. 3.22 - Capture d’écran présentant la clé publique du CA 40
Figure. 3.23 - Capture d’écran présentant la clé publique du CA au format text 41
Figure. 3.24 - Capture d’écran présentant la signature du certificat du CA 41
Figure. 3.25 - Capture d’écran présentant le certificat du CA au format text 42
Figure. 3.26 - Capture d’écran présentant l’installation du certificat du CA sur XP 1 42
Figure. 3.27 - Capture d’écran présentant l’installation du certificat du CA sur XP 2 43
Figure. 3.28 - Capture d’écran présentant l’installation du certificat du CA sur XP 3 43

x
Liste des figures

Figure. 3.29 - Capture d’écran présentant l’installation du certificat du CA sur XP 4 43


Figure. 3.30 - Capture d’écran présentant les détails du certificat 44
Figure. 3.31 - Capture d’écran présentant la création d’une paire de clés
pour le serveur web 44
Figure. 3.32 - Capture d’écran présentant la demande CSR pour le serveur web 45
Figure. 3.33 - Capture d’écran présentant la signature du certificat
du serveur web par la CA 45
Figure. 3.34 - Capture d’écran présentant l’activation du module SSL sur Apache 46
Figure. 3.35 - Capture d’écran présentant le chemin du fichier
de configuration de SSL 46
Figure. 3.36 - Capture d’écran présentant le chemin du certificat de serveur web 47
Figure. 3.37 - Capture d’écran présentant le chemin du la clé de serveur web 47
Figure. 3.38 - Capture d’écran présentant le fonctionnement de https sur XP 47

xi
Liste des acronymes

ASN1 Abstract Syntax Notation 1


AES Advanced Encryption Standard
base64 Chiffrement Base64
BER Basic Encoding Rules
CA Certificate Autority
Cert Certificate
CRL Certificate Revocation List (CRL).
CRT Certificate
CSR Certificate Signing Request
DER Distinguished Encoding Rules
DES Data Encryption Standard
Dgst Empreinte digitale
DN Distinguished Name
DSA Digital Signature Algorithm
DSS Digital Signature Standard
Http Hypertext Transfer Protocol
Https Hypertext Transfer Protocol secure
MAC Message Authentification Code
MD5 Message Digest 5
NIST National Institute of Standards and Technology
NSA National Security Agency
PEM Privacy-Enhanced Mail
PKI Public Key Infrastructure
RA Registration Authority
RFC Request for Comment
RSA Rivest Shamir Adelman, Encryption and Signature Standard

xii
Liste des acronymes

SHA Secure Hash Algorithm


SSL Secure Socket Layer
TLS Transport Layer Security

xiii
Introduction générale

Introduction générale

La sécurité est un enjeu majeur des technologies numériques modernes. Avec le


développement de l'Internet, les besoins de sécurité sont de plus en plus importants. En effet,
les besoins tels que, l’identification des entités communicantes, l’intégrité des messages
échangés, la confidentialité des transactions, l’authentification des entités, etc., liées à la
sécurité des communications sont à satisfaire.
La cryptographie moderne permet la mise en œuvre de ces services de sécurité grâce
à différents mécanismes tels que le chiffrement et la signature électronique. Plusieurs de ces
mécanismes sont basés sur des algorithmes cryptographiques asymétriques (à clé publique).
Bien que très efficace, la cryptographie à clé publique comporte cependant un enjeu majeur;
qui consiste en la gestion des clés publiques. En effet, l’efficacité de ce mécanisme de sécurité
dépend du niveau de certitude que détient l’utilisateur d’une clé publique quant à l’identité de
son propriétaire légitime.
Les clés publiques sont distribuées à l’intérieur de certificats à clé publique. Ce
certificat permet de créer une association entre la clé publique qu’il contient et l’identité de
son propriétaire. Ainsi, ceux qui désirent utiliser la clé publique contenue dans un certificat,
peuvent s’assurer de l’identité de son propriétaire, dans la mesure où ils ont confiance en
l’autorité qui a émit le certificat.
En effet, c’est dans ce cadre que se situe ce projet, qui propose une étude des
caractéristiques des PKI (Public Key Infrastructure). Une PKI est composée de plusieurs
composantes dont les plus importantes sont : l’autorité de certification, qui est l’entité
responsable de la gestion des certificats depuis leurs création jusqu’à leurs révocation, et les
entités finales qui sont les clients de l’autorité de certification, c’est-à-dire, les utilisateurs et
les sujets des certificats publiés par cette autorité.
Le but de ce travail est la mise en œuvre d’une infrastructure à clé publique au
moyen de l’API Openssl, et la configuration d’un service web sécurisé par SSL. La

1
Introduction générale

plateforme de test comporte une autorité de certification, un serveur web sécurisé et un client
(navigateur) qui, pour s’assurer de la sécurité du serveur, doit vérifier le certificat de celui-ci
par le biais du certificat de l’autorité de certification, qui a généré le certificat pour le serveur
web, et en qui il doit avoir préalablement confiance.
Ce travail d’implémentation est conduit par émulation de machines virtuelles sous VMware.

Le mémoire est organisé comme suit :


Dans le premier chapitre, nous allons passer en revue les notions de base de la sécurité et de la
cryptographie asymétrique ainsi que les normes et les standards utilisés par celle-ci. Nous
introduisons la notion de la cryptographie à clé publique et nous analysons les exemples les
plus répandus. Ce chapitre sera clôturé par une synthèse des normes et des standards utilisés
dans la sécurité. Puis nous rentrerons plus en détails sur la phase qui consiste à se faire publier
un certificat électronique par une autorité de certification, nous analyserons les différents
protocoles et formats normalisés pour effectuer cette opération.
Dans le second chapitre nous allons présenter l’API Openssl, qui va être utilisée
pour créer notre PKI et générer les certificats. Nous détaillerons son fonctionnement, ensuite
nous présenterons de façon générale quelques commandes et manipulations.
Le troisième chapitre est une présentation du travail pratique effectué au cours de ce
mémoire. En effet nous allons installer VMware Workstation qui va nous permettre de créer
deux machines virtuelles CA/serveur Web (Windows7) et client (Windows XP professionnel)
connecté par un LAN. Nous allons créer des paires de clés et des certificats pour le CA et le
serveur WEB.
Finalement, nous installerons et configurerons un serveur Apache avec le module
SSL qui permet l’utilisation du protocole SSL pour effectuer des échanges sécurisés.

2
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

1
CHAPITRE

Cryptographie asymétrique et
Infrastructure à clé publique (PKI)

I.1 Introduction

La cryptographie à clé publique s'impose rapidement comme l'élément de base du


commerce virtuel et d'autres applications exigeant des protocoles de sécurité et
d'authentification dans un réseau ouvert. Son utilisation par le plus grand nombre nécessite
une infrastructure permettant la publication et la gestion de clés publiques. Sans une
infrastructure efficace, la cryptographie à clé publique ne saurait véritablement rendre de plus
grands services que les méthodes classiques de cryptographie à clé secrète.
Une infrastructure à clé publique utilise des mécanismes de signature et certifie des
clés publiques qui permettent de chiffrer et de signer des messages ainsi que des flux de
données, afin d'assurer la confidentialité, l'authentification, l'intégrité et la non-répudiation.
L’utilisation des clés publiques repose sur la confiance en l’entité d’origine. En effet,
lorsqu’une liaison sécurisée est établie entre deux utilisateurs, rien ne prouve que l’un d’entre
eux ne soit pas un attaquant.
Pour pouvoir utiliser une clé publique avec sécurité, il faut donc que l’utilisateur puisse savoir
à qui appartient cette clé publique et à quoi elle sert. Pour résoudre ces problèmes deux
concepts sont introduits les certificats électroniques et les autorités de certification (CA).

3
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

Dans ce chapitre, nous présentons de manière générale la cryptographie


asymétrique. Ensuite nous focalisons l'étude sur les certificats X.509v3. Ce chapitre est ainsi
structuré en trois parties. Dans la première partie, nous introduisons les certificats
électroniques. La deuxième partie traitement des autorités de certifications. Dans la troisième
partie, nous définirons les infrastructures permettant de gérer les autorités de certification et
leur distribution.

I.2 Généralité sur la cryptographie asymétrique


Deux familles de cryptographie coexistent depuis les années 1970. Elles se
distinguent en fonction du type de clés utilisées. La cryptographie symétrique nécessite que
les systèmes de chiffrement et de déchiffrement disposent de la même clé cryptographique
tandis que la cryptographie asymétrique ou à clés publiques considère deux clés
complémentaires les clés publique et privée réalisant indifféremment l'une le chiffrement et
l'autre le déchiffrement. Ces deux familles sont ci-après décrites avec quelques exemples
d'algorithmes couramment utilisés de nos jours, leurs avantages et inconvénients ainsi que
leurs complémentarités. [1].
Les algorithmes cryptographiques antérieurs à ces deux familles reposaient sur le
secret de l'algorithme lui-même. Ainsi dès l'algorithme craqué, les cryptographes devaient
inventer de nouveaux algorithmes. L'originalité des algorithmes symétriques et asymétriques
a donc été de rendre publique le processus de chiffrement et d'externaliser le secret dans un
paramètre secret appelé ici clé cryptographique.
Dans la cryptographie asymétrique les clés sont générées simultanément et sont
complémentaires car le chiffrement avec l'une de ces clés nécessite le déchiffrement avec
l'autre clé. Chaque clé a un rôle bien défini. La clé privée est une clé qui ne doit être connue
que d'une seule entité, c'est elle qui permettra à cette entité de s'authentifier par exemple. La
clé publique peut être largement diffusée et il est même préférable qu'elle soit largement
diffusée si on souhaite que l'entité concernée puisse être authentifiée par un grand nombre
d'entités. Bien entendu, la connaissance de la clé publique ne doit pas permettre de déduire la
clé privée complémentaire.
Pour authentifier l'origine d'un message dans une communication sur un réseau,
l'émetteur doit utiliser sa propre clé privée, par exemple pour générer une signature
électronique (voir paragraphe I.5.5) qu'il apposera au message avant émission. La clé
publique étant connue de tous, le destinataire sera à même de vérifier la validité de la
signature et aura une garantie sur la provenance du message.

4
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

Pour garantir la confidentialité d'un message, il est nécessaire de chiffrer le message


émis avec la clé publique du destinataire. Cette clé publique est connue de tout le monde et
peut donc servir à n'importe quelle entité pour chiffrer un message. Par contre, la clé privée
complémentaire n'est connue que du destinataire du message; le destinataire sera donc le seul
à pouvoir déchiffrer le message. La propriété de confidentialité est ainsi obtenue[2].

Figure 1.1-Cryptographie asymétrique

I.3 Les clés du chiffrement


En cryptographie numérique, chiffrer une information consiste à modifier la suite
d'octets qui constituent cette information au moyen d'un algorithme mathématique [3].
L'algorithme étant normalisé, il peut être connu de tout le monde. Ainsi, pour que le
secret soit assuré, il faudra que cet algorithme utilise un paramètre supplémentaire appelé une
clé. Une information chiffrée avec un algorithme connu restera déchiffrable par les seuls
possesseurs de la clé appropriée, même si l'algorithme est connu de tous. Les clés de
chiffrement sont donc les éléments essentiels dans la garantie du secret souhaité. Une fois le
procédé mis en place, nous pouvons en attendre quelques services.

I.3.1 Confidentialité
L'usage auquel on pense en premier est naturellement la confidentialité des
données. Le premier désir est bien que les messages ne soient lisibles que par les seules
personnes autorisées.

I.3.2 Authentification
Il s'agit d'apporter par la cryptographie la preuve que le message est bien
authentique. Compte tenu de ce que nous venons de voir, il suffira dans la plupart des cas de
pouvoir assurer que l'auteur de l'empreinte du message est bien celui qu'il prétend être. Il
s'agit en quelque sorte d'une lettre manuscrite, non raturée et signée.

5
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

I.3.3 Non -répudiation


C'est le corollaire direct de l'authentification. Celui qui a rédigé une lettre
manuscrite, non raturée et signée de sa main, ne pourra en aucun cas prétendre par la suite
qu'il n'en est pas l'auteur. Il en va de même pour l'authentification numérique [2].

I.3.4 Intégrité
Dans certains cas, il peut être nécessaire d'assurer simplement que les données
sont intègres, c'est à dire qu'elles n'ont pas été au passage falsifiées par un intrus. Ces données
restent "claires", au sens où elles ne sont pas secrètes.

I.4 Le Hachage
On nomme fonction de hachage une fonction particulière utilisée en cryptographie
qui, à partir d'une donnée fournie en entrée, calcule une empreinte (fingerprint ou un
condensé) servant à identifier rapidement la donnée initiale. Ce condensé est évidemment de
taille beaucoup plus petite que le message lui-même, ce qui rend l'identification des données
plus rapide. Il n’est pas non plus possible de reconstituer le message à partir du condensé. La
technique de hachage est utilisée pour préserver l’intégrité d’une information en envoyant
cette information accompagnée de son condensé, ce dernier étant éventuellement chiffré. La
fonction de hachage est telle qu’il est pratiquement impossible statistiquement de produire
deux messages dont les condensés seraient identiques. Le message et son condensé sont donc
liés : on ne peut pas modifier l’un sans devoir modifier l’autre.
On peut citer parmi les algorithmes de hachage les plus répandus actuellement le
MD5¹ [4]. (MD pour Message Digest) et Le SHA² [5] (Secure Hash Algorithme).

I.5 Les clés, leurs types et leurs utilités


Il y a deux types de clés :
• les clés symétriques, on chiffre et déchiffre avec la même clé. [6]

1 MD5 : Message Digest 5. Fonction définie dans la RFC 1321. Il s'agit d'un hachage unidirectionnel, permettant
d'identifier un message, car deux messages produiront deux hachages différents, et il est impossible de retrouver
le message à partir de son hachage.
2 SHA : Secure Hash Algorithm. Algorithme de hachage Sécurisé, c'est-à-dire qu'il calcule l'empreinte d'une
suite d'octets .L'entrée peut être de taille quelconque, la sortie dépend la norme SHA1 ou SHA2. Les
caractéristiques de SHA (comme tous les algorithmes de hachage) .

6
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

7
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

• une clé publique : elle est unique également, mais tout le monde peut s'en procurer une
copie, il suffit d'aller la chercher chez un dépositaire, dit "tiers de confiance". Il s'agit en
quelque sorte d'un concierge qui garde ces clés publiques et certifie qu'elles appartiennent
bien à la personne indiquée,
• ce qui est chiffré avec une clé publique ne peut être déchiffré qu'avec la clé privée
correspondante,
• ce qui est chiffré avec la clé privée ne peut être déchiffré qu'avec la clé publique
correspondante.
Tout ceci peut à première vue paraître absurde, puisqu'il y a à chaque fois une clé qui peut
être récupérée par n'importe qui. Oui mais...

Figure 1.2-Réalisation d‘une empreinte

On réalise une empreinte avec un algorithme non réversible (MD5, SHA...). Cette
empreinte ne permet pas de reconstruire le message original, mais elle représente "à coup sûr"
un résumé du message original. Un simple bit modifié dans le message donnerait une
empreinte complètement différente.
On chiffre cette empreinte avec la clé privée et l'envoie, avec le message en clair, au
destinataire. Le message n'est pas confidentiel, il est envoyé en clair. Mais :
• L'empreinte réalisée est intimement attachée au contenu du message, si le message est
intercepté et modifié, l'empreinte devra être recalculée,

8
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

• comme l'empreinte a été signée avec la clé privée de l’expéditeur, il est le seul à pouvoir le
faire, donc toute modification ultérieure à l'envoi ne pourra pas être signée avec la bonne clé.

Figure 1.3-Déchiffrement et le recalcul de l’empreinte

Lorsque le destinataire recevra le message signé :

• le destinataire recalcule l'empreinte du message reçu,


• il déchiffre l'empreinte signée avec la clé publique de l'expéditeur,
• il compare les deux empreintes. Si elles sont identiques, c'est que le message :
• est bien conforme à l'envoi, puisque les empreintes sont identiques,
• est bien envoyé par l'expéditeur propriétaire de la clé publique avec laquelle l'empreinte
signée a été déchiffrée.
Voilà résolu le problème de la signature (authentifiée). Ce type de signature engage
l'expéditeur. Il ne peut nier avoir envoyé cette information, puisqu'il l'a signée sans
falsification possible, pour autant que l'on soit sûr de l'authenticité de la clé publique.

I.5.4.2 Confidentialité
L’expéditeur chiffre l’information avec la clé publique du destinataire, et lui envoie
cette information. N'importe qui peut faire de même, puisque le chiffrement se fait avec une
clé publique.
Donc, le message n'est pas authentifié, mais :
• comme il a été chiffré avec la clé publique du destinataire, le message sera illisible pour qui
ne détiendra pas la clé privée correspondante,

9
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

• comme seul le bon destinataire, normalement, détient cette clé privée, il sera le seul à
pouvoir déchiffrer le message.

I.5.5.3 Chiffrement et Signature

Figure 1.4-Chiffrement de message

On réalise une empreinte du message et on la chiffre avec la clé privée pour l'authentifier,
• on chiffre le message lui-même avec la clé publique du destinataire pour le rendre
confidentiel,
• on envoie le tout au destinataire.
Le destinataire déchiffrera le message avec sa clé privée, en calculera localement l'empreinte,
puis déchiffrera l'empreinte envoyée avec a clé publique de l’expéditeur :
• comme il est le seul à pouvoir déchiffrer avec sa clé privée, le message est bien confidentiel,
• comme l’expéditeur est le seul à pouvoir chiffrer l'empreinte avec sa clé privée, le message
est bien authentique.

I.6 Algorithmes RSA


Inventée par Ron Rivest, Adi Shamir, and Leonard Adleman en 1977[7], RSA est un
algorithme de chiffrement utilisé en cryptographie asymétrique. 99% des certificats émis à ce
jour utilisent la méthode RSA comme algorithme de chiffrement.
Avec la méthode RSA, la clé publique est générée à partir de la clé privée, et elle est
utilisée pour chiffrer des données. La longueur de clé minimum autorisée en RSA est de 2048

10
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

bits depuis 2013. Ce nouveau standard permet ainsi à l'algorithme RSA de rester une méthode
sûre pendant de nombreuses années encore.

I.6.1 Principe de fonctionnement


On appelle exponentielle modulaire de base a, d’exposant b et de modulo n la
fonction suivante :
f(a) = ab mod n. (I.1)

Ce type de fonction appartient à la famille des fonctions trappe ou fonctions piège


[8]. Elles constituent les fonctions à sens unique : faciles à calculer mais difficiles à inverser,
du moins dans des délais raisonnables. C’est sur cette particularité que sont fondés les
systèmes à clé publique, et en particulier RSA.
La méthode de cryptage/décryptage est en fait très simple, seule la détermination des
clés est délicate. Toutefois elle nécessite une puissance de calcul relativement importante au
regard de la taille des chiffres manipulés. Admettons que les trois composantes e, d et n
permettant de former les deux clés ont été fixées.

I.6.2 Codage
Le texte ou les données à coder, quelles qu’elles soient, doivent être découpées en
blocs et traduites en une suite de chiffres pour pouvoir être chiffrées avec RSA. Il faut bien
vérifier que les chiffres obtenus ne sont pas susceptibles d’être supérieurs à n, sinon ils
seraient tronqués par le modulo. Chaque bloc B est ensuite passé à la fonction qui retourne le
bloc crypté B’ correspondant.
B’ = Be mod n. (I.2)

I.6.3 Décodage
Le décodage est l’opération inverse, on utilise la clé de décryptage d pour obtenir les
blocs d’origine, qui peuvent ensuite être assemblés et exploités.

B = B’d mod n. (I.3)


I.6.4 Détermination des clés
Pour d’une part le bon fonctionnement de l’algorithme RSA et d’autre part assurer
une sécurité maximale, il est important de suivre rigoureusement la méthode suivante pour
déterminer les deux clés de la méthode RSA [8].

11
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

I.6.5 Choix de n
n doit simplement être le produit de deux nombres premiers p et q
n = p.q (I.4)

On calcule alors (n) de la façon suivante :


n = (p-1) (q-1). (I.5)

I.6.6 Choix de e et d
On se base sur la formule ci-dessous. Il faut savoir que cette formule n’a rien de
magique, elle est le résultat de la démonstration dont le but est de déterminer les conditions
d’invisibilité de l’exponentielle modulaire. En clair pour qu’une exponentielle modulaire de
modulo n et d’exposant e ait un inverse de modulo n et d’exponentielle e [8], il faut que cette
équation soit vérifiée.
e.d = K. n+1. (I.6)

K est une constante quelconque à choisir de façon d’éviter d’avoir e ou d sous forme
fractionnaire, ce qui complique le traitement. Il faut aussi prendre en compte les
considérations suivantes lors du choix de e :
1. e et n doivent êtres premiers entre eux ;
2. e doit être choisi dans l’intervalle [2, n-1].
Les trois paramètres e, d et n sont les seuls nécessaires au fonctionnement de RSA,
toutes les autres données ayant permis de les déterminer sont à détruire.

I.7 Algorithme DSA


L’algorithme de signatures digitales DSA a été publié par le NIST [9] (National
Institute of Standards and Technologie) pour la norme DSS (Digital Signature Standard). DSS
a été choisi en coopération avec le NSA pour être la norme d’authentification en1994.
DSA est basé sur les propriétés des logarithmes, et dérivé des systèmes de cryptage
proposés par Schnorr et ElGamal. Il est destiné uniquement à l’authentification. Pour DSA la
génération de la signature est plus rapide que la vérification, tandis que pour RSA c’est
l’inverse. Le NIST prétend que l’avantage de DSA est la rapidité à signer, mais beaucoup
d’utilisateurs pensent que la vérification doit être l’opération la plus rapide. Des chercheurs
ont développé une variante de DSA plus performante dans la génération et la vérification.

12
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

DSA est basé sur la lenteur du calcul des logarithmes discrets, l’algorithme est
considéré comme sûr si la clé choisie est suffisamment importante. DSS a été proposé par le
NIST avec une clé de 512 bits. Après de nombreuses critiques, concernant en particulier la
sécurité à long terme, le NIST a proposé la possibilité de définir des clés d’une taille
maximum de 1024 bits.

I.8 Les certificats électroniques


Par définition, un certificat est un document électronique [10], résultant d’un
traitement fixant les relations qui existent entre une entité (personne, entreprise, etc.) et les
données qui lui sont rattachées. Il permet de lier soit une clé publique avec son propriétaire,
soit de lier une identité ou une clé publique à un ensemble de droits (attributs, ou privilèges).

I.8.1 Les types de certificats


Il existe deux types de certificat:
 Les certificats d’identité : qui attache une "clé publique à son propriétaire ». Le
propriétaire peut être une personne, une application, un site, une machine, etc.
 pour une personne il prouve l’identité de la personne au même titre qu’une carte
d’identité, dans le cadre fixé par l’autorité de certification qui la validée;
 pour une application il assure que celle-ci n’a pas été détournée de ses fonctions;
 pour un site il offre la garantie lors d’un accès vers celui-ci que l’on est bien sur le
site auquel on veut accéder.

Figure 1.5-Certificat d’identité

 Les certificats d’attributs :qui attache une « identité à ses attributs ». Les attributs sont
les droits de l’identité servant à véhiculer des autorisations.

13
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

Figure 1.6-Certificat d’attribut


I.8.2 Le certificat X.509
Dans le standard X.509v3, il y a des extensions dites standard [11]. Les extensions
sont très importantes dans les certificats, puisqu’elles les rendent « flexibles » et «ajustables »
à souhait (tel certificat ne peut servir que pour telle application par exemple). Mais elles sont
aussi source d’incompatibilité (telle application va rejeter un certificat si elle n’y trouve pas
L’extension qu’elle attend) .En développant un logiciel utilisant des certificats on peut
cependant l’autoriser à ne pas prendre en compte telle ou telle extension. Par « ajustable" »,
on entend en fait la possibilité pour une CA ou une PKI de définir une politique de sécurité de
la CA ou de la PKI. Dans cette optique, la politique peut spécifier que tel certificat ne pourra
être utilisé qu’à cet usage ou définir toute autre contrainte qui rendra incompatibles des
certificats émis par d’autres CA [12].

14
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

Figure 1.7 - Format X.509

 Le numéro de série du certificat


o Ce numéro est unique
o En cat de révocation de certificat, c’est ce numéro qui sera précisé dans
la liste de révocation

 Le type de signature utilisé (algorithme utilisé pour le cryptage)


 Le nom de la CA qui a émis le certificat : Distinguished Name
 La période de validité de certificat
o Date de début de validité
o Date de fin de la validité

 Le nom du propriétaire de certificat


 La clé publique associée à ce certificat est l’algorithme utilisé pour l’encoder
 Des extensions optionnelles introduites avec les versions 2 et 3 du format X.509

15
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

o identifiant alternatif de l’émetteur : donne une seconde identification de la CA,


au cas ou elle possède un DN commun à un ou plusieurs utilisateurs
o identifiant alternatif de l’utilisateur donne : une seconde d’identification du
propriétaire du certificat, au cas ou il possède un DN commun à un ou
plusieurs utilisateurs
o type : Décrit le format du champ valu ci-dessous
o value : valeur des donné de l’extension .permettant d’affiner la politique de
certification.
o la signature numérique de la CA sur l’ensemble des champs précédents
o ensemble des donner précédentes encoder a l’aide de la clé privée de la CA

I.9 Formats ASN1, PEM et DER


On distingue deux formats différents, le format DER et le format PEM [13]. Le
format DER est utilisé pour transmettre le certificat entre le Client et le serveur Apache alors
que le format PEM est utilisé entre le Client et l’autorité de certification. Nous allons
maintenant étudier ces différents formats.

I.9.1 Format ASN1


La notation formelleASN1 (Abstract Syntaxe Notation 1) permet de spécifier les
données Transmises par les protocoles de télécommunications indépendamment des langages
informatiques et de la représentation physique de ces données, pour toutes sortes
d'applications communicantes et de données aussi complexes (ou aussi simples) soient-elles.
Cette représentation est souvent utilisée dans les RFC (Request For Comment) pour décrire
une structure de données [13].

I.9.2 Format DER


Le passage de ASN.1 à un certificat numérique se fait en appliquant les règles
d'encodage DER (Distinguished Encoding Rules) [13] qui sont un sous-ensemble des règles
BER (Basic Encoding Rules) décrites dans les recommandations ITU-T X.208. Chaque valeur
ASN est représentée comme une chaîne unique d’octet au format DER. Le codage DER est
utilisé notamment pour le commerce électronique ce qui implique de la cryptographie et
surtout le fait qu’il y a une et seulement une façon de coder et décoder un message.

16
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

I.9.3 Format PEM


"Privacy Enhanced Mail" [13] (en français messagerie à confidentialité ajoutée) est
un système sécurisé pour le courrier électronique, garantissant le caractère confidentiel ou
privé des données transmises par courrier électronique. Les techniques habituelles de courrier
électronique ne sont pas sécurisées. Le format DER des certificats numériques se prête mal
aux applications de type courrier électronique car il contient des octets qui pourraient être
malmenés par certains logiciels de transfert de messages. Le format PEM y remédie en
utilisant l'encodage base 64.

I.10 Infrastructure à clé publique


Une PKI est composée d’un ensemble de moyens matériels [14], de logiciels, de
composants cryptographiques, mis en œuvre par des personnes. Ces moyens sont combinés
par des politiques, des pratiques et des procédures requises, qui permettent de créer, gérer,
conserver, distribuer et révoquer des certificats basés sur la cryptographie asymétrique
Une PKI est donc une structure à la fois technique et administrative permettant une
mise en place de la distribution des certificats. Ce système de gestion de certificats permet de
gérer des listes importantes de clés publiques et d’en assurer la fiabilité pour des entités,
généralement dans un réseau. La PKI offre un cadre global permettant d’installer les éléments
de sécurité tels que la confidentialité, l’authentification, l’intégrité et la non-répudiation, tant
au sein de l’entreprise que lors d’échanges d’information avec l’extérieur.
Une PKI est composée généralement de trois éléments principaux qui sont l’Autorité
de certification CA (Certificate Authority ), l’Autorité d’Enregistrement RA (Registration
Authority) et d’un annuaire où sont stockées les informations.

I.10.1 Autorité de Certification (CA)


Une autorité de certification est une entité de confiance (publique ou privée) [15] qui
offre une infrastructure de services hautement sécurisés et qui a pour fonction principale la
délivrance de certificats numériques, ce qui permet de vérifier l'identité du détenteur de la clé.
L’autorité de certification est la partie intermédiaire entre deux entités qui veulent établir un
domaine de confiance entre eux. En effet, c’est l’organisme qui garantie l’authenticité des clés
publiques de chacun de ses clients.
Lorsqu'il faut distinguer les outils matériels ou logiciels utilisés par la CA, on utilise le terme
« équipement de la CA ». Le terme « CA racine » sert à désigner une CA à laquelle une entité
finale fait directement confiance. Ce terme ne signifie pas nécessairement que la CA racine se

17
Chapitre I. Cryptographie asymétrique et Infrastructure à clé publique (PKI)

situe au sommet d'une quelconque hiérarchie mais plutôt qu'on lui fait directement confiance.
Une « CA subordonnée » n'est pas une CA racine pour l'entité finale en question.
Les opérations effectuées par une CA sont principalement :
1. La délivrance des certificats.
2. Renouvellement des certificats.
3. Révocation des certificats.
4. Publication des certificats.

I.10.2 Autorité d’enregistrement (RA)


La RA est un composant optionnel dans un PKI [16]. En quelques sortes la CA
impose les lois pour la RA. La RA est digne de confiance certifié pour la CA, elle joue le rôle
d’un serveur subordonné pour la CA. Elle a pour fonction principale l’inscription de
nouveaux utilisateurs
La RA effectue des tâches qui lui sont déléguées par la CA, par exemple :
- Tâche d’authentification personnelle.
-Rapporter les certificats annulés.
- Générer les clés.
- Archiver les paires de clés.
Une RA ne publie pas de certificats ou des CRLs [17].

I.11 Conclusion
Ce chapitre introductif a présenté les principes de base de la cryptographie. Ainsi,
nous avons vu la cryptographie à clé privée, la cryptographie à clé publique et les principaux
algorithmes cryptographiques ainsi que les principaux normes et standards de sécurité qui
vont être utilisés tout le long de ce mémoire.

18
Chapitre II. Présentation de l’API Openssl

2
CHAPITRE

Présentation de l’API Openssl

II.1 Introduction
Nous allons présenter dans ce chapitre l’API Openssl, qui va nous servir pour créer
notre PKI et générer les certificats. Nous détaillerons son fonctionnement, et les étapes de son
installation sur Windous7, ensuite nous présenterons de façon générale quelques commandes
et manipulations.

II.2 Le protocole SSL


Le protocole SSL (Secure Socket Layer) a été développé par la société Netscape
Communications Corporation pour permettre aux applications client/serveur de communiquer
de façon sécurisée [18] .
La version 3 de SSL est utilisée par les navigateurs tels Netscape et Microsoft Internet
Explorer depuis leur version 4. SSL est un protocole qui s'intercale entre la couche transport
du modèle TCP/IP et les applications qui s'appuient sur TCP. Une session SSL se déroule en
deux temps :
1. une phase de poignée de mains (handshake) durant laquelle le client et le serveur
s'identifient, conviennent du système de chiffrement et d'une clé qu'ils utiliseront par la
suite.
2. la phase de communication proprement dite durant laquelle les données échangées sont
compressées, chiffrées et signées.

19
Chapitre II. Présentation de l’API Openssl

SSL sert de support à plusieurs protocoles , entre-autres : HTTP pour sécurisé les sites de
Web, FTP pour sécuriser le transfert de fichiers, etc
SSL a trois buts:
 Confidentialité des échanges grâce au cryptage symétrique
 Intégrité des données grâce à la fonction de hachage
 Authentification des entités communicantes grâce aux certificats

II.2.1 Openssl
Openssl est une boîte à outils [19] cryptographiques implémentant les protocoles SSL et TLS qui
offre :
1. une bibliothèque de programmation en C permettant de réaliser des applications
client/serveur sécurisées s'appuyant sur SSL/TLS.
2. une commande en ligne (openssl) permettant :
 la création de clés RSA, DSA (signature)
 la création de certificats X509
 le calcul d'empreintes (MD5, SHA,...)
 le chiffrement et déchiffrement (DES, IDEA, RC2, RC4, Blowfish, ...)
 la réalisation de tests de clients et serveurs SSL/TLS
 la signature et le chiffrement de courriers.

II.3. Installation d’openssl sur Windows 7


Pour effectuer certaines opérations de cryptographie (création d'une clé privée, génération
d'un CSR, conversion d'un certificat...) sur un poste Windows 7 nous pouvons utiliser l'outil
Openssl.

Voici les étapes d’installation :

1. Télécharger le fichier d’installation d’openssl « Win32OpenSSL_Light-1_0_2k »


disponible sur le site : https://slproweb.com/products/Win32OpenSSL.html
On choisit suivant les besoins la version windows 32 bits ou 64 bits
2. Exécuter le fichier Win32OpenSSL_Light-1_0_2k
3. Cliquer sur Next (Suivant).

20
Chapitre II. Présentation de l’API Openssl

Figure 2.1 -Première étape de l’installation d’openssl

4. Sélectionner I accept the terms in the License Agreement (J’accepte les termes du
contrat de licence), puis cliquez sur Next (Suivant)

Figure 2.2-Deuxième étape de l’installation d’openssl

5. Indiquer le chemin d'accès pour installer openssl, puis cliquez sur next (suivant).

21
Chapitre II. Présentation de l’API Openssl

Figure 2.3-Troisième étape de l’installation d’openssl

6. Copier les DLLs Openssl dans le dossier d'installation du binaire Openssl

Figure2.4- Quatrième étape de l’installation d’openssl

7. Lorsque la boîte de dialogue suivante apparaît, cliquer sur Next (suivant).

22
Chapitre II. Présentation de l’API Openssl

Figure 2.5- Cinquième étape de l’installation d’openssl

8. l’installation de l’openssl démarre :

Figure 2.6- Sixième étape de l’installation d’openssl

9. Quand l’installation et terminer, cliquer sur finish (terminer)

23
Chapitre II. Présentation de l’API Openssl

Figure 2.7-Septième étape de l’installation d’openssl

L'installation standard d'Openssl sur un poste Windows est effectuée sur "C:\OpenSSL-
Win32" et l'exécutable est situé dans le sous répertoire "bin".

 Variable d’environnement

Pour lancer l'invite de commande, aller dans le menu démarrer, puis exécuter "cmd".
Pour exécuter le programme dans "l'invite de commandes" Windows il faudra donner le
chemin complet : >C:\OpenSSL-Win32\bin\openssl.exe

Figure 2.8-Lancement d’openssl


Si on veut éviter cette commande on renseigne la variable d’environnement :
Voici les étapes pour ajouter le chemin de l’openssl dans la variable d’environnement
#PATH :
1. cliquer sur démarrer propriétés (poste de travail)

24
Chapitre II. Présentation de l’API Openssl

Figure 2.9- Création de chemin d’openssl étape 1

2. cliquer sur « paramètres système avancés »

Figure 2.10- Création de chemin openssl étape 2

3. cliquer sur « variable d’environnement »

Figure 2.11- Création de chemin openssl étape 3

25
Chapitre II. Présentation de l’API Openssl

3. cliquer sur Path et on modifie le champ (valeur de variable) en ajoutant le chemin


C:\OpenSSL-Win32\bin\, puis ok

Figure 2.11 Création de chemin openssl étape 4

II.2 Commandes d’Openssl les plus utilisées


Le programme Openssl fournit une variété de commandes dont chacune possède de
nombreuses options et arguments.
Les commandes-pseudo commandes-standard-liste, commandes-signature-message-liste, et
commande-chiffrement-liste génèrent une liste (une entrée par ligne) des noms de toutes
Les commandes standards, commandes de signature de messages ou commandes de
chiffrement, respectivement, qui sont disponible dans l’utilitaire Openssl.

La syntaxe générale de la commande openssl est :

Openssl <commande> <options >

Nous pouvons utiliser les fonctionnalités suivantes :

• openssl genrsa -out <fichier_rsa.priv> <size>


Cette commande génère la clé privée RSA de taille size. Les valeurs possibles pour size sont :
512, 1024, etc.

• openssl rsa -in <fichier_rsa.priv> -des3 -out <fichier.pem>


Cette commande chiffre la clé privée RSA avec l’algorithme DES3. Nous pouvons utiliser
DES, 3DES, AES, etc.

26
Chapitre II. Présentation de l’API Openssl

• Openssl rsa -in <fichier_rsa.priv> -pubout -out <fichier_rsa.pub>


Cette commande stocke la partie publique dans un fichier à part (création de la clé publique
associée à la clé privée).

• openssl enc <-algo> -in <File.txt> -out <Filechiff.enc>


Cette commande permet de chiffrer un texte clair File.txt avec l’algorithme spécifié (openssl
enc --help pour avoir la liste des possibilités ou bien openssl List-cipher-commandes) dans un
fichier Filechiff.enc.

• openssl enc <-algo> -in < Filechiff.enc > -d -out < File.txt >
pour le déchiffrement.

• Openssl dgst <-algo> -out <sortie> <entrée>


Cette commande est utilisée pour hacher un fichier. L’option <-algo> est le choix de
l’algorithme de hachage (MD5, SHA1, SHA2, …..).

• Openssl rsautl –encrypt -inkey <rsa.pub> -in < File.txt > -out < Filechiff.enc >
Cette commande permet de chiffrer File.txt avec RSA en utilisant la clé publique rsa.pub.

• Openssl rsautl -decrypt -inkey <rsa.priv> -in < Filechiff.enc > -out < File.txt >
Cette commande sert à déchiffrer Filechiff.enc

• Openssl rsautl -sign -inkey <rsa.priv> -in <File.txt> -out <Filesign.sig>


Cette commande permet de générer une signature.

• Openssl rsautl -verify -pubin -inkey <rsa.pub> -in Filesign.sig


Cette commande sert à vérifier une signature

• pour afficher la clé au format pem : Openssl rsa -in <rsa.priv>


• pour afficher la clé au format text : Openssl rsa -in <rsa.priv> -text –nout
• pour afficher la clé publique : Openssl rsa -pubin –in fichier_rsa.pub -text -noout

Les commandes nous permettant de générer les CSR et Certificats seront vues au chapitre
suivant.

27
Chapitre II. Présentation de l’API Openssl

2.5 Conclusion
La définition et l’installation d’Openssl à été introduite conformément aux règles de
l’art dans ce chapitre, on a énuméré toute les commandes pour l’utilisation de cette API, tout
en indiquant leurs fonctionnements. Cette interface de programmation serait de grande
importance pour la simulation dans le chapitre 3.

28
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

3
CHAPITRE

Création et test d’une infrastructure à clés


publiques avec Openssl

III.1 Introduction
Les certificats électroniques permettent à des utilisateurs de signer électroniquement
des messages (e-mails, documents administratifs, etc.) et de s'authentifier sur des sites web
sécurisés. Ils permettent également à des machines de confirmer leur identité pour éviter tout
détournement de flux de données.
Une PKI a pour fonction de fournir un service de création, puis de gestion de certificats
électroniques au sein d'une organisation.
Dans ce chapitre, Nous allons faire le déploiement une PKI au sein d’un intranet. Toutes les
opérations cryptographiques (génération de clés asymétriques, de CSR, signature ...) réalisées
côté serveur par la PKI sont assurées par Openssl.
Pour ce faire, une plateforme de test virtuelle est proposée. Nous utilisons à cette fin VMware
Workstation qui va nous permettre de créer deux machines virtuelles : Windows7 qui va jouer
un double rôle, celui de CA et serveur Web ; et Windows XP professionnel qui va jouer le
rôle de client ; ces deux machines sont connectées virtuellement par un VLAN. Nous allons
créer des paires de clés et des certificats pour le CA et le serveur WEB. Enfin, nous
utiliserons ces certificats et clés pour sécuriser un serveur apache.

29
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

III.2 Présentation de VMware Workstation


VMware Workstation est un programme qui permet de faire tourner une machine
virtuelle sur un ordinateur. Ainsi, on a l'impression d'avoir un autre système d'exploitation et
donc, un autre environnement. L'intérêt d'avoir une machine virtuelle est multiple : on peut
tester un autre système d'exploitation (Linux, par exemple), visiter des sites en toute sécurité,
installer un environnement spécialement dédié aux enfants, tester les conséquences de tel ou
tel virus ; On peut, comme sur n'importe quelle plateforme, imprimer, lire une clé USB [20].

III.3 Installation de VMware Workstation et création d’une machine


virtuelle

III.3.1 Etapes de l’installation de VMware Workstation


Tous d’abord nous allons installer la VMware Workstation sur notre Système
d’exploitation : Windows 7
Pour assurer l’installation il faut disposer de :
 Systeme d'exploitation : Pour faire tourner des machines virtuelles 32 bits
 RAM : 1 Go minimum, mais il est recommandé d’avoir 2 Go
 Espace disque : il est nécessaire de disposer de 3,5 Go d’espace libre pour installer
le logiciel lui-même, mais les machines virtuelles prendront encore plus d’espace.
Voici donc les étapes d’installation :
Ouvrez le fichier d’installation. Si la fenêtre de Vérification de compte utilisateur ou
Ouverture de fichier – Avertissement de sécurité apparaît, sélectionnez respectivement Oui ou
Exécuter.

Figure 3.1 – Première étape de l’installation de VMware

30
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

1. Sélectionnez Next > pour faire passer la fenêtre de bienvenue.

Figure 3.2- Deuxième étape de l’installation de VMware

2. Appuyer sur le bouton Typical.

Figure 3.3- Troisième étape de l’installation de VMware

3. Choisissez le répertoire dans lequel vous voulez que VMware Workstation soit
installé. Pour l’installer dans un autre dossier que celui par défaut, appuyez sur
Change... et sélectionnez le dossier désiré. Après avoir décidé où vous vouliez
installer VMware Workstation, appuyez sur Next >.

31
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.4- Quatrième étape de l’installation de VMware

4. Choisissez les emplacements où vous voulez mettre des raccourcis vers VMware
Workstation. Vous pouvez choisir d’en mettre sur le bureau ou dans le menu
Démarrer. Enlevez de la sélection les raccourcis dont vous ne voulez pas puis appuyez
sur Next >.

Figure 3.5-Cinquième étape de l’installation de VMware

5. L’installateur est maintenant prêt à installer VMware Workstation. Si vous voulez


encore changer les options précédentes, appuyez sur < Back pour y retourner,
modifiez-les puis faites Next > quand vous avez terminé, jusqu’à arriver de nouveau à
cet écran. Une fois que vous êtes prêt à lancer l’installation de VMware Workstation,
appuyez sur Continue.

32
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.6-Sixième étape de l’installation de VMware

6. l’installation deVMware démarre

Figure 3.7- Septième étape de l’installation de VMware

7. Enregistrez votre version de VMware Workstation. Entrez une clé de licence et


appuyez sur Enter >.

33
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.8-Dernière étape de l’installation de VMware

8. Redémarrer l’ordinateur

III.3.2 Création de nouvelle machines virtuelles


On va créer deux machines virtuelles: Windows 7 sera utilisé comme CA et
serveur Web (https), et Windows XP professionnel sera utilisé comme client web (https) :
Mosilla Firefox ou Internet Explorer.

L’installation des systèmes d’exploitation XP et Windows 7 sur les machines virtuelles se fait
de la même façon qu’importe quelle autre machine physique.

Figure 3.9-Création d’une machine virtuelle

III.4 Plateforme de test


Tous d’abord on doit configurer les 2 machines W7 etXP sur un même réseau local par
exemple VMnet0
- Sur VMware : on clique sur VM >>> setting

34
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.10-Configuration de deux machines sur le même réseau

On fait ceci pour les 2 machines W7 et XP


Pour garantir la connexion entre les 2 machines il faut désactiver le pare-feu (Firewall) dans
les deux cotés.
On va ouvrir le centre de partage puis on Clique sur pare feu Windows

Figure 3.11-Désactivation de par feu 1

35
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.12-Désactivation de par feu 2

Pour connaitre les adresses IP de chaque machine, on exécute ipconfig :


Windows XP dispose de l’adresse IP: 169.254.172.33

Figure 3.13-Capture d’écran IPconfig sur XP

Windows 7 dispose de l’adresse IP: 169.254.130.127

Figure 3.14-Capture d’écran IPconfig sur W7

Ensuite, on teste la connectivité des 2 machines par le biais de la commande ping :

36
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.15-Capture d’écran ping sur XP

Figure 3.16-Capture d’écran Ping sur W7

La connectivité existe, tout est ok. On peut passer à l’étape suivante.

III.4.1 Installation d’un serveur web (Apache) sur W7


Apache est un serveur web permettant de partager des pages web stockées localement à des
utilisateurs connectés : des clients. C'est un Logiciel Libre avec une version 2.2.25.

Figure 3.17-Installation d’Apache

37
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Une fois Apache démarré (soit à partir d'une console Windows, soit en tant que service), ce
dernier va se mettre à l'écoute sur le port 80 (http). Pour vérifier la validité de http on lance
un navigateur Sur W7 puis on fait un appel de :
http://localhost/
ou http:// 127.0.0.1 / ; l’adresse de boucle de test 127.0.0.1 (elle remplace notre machine)
ou http:// serveurweb / ; serveurweb est le nom donné à notre machine virtuelle W7
ou http:// 169.254.130.127 / ; l’adresse IP de W7 : 169.254.130.127
Apache doit renvoyer une page de bienvenue et nous devrions voir s'afficher "It works!".

Figure 3.18-Fonctionnement de http sur W7

De même, on fait un appel à partir de XP : http:// 169.254.130.127 / ou http:// serveurweb /


Et la page de bienvenue est renvoyée.

III.5 Création d’une autorité de certification racine sur la machine W7


III.5.1 Création de CA
 Génération d’une paire de clés privée/publique
Dans un premier temps, nous allons créer une paire de clés privée/publique de longueur 2048
pour le CA en définissant un nom de fichier (cleCA.key).
Openssl genrsa -out cleCA.key 2048

Longueur de la clé (en bits)

Fichier de sortie (contenant les clés)

Option pour désigner le fichier de sortie

Commande pour générer une paire de clé RSA

38
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.19-Capture d’écran présentant la création d’une paire de clé du CA

 pour afficher la clé au format PEM, on utilise cette commande :


rsa -in cleCA.key

Figure 3.20- Capture d’écran présentant la clé du CA au format PEM

 pour afficher la clé au format text, on utilise cette commande :


rsa -in cleCA.key -text –noout

39
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.21-Capture d’écran présentant la clé du CA au format text

 pour extraire la clé publique dans un fichier « CA_clepublique.key », on utilise


rsa -in cleCA.key -pubout –out CA_clepublique.key

 pour afficher la clé publique, on utilise


rsa -pubin –in CA_clepublique.key

Figure 3.22- Capture d’écran présentant la clé publique du CA

 pour afficher la clé publique au format text, On utilisant la commande :


rsa -pubin –in CA_clepublique.key -text -noout

40
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.23- Capture d’écran présentant la clé publique du CA au format text

 Génération d’un certificat auto-signé pour le CA :


On va crée un certificat X509 pour une durée de validité de 10 ans auto-signé :
Ceci se fait par la commande :
req –new –x509 –days 3650 –key cleCA.key –out CA_cert.crt

Le système va nous demander de saisir des champs pour les renseignements concernant
l'autorité de certification.
Le nom de "Common Name" doit être différent de celui qui a été donné pour la clé.

Figure 3.24- Capture d’écran présentant la signature du certificat du CA

 pour afficher ce certificat , on utilise la commande suivante :


x509 –in CA_cert.crt –text

41
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.25- Capture d’écran présentant le certificat du CA au format text

III.5.2 Installation du certificat du CA sur XP


L’étape suivante consiste à importer le certificat auto-signé du CA sur le navigateur client XP
(Mozilla Firefox p . ex). Ceci permettra au client de valider le certificat transmis par le
serveur web lors de la requête https://.
On va suivre les étapes qui sont affiché dans les captures suivantes.

Figure 3.26- Capture d’écran présentant l’installation du certificat du CA sur XP 1

42
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.27- Capture d’écran présentant l’installation du certificat du CA sur XP 2

Figure 3.28- Capture d’écran présentant l’installation du certificat du CA sur XP 3

Figure 3.29- Capture d’écran présentant l’installation du certificat du CA sur XP 4

43
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Pour afficher les détails du certificat on clique sur le bouton voir

Figure 3.30 - Capture d’écran présentant les détails du certificat

III.5.3 Création du certificat pour le serveur web

 Génération d’une paire de clés privée/publique


On crée une paire de clé de 2048 bits qui sera stocké dans le fichier serveurwebcle.key.
genrsa –out serveurwebcle.key – 2048

Figure 3.31- Capture d’écran présentant la création d’une paire de clés pour le serveur web

 Génération d’une demande de signature du certificat


Maintenant nous allons faire une demande de signature du certificat (CSR : Certificate
Signing Request) du serveur web avec la commande suivante :

req –new –key serveurwebcle.key –out serveurwebreq.csr

44
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.32- Capture d’écran présentant la demande CSR pour le serveur web

 Signature du certificat du serveur web par la CA

Pour signer le certificat du serveurweb par la CA , on utilise cette commande :

x509 –req –in serveurwebreq.csr –out serveurweb.crt –CA CA_cert.crt –Cakey


cleCA.key –Cacreateserial –days 365

L'option CAcreateserial n'est nécessaire que la première fois.

Figure 3.33- Capture d’écran présentant la signature du certificat du serveur web par la CA

Une fois fait, on fait transférer la clé privée et le certificat du serveur web dans le répertoire
Apache, sous le dossier nommé « serveurweb cle et certificat ».

III.6 Configuration d’Apache et test de https

On Stoppe Apache et on ouvre fichier httpd.conf

1. Modification de httpd
 On active le module ssl en supprimant le # devant:
LoadModule ssl_module modules/mod_ssl.so

45
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.34- Capture d’écran présentant l’activation du module SSL sur Apache

 On donne le chemin du fichier de configuration de ssl :


Include conf/extra/httpd-ssl.conf

Figure 3.35- Capture d’écran présentant le chemin du fichier de configuration de SSL

2. Modification de httpd-ssl
 On donne le chemin du certificat du serveur web :
SSLCertificateFile"C:/ProgramFiles/ApacheSoftware Foundation/
Apache2.2/conf/serveurweb cle et certificat/serveurwebcert.crt"

46
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

Figure 3.36- Capture d’écran présentant le chemin du certificat de serveur web

 On donne le chemin de la clé du serveur web :


SSLCertificateFile "C:/Program Files/Apache Software Foundation/
Apache2.2/conf/serveurweb cle et certificat/serveurwebcle.key"

Figure 3.37- Capture d’écran présentant le chemin du la clé de serveur web


Pour éviter le fonctionnement de http il faut chercher ou se trouve la ligne listen 80, ce dernier
qui existe dans le dossier httpd.conf, puis on ajoute # devant.

On peut vérifier le bon fonctionnement de https sur Windows XP

Figure 3.38- Capture d’écran présentant le fonctionnement de https sur Windows XP

47
Chapitre III. Création et test d’une infrastructure à clés publiques avec Openssl

III.7 Conclusion
Ce chapitre a présenté en détail les étapes de mise en œuvre d’une infrastructure à clés
publiques en utilisant l’API Openssl. Les installations et les configurations ont été réalisées
avec succès compte tenu du test de validation appliqué à la sécurisation du serveur Apache.
Dans ce travail, on a pu réaliser une connexion http sécurisée coté serveur, il serait intéressent
de faire de même coté client afin d’avoir une authentification mutuelle forte (par certificats).

48
Conclusion générale

Conclusion générale

La cryptographie symétrique consiste à chiffrer puis déchiffrer un message en


utilisant la même clé et le même algorithme. La distribution des clés a été le point faible des
systèmes de cryptographie symétrique, d’où la proposition des algorithmes à clés publiques
(algorithmes asymétriques). La cryptographie asymétrique (à clés publiques) exige que
chacun des correspondants possède une clé publiée dans un annuaire utilisée par tous le
monde pour chiffrer des messages destinés à un individu particulier, et l’autre privée que cet
individu est seul à détenir et qui lui permet de déchiffrer les messages qu’il reçoit.
Bien que très efficace, la cryptographie asymétrique comporte cependant un enjeu majeur; qui
consiste en la gestion des clés publiques. En effet, l’efficacité de ce mécanisme de sécurité
dépend du niveau de certitude que détient l’utilisateur d’une clé publique quant à l’identité de
son propriétaire légitime. Pour s’assurer de cette identité, des certificats sont introduits, ceux-
ci sont générés par des infrastructures à clés publiques (PKI).

Au cours de projet de fin d’études, nous avons mis en œuvre une infrastructure à
clés publiques (PKI) en utilisant openssl. Ce travail a exigé une étude théorique et pratique
très poussée. En effet, vu la récence de l’approche de certification dans le monde de la
sécurité informatique, il nous a été indispensable d’effectuer une étude de l’existant à travers
une documentation riche et variée.

Nous avons donné les caractéristiques de base de la cryptographie asymétrique en se


focalisant sur les PKI tout en essayant de simplifier au maximum la compréhension de ces
nouvelles notions.

49
Conclusion générale

Enfin, nous avons donné les étapes que nous avons suivies lors de la mise en œuvre
de notre propre PKI. Les résultats d’implémentations sont satisfaisants et laissent penser à
d’autres volets de sécurité.

Nous souhaitons, après la réalisation de ce travail, est qu’il soit une référence pour
les nouveaux venus dans le monde des PKIs et des autorités de certification.

50
Référence

Référence

[1] A. UC Berkeley and USC ISI: “The network simulator NS-2”, Part of the VINT project,
http: //www.isi.edu/nsnam/ns, 1998.
[2] Mr Abdesselem BEGHRICHE, Université de L’Hadj Lakhdar-Batna, De la Sécurité à la E-
Confiance basée sur la Cryptographie à Seuil dans les Réseaux sans fil Ad hoc, 2008/2009
[3] Laurent BAYSSE, Cryptographie et tunnel OpenVPN, du 6 mars 2005.
[4] R. Rivest. «The MD5 Message-Digest Algorithm» RFC 1321 IETF, avril 1992.
[5] D. Eastlake, P. Jones. « US Secure Hash Algorithm 1 (SHA1) » RFC 3174 IETF, septembre
2001.
[6] http://Christian.caleca.free.fr/crypt/2005.
[7] https://www.ssl247.fr/certificats-ssl/rsa-dsa-ecc/2017
[8] Khalifa NADDARI, Ecole Supérieure des Communications de Tunis, Mise en place d’une
Infrastructure à clé publique (PKI).1999/2000/page 11
[9] Khalifa NADDARI, Ecole Supérieure des Communications de Tunis, Mise en place d’une
infrastructure à clé publique (PKI).1999/2000/page 14
[10] OUAHIOUNE Ali, Étude et mise en œuvre d’une infrastructure de gestion de clés (PKI),
Institut National des Télécommunications et des Technologies de l’Information et de la
Communication 2011/2012, page37.
[11] J. Callas, L. Donnerhacke, H. Finney, R. Thayer. « OpenPGP Message Format » RFC 4880
IETF, novembre 2007.
[12] Emmanuel Guigma, Stratégie de développement des infrastructures à clé publique au
Burkina Faso. Burkina Faso
[13] Gérald Litzistorf, Ecole d’Ingénieurs de Genève, Public Key Infrastructure, 04/12/2001,
page 14.
[14] T. Autret, L. Bellefin et M.-L. Oble-Laffaire, « Sécuriser ses échanges électroniques avec
une PKI », EYROLLES, 2002.

[15] Julien Dupagny. Tutoriel : Mise En Place Du Https. Institution Jean Paul II – Site de
Valenciennes 2014 / 2015

51
Référence

[16] Khalifa NADDARI, Ecole Supérieure des Communications de Tunis, Mise en place d’une
infrastructure à clé publique (PKI).1999/2000/page 41

[17] OUAHIOUNE Ali, Étude et mise en œuvre d’une infrastructure de gestion de clés (PKI),
Institut National des Télécommunications et des Technologies de l’Information et de la
Communication 2011/2012, page 32
[18] http://www.unilim.fr/pages_perso/olivier.ruatta/CRYPTO/TP1openssl.pdf page 1
[19] http://www.unilim.fr/pages_perso/olivier.ruatta/CRYPTO/TP1openssl.pdf page 2
[20] http://fr.wikihow.com/utiliser-VMware-Workstation
[21] https://openclassrooms.com/courses/mise-en-place-des-serveurs-apache-et-dns

52