Activité 4.2 : TP OpenSSL ; usages de base

Cryptography and Network Security · lab

Voir tous les documents en sécurité informatique

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 :

Publicité

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

Publicité

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é).

Publicité

• $ 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

Publicité

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