rapport sécurité

10
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

Upload: dihiaselma

Post on 08-Aug-2015

44 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Rapport sécurité

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

Page 2: Rapport sécurité

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

Page 3: Rapport sécurité

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.

Page 4: Rapport sécurité

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

Page 5: Rapport sécurité

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

Page 6: Rapport sécurité

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

Page 7: Rapport sécurité

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.

Page 8: Rapport sécurité

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)

Page 9: Rapport sécurité

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.

Page 10: Rapport sécurité

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