C’est la commande enc qui permet de chiffrer/déchiffrer avec openssl :
> openssl enc <options> |
Parmi les options, on doit indiquer le système de chiffrement à choisir dans la liste
aes-128-cbc AES 128 bis in CBC mode aes-128-ecb AES 128 bis in ECB mode aes-192-cbc AES 192 bis in CBC mode aes-192-ecb AES 192 bis in ECB mode aes-256-cbc AES 256 bis in CBC mode aes-256-ecb AES 256 bis in ECB mode base64 Base 64 bf-cbc Blowfish in CBC mode bf Alias for bf-cbc bf-cfb Blowfish in CFB mode bf-ecb Blowfish in ECB mode bf-ofb Blowfish in OFB mode cast-cbc CAST in CBC mode cast Alias for cast-cbc cast5-cbc CAST5 in CBC mode cast5-cfb CAST5 in CFB mode cast5-ecb CAST5 in ECB mode cast5-ofb CAST5 in OFB mode des-cbc DES in CBC mode des Alias for des-cbc des-cfb DES in CBC mode des-ofb DES in OFB mode des-ecb DES in ECB mode des-ede-cbc Two key triple DES EDE in CBC mode des-ede Alias for des-ede des-ede-cfb Two key triple DES EDE in CFB mode des-ede-ofb Two key triple DES EDE in OFB mode des-ede3-cbc Three key triple DES EDE in CBC mode des-ede3 Alias for des-ede3-cbc des3 Alias for des-ede3-cbc des-ede3-cfb Three key triple DES EDE CFB mode des-ede3-ofb Three key triple DES EDE in OFB mode desx DESX algorithm. idea-cbc IDEA algorithm in CBC mode idea same as idea-cbc idea-cfb IDEA in CFB mode idea-ecb IDEA in ECB mode idea-ofb IDEA in OFB mode rc2-cbc 128 bit RC2 in CBC mode rc2 Alias for rc2-cbc rc2-cfb 128 bit RC2 in CBC mode rc2-ecb 128 bit RC2 in CBC mode rc2-ofb 128 bit RC2 in CBC mode rc2-64-cbc 64 bit RC2 in CBC mode rc2-40-cbc 40 bit RC2 in CBC mode rc4 128 bit RC4 rc4-64 64 bit RC4 rc4-40 40 bit RC4 rc5-cbc RC5 cipher in CBC mode rc5 Alias for rc5-cbc rc5-cfb RC5 cipher in CBC mode rc5-ecb RC5 cipher in CBC mode rc5-ofb RC5 cipher in CBC mode
base64 n’est pas un système de chiffrement, mais un codage des fichiers binaires avec 64 caractères ASCII. Ce codage est utilisé en particulier pour la transmission de fichiers binaires par courrier électronique.
Pour chiffrer le fichier toto avec le système Blowfish en mode CBC, avec une clé générée par mot de passe, le chiffré étant stocké dans le fichier toto.chiffre, on utilise la commande :
> openssl enc -bf-cbc -in toto -out toto.chiffre |
Pour déchiffrer le même message, on utilise la commande :
> openssl enc -bf-cbc -d -in toto.chiffre -out toto.dechiffre |
Vérification
> diff toto toto.dechiffre |
Exercice 1.
Question 1.
Chiffrez le fichier de votre choix avec le système de votre choix dans le mode de votre choix, puis déchiffrez-le.
Question 2.
Comparez les tailles des fichiers clairs et chiffrés. Donnez une explication sur la différence de ces tailles.
Question 3.
Tentez de déchiffrer un cryptogramme en utilisant un mauvais mot de passe. Comment réagit openSSL ?
Exercice 2. Le fichier cryptogram10 a été chiffré avec le système AES en mode CBC, la clé de 128 bits ayant été obtenue par mot de passe.
Question 1.
Le mot de passe codé en base 64 est Q29tVGVzc2U=
. À
l’aide de la commande openssl appropriée, décodez le mot de
passe.
Question 2.
Déchiffrez ensuite le cryptogram10.
Pour chiffrer le fichier toto avec une clé explicite, il faut utiliser les options -K et -iv
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.
Question 1.
Chiffrez le fichier clair11 avec le
système Blowfish en mode OFB, en utilisant le vecteur d’initialisation
(option -iv) et la clé (option -K) de votre choix.
Question 2.
Chiffrez le fichier clair correspondant au
cryptogram10 avec le même système, la même clé et
le même vecteur d’initialisation que dans la question qui précède.
Question 3. Utilisez le programme xor pour faire un "xor" des deux fichiers clairs. Utilisez le même programme pour faire un "xor" des deux chiffrés. Faîtes un diff entre les deux fichiers obtenus. Que constatez-vous ?. Le résultat aurait-il été le même si on avait utilisé un système de chiffrement autre que Blowfish ? Explication.
Usage : xor <fichier1> <fichier2> <fichier3> <fichier1> et <fichier2>: fichiers à xorer <fichier1> doit être de taille <= à <fichier2> <fichier3> : fichier résultat