ResLinux

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 4

Fondements de la sécurité

2024-2025

La cryptographie avec Openssl


Objectifs :
L’objectif de cette partie est de se familiariser avec les services de base de la sécurité, notamment le
chiffrement symétrique, le chiffrement asymétrique, le hachage, la signature numérique et sa vérification.
Ce TP est basé sur le logiciel Openssl.
I. Présentation de Openssl
Openssl est l’API de crypto la plus répandue. Elle est open source. On trouvera toutes les informationsla
concernant à l’adresse :https://www.openssl.org
Openssl 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
– la création de certificats X509
– le calcul d’empreintes
– le chiffrement et déchiffrement
– la réalisation de tests de clients et serveurs SSL/TLS
II. Installation de Openssl
1. Installer la pile openssl.exe (par défaut) sur vos PC.
2. Pour utiliser directement la commande "openssl", il faut d'ajouter le dossier "bin" de votre
installation de Openssl dans la variable d'environnement PATH de votre machine.
a. Appuyer simultanément sur les touches Windows + R puis taper ‘sysdm.cpl’.

b. Aller à « Paramètres système avancés » puis à « Variables d’environnement ».


Sous « Variables système » appuyer sur Nouvelle puis saisir ce qui suit comme indiqué dans la
capture d'écran :

1
Fondements de la sécurité
2024-2025

Nom de la variable : OPENSSL_CONF


Valeur de la variable : C:\Program Files\Openssl-Win64\bin\openssl.cfg
c. Sous « Variables système », sélectionner « PATH » dans la liste, puis cliquer sur Modifier.
Cliquer sur Nouveau et ajouter « C:\Program Files\Openssl-Win64\bin ».

3. Cliquer sur le bouton Démarrer de Windows. Dans la zone de recherche, saisir cmd.
Dans les résultats de la recherche, cliquer avec le bouton droit de la souris sur cmd et
sélectionner Exécuter en tant qu'administrateur
4. Taper « openssl version » pour s’assurer qu'Openssl est bien installé et configuré.
5. Aller au répertoire d’installation C:\Program Files\Openssl-Win64\bin. Travailler dans ce
répertoire bin en tant qu’administrateur pour ne pas être obligé de taper à chaque fois le chemin
d’accès aux fichiers.

2
Fondements de la sécurité
2024-2025

III. Chiffrement symétrique


La commande « enc » qui permet de chiffrer/déchiffrer avec openssl. Plus de détails sont fournis en
tapant : openssl enc -help
Pour connaitre les différents algorithmes symétriques supportés, il suffit de taper : openssl enc -list
La fonction utilisée dans la génération de la clé secrète peut également être spécifié (exemple PBKDF2).
Exemple : Pour chiffrer le fichier BOB avec l’algorithme AES-128, la commande suivante est utilisée :
openssl enc -aes128 -pbkdf2 -in BOB.txt -out BOB1.txt
Avec cette commande, la clé secrète est générée à partir d’un mot de passe en utilisant une fonction de
dérivation de clé PBKDF2, et le cryptogramme résultant est stocké dans le fichier BOB1.txt.
Pour déchiffrer le même message, utiliser la commande :
openssl enc -aes128 -pbkdf2 -d -in BOB1.txt -out BOB2.txt
Questions : Soit un fichier donné fichier_nom_etudiant :
1. Ecrire la commande qui permet de le chiffrer et produit ainsi un fichier
fichier_nom_etudiant1.txt. Diversifier les algorithmes.
2. Ecrire la commande qui permet de déchiffrer le fichier fichier_nom_etudiant1.txt
IV. Chiffrement asymétrique
1. Génération des clés RSA
La commande genrsa de openssl permet de générer une paire clés RSA :
openssl genrsa -out < fichier> <taille>
Où <fichier> est un nom de fichier de sauvegarde de la paire de clés, et <taille> est la taille 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 :
openssl genrsa -out maCle.pem 1024
Remarque: Le format de sortie par défaut est PEM (Privacy Enhanced Mail). A l’aide de l’option
-outform ou -inform on peut changer le format. Deux formats sont supportés PEM et DER.
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 et l’option -text demande l’affichage décodé de la paire de clés :
rsa -in < fichier> -text
3. Chiffrement des clés RSA
Il 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és avec une clé symétrique. Par exemple, pour chiffrer les clés
stockées dans le fichier maCle.pem, on tape :
openssl rsa -in maCle.pem -des3 -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é.

3
Fondements de la sécurité
2024-2025

4. Exportation de la partie publique


La partie publique d'une paire de clés RSA 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é en utilisant la commande suivante :
openssl rsa -in maCle.pem -pubout -out maClePublique.pem
Remarque : il faut toujours utiliser l’option -pubin lors de la manipulation de la clé publique par
exemple pour la visualiser, on tape :
openssl rsa -pubin -in maClePublique.pem –text
Question : Générer une paire de clés RSA et protéger la avec une clé symétrique.
5. Chiffrement/déchiffrement des données avec RSA
On peut chiffrer des données avec une clé publique RSA. Pour cela on utilise la commande pkeyutl:
openssl pkeyutl -encrypt -in <fichier_entrée> -pubin -inkey <clépublique> -out
<fichier_sortie> Où
• <fichier_entrée> est le fichier des données à chiffrer. Attention, le fichier des données à chiffrer
nedoit pas avoir une taille excessive (ne doit pas dépasser 116 octets pour une clé de 1024 bits).
• <clépublique> est le fichier contenant la clé RSA. Si ce fichier ne contient que la partie 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. Aucune option -pubin n'est nécessaire pour le déchiffrement.
Question: Chiffrer puis déchiffrer le fichier fichier_nom_eleve.txt avec RSA.
6. Calcul des empreintes
Openssl assure le calcul des empreintes en utilisant la commande dgst.
openssl dgst -<hachage> -out <empreinte> <fichier_entrée>
Où <hachage> est une fonction de hachage.
La commande openssl list -digest-algorithms affiche la liste des fonctions de hachage supportées.
Question: Calculer l’empreinte du fichier fichier_nom_eleve.txt. en diversifiant les fonctions de hachage
7. Signature de fichiers
Signer un document revient à signer son empreinte. Dans Openssl, la commande suivante permet de
calculer la signature du fichier file.txt en utilisant la fonction de hachage sha256 et l’algorithme RSA :
openssl dgst -sha256 -sign privatekey.pem -out signature.sign file.txt
où privatekey.pem contient une clé privée RSA
La commande suivante permet de vérifier cette signature :
openssl dgst -sha256 -verify clepub.pem -signature signature.sign file.txt
où clepub.pem contient la clé publique correspondante.
Question : Générer la signature du fichier_nom_eleve.txt puis vérifier cette signature.

Vous aimerez peut-être aussi