Activité 4.2 : TP OpenSSL ; usages de base
1 Qu’est-ce-qu’OpenSSL
1.1 Protocole SSL
Le terme SSL est un acronyme pour Secure Socket Layer qui est un protocole (en fait un
ensemble de protocoles) qui a été développé par la société Netscape Communication
Corporation pour permettre de la communication sécurisée en mode client/serveur pour des
application réseaux utilisant TCP/IP. Le protocole TLS (Transport Layer Security) est une
évolution de SSL réalisé par l’IETF et qui sert de base à HTTPS par exemple.
Le protocole SSL est entre la couche TCP/IP et une application utilisant TCP. Le principe
général d’un protocole de type SSL est qu’il se passe en deux temps :
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ées
lors du reste de la communication.
2. La phase de communication : les données sont alors échangées en format compressées
et chiffrées et signées.
1.2 OpenSSL
La bibliothèque OpenSSL est une implantation libre des protocoles SSL et TSL qui donne
accés à :
• une bibliothèque de fonctionnalité écrite en C permettant de réaliser des applications
client/serveur sécurisées s’appuyant sur SSL/TSL,
• un ensemble d’exécutables en commande en ligne permettant :
−
−
Advertisement
−
−
−
−
la forge de clef RSA, DSA (pour les signatures)
la création de certificat X509 (identification)
le calcul d’empreinte (MD5, SHA, RIPEMD160, ...)
le chiffrement et le déchiffrement (RSA, DES, IDEA, RC2, RC4, Blowfish, ...)
la réalisation de tests de clients et serveurs SSL/TSL
la signature et le chiffrement de courriers (S/MIME).
A tout instant vous pouvez avoir une vue sur l’ensemble des fonctionnalités de OpenSSL à
l’aide des pages de manuel (man openssl).
La syntaxe générale pour l’utilisation en mode shell des fonctionnalités OpenSSL est la
suivante :
$ openssl <commande> <options>
le $ représente le prompt du shell.
2 Opérations de base avec OpenSSL
1
2
SECTION 3
Vous pouvez utiliser les fonctionnalités suivantes :
•
$ openssl genrsa -out <fichier_rsa.priv> <size> : génére la clé privé RSA de
Advertisement
taille size. Les valeurs possible pour size sont : 512, 1024, etc.
• $ openssl rsa -in <fichier_rsa.priv> -des3 -out <fichier.pem> : chiffre la
clef privée RSA avec l’algorithme DES3. Vous pouvez utiliser DES, 3DES, IDEA, etc.
• $
openssl
-out
<fichier_rsa.pub> : stocke la partie publique dans un fichier à part (création de la
clé publique associée à la clef privée dans le fichier fichier.pem).
<fichier_rsa.priv>
-pubout
rsa
-in
•
$ openssl enc <-algo> -in <claire.txt> -out <chiffre.enc> : pour le chiffrement
de claire.txt avec l’algorithme spécifié (openssl enc --help pour avoir la liste des
possibilités ou bien openssl list-cipher-commands) dans un fichier chiffre.enc.
• $ openssl enc <-algo> -in <chiffre> -d -out <claire> : pour le déchiffrement.
•
$ openssl dgst <-algo> -out <sortie> <entrée> : pour hacher un fichier. L’option
<-algo> est le choix de l’algorithme de hachage (sha, sha1, dss1, md2,md4, md5,
ripemd160).
• $ openssl rand -out <clé.key> <nombre_bits> : pour générer un nombre
aléatoire de taille nombre_bits (utiliser l’option -base 64 pour la lisibilité).
Advertisement
• $ openssl aes-256-cbc -in <claire.txt> -out <chiffre.enc> -e -k
<clé.key>: pour chiffrer un fichier avec l’AES.
•
$ openssl rsautl -encrypt -inkey <rsa.pub> -in <clair.txt> -out
<chiffre.enc> : chiffrer fichier.txt avec la RSA en utilisant la clef publique rsa.pub.
• $ openssl rsautl -decrypt -inkey <rsa.priv> -in
<chiffre.enc> -out <fichier.txt> : pour déchiffrer le fichier fic.dec.
• $ openssl rsautl -sign -inkey <ras.priv> -in <fichier.txt> -out
<fic.sig> : pour générer une signature.
• $ openssl rsautl -verify -pubin -inkey <rsa.pub> -in fic fic.sig :
pour véri-fier une signature.
3 Que faut-il faire ?
Se familiariser avec les fonctionalités et la bibliothèque openSSL : Dans ce TP, on va
utiliser les fonctionalités openSSL comme vous l’avez peut-être déjà un peu fait dans le court
d’usages sécurisés des TIC. Dans un premier temps, vous allez faire les choses suivantes en
utilisant les fonctionalités OpenSSL
Après avoir
téléchargé
https://indy.fulgan.com/SSL/
l’outil openssl
sur
vos machines à partir du
lien
Advertisement
Après extraction il suffit de lancer l’exécutable openssl.exe
1. Créer un fichier texte c:\f1.txt (contient un paragraphe quelconque). Par la suite chiffrer le
avec l’algorithme symétrique DES. Le fichier chiffré est nommé f1chiffré. Procéder ensuite à
le déchiffré, le fichier résultant est f1déchiffré qui doit être identique à f1.txt. Les trois fichiers
sont à déposer dans un dossier nommé SSYMETRIQUE
2. Forgez vos clefs RSA 512.
a. Déposer votre clé publique dans le dossier NOSCLESPUBLIQUES (sous la
forme CPNomPrenom) se trouvant au niveau de la plate forme. Procéder par la
suite à chiffrer un petit fichier en RSA et à me l’envoyer(en le déposant sur
l’espace de dépôt sous la forme fNomPrénomchiffré).
b. Signer ce même fichier et le déposer sous la forme fNomPrénomsigné pour que
je le vérifie
c. Prendre le même fichier et procéder à le hacher avec md5 (le résultat est un
fichier à déposé également sous la forme h1md5) ensuite modifier le fichier initial
et recalculer le hachage (h2md5). Ces deux fichiers doivent être différents.
d. Prendre un fichier assez volumineux, à savoir ce fichier de TP et procéder à le
signer et le déposer sous le nom fTPsigné afin que le vérifie.
Un petit Compte rendu sera également déposé. Il contient les commandes utilisées et vos
commentaires
La totalité des fichiers peut être déposé sous forme d’un dossier ou d’un fichier .rar