rapport sécurité
Post on 08-Aug-2015
44 Views
Preview:
TRANSCRIPT
Module : Sécurité
Sujet : Open SSL
Réalisé par :
Chef de groupe : Bekkouche Selma (G07)
Abderrahmane Zineb (G07)
Lanasri Dihia (G07)
Mallem Saliha (G07)
Proposé par : Mr.Anane
2012/2013
2
Sommaire
Introduction ................................................................................................................................ 3
I. Protocole SSL ..................................................................................................................... 4
1. Principe de fonctionnement ............................................................................................................. 4
1.1. Une poignée de mains .................................................................................................................. 4
1.2. La phase de communication ......................................................................................................... 4
2. Les sous protocoles composants SSL .............................................................................................. 4
3. Protocole TLS.................................................................................................................................. 5
II. L’open SSL ..................................................................................................................... 5
III. Open SSL & Chiffrement ................................................................................................ 6
1. Chiffrement Symétrique .................................................................................................................. 6
1.1. AES : Chiffrer un fichier texte avec le système AES 128 bits en mode CBC : ....................... 6
2. Chiffrement Asymétrique ................................................................................................................ 6
2.1. RSA .............................................................................................................................................. 6
3. Principe de Signature ....................................................................................................................... 7
Signer le document .......................................................................................................................... 8
IV. Démonstration ................................................................................................................. 8
1. Emetteur ......................................................................................................................................... 8
2. Récepteur ........................................................................................................................................ 9
Conclusion ................................................................................................................................ 10
Références ................................................................................................................................ 10
3
Introduction
De nos jours, la communication sur un milieu précaire est une applicabilité
omniprésente. Nous sommes nombreux à croire qu’il est possible d'intercepter et de modifier
des données transmises sur des fils, mais peu d’entre nous se rendent compte combien cette
tâche est devenu maintenant facile. C’est pour cela l'internet était toujours un endroit
dangereux, plus dangereux que l’on pense. Si une application ne protège pas correctement les
données avant de les envoyer dans le réseau. Cette application est un désastre en matière de
sécurité.
La cryptographie avec ses divers buts (la confidentialité, l'intégrité, l'authentification et
la non-répudiation…) est l'un des principaux outils utilisés pour contrecarrer les nombreux
types d’attaques sur le réseau, et c’est l’objectif fondamental du protocole SSL (Secure
Socket Layer) et son successeur TLS (Transport Layer Security) qui sont implémente par
OpenSSL.
Nous allons présenter dans ce rapport le principe de fonctionnement de l’OpenSSL
ainsi que les différents méthodes de chiffrements, pour finir avec une démonstration qui
rendre la compréhension de ce concept plus simple.
4
I. Protocole SSL SSL « Couche socket sécurisée » est un acronyme pour Secure Socket Layer.
C’est un protocole ou un ensemble de protocoles développé par la société Netscape
communication corporation pour offrir un certain niveau de sécurité et de confidentialité lors
de la communication en mode Client / Serveur via l’internet ,pour les applications réseau
utilisant le protocole TCP /IP.
Le protocole SSL est intercalé entre la couche TCP /IP et les applications utilisant le protocole
TCP.
Il a été intégré dans les navigateurs web depuis 1994.
La version 3.1 a été standardisée à l'IETF dans la RFC 2246.
1. Principe de fonctionnement Le protocole SSL prend en charge l'authentification du client et du serveur et assure la
sécurité et l'intégrité du canal de transmission.
Une session SSL se déroule en deux phases :
1.1. Une poignée de mains C’est une étape durant laquelle le client et le serveur s’identifient, se mettent d’accord sur le
type du système de chiffrement et les clefs qui seront utilisés lors du reste de la
communication. L’identification durant cette phase est assurée à l’aide de certificat X509.
On peut résumer cette étape comme suit :
Etape 1: authentification du serveur
- Requête client
- Le serveur envoie son certificat et une liste d'algorithmes de cryptographie à négocier
- Le client vérifie le certificat du serveur à l'aide de la clé publique contenu dans le navigateur
- Le client génère un pré-master secret (PMS) (48 octets) qui sera utilisé pour générer le
master-key (48 octets).
- PMS est chiffré avec la clé publique du serveur.
- Les données échangées entre le client et le serveur seront chiffrées et authentifiées avec des
clés dérivées du master-secret
Etape 2: authentification du client
- Le serveur peut demander au client de s'authentifier en lui demandant son certificat
- Le client répond en envoyant son certificat puis en signant un message avec sa clé privée
(contient des informations sur la session et le contenu des messages précédents)
1.2. La phase de communication Les données sont alors échangées en format compressées, chiffrées et signées.
2. Les sous protocoles composants SSL
Handshake
5
- Authentification mutuelle
- Négociation des algorithmes de chiffrement et de hachage
- Échange des clés symétriques
Change Cipher Spec
- Indique la mise en place des algorithmes de chiffrement négociés
Record
Garantir la confidentialité à l'aide du chiffrement, et L'authentification à l’aide de
condensât
Alert
- Émission de messages d’alertes suites aux erreurs que peuvent s'envoyer le client et
le serveur
3. Protocole TLS
TLS (Transport Layer Security) est une évolution de SSL réalisé par l’IETF. Ce protocole sert
de base à HTTPS. Il est fondé sur le protocole SSL version3.1 et fournit la confidentialité des
communications sur Internet.
Figure 1 : Le protocole SSL/TLS
II. L’open SSL OpenSSL est une boîte à outils cryptographiques implémentant librement les protocoles SSL
et TLS qui Offre :
1. une bibliothèque de programmation et de fonctionnalités écrites en C permettant de
réaliser des applications client/serveur sécurisées s’appuyant sur SSL/TLS.
Elle est vue comme :
Bibliothèque SSL/TLS (libssl.a)
Mise en œuvre des protocoles SSLv2, SSLv3, TLSv1
6
Bibliothèque cryptographique
Cryptographie clé publique et certificats X509: RSA, DSA, DH
Chiffrement: DES, 3DES, Blowfish, RC2, IDEA, RC4, + modes ECB,
CBC,CFB, OFb pour les algorithmes par blocs
Hachage: MD2, MD4, MD5, SHA1, MDC2, RIPEMD160
2. Un ensemble exécutable de commandes en ligne (OpenSSL) permettant :
la création de clés RSA, DSA (signature)
la création de certificats X509 (identification)
le calcul d’empreintes (MD5, SHA, RIPEMD160, ...)
le chiffrement et déchiffrement (RSA, DES, IDEA, RC2, RC4, Blowfish, ...)
la réalisation de tests de clients et serveurs SSL/TLS
la signature et le chiffrement de courriers (S/MIME)
L’openSSL comporte 60000 lignes de codes en langage C. Elle est fondée sur la
bibliothèque cryptographique SSLeay d'Eric Toung et Tim Hudson.
L’utilisation des commandes d’OpenSSL
La syntaxe générale pour l’utilisation des fonctionnalités de la bibliothèque Open SSL en
mode Shell Linux est la suivante :
$ openssl <commande> <options>
Le $ représente le prompt du Shell
III. Open SSL & Chiffrement Cette bibliothèque nous permet tout simplement d’implémenter et d’utiliser les algorithmes
de chiffrements qu’on a vu en cours qu’ils soient Symétriques comme CBC, ECB, CFB ou
bien asymétrique comme le RSA.
1. Chiffrement Symétrique
1.1. AES : Chiffrer un fichier texte avec le système AES 128 bits en mode CBC :
$openssl enc –aes-128-cbc –in nomficherAchiffrer –out nomChiffré –iv
vecteurInitialisation(en hexa 64 bits) –K cle(hexa 128 bit)
$openssl enc –aes-128-cbc –d –in nomChiffré –out nomficherDechiffré
Afin d’éviter la manipulation des chiffres hexadécimaux il suffit d’introduire un mot de passe
« c’est plus pratique » à partir duquel la paire des clés est générée
2. Chiffrement Asymétrique
2.1. RSA On suit les mêmes étapes vues en cours, mais sans faire aucun calcul, ce sont les commandes Open
SSL qui vont le faire.
1. Générer paire RSA
$openssl gensra –out fichierResultat tailleDeChaqueCle
2. Visualiser le contenu du fichier
Openssl rsa –in nomFichier –text –noout
7
3. Chiffrement symétrique de la paire des clés
Afin de renforcer la sécurité et ne pas stocker dans son pc une clé privée non protégée
POLICE 11 12
$openssl rsa –in fichiercle –des -out fichierDes
4. Exporter la partie publique
Publication de la clé publique, cependant le fichier précédant (chiffré) contient la paire des
clés, ce qui nécessite une séparation entre les deux ; pour exporter la clé publique :
$openssl rsa –in fichierDes –pubout –out Clepub
Il va toujours demander le mot de passe du chiffrement DES
5. Visualiser le contenu
$openssl rsa –in Clepub –pubin(pour indiquer qu’une seule cle est dans le fichier et c la
publique) –text -noout
6. Chiffrer donnes
Openssl rsautl encrypt –pubin Clepub –in fichierAchiffrer –out chiffré
7. Déchiffrer
Openssl rsautl decrypt –inkey fichierDes –in chiffré –out fichierlisible
3. Principe de Signature
Figure 2 : Principe de signature
Openssl permet de signer des petits documents, si on veut signer un grand document il faut d’abord lui
calculer une empreinte.
$openssl dgst –foctiondeHachage –out Résultat grandFicher
Fonctions de hachage : MD5 pour une empreinte de 128 bits, SHA ou RIPEMD160 pour une
empreinte de 160 bits.
8
Signer le document
openssl rsautl -sign -in fE -inkey Clepriv.pem -out signature
Fe: petit fichier ou une empreint
IV. Démonstration Pour se familiariser avec les opérations cryptographiques: chiffrement, déchiffrement,
hachage, signature digitale. On va effectuer l’expérimentation ci-dessous :
Consignes avant de commencer
Créer un répertoire pour la source « Source » et un répertoire pour le destinataire
« Destinataire ».
Mettre tous les fichiers qui concernent la source dans le répertoire Source et tous les
fichiers qui concernent le destinataire dans le répertoire Destinataire. Il y a trop d’espace
entre les mots
A chaque fois qu'un fichier doit être transmis de la source vers le Destinataire, copier ce
fichier dans le répertoire du destinataire. Il y a trop d’espace entre les mots
Pour pouvoir appeler l'exécutable openssl.exe, rajouter le chemin de ce dernier dans la
variable d'environnement PATH. Il y a trop d’espace entre les mots
1. Emetteur 1. Message confidentiel
Créer un fichier "message.txt" et y mettre un texte confidentiel
2. Générer les clés privées RSA de la source et la destination
...\Source> openssl genrsa -out src_rsa.pem -passout pass:srcpasswd -des 512
...\Destinataire> openssl genrsa -out dest_rsa.pem -passout pass:destpasswd -des
512
src_rsa.pem et dest_rsa.pem vont contenir les clés privées de la source et du destinataire
protégés par les mots de passe srcpasswd et destpasswd respectivement.
3. Extraction des clés publiques à partir des fichier "src_rsa.pem" et "dest_rsa.pem"
vers "src_rsa_pub.pem" et "dest_rsa_pub.pem"
...\Source> openssl rsa -in src_rsa.pem -passin pass:srcpasswd -out src_rsa_pub.pem
-pubout
...\Destinataire> openssl rsa -in dest_rsa.pem -passin pass:destpasswd -out
dest_rsa_pub.pem -pubout
L’option –pubout : permet d'extraire la clé publique (par défaut c'est la clé privée qui est
extraite)
9
L'option passin et passout : C'est pour protéger les fichiers, pass:xxxx permet de faire une
protection par mots de passe.
4. échange de secret partagé
La source choisi un secret partagé « qui sera utilisé pour générer la clé symétrique partagée »
par exemple "secret" « stocké dans secret.txt »et elle chiffre ce secret partagé avec la clé
publique de la destination "dest_rsa_pub.pem" Ici "secret" sera utilisé par DES pour
fabriquer la clé symétrique ET le vecteur d'initialisation nécessaire pour DES en
mode CBC.
...\Source> openssl rsautl -in secret.txt -out secret.crypt -inkey dest_rsa_pub.pem -pubin -
encrypt
5. Chiffrement de "message.txt" avec DES-CBC en utilisant le secret partagé "secret"
comme paramètre de génération de clé de session et de vecteur d'initialisation.
...\Source> openssl enc -des-cbc -in message.txt -out message.crypt -pass
file:secret.txt
6. Signature de message crypté "message.crypt"
Calcul de condensat (code de hashage) avec MD5
...\Source> openssl dgst -md5 -binary -out message.crypt.dgst message.crypt
Chiffrement du condensat « code de hashage » avec la clé privée de la source
"src_rsa.pem"
...\Source> openssl rsautl -in message.crypt.dgst -out message.crypt.dgst.sign -sign -
inkey src_rsa.pem
2. Récepteur La destination connait: dest_rsa.pem dest_rsa_pub.pem et reçoit: "secret.crypt"
"message.crypt" "message.crypt.dgst.sign"
Donc il faudra recopier ces trois fichiers du répertoire Source vers le répertoire Destinataire.
1. Authentification de la source et de l'intégrité de donnée reçue
Déchiffrement de l'empreinte « code de hashage » du message ==> dgst1
...\Destinataire> openssl rsautl -in message.crypt.dgst.sign -out dgst1 -pubin -inkey
src_rsa_pub.pem
La destination calcule elle même le digest à partir de "message.crypt" ==>dgst2
...\Destinataire> openssl dgst -md5 -binary -out dgst2 message.crypt
La destination compare les deux condensats: (la commande FC fait un File
Compare, /B fait une comparaison Binaire)
...\Destinataire> fc /B dgst1 dgst2
Comparaison des fichiers dgst1 et dgst2: aucune différence trouvée ce qui confirme
l'intégrité du "message.crypt" est confirmée. Aussi l'authentification de la source est
vérifiée.
10
2. Déchiffrement du message "message.crypt"
Déchiffrement de la "clé partagée" (secret)
...\Destinataire> openssl rsautl -decrypt -in secret.crypt -out secret.txt -inkey
dest_rsa.pem
Déchiffrement du "message.crypt" à l'aide de secret qui se trouve dans "secret.txt"
...\Destinataire> openssl enc -in message.crypt -out message.txt -pass file:secret.txt -
d -des-cbc
Lire le message! ! !
...\Destinataire> type message.txt
Service confidentialité
Conclusion L’OpenSSL est une version sûre et efficace de SSL / TLS, largement utilisé garce à
son détails des défis dans la sécurisation réseau communications.
Ce rapport était un bénéfice pour nous, puisque il nous a permet d’avoir une vision
globale sur le monde de sécurité et une autre vision plus détaillée sur l’outil OpenSSL qui
répond au mieux à au défis de cette dernière.
Références « Introduction à la cryptographie » Copyright © 1990- 1998 Network Associates, Inc. et
ses filiales» « Introduction à la sécurité informatique (YACINE CHALLAL & HATEM BETTAHAR) ;
15/10/2008 » « TP 1 : OpenSSL usages de base »
Télécharger OpenSSL pour Windows à partir du site web
OpenSSL COHEN Achraf, YACOUBOU S.Bouraima, 2011
TKTcert: A web-based authenticated a certified service
top related