web-dev-qa-db-fra.com

Le chiffrement openssl aes-256-cbc est-il sûr pour la sauvegarde hors site

J'ai environ 20000 fichiers (environ 9 Go) dont chacun est chiffré à l'aide de openssl enc -aes-256-cbc -in infile -out outfile -k mypassword commande. Chaque fichier utilise le même mot de passe. Ma version openssl est 1.1.0e.

Serai-je vulnérable à des attaques connues si je sauvegarde ces fichiers sur un emplacement hors site? Sinon, quelles sont mes alternatives?

9
yasar

Vous ne devez jamais utiliser l'utilitaire de ligne de commande d'OpenSSL pour le chiffrement à usage général. Il est en fait conçu uniquement comme un test des routines de chiffrement internes de la bibliothèque. Pour cette raison, il y a quelques problèmes inhérents à son utilisation quand une réelle confidentialité et intégrité sont nécessaires:

  • Vous serez vulnérable aux attaques de malléabilité , car le mode CBC n'est pas authentifié. Cela peut permettre à vos fichiers d'être modifiés de certaines manières prévisibles sans connaître la clé de cryptage.
  • Aucune vérification d'intégrité signifie que le déchiffrement avec la mauvaise clé peut réussir, malgré la sortie de charabia corrompu. Les utilitaires conçus pour le cryptage des fichiers vous diront si la clé est erronée.
  • Le hachage par défaut utilisé pour dériver la clé principale est MD5, ce qui est loin d'être idéal. Il est possible de modifier le hachage, par exemple avec -md sha512, Mais il n'utilisera toujours pas d'étirement des touches.
  • Les nouvelles versions peuvent ne pas être en mesure de déchiffrer les fichiers précédemment chiffrés par défaut. Lorsque la valeur de hachage par défaut est passée de MD5 à SHA-512, il a fallu un -md md5 Explicite pour fonctionner à nouveau.
  • La clé et l'IV sont dérivées de votre mot de passe d'entrée. L'utilisation du même mot de passe pour crypter plusieurs fichiers entraînera la réutilisation IV. C'est mauvais pour le mode CBC et fatal pour le mode CTR.
  • Ce n'est pas bien testé. Pour de nombreuses versions d'OpenSSL, enc utilisant le chiffrement en mode GCM a fonctionné, mais pas le déchiffrement. Cela pourrait même encore être le cas.

Ce n'est pas unique à la commande enc. L'utilitaire de ligne de commande OpenSSL a d'autres pièges lorsque l'on tente de l'utiliser pour autre chose que de tester la bibliothèque. Un autre exemple est la commande s_client, Utilisée pour se connecter à un serveur via SSL ou TLS, qui ne valide pas le certificat de la cible. Dans l'ensemble, vous ne devez pas utiliser l'utilitaire OpenSSL . Utilisez simplement GnuPG:

La seule fois où j'utiliserais OpenSSL directement, c'est si j'avais besoin de chiffrer quelque chose avec une clé complètement aléatoire ou une clé brute spécifique et IV et que je ne me souciais pas de l'intégrité des messages. Par exemple, l'écriture d'un flux pseudo-aléatoire amorcé par le noyau sur stdout peut se faire avec:

openssl aes-128-ctr -nosalt -k $(xxd -l16 -c16 -ps /dev/urandom) -in /dev/zero

De même, le décryptage d'un blob de données chiffrées simples lorsque vous connaissez à la fois la clé brute et le IV brut en hexadécimal (en évitant le besoin de -md Pour la dérivation de clé) pourrait être fait avec:

openssl aes-128-cbc -d -nosalt -K $hex_key -iv $hex_iv -in infile -out outfile

Mais pour le chiffrement de fichiers à usage général? Utilisez simplement GnuPG.

13
forest