Comment changer le cryptage selon *** AVERTISSEMENT: dérivation de clé obsolète utilisée

16

Lorsque je crypte ou décrypte un fichier, je reçois *** WARNING : deprecated key derivation used. Using -iter or -pbkdf2 would be better.

Je ne comprends pas ce que cela signifie, comment je devrais modifier mes procédures. Pourriez-vous m'aider? Je crypte avec openssl des3 <input >output.des3et décrypte avec openssl des3 -d <input.des3 >output

À propos de l'environnement

Ubuntu 18.10

~$ openssl version OpenSSL 1.1.1 11 Sep 2018

Tommy Pollák
la source
1
3DES en tant que méthode de cryptage est en cours de retrait. L'avertissement vous suggère simplement d'utiliser une autre méthode, peut-être reportez-vous à crypto.stackexchange.com/questions/51629/… pour plus de détails.
guiverc
1
Cette erreur se produit pour tout type de chiffrement. Vous devez ajouter -pbkdf2 aux commandes de chiffrement et de déchiffrement.
Daniele Dellafiore
Désolé, mais pourriez-vous donner un exemple de la façon d'ajouter -pbkdf2 aux commandes? Je ne comprends pas comment cela devrait être ajouté.
Tommy Pollák
1
Dans votre exemple, il vous suffit de faire openssl des3 -e -pbkdf2 < input > output.des3et openssl des3 -d -pbkdf2 < input.des3 > output. Il se trouve que je suis également d'accord avec le premier commentaire selon lequel vous devriez utiliser un chiffrement de bloc différent au lieu de 3DES (DES date de 1977), un moyen facile de le faire est simplement de permuter aes256là où vous en avez actuellement des3dans ces commandes, d'utiliser AES ( AES 256 bits répond aux normes de sécurité actuelles).
joelhardi
Merci! Maintenant, cela fonctionne et sans avertissements en utilisant aes256. Donc, la question est répondue.
Tommy Pollák

Réponses:

12

En comparant le Synopsys des deux versions principales et récentes d'OpenSSL, permettez-moi de citer les pages de manuel.

OpenSSL 1.1.0

openssl enc -ciphername [-help] [-ciphers] [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md digest] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-engine id]

OpenSSL 1.1.1

openssl enc -cipher [-help] [-ciphers] [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a] [-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md digest] [-iter count] [-pbkdf2] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-rand file...] [-writerand file] [-engine id]

Il y a évidemment de plus grandes différences, à savoir compte tenu de cette question, il manque ces deux commutateurs dans le 1.1.0:

  • pbkdf2

  • iter


Vous avez maintenant essentiellement deux options. Ignorez l'avertissement ou ajustez votre commande de chiffrement à quelque chose comme:

openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in InputFilePath -out OutputFilePath

Où ces commutateurs:

  • -aes-256-cbcest ce que vous devez utiliser pour une protection maximale ou la version 128 bits, le 3DES (Triple DES) a obtenu abandonné il y a quelque temps, voir Triple DES a été désapprouvée par le NIST en 2017 , alors que AES s'accéléré par les processeurs modernes par beaucoup; vous pouvez simplement vérifier si votre CPU dispose du jeu d'instructions AES-NI, par exemple en utilisant grep aes /proc/cpuinfo; gagner, gagner

  • -md sha512 est la variante la plus rapide de la famille de fonctions SHA-2 par rapport à SHA-256 alors qu'elle pourrait être un peu plus sécurisée; gagner, gagner

  • -pbkdf2: utiliser l' algorithme PBKDF2 (fonction de dérivation de clé basée sur un mot de passe 2)

  • -iter 100000 remplace le nombre d'itérations par défaut du mot de passe, en citant la page de manuel:

    Utilisez un nombre donné d'itérations sur le mot de passe pour dériver la clé de chiffrement. Des valeurs élevées augmentent le temps nécessaire pour forcer brutalement le fichier résultant. Cette option permet d'utiliser l'algorithme PBKDF2 pour dériver la clé.

LinuxSecurityFreak
la source
1
Ensuite, comment le décrypter lors de l'utilisation openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -in InputFilePath -out OutputFilePath
l mingzhi
1
En ajoutant simplement -dà la commande:openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -d -in InputFilePath
Eduard Itrich
1
Je suis presque sûr qu'il y a quelques problèmes avec cette suggestion. Selon en.wikipedia.org/wiki/Key_derivation_function, vous voulez la variante la plus lente de l'algorithme de dérivation de clé. En d'autres termes, n'utilisez pas sha512 selon fr.wikipedia.org/wiki/PBKDF2 in the year 2000 the recommended minimum number of iterations was 1000, but the parameter is intended to be increased over time as CPU speeds increase - je recommanderais donc entre 10 000 et 100 000 itérations plutôt que 1000.
oskarpearson
@oskarpearson C'est vrai, je l'ai lu tout à l'heure. Mise à jour de la réponse.
LinuxSecurityFreak
@oskarpearson Quel hachage recommandez-vous alors?
Anthony