Vous êtes sur la page 1sur 3

Facult des Sciences - Ttouan

LP- ARSSI
2015/2016
Travaux pratiques de chiffrement avec OpenSSL

Ces travaux pratiques sont bass sur la suite logicielle OpenSSL.


OpenSSL est lAPI de crypto la plus rpandue. Elle est open source avec licence GPL. On trouvera toutes les informations la
concernant ladresse : http://www.openssl.org
A titre dexemple OpenSSL intgre galement le protocole SSL. Cest cette mme distribution quintgre le serveur Apache pour
offrir les services SSL.
Vous allez tlcharger la pile openssl.exe pour windows et puis vous allez linstaller (par dfaut) sur vos PC.
Placez vous dans le rpertoire dinstallation c:\program files\GNUWin32\bin>
Vous allez travailler dans ce rpertoire BIN pour ne pas tre oblig de taper chaque fois le chemin daccs aux fichiers.
OpenSSL offre un mode commande o lon peut interagir avec lAPI. Cest ce mode que lon utilisera tout simplement en tapant
openssl (en en cliquant deux fois sur openssl.exe). Pour accder lusage des diffrentes commandes et avoir le help (aide en ligne), il
suffira lorsquon est sur openssl de taper le nom de la commande suivie de help.
Lobjectif de ces travaux pratiques est de vous familiariser avec les services de base de la scurit. Notamment le chiffrement
symtrique, le chiffrement asymtrique, le hachage, la signature numrique et sa vrification, et la certification.
Il vous ait demand dans un premier temps de suivre pas pas les exercices qui vous sont proposs et par la suite vous avez quartier
libre pour les exercices qui vous feront plaisir.
Notation : toutes les commandes et arguments associs seront nots dans la suite en italique gras.
exemple : openssl> enc -in messageclair -out messagechiffre -e -des3

1 CHIFFREMENT SYMTRIQUE
La commande qui vous permet dutiliser le chiffrement symtrique est la commande enc (en tapant enc help vous aurez toutes les
options associes)
Question 1 :
Soit un fichier donn fichier_nom_eleve (choisissez un fichier.txt qui contient des donnes textuelles).
Ecrire la commande qui permet de le chiffrer et produit ainsi un fichier fichier_nom_eleve.enc
On peut alors vrifier que le message fichier_nom_eleve.enc est bien inintelligible. Il est chiffr.
Ce mme message est transmis votre camarade qui pourra galement le dchiffrer.
On peut alors vrifier que le message ainsi dchiffr est bien identique fichier_nom_eleve ...
Il vous est bien sr de comprendre lensemble des manipulations associes.
Il vous est demand de diversifier les algorithmes. Dutiliser galement loption a pour produire un fichier chiffr lisible donc cod
en base64 (lisible ne veut pas dire en clair).
Solution :
Openssl> enc -in fichier.txt -out fichier.enc -e -des3 (cest pour chiffrer)
Openssl> enc -in fichier.enc -out fichier.dec -d -des3 (cest pour dchiffrer)
Leur demander de diversifier leurs algorithmes. Dutiliser par exemple DES, RC2, RC4, AES, BF (BlueFich) ,
Question 2 :
Pourquoi quand on applique deux fois la commande enc une fois au fichier en clair et une fois au fichier chiffr on nobtient pas un
rsultat en clair.

1
Rponse :
Au fichier chiffr on rajoute des enttes qui ne font pas partie des donnes. Ainsi quon applique deux fois de suite la commande avec
loption e il chiffre et les donnes et les enttes. Quand on utilise loption d il applique la mme fonction sauf quil extrait du
chiffrement les donnes structurelles.

2 CHIFFREMENT ASYMTRIQUE
Gnration de cl prive/publique RSA :
Le format de sortie par dfaut est du PEM (Privacy Enhanced Mail).
A laide de loption outform ou -inform on peut changer le format. Deux formats sont supports par cette option PEM et DER.
Vous avez un fichier de configuration de OPENSSL qui sappelle openssl.cnf ou openssl.txt. Vous pouvez le placer dans le
rpertoire BIN.
Pour crer la cl prive/publique, vous pouvez taper la commande suivante :
OpenSSL> genrsa -out key 1024

Ou bien, vous pouvez crer la cl en faisant les tapes suivantes :


* crer un fichier nomm "rand.txt" contenant n'importe quoi ... (exemple : Bonjour)
Ce fichier rand.txt va aider lalgorithme RSA crer votre cl prive/publique.
La cl prive sera stocke sur votre disque dur dans un fichier. Cette cl prive sera chiffre par un algorithme symtrique (par
exemple 3DES). Cet algorithme va chiffrer et protger la cl prive grce une cl de chiffrement symtrique gnre par le mot de
passe (pass-phrase) que vous allez choisir et confirmer.
OpenSSL> genrsa -des3 -out key -rand rand.txt 1024
Ici, vos cl prive/publique sont gnres. Elles sont stockes sur votre disque
dur dans le fichier key. Les cls ont une longueur chacune de 1024 bits.
Pour la vrification des cls prive/publique RSA et les visualiser vous pouvez taper :
OpenSSL> rsa -in key
Ou bien
OpenSSL> rsa -in key -check
Ou bien
OpenSSL> rsa -in key -check modulus
Ou bien
OpenSSL> rsa -in key -check -modulus text
Ou bien, utiliser wordpad ou notepad de windows pour la visualisation du contenu de
la cl.(Nous prfrons wordpad)

Gnration de la cl publique RSA :


OpenSSL> rsa -in key -pubout -out pubkey
Pubkey est un fichier qui va contenir la cl publique.Il a t cr partir du
fichier key qui contient les cls prive/publique.

NB : Lorsque vous manipuler la cl publique, utiliser toujours loption -pubin


Vrification de la cl publique RSA :
OpenSSL> rsa -pubin -in pubkey text
Ou bien visualiser la cl par wordpad

2
CHIFFREMENT/DCHIFFREMENT DE DONNES AVEC RSA
On peut chiffrer des donnes avec une cl publique RSA. Pour cela on utilise la commande rsautl

Openssl> rsautl -encrypt -in fichier_entre -pubin -inkey clpublique


-out fichier_sortie
o
fichier_entre est le fichier des donnes chiffrer. Attention, le fichier des donnes chiffrer ne doit pas
avoir une taille excessive (ne doit pas dpasser 116 octets pour une cl de 1024 bits).

clpublique 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 donnes chiffr.

Pour dchiffrer, on remplace l'option -encrypt par -decrypt. Le fichier contenant la cl doit obligatoirement contenir la partie prive.

3 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 -fonctionhachage -out fichierempreinte fichier_entre


o fonctionhachage est une fonction de hachage.
Avec openssl, plusieurs fonctions de hachage sont proposes 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.

Fichierempreine : cest le fichier empreinte du document. Il est de petite taille (128 bits, 160 bits, )

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

Openssl> rsautl -sign -in fichierempreinte -inkey clprive -out fichiersignature

Fichiersignature : cest la signature numrique.

et pour vrifier la signature


openssl> rsautl -verify -in fichiersignature pubin -inkey clepublique
-out fichierempreinte2
Il reste ensuite vrifier que l'empreinte ainsi produite est la mme que celle que l'on peut calculer avec.

Remarque :
Ce TP peut tre attrayant si les lves schangent les fichiers et les cls : par leurs disques flach ou par mail, Et puis, les tudiants
essayent de dchiffrer ce que leurs collgues les ont envoy.