Chiffrement/déchiffrement ne fonctionne pas bien entre les deux différentes versions d'openssl
J'ai téléchargé et compilé openssl-1.1.0
.
Je peux chiffrer et déchiffrer à l'aide du même fichier exe de openssl
(comme c'est ici)
me@ubuntu:~/openssl-1.1.0$ LD_LIBRARY_PATH=. ./apps/openssl aes-256-cbc -a -salt -in file.txt -out file.txt.enc
enter aes-256-cbc encryption password: 123
Verifying - enter aes-256-cbc encryption password:
me@ubuntu:~/openssl-1.1.0$ LD_LIBRARY_PATH=. apps/openssl aes-256-cbc -a -d -in file.txt.enc -out file.txt.dec
enter aes-256-cbc decryption password: 123
Ce openssl
utilise: libcrypto.so.1.1, libssl.so.1.1
Quand j'ai essayer de déchiffrer avec la openssl
installé sur mon ubuntu, qui utilise:
/lib/x86_64-linux-gnu/libssl.so.1.0.0, /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
J'obtiens une erreur:
me@ubuntu:~/openssl-1.1.0$ openssl aes-256-cbc -a -d -in file.txt.enc -out file.txt.dec2
enter aes-256-cbc decryption password: 123
bad decrypt
140456117421728:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:539:
Ce qui peut provoquer cela?
Grâce
- L'approvisionnement de votre test, les valeurs, les clés, iv, plaine de données, enxrypted données juste avant et après le chiffrement/déchiffrement des opérations. La clé, c'est de court, AES prend uniquement en charge de 128, 192 et 256 bits clés, vous êtes en s'appuyant sur la touche de rembourrage qui ne fait pas partie du standard AES.
- Stack Overflow est un site pour la programmation et les questions de développement. Cette question semble être hors-sujet, car il n'est pas sur la programmation ou le développement. Voir Quels sont les sujets que pouvez-vous nous parler ici dans le Centre d'Aide. Peut-être Super-Utilisateur ou Unix & Linux Stack Exchange serait un meilleur endroit pour demander cela. Voir aussi Où dois-je poster des questions à propos de Dev Ops?
Vous devez vous connecter pour publier un commentaire.
La valeur par défaut de digestion a été modifié à partir de MD5 SHA256 dans Openssl 1.1
Essayez d'utiliser -md md5
Le laid détails:
Le mot de passe saisi n'est pas utilisé comme il est par aes (ou chiffrement) mais la commande implicitement tire une clé à partir d'elle. La dérivation de clé utilise message digest qui a été changé dans openssl 1.1 Utilisation SHA256 pas MD5 par défaut digérer.
Dans le cas où vous voulez le garder simple mot de passe, et ne pas commencer à jouer avec l'incrustation martiaux (-K,-iv) juste en vigueur le même condensé avec -md
md5
. C'est l'insécurité et brisé.J'ai testé l'AES chiffrement et déchiffrement avec la version 1.1.0 un (téléchargé à partir de openssl.org) et la version 1.0.2 g-fips (à partir de mon ubuntu 16.04)
Lors de l'utilisation de la
-p
option avec 2 versions différentes deopenssl
, le IV et les clés sont différentes:Je soupçonne une autre dérivation de la clé et IV basé sur le sel avec les 2 versions.
Si vous voulez vous débarrasser de ce déchiffrement d'erreur, vous pouvez supprimer le
-salt
option 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ù la plus sûre des résumés de message sont disponibles, vous devriez éviter d'utiliser des
-md md5
pour chiffrer les nouveaux fichiers depuis l'algorithme MD5 possède une vaste vulnérabilités.Vous devriez plutôt utiliser
-md sha256
ou certains autres plus sécurisé message digest pris en charge par toutes les versions.-md md5
devrait seulement être utilisé pour décrypter les anciens fichiers, et ils devraient idéalement être chiffré à l'aide de sha256. Cela est également mentionné dans OpenSSL FAQ:Pour vérifier les résumés de message sont pris en charge par les différentes versions que vous avez à jouer, courir
openssl help
:LibreSSL 2.2.7 (fourni avec macOS 10.13 High Sierra):
OpenSSL 1.1 f: