Chiffrer des fichiers avec OpenSSL

LinuxBeginner
Pratiquer maintenant

Introduction

Dans cet atelier, vous allez apprendre à utiliser OpenSSL pour le chiffrement et le déchiffrement de fichiers, une compétence fondamentale en cybersécurité. À travers des exercices pratiques, vous vous entraînerez à générer une clé symétrique et à appliquer le chiffrement AES pour protéger des données sensibles.

Ce laboratoire vous guide dans l'installation d'OpenSSL, la création d'un fichier de test et la réalisation d'un cycle complet de chiffrement-déchiffrement. Cette expérience concrète vous aidera à comprendre les techniques de protection des données utilisées dans les applications réelles.

Installer et vérifier OpenSSL

Dans cette étape, vous allez installer OpenSSL, une boîte à outils puissante pour la mise en œuvre de communications sécurisées. Bien qu'OpenSSL soit souvent inclus par défaut dans les distributions Linux, cette étape permet de s'assurer qu'il est correctement installé et prêt à l'emploi.

Tout d'abord, vérifiez qu'OpenSSL est installé en contrôlant la version actuelle.

openssl version

Vous devriez voir un résultat similaire au suivant, indiquant la version d'OpenSSL présente sur votre système.

OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)

Enfin, vous pouvez afficher le menu d'aide pour consulter la liste des commandes disponibles et confirmer qu'OpenSSL fonctionne correctement.

openssl help

Cette commande listera les diverses opérations cryptographiques qu'OpenSSL peut effectuer, que nous explorerons dans les étapes suivantes.

Créer un fichier d'exemple pour le chiffrement

Dans cette étape, vous allez créer un simple fichier texte qui servira de base à nos exercices de chiffrement et de déchiffrement. L'utilisation d'un fichier connu permet de vérifier facilement que le processus fonctionne correctement en comparant le contenu original et le contenu déchiffré.

Votre terminal devrait déjà se trouver dans le répertoire /home/labex/project. Nous allons y créer le fichier.

Tout d'abord, utilisez l'éditeur de texte nano pour créer un nouveau fichier nommé sample.txt.

nano sample.txt

Une fois nano ouvert, saisissez le texte suivant dans l'éditeur :

This is a sample text file for encryption testing.
LabEx Cybersecurity Lab - AES Encryption Demo.

Maintenant, enregistrez le fichier et quittez nano :

  1. Appuyez sur Ctrl + O pour enregistrer les modifications.
  2. Appuyez sur Enter pour confirmer le nom du fichier (sample.txt).
  3. Appuyez sur Ctrl + X pour quitter l'éditeur.

Pour confirmer que le fichier a été créé correctement, affichez son contenu à l'aide de la commande cat.

cat sample.txt

Le résultat devrait afficher exactement le texte que vous avez saisi :

This is a sample text file for encryption testing.
LabEx Cybersecurity Lab - AES Encryption Demo.

Ce fichier d'exemple est maintenant prêt pour le processus de chiffrement lors des prochaines étapes.

Générer une clé de chiffrement symétrique

Dans cette étape, vous allez générer une clé symétrique, c'est-à-dire une clé secrète utilisée à la fois pour chiffrer et déchiffrer les données. Nous utiliserons OpenSSL pour créer une clé aléatoire robuste, adaptée au chiffrement AES-256, un standard hautement sécurisé et largement adopté.

Assurez-vous d'être dans votre répertoire de projet, /home/labex/project.

cd ~/project

Utilisez la commande openssl rand pour générer 32 octets (256 bits) de données aléatoires et les enregistrer au format hexadécimal dans un fichier nommé symmetric_key.hex.

openssl rand -hex 32 > symmetric_key.hex

Visualisez la clé générée pour voir à quoi elle ressemble.

cat symmetric_key.hex

Le résultat sera une chaîne hexadécimale de 64 caractères, représentant votre clé de 256 bits. Elle ressemblera à ceci (votre clé sera différente) :

2f8b5e9a1c3d4e6f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f

Comme cette clé permet de déverrouiller vos données, il est crucial de la protéger. Utilisez la commande chmod pour définir les permissions du fichier afin que seul le propriétaire (vous) puisse le lire et y écrire.

chmod 600 symmetric_key.hex

Enfin, vérifiez les permissions du fichier avec ls -l.

ls -l symmetric_key.hex

Le résultat devrait afficher les permissions -rw-------, confirmant que le fichier est sécurisé.

-rw------- 1 labex labex 65 Nov 15 10:30 symmetric_key.hex

Une fois la clé générée et sécurisée, vous êtes prêt à chiffrer le fichier d'exemple.

Chiffrer le fichier avec AES

Vous allez maintenant utiliser la clé symétrique pour chiffrer sample.txt. Nous utiliserons l'algorithme de chiffrement AES-256-CBC. L'AES (Advanced Encryption Standard) avec une clé de 256 bits est un algorithme robuste, et le mode CBC (Cipher Block Chaining) renforce la sécurité en rendant chaque bloc chiffré dépendant du précédent.

La commande openssl enc gère le chiffrement. Nous allons spécifier l'algorithme, le fichier d'entrée, le fichier de sortie et le fichier contenant la clé.

Exécutez la commande suivante pour chiffrer sample.txt et enregistrer le résultat dans sample.enc.

openssl enc -aes-256-cbc -in sample.txt -out sample.enc -pass file:symmetric_key.hex
  • -aes-256-cbc : Spécifie l'algorithme de chiffrement.
  • -in sample.txt : Le fichier d'entrée à chiffrer.
  • -out sample.enc : Le nom du fichier de sortie (chiffré).
  • -pass file:symmetric_key.hex : Indique à OpenSSL d'utiliser le contenu de symmetric_key.hex comme mot de passe (clé).

Après avoir exécuté la commande, listez les fichiers pour voir le nouveau fichier chiffré, sample.enc.

ls -l

Vous remarquerez que sample.enc est légèrement plus volumineux que sample.txt en raison du surcoût lié au chiffrement, comme le remplissage (padding) et les métadonnées.

total 12
-rw-r--r-- 1 labex labex   96 Nov 15 10:35 sample.enc
-rw-r--r-- 1 labex labex   89 Nov 15 10:20 sample.txt
-rw------- 1 labex labex   65 Nov 15 10:30 symmetric_key.hex

Si vous essayez de visualiser le contenu du fichier chiffré, vous verrez des données binaires illisibles.

cat sample.enc

Ce résultat illisible confirme que le fichier a été chiffré avec succès.

Déchiffrer le fichier et vérifier l'intégrité

Dans cette dernière étape, vous allez déchiffrer sample.enc pour récupérer le texte original. Cela confirmera que votre clé fonctionne et que l'ensemble du cycle chiffrement-déchiffrement a réussi.

Pour déchiffrer le fichier, vous utiliserez à nouveau la commande openssl enc, mais cette fois avec l'option -d pour spécifier le déchiffrement.

Exécutez la commande suivante pour déchiffrer sample.enc et enregistrer le résultat dans un nouveau fichier, sample.dec.

openssl enc -d -aes-256-cbc -in sample.enc -out sample.dec -pass file:symmetric_key.hex

Vérifions maintenant que le déchiffrement a fonctionné. La meilleure façon de le faire est de comparer le fichier déchiffré (sample.dec) avec le fichier original (sample.txt). La commande diff est parfaite pour cela.

diff sample.txt sample.dec

Si les fichiers sont identiques, cette commande ne produira aucune sortie, ce qui signifie que le déchiffrement a réussi.

Pour une dernière confirmation visuelle, affichez le contenu du fichier déchiffré.

cat sample.dec

Le résultat devrait être exactement le même que celui de votre fichier sample.txt d'origine :

This is a sample text file for encryption testing.
LabEx Cybersecurity Lab - AES Encryption Demo.

Vous avez maintenant réussi à chiffrer un fichier et à le déchiffrer pour retrouver sa forme originale à l'aide d'OpenSSL.

Résumé

Dans cet atelier, vous avez acquis une expérience pratique du chiffrement et du déchiffrement de fichiers avec OpenSSL. Vous avez appris à générer une clé symétrique robuste, à l'utiliser pour chiffrer un fichier avec l'algorithme AES-256, puis à déchiffrer ce fichier pour restaurer les données originales. Cette procédure constitue une compétence essentielle pour la protection des informations sensibles en cybersécurité.