GNU/Linux >> Tutoriels Linux >  >> Linux

Le chiffrement/déchiffrement ne fonctionne pas bien entre deux versions différentes d'openssl

Le résumé par défaut a été changé de MD5 à SHA256 dans Openssl 1.1

Essayez d'utiliser -md md5

[email protected]:~$ echo "it-works!" > file.txt
[email protected]:~$ LD_LIBRARY_PATH=~/openssl-1.1.0/ openssl-1.1.0/apps/openssl aes-256-cbc -a -salt -in ~/file.txt -out ~/file.txt.enc -md md5
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
[email protected]:~$ LD_LIBRARY_PATH=~/openssl-1.0.1f/ openssl-1.0.1f/apps/openssl aes-256-cbc -a -in ~/file.txt.enc -d
enter aes-256-cbc decryption password:
it-works!

Les vilains détails :

Le mot de passe saisi n'est pas utilisé tel quel par aes (ou autre chiffrement) mais la commande en dérive implicitement une clé. La dérivation de clé utilise le résumé de message qui a été modifié dans openssl 1.1. Utilisez SHA256 et non MD5 comme résumé par défaut.

Au cas où vous voudriez garder un mot de passe simple et ne pas commencer à jouer avec la saisie martiale (-K, -iv), forcez simplement le même résumé avec -md


J'ai testé le chiffrement et le déchiffrement AES avec la version 1.1.0a (téléchargée depuis openssl.org) et la version 1.0.2g-fips (depuis mon ubuntu 16.04)

Lors de l'utilisation du -p option avec 2 versions différentes de openssl , le IV et la clé sont différents :

$ LD_LIBRARY_PATH=~/openssl-1.1.0a/ ~/openssl-1.1.0a/apps/openssl aes-256-cbc -a -p -salt -in file -out file.enc
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
salt=6A80B2A3B4CFE048
key=637E17094DF7892A7AFC14957EAA13991DFFD3273A2459EDA613F3AD8A406C38
iv =6AC7CE5C9AADC6C46C633BF5124DAFBF

$ openssl aes-256-cbc -a -d -p -in file.enc -out file.dec
enter aes-256-cbc decryption password:
salt=6A80B2A3B4CFE048
key=6220AF2E25CB0B5D9994A0A1B05503D82AC5B0B4C9015E241CACBF8BF62DAC77
iv =2DC04EF29AA57478EBE606DF87277EA6
bad decrypt
140557073118872:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:592:

Je soupçonne une dérivation différente de la clé et de l'IV basée sur le sel avec les 2 versions.

Si vous souhaitez vous débarrasser de cette erreur de déchiffrement, vous pouvez supprimer le -salt et utilisez les options -K pour la clé et -iv dans votre commande openssl.


Ce problème peut également se produire entre OpenSSL 1.1 et LibreSSL. Dans ce cas, et dans d'autres cas où des résumés de messages plus sécurisés sont disponibles, vous devez éviter d'utiliser -md md5 pour chiffrer de nouveaux fichiers car l'algorithme MD5 présente de nombreuses vulnérabilités.

Vous devriez plutôt utiliser -md sha256 ou un autre résumé de message plus sécurisé pris en charge par toutes les versions. -md md5 ne doivent être utilisés que pour déchiffrer d'anciens fichiers, et ils doivent idéalement être rechiffrés à l'aide de sha256. Ceci est également mentionné dans la FAQ OpenSSL :

Un résumé de message est utilisé pour créer la clé de chiffrement/déchiffrement à partir d'une phrase de passe saisie par l'homme. Dans OpenSSL 1.1.0, nous sommes passés de MD5 à SHA-256. Nous l'avons fait dans le cadre d'un changement global visant à nous éloigner de l'algorithme MD5 désormais non sécurisé et défectueux. Si vous avez d'anciens fichiers, utilisez le drapeau "-md md5" pour les déchiffrer.

Pour vérifier quels résumés de messages sont pris en charge par les différentes versions que vous avez en jeu, exécutez openssl help :

LibreSSL 2.2.7 (inclus avec macOS 10.13 High Sierra) :

$ openssl help
…
Message Digest commands (see the `dgst' command for more details)
gost-mac          md4               md5               md_gost94
ripemd160         sha               sha1              sha224
sha256            sha384            sha512            streebog256
streebog512       whirlpool
…

OpenSSL 1.1f :

$ openssl help
…
Message Digest commands (see the `dgst' command for more details)
blake2b512        blake2s256        gost              md4
md5               rmd160            sha1              sha224
sha256            sha384            sha512
…

Linux
  1. Comment extraire les journaux entre deux horodatages ?

  2. Qu'est-ce que les différents BSD ont en commun ?

  3. Comment créer un tuyau bidirectionnel entre deux programmes ?

  4. Lignes communes entre deux fichiers ?

  5. Comment utiliser deux versions différentes de Wine sur la même installation ?

Comment basculer entre différentes versions de commandes sous Linux

Chiffrement et déchiffrement de fichiers simplifiés avec GPG

Chiffrement et déchiffrement de fichiers avec ccrypt

CORRECTIF :Google Chrome ne fonctionne pas sur Kali Linux

chmod ne fonctionne pas

yum install gcc-g++ ne fonctionne plus dans CentOs 6.4