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
…