Vous êtes sur la page 1sur 6

Université Mohammed V A.U.

2018/2019
Faculté des Sciences Rabat-Agdal

TP N°1
Objectif :
Le but de ce TP est :
 Tester la stéganographie comme moyen de sécurité
 La mise en œuvre de quelques algorithmes de chiffrement symétriques et asymétriques à
travers l’utilisation de la boite à outil cryptographique OpenSSL sous Windows.

Logiciels utilisés : StegHide, MP3Stego, OpenSSL, Free Hex (éditeur hexadecimal).

N.B : Chaque binôme doit rendre un compte rendu qui détaille le travail réalisé durant le TP
(Réponses aux questions, commandes utilisées, résultats…).

Partie 1 : Stéganographie

Exercice1 : Cacher un fichier texte dans une image

Installation de l’outil steghide

Décompresser le fichier steghide-0.5.1-win32 .zip dans le dossier "c:\Steghide".


Dans cet exercice nous allons cacher un fichier nommé "ensak.txt", contenant la phrase « Salut tout le
monde », dans l'image "test.jpg" que vous avez placé préalablement dans le même répertoire de travail.
Cacher un fichier dans une image

1) Ouvrez l'invite de commandes cmd puis changer d’emplacement pour aller dans le bon répertoire :
cd "c:\Steghide"

2) Saisissez les commandes suivantes pour cacher le fichier texte "ensak.txt" dans une image quelconque
"test.jpg" : c:\Steghide> steghide embed -cf test.jpg -ef ensak.txt

Extraire un fichier caché dans une image

1. Maintenant on va récupérer le fichier caché dans la photo "test.jpg" comme suit:

c:\Steghide> steghide extract -sf "test.jpg"

On peut aussi rajouter des options pour extraire, en mode bavard "-v" et écrire directement le mot de passe
"-p".

2. Cacher un texte dans une image puis envoyez cette image à votre binôme par email.

Pr. Chougdali Khalid


Exercice 2 : cacher un fichier texte dans un fichier audio

1. Décompresser le fichier MP3stego.zip dans le dossier "c:\MP3stego". Dans ce répertoire, copiez le


fichier audio fichier1.wav qui va servir à cacher le texte.
2. Saisissez les commandes suivantes pour cacher le fichier "ensak.txt" dans le fichier audio :
c:\MP3stego> encode -E ensak.txt -P password fichier1.wav fichierstego.mp3
3. Pour récupérer le fichier caché, tapez les commandes : decode -X -P password fichierstego.mp3

Partie 2: Cryptographie

OpenSSL est une boite à outils cryptographiques qui offre :

a) une commande en ligne (openssl) permettant :


– le chiffrement et déchiffrement (DES, AES, RC2, RC4, Blowfish, . . . ) ;
– la création de clefs RSA, DSA (signature) ;
– le calcul d’empreintes (MD5, SHA1, RIPEMD160, . . . ) ;
– la signature et le chiffrement de courriers (S/MIME).

b) une bibliothèque de programmation en C permettant de réaliser des applications client/serveur


sécurisées s’appuyant sur SSL/TLS.

Installation d’OpenSSL sous windows

Installer le fichier Win32OpenSSL_Light-1_0_1.exe. Lancez une console DOS avec la commande


cmd.exe puis changer de répertoire pour se placer dans C:\OpenSSL-Win32\bin

Pour connaître toutes les fonctionnalités de openSSL taper: « openssl / ? »


La syntaxe générale de la commande openssl est : openssl <commande> <options>

A-Cryptographie symétrique
Chiffrement symétrique avec openSSL
C’est la commande « enc » qui permet de chiffrer/déchiffrer avec openssl. ($openssl enc <options>)

Voici les commandes pour chiffrer/déchiffrer.

$ openssl enc -e $mode -in $fichier1 -out $fichier2


$ openssl enc -d $mode -in $fichier2 -out $fichier3

L'option -e signifie l'opération de chiffrement, tandis que -d est pour le déchiffrement.


La variable $mode peut prendre différentes valeurs comme par exemple -des, -des-ecb, -aes-
256-cbc... Vous pouvez trouver d'autres modes dans le help en tapant openssl enc / ?.
La variable $fichier1 est le nom du fichier que l'on souhaite chiffrer, $fichier2 est le nom du
fichier qui contient le chiffré et $fichier3 est le nom du fichier qui contient le déchiffré. Pensez
à ce que $fichier1 et $fichier3, soient bien différents, sinon vous ne pourrez pas comparer les
deux fichiers!

Pr. Chougdali Khalid


Pour chiffrer le fichier « toto » avec l’algorithme DES, et une clef générée par mot de passe, le
cryptogramme est enregistré dans le fichier « toto.chiffre », on utilise la commande :
$ openssl enc -e -des -in toto -out toto.chiffre
Pour déchiffrer le même fichier, il suffit d’ajouter l’argument « -d »

Chiffrement avec mot de passe


Exercice 1 :
Créez un fichier texte et chiffrez le avec les algorithmes DES, AES et BlowFish, puis déchiffrez-le.

openssl enc –e −des −in ensak.txt −out ensacrypte.txt

openssl enc –e −aes −in ensak.txt −out ensacrypte2.txt

openssl enc –e −bf −in ensak.txt −out ensacrypte3.txt

Exercice2 :
Q 1. Quelle est la différence entre les deux modes de chiffrement CBC et ECB ? Chiffrer le même fichier
avec le mode CBC. Refaite la même opération avec le mode ECB.

Chiffrement avec clef explicite


Pour chiffrer le fichier « toto » avec une clé explicite, il faut utiliser les options -K et -iv
-K (K majuscule) suivi de la clé exprimée en hexadécimal ;
-iv (iv en minuscules) suivi du vecteur d'initialisation exprimé en hexadécimal.
L'exemple qui suit montre la commande pour chiffrer « toto » avec Blowfish en mode CBC avec
un vecteur d'initialisation de 64 bits exprimé par 16 chiffres hexa, et une clé de 128 bits exprimée
par 32 chiffres hexa.
$openssl enc -bf-cbc -in toto -out toto.chiffre -iv 0123456789ABCDEF -K
0123456789ABCDEF0123456789ABCDEF
Exercice 3 :
Q 1. Chiffrez un fichier avec l’algorithme DES en mode EBC, en utilisant une clef explicite (option -
K) de votre choix pour obtenir le fichier cryptogram1. Déchiffrez ensuite le cryptogramme obtenu.

Exercice 4 :
Q 1. Générer une clef aléatoire de 56 bits pour l’utiliser dans l’algorithme DES à l’aide de la commande
« openssl rand <option> ». Sauvegarder cette clef dans fichier nommé « clef_des ».
Q 2. Chiffrer un fichier « toto » avec l’algorithme DES et la clef aléatoire « clef_des ». Déchiffrer le
cryptogramme avec la même clef pour vérifier le bon fonctionnement de ce processus.

Chiffrement d’une image


Exercice 5 : chiffrer et déchiffrer une image BMP

1 Sélectionnez une image BMP ; Utilisez l’éditeur Hexadécimal Free Hex pour éditer le fichier BMP.
Ensuite, supprimez l’en-tête de l’image BMP (les 54 premiers octets). Sauvegardez le fichier sous le
nom test.dat.

Pr. Chougdali Khalid


2. Crypter le fichier test.dat avec l’algorithme DES-CBC et enregistrez-le avec le nom testcrypt.dat

3. Editer le fichier testcrypt.dat avec l’éditeur Hexadécimal puis insérer l’en-tête que vous avez supprimé
à l’étape 1 ; Sauvegarder le fichier résultant sous le nom imagecrypt.bmp ; Visualisez le résultat.

4. Télécharger le fichier test1.bmp depuis l’adresse


suivante https://sites.google.com/site/chougdali/ensa/cryptographie , puis déchiffrez cette image
cryptée.

Rq : le mot de passe qui a été utilisé est le caractère a.

B-Cryptographie asymétrique

Le but de cette partie est la mise en pratique du chiffrement RSA, l’utilisation des fonctions de hachage
ainsi que la signature numérique.

1) Génération d'une paire de clés RSA


On peut générer une paire de clés RSA avec la commande genrsa de openSSL.
openssl genrsa -out <fichier> <taille>
où fichier est un nom de fichier de sauvegarde de la clé, et taille et la taille souhaitée
(exprimée en bits) de la clé.

Par exemple, pour générer une paire de clés de 1024 bits, stockée dans le fichier maCle.pem,
on tape la commande
openssl genrsa -out maCle.pem 1024

1) Affichez le contenu du fichier en tapant :


type maCle.pem

2) Visualisation des clés RSA


La commande rsa permet de visualiser le contenu d'un fichier au format PEM contenant une
paire de clés RSA.
openssl rsa -in <fichier> -text -noout
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.

Par exemple
openssl rsa -in maCle.pem -text -noout

Pr. Chougdali Khalid


1) Visualiser les clés que vous avez générées

Les différents éléments de la clé sont affichés en hexadécimal (hormis l'exposant public). On
peut distinguer le modulus (n), l'exposant public (e) (qui par défaut est toujours 65537),
l'exposant privé (d), les nombres premiers facteurs ( p et q) du modulus, plus trois autres
nombres qui servent à optimiser l'algorithme de déchiffrement.

3) Chiffrement d'un fichier de clés RSA


Pour des raisons de sécurité il ne faut jamais laisser une paire de clés RSA stockée en clair sur
le disque dur (surtout la partie privée). Avec la commande rsa, il est possible de chiffrer une
paire de clés. Pour cela, plusieurs options sont possibles qui précisent l'algorithme de
chiffrement symétrique à utiliser : -des, -des3, -aes128 et -idea.
openssl rsa -in maCle.pem -des -out maCle.pem
Un mot de passe est demandé deux fois pour générer une clé symétrique protégeant l'accès à
la clé.

1) Avec la commande type observez le contenu du fichier maCle.pem. Utilisez à nouveau la


commande rsa pour visualiser le contenu de la clé.

4) Exportation de la partie publique


La 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é.
openssl rsa -in maCle.pem -pubout -out maClePublique.pem

1) Notez le contenu du fichier maClePublique.pem. Remarquez les marqueurs de début et de


fin.

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 fichier maClePublique.pem.

5) Chiffrement/déchiffrement de données avec RSA


On peut chiffrer des données avec une clé RSA. Pour cela on utilise la commande rsautl
openssl rsautl –encrypt –in <fichier_entree> -inkey <cle> -out <fichier_sortie>

Pr. Chougdali Khalid


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

 cleest 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.

1) Chiffrez un fichier texte de votre choix avec le système RSA en utilisant la clé publique
de votre destinataire (demandez-lui sa clé publique si vous ne l'avez pas). Envoyez-lui
le fichier chiffré.
2) Déchiffrer le fichier que vous avez reçu en utilisant votre propre clé privée.

6) Signature de fichiers

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_entree>

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.

Signer un document revient à signer son empreinte. Pour cela, on utilise l'option -sign de
la commande rsautl comme suit:

openssl rsautl -sign -in <empreinte> -inkey <cle> -out <signature>

et pour vérifier la signature :

openssl rsautl -verify -in <signature> -pubin -inkey <cle> -out <empreinte>

Il reste ensuite à vérifier que l'empreinte ainsi produite est la même que celle que l'on peut
calculer. L'option -pubin indique que la clé utilisée pour la vérification est la partie
publique de la clé utilisée pour la signature.

1) Signez le fichier de votre choix. Envoyez ce fichier avec sa signature à votre


destinataire.

2) Vérifiez la signature après réception. Conclure.

Pr. Chougdali Khalid

Vous aimerez peut-être aussi