rapport tp openssl

13
1 Réalisé par : COHEN Achraf YACOUBOU S. Bouraima Encadré par : Pr. S. LAAZAR

Upload: yacoubou-salifou-bouraima

Post on 21-Jun-2015

770 views

Category:

Education


11 download

DESCRIPTION

Rapport tp openssl

TRANSCRIPT

Page 1: Rapport  tp  openssl

1

Réalisé par :

COHEN Achraf YACOUBOU S. Bouraima

Encadré par :

Pr. S. LAAZAR

Page 2: Rapport  tp  openssl

RAPPORT TP OPENSSL

1.Présentation d’openSSl

openSSL est une boîte à outils 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, RIPEMD160, ...) ; 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 (S/MIME).

2.1. Chiffrement symétrique avec openSSL

C'est la commande enc qui permet de chiffrer et de déchiffrer avec openssl :

$Openssl enc <options>

Exemples d’options(système de chiffrement) :

aes-128-cbc AES 128 bis in CBC mode

aes-128-ecb AES 128 bis in ECB mode

aes-192-cbc AES 192 bis in CBC mode

aes-192-ecb AES 192 bis in ECB mode

aes-256-cbc AES 256 bis in CBC mode

aes-256-ecb AES 256 bis in ECB mode

base64 Base 64

bf-cbc Blowfish in CBC mode

bf Alias for bf-cbc

bf-cfb Blowfish in CFB mode

Page 3: Rapport  tp  openssl

bf-ecb Blowfish in ECB mode

bf-ofb Blowfish in OFB mode

des-cbc DES in CBC mode

des Alias for des-cbc

des-ede-cbc Two key triple DES EDE in CBC mode

des-ede Alias for des-ede

des-ede-cfb Two key triple DES EDE in CFB mode

des-ede-ofb Two key triple DES EDE in OFB mode

des-ede3-cbc Three key triple DES EDE in CBC mode

des-ede3 Alias for des-ede3-cbc

des3 Alias for des-ede3-cbc

des-ede3-cfb Three key triple DES EDE CFB mode

des-ede3-ofb Three key triple DES EDE in OFB mode

desx DESX algorithm.

idea-cbc IDEA algorithm in CBC mode

idea same as idea-cbc

idea-cfb IDEA in CFB mode

idea-ecb IDEA in ECB mode

idea-ofb IDEA in OFB mode

rc2-cbc 128 bit RC2 in CBC mode

rc2 Alias for rc2-cbc

rc2-ofb 128 bit RC2 in CBC mode

Page 4: Rapport  tp  openssl

rc2-64-cbc 64 bit RC2 in CBC mode

rc2-40-cbc 40 bit RC2 in CBC mode

rc4 128 bit RC4

rc4-64 64 bit RC4

rc5-cbc RC5 cipher in CBC mode

rc5 Alias for rc5-cbc

2.1 Chiffrement avec mot de passe

Pour chiffrer le fichier fic contenant la phrase <<bonjour monsieur>> avec le système AES 128 bits en mode CBC, avec une clé générée par le mot de passe<<aes>>, le résultat étant stocké dans le fichier ficc, on utilise la commande :

$openssl enc –aes-128-cbc –in fic –out ficc

Message Chiffre :

Salted__\

^?'6�^L��yPVl���BR~�4^V��� z�u�6]�����?^C&

Pour déchiffrer le même message, on utilise la commande :

openssl enc –aes-128-cbc -d –in ficc –out ficd

2.2 Chiffrement avec clé explicite

Pour chiffrer le fichier fic avec une clé explicite, on utilise les options -K et –iv

-K (K majuscule) suivi de la clé exprimée en hexadécimal ;

Page 5: Rapport  tp  openssl

-iv (iv en minuscules) suivi du vecteur d'initialisation exprimé en hexadécimal1.

L'exemple qui suit montre la commande pour chiffrer fic contenant le message <<bonjour monsieur>> avec le système AES 128 bits en mode CBC avec un vecteur d'initialisation de 64 bits exprimé par 16 chiffres hexadécimaux, et une clé de 128 bits exprimée par 32 chiffres hexadécimaux.

$openssl enc –aes-128-cbc –in fic –out ficc –iv 0123456789ABCDEF –K 0123456789ABCDEF0123456789ABCDEF

3. RSA avec openSSl:

3.1  Génération d'une paire de cléspour générer une paire de clés RSA on utilise la commande genrsa en précisant le fichier ou enregistrer la paire de clés et la taille du modulus.

$openssl genrsa –out fichier_sortie taille_modulus

Par exemple, pour générer une paire de clés de 1024 bits, stockée dans le fichier cle, on tape la commande :

Affichage du fichier :

Page 6: Rapport  tp  openssl

3.2  Visualisation des clés RSALa commande rsa permet de visualiser le contenu d'un fichier contenant une paire de clés RSA.

L'option -text demande l'affichage décodé de la paire de clés. L'option -noout supprime la sortie normalement produite par la commande rsa. 

3.3  Chiffrement d'un fichier de clés RSAIl n'est pas prudent de laisser une paire de clé en clair (surtout la partie privée). Avec la commande rsa, il est possible de chiffrer une paire de clés2 . Pour cela trois options sont possibles qui précisent l'algorithme de chiffrement symétrique à utiliser : -des, -des3 et -idea.

Page 7: Rapport  tp  openssl

Une phrase de passe est demandée deux fois pour générer une clé symétrique protégeant l'accès à la clé. On a entré «ensat»

Exercice 2 :Contenu du fichier cle1 avec la commande cat :

Visualisation du contenu de cle1 a l’aide de la commande rsa:

Page 8: Rapport  tp  openssl

NB : un mot de passe a été demande. (On avait entre «ensat» )

3.4  Exportation de la partie publiqueLa partie publique d'une paire de clés RSA est publique, et à ce titre peut être communiquée à n'importe qui. Le fichier maCle.pem contient la partie privée de la clé, et ne peut donc pas être communiqué tel quel (même s'il est chiffré). Avec l'option -pubout on peut exporter la partie publique d'une clé.

Exercice 3 :

Q 1 . Notez le contenu du fichier ClePublique. Remarquez les marqueurs de début et de fin.

Q 2 . Avec la commande rsa visualisez la clé publique. Attention vous devez préciser l'option -pubin, puisque seule la partie publique figure dans le fichiermaClePublique.pem.

Page 9: Rapport  tp  openssl

3.5  Chiffrement/déchiffrement de données avec RSAOn peut chiffrer des données avec une clé RSA. Pour cela on utilise la commande rsautl

Où fichier_entree est le fichier des données à chiffrer. Attention, le fichier des

données à chiffrer ne doit pas avoir une taille excessive (ne doit pas dépasser 116 octets pour une clé de 1024 bits). 

cle est le fichier contenant la clé RSA. Si ce fichier ne contient que la parte publique de la clé, il faut rajouter l'option -pubin.

fichier_sortie est le fichier de données chiffré.

Pour déchiffrer on remplace l'option -encrypt par -decrypt. Le fichier contenant la clé doit obligatoirement contenir la partie privée.

Exercice 4 :Chiffrons le fichier « fichier » avec le système symétrique aes 128 bits en mode cbc (fichier de sortie «fichier1» ;mot de passe «fichier»):

Chiffrons la clé ou le mot de passe utilisé(e) avec la clé publique du destinataire (cledestpub). On a stocké le mot de passe dans le fichier « password».

Page 10: Rapport  tp  openssl

Envoyons le mot de passe chiffré «password1» ainsi que le fichier chiffré «fichier1». 

3.6  Signature

Exercice 6 :Il n’est possible de signer que de petits documents. Pour signer un gros document on calcule d’abord une empreinte de ce document. La commande dgst permet de le faire.# openssl dgst <hachage> −out <empreinte> <fichier entré>où hachage est une fonction de hachage. Avec openssl, plusieurs fonctions de hachage sont proposées dont :

– MD5 (option -md5), qui calcule des empreintes de 128 bits,– SHA1 (option -sha1), qui calcule des empreintes de 160 bits,– RIPEMD160 (option -ripemd160), qui calcule des empreintes de 160 bits.

# openssl rsautl –sign −in <empreinte> −inkey <cle> −out <signature>

On a créé un fichier « tp » afin de le signer avec openssl, signer un document revient à signer son empreinte. Pour cela, on utilise l’option -sign de la commande rsautl.

Faire l’empreinte :

# openssl dgst –md5 −out emp tp

Signer l’empreinte:

# openssl rsautl –sign −in emp −inkey maCle.pem −out signature

4. Certificats:

Nous allons maintenant élaborer un certificat Puis, vous verrez comment utiliser les clés certifiées pour signer et/ou chiffrer des courriers électroniques.

Page 11: Rapport  tp  openssl

On peut cependant créer un certificat SSL auto signé en installant le paquet openssl. Il est aussi possible d'installer ca-certificates, mais ça ne semble pas utile dans le cas d'un certificat auto-signé.

Pour créer un certificat :openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out /etc/apache2/server.crt -keyout /etc/apache2/server.key

Avec -x509 -nodes donne le type de certificat voulu -days 365 indique la durée de validité (en jours) de votre certificat -newkey rsa:1024 demande une clé RSA de 1024 bits - d'après la doc apache, il est

déconseillé de créer une clé plus grosse pour des histoires de compatibilité -out /etc/apache2/server.crt est le chemin de votre certificat -keyout /etc/apache2/server.key est le chemin de la clé privée

Démonstration   :

Ce message d’erreur nous est affiché en essayant d’accéder au serveur à l’aide du protocole HTTPS car le navigateur ne reconnait pas l’autorité de certification qui a émis le certificat.

Une fois l’exception ajoutée le navigateur affiche la page d’accueil du site sécurisé :