web-dev-qa-db-fra.com

Sécurité du fichier lors du cryptage des fichiers directement avec la commande OpenSSL / et qu'en est-il du mot de passe de hachage SHA1 en premier?

J'utilise cette commande pour chiffrer des fichiers depuis un moment:

openssl aes-256-cbc -a -salt -in secrets.txt -out secrets.txt.enc

Ensuite, je tape un mot de passe.

Quelqu'un peut-il me dire, à gros parler, à quel point il serait difficile de craquer cela?

Je vois que cela utilise du sel, mais cela ne devrait pas vraiment améliorer la sécurité, sauf si vous ne stockez réellement le mot de passe haché quelque part (comme une base de données de connexions de site Web), n'est-ce pas? Comme je l'ai dit, je viens de crypter des fichiers localement, en tapant manuellement mon mot de passe à chaque fois.

Je comprends aussi que openssl _ utilise seulement une itération pour générer le IV afin que je suppose que ce n'est pas un processus très fastidieux! Corrigez-moi si je me trompe s'il vous plaît.

Dans votre estimation, quelle est la sécurité?


Question Bonus: Et si je sha1 hash le mot de passe d'abord?

echo -n "mypassword" |openssl sha1

et coller dans le hachage SHA1 lors de la cryptage des fichiers? Je sais que cela réduit la sécurité, car le cracker connaît désormais le format du mot de passe à coup sûr (hachage SHA1), mais combien cela pense-t-il que cela réduit la sécurité dans la pratique? Serait-il possible de boucler tout (ou suffisamment de) les hachages SHA1?

7
user21203

Voir la fin de - cette réponse : Qu'est-ce que OpenSSL doit convertir la phrase secrète en une clé de cryptage et IV est faible, car ce n'est que quelques invocations de MD5, qui n'est pas assez lente. Il n'ya aucun moyen de simplement modifier cela au sein de OpenSSL (aucune option de ligne de commande appropriée, celle-ci est codée en papier).

Pré-hachage, votre passhrast ne changerait pas beaucoup de choses. Faire beaucoup de hachage imbriquée renforcerait les choses un peu, mais pas à des niveaux idéaux, car le sel ne serait pas pris en compte tant que les dernières étapes (beaucoup de précomptes partagées seraient toujours faisables par l'attaquant). Le hachage de mot de passe, avec une lenteur configurable et des sels, n'est pas quelque chose qui tolère l'improvisation. À ce moment-là, il est beaucoup plus sûr et Plus simple à Ditch Openssl complètement et utilisez un meilleur outil. Je suggère GNUPG : l'outil de ligne de commande, avec son -c Drapeau, le cryptage symétrique basé sur le mot de passe et le fait-il beaucoup mieux que openssl enc.

11
Thomas Pornin

La sécurité de cette commande est directement reliquée à la sécurité du mot de passe que vous choisissez. À l'heure actuelle, AES-256-CBC n'est pas cassable pour que vous puissiez compter sur certains pour que vous ne puissiez obtenir les données en connaissant le mot de passe.

Hachage Le mot de passe fera très peu de différence. Les hachages de mot de passe sont utilisés pour masquer le mot de passe afin que même si quelqu'un ait le mot de passe stocké, ils ne connaissaient toujours pas le mot de passe des utilisateurs. Ceci est complètement hors de propos des fichiers cryptés. Le seul avantage serait qu'il s'agira de rendre votre phrase secrète de 40 caractères, mais ce ne serait que des caractères alpha d'un boîtier et d'un chiffre. Si quelqu'un savait qu'il réduirait le temps de la déchiffrer par une quantité très importante. L'avantage de l'utilisation d'un KDF comme PBKDF2 est de sorte qu'il faut plus de temps à la bruteforce correspondant à un mot de passe à un hachage. Donc, même s'il était utile d'utiliser un hachage à un moment donné, il serait plus facile de connaître simplement une brute de chaque hachage possible au lieu de calculer le hachage. La meilleure méthode consiste simplement à choisir un mot de passe qui prendrait beaucoup de temps à craquer.

Ce que vous devriez faire, c'est utiliser ZXCVBN pour choisir un bon mot de passe et utiliser cela. Actuellement, le mot de passe le plus rapide des mondes peut effectuer 350 milliards de mots de passe une seconde, donc avoir une phrase secrasse plus de 20 caractères plus en utilisant ZXCVBN pour vous assurer que cela ne peut pas être fissuré avec quelque chose comme une attaque de dictionnaire garantira que votre fichier ne sera pas capable d'être fissuré dans le prochain millénaire même s'ils ont mille de ces ordinateurs.

2
Eric

Les versions précédentes de OpenSSL ont utilisé un processus de dérivation de clé très faible pour dériver une clé de cryptage du mot de passe, comme indiqué dans les autres réponses. Cependant, la version 1.1.1 de OpenSSL prend désormais en charge la dérivation de clé à l'aide de PBKDF2, avec un sel généré aléatoirement et plusieurs itérations (10 000 par défaut) du hachage SHA256.

Pour chiffrer un fichier à l'aide de AES-256-CBC, avec un mot de passe:

 openssl aes-256-cbc -e -salt -pbkdf2 -iter 10000 -in plaintextfilename -out encryptedfilename

Pour décrypter:

 openssl aes-256-cbc -d -salt -pbkdf2 -iter 10000 -in encryptedfilename -out plaintextfilename

Voir https://www.openssl.org/docs/man1.1.1/man1/openssl-enc.html Pour plus d'informations.

0
mti2935