Je veux crypter et décrypter un fichier en utilisant un seul mot de passe.
Comment puis-je utiliser OpenSSL pour cela?
encryption
openssl
un F.
la source
la source
PKCS5_PBKDF2_HMAC
. Vous devez utiliser lesEVP_*
fonctions pour crypter et décrypter. Voir EVP Symmetric Encryption and Decryption sur le wiki OpenSSL. En fait, vous devriez probablement utiliser un cryptage authentifié car il offre à la fois la confidentialité et l'authenticité. Voir Cryptage et décryptage authentifiés EVP sur le wiki OpenSSL.Réponses:
Crypter:
Déchiffrer:
Plus de détails sur les différents drapeaux
la source
-md sha256
à votre commande d'encodage et de décodage si vous prévoyez d'utiliser ce fichier sur une autre machine. Cela devrait vous couvrir contre les incompatibilités / différences de version d'OpenSSLRéponse courte:
Vous voudrez probablement utiliser à la
gpg
place deopenssl
donc consultez "Notes supplémentaires" à la fin de cette réponse. Mais pour répondre à la question en utilisantopenssl
:Pour crypter:
Pour décrypter:
Remarque: Un mot de passe vous sera demandé lors du chiffrement ou du déchiffrement.
Longue réponse:
Votre meilleure source d'informations pour
openssl enc
serait probablement: https://www.openssl.org/docs/man1.1.1/man1/enc.htmlLigne de commande:
openssl enc
prend la forme suivante:Explication des paramètres les plus utiles par rapport à votre question:
Notes complémentaires:
Bien que vous ayez spécifiquement posé des questions sur OpenSSL, vous voudrez peut-être envisager d'utiliser plutôt GPG à des fins de chiffrement sur la base de cet article OpenSSL vs GPG pour chiffrer les sauvegardes hors site?
Pour utiliser GPG pour faire de même, vous utiliseriez les commandes suivantes:
Pour crypter:
Pour décrypter:
Remarque: Un mot de passe vous sera demandé lors du chiffrement ou du déchiffrement.
la source
gpg
me permet de décrypter un fichier sans être invité à saisir un mot de passe. Il semble que le mot de passe soit stocké pendant une certaine période de temps, ce que je ne veux pas.--no-symkey-cache
désactive la mise en cache lors de l'utilisation de gpg avec--symmetric
, même si l'agent est en cours d'exécution.Crypter:
Déchiffrer:
Pour plus de détails, consultez la
openssl(1)
documentation.la source
-k symmetrickey
par-pass stdin
ou-pass 'pass:PASSWORD'
-k symmetrickey
est trompeur. L'-k
option est utilisée pour spécifier un mot de passe, dont OpenSSL dérive la clé symétrique. Si vous souhaitez spécifier la clé symétrique, vous devez utiliser l'-K
option.N'UTILISEZ PAS LA DÉRIVATION DE CLÉ PAR DÉFAUT D'OPENSSL.
Actuellement, la réponse acceptée en fait usage et elle n'est plus recommandée et sécurisée.
Il est très possible pour un attaquant de simplement forcer brutalement la clé.
https://www.ietf.org/rfc/rfc2898.txt
Faites ceci:
openssl enc -aes-256-cbc -pbkdf2 -iter 20000 -in hello -out hello.enc -k meow
openssl enc -d -aes-256-cbc -pbkdf2 -iter 20000 -in hello.enc -out hello.out
Remarque : les itérations de décryptage doivent être les mêmes que les itérations de cryptage.
Les itérations doivent être au minimum de 10000. Voici une bonne réponse sur le nombre d'itérations: https://security.stackexchange.com/a/3993
De plus ... nous avons suffisamment de personnes ici recommandant GPG. Lisez la fichue question.
la source
Pour crypter:
Pour décrypter:
bf === Blowfish en mode CBC
la source
Mettre à jour à l'aide d'une clé publique générée au hasard.
Encypt:
Déchiffrer:
J'ai un tutoriel complet à ce sujet sur http://bigthinkingapplied.com/key-based-encryption-using-openssl/
la source
Notez que l'OpenSSL CLI utilise un algorithme non standard faible pour convertir la phrase secrète en une clé, et l'installation des résultats GPG dans divers fichiers ajoutés à votre répertoire personnel et un processus d'arrière-plan de l'agent gpg en cours d'exécution. Si vous souhaitez une portabilité et un contrôle maximum avec les outils existants, vous pouvez utiliser PHP ou Python pour accéder aux API de niveau inférieur et transmettre directement une clé AES complète et IV.
Exemple d'invocation PHP via Bash:
Cela produit:
Vous pouvez également utiliser la
openssl_pbkdf2
fonction PHP pour convertir une phrase secrète en clé en toute sécurité.la source
Il y a un programme open source que je trouve en ligne, il utilise openssl pour crypter et décrypter des fichiers. Il le fait avec un seul mot de passe. La grande chose à propos de ce script open source est qu'il supprime le fichier non chiffré d'origine en déchiquetant le fichier. Mais la chose dangereuse est qu'une fois que le fichier original non crypté a disparu, vous devez vous assurer de vous souvenir de votre mot de passe, sinon ils ne pourront pas décrypter votre fichier autrement.
Voici le lien c'est sur github
https://github.com/EgbieAnderson1/linux_file_encryptor/blob/master/file_encrypt.py
la source
Comme mentionné dans les autres réponses, les versions précédentes d'OpenSL utilisaient une fonction de dérivation de clé faible pour dériver une clé de chiffrement AES à partir du mot de passe. Cependant, openssl v1.1.1 prend en charge une fonction de dérivation de clé plus puissante, où la clé est dérivée du mot de passe à l'aide
pbkdf2
d'un sel généré de manière aléatoire, et plusieurs itérations de hachage sha256 (10 000 par défaut).Pour crypter un fichier:
Pour décrypter un fichier:
la source
Commentaires supplémentaires à mti2935 bonne réponse.
Il semble que plus l'itération est élevée, meilleure est la protection contre la force brute, et vous devriez utiliser une itération élevée car vous pouvez vous permettre des performances / ressources.
Sur mon mon ancien Intel i3-7100 chiffrant un fichier assez gros de 1,5 Go:
Pas vraiment de différence, mais je n'ai pas vérifié l'utilisation de la mémoire (?)
Avec les GPU d'aujourd'hui et des lendemains encore plus rapides, je suppose que des milliards d'itérations en force brute semblent possibles toutes les secondes.
Il y a 12 ans, une
NVIDIA GeForce 8800 Ultra
itération de plus de 200 000 millions d'itérations par seconde (hachage MD5)source: Ainane-Barrett-Johnson-Vivar-OpenSSL.pdf
la source