Chiffrer un fichier avec openSSL
Peu de personnes le savent. OpenSSL ne permet pas seulement de manipuler des clefs asymétriques (certificats TLS), mais également de gérer des clefs symétriques. On peut donc utiliser ce logiciel à des fins de chiffrement réversible, pour des échanges de fichiers ou un chiffrement de sauvegardes, ou autres.
Comment chiffrer
openssl enc
est l’outil dont vous avez besoin.
Comment l’utiliser, quels paramètres ?
-e
/-d
: pour chiffrer (« encoding ») ou déchiffrer (« decoding »)-pass
: pour spécifier un mot de passe ou un fichier de mot de passe (préférable) ; exemple de syntaxe :-pass file:pass.txt
-salt
: pour rajouter un salage-aes-256-cbc
: ou n’importe quelle autre méthode de chiffrement (-ciphers pour connaître la liste de tous les algorithmes compatibles)-md
: choix de l’algorithme de signature
Exemple de commande : openssl enc -e -aes-256-cbc -salt -pass file:pass.txt -md sha-256 -in <plainfile> -out <cipheredfile>
.
Erreurs courantes
Le fichier résultat est juste un fichier binaire. Il ne stocke pas sa méthode de chiffrement. Il faut donc savoir comment il a été chiffré afin de le déchiffrer !
- Si vous avez chiffré vos données en AES 256 CBC, alors si vous ne spécifiez pas cet algorithme lors du déchiffrement, openSSL produira une erreur.
- Si vous avez salé votre fichier, alors vous devez le spécifier lors du déchiffrement.
- ainsi de suite
L’erreur la plus courante est de ne pas spécifier toutes les valeurs en ligne de commande. D’une version d’openSSL à une autre, ces valeurs peuvent changer. Le dernier changement en date est celui de la signature : les vieilles versions d’openSSL signaient en MD5 par défaut, les nouvelles versions signent en SHA2. Donc si vous avez chiffré des fichiers avec une ancienne version d’openSSL sans expliciter l’algorithme de signature, alors le déchiffrement avec une version récente d’openSSL produira une erreur (« EVP_DecryptFinal_ex:bad decrypt
« ) tant que vous ne préciserez pas « -md md5
« .
Pour aller plus loin
Le programme « GnuPG » (https://www.gnupg.org/) est souvent préféré à OpenSSL. Les deux utilisent les mêmes algorithmes de chiffrement, mais l’implémentation est différente (et non compatible entre les deux logiciels).
Souvent, on préfère OpenSSL pour ses API ou son intégration dans d’autres programmes.
Souvent, on préfère GnuPG pour sa facilité d’utilisation en ligne de commande (et on rejette OpenSSL pour les problèmes listés dans le paragraphe ci-dessus).
Je souhaiterais savoir est-il possible de chiffrer un répertoire grace à un certificat d’une PKI d’entreprise
Le chiffrement d’un répertoire est symétrique et non asymétrique. Ce ne sera pas avec un certificat qu’on fera ce chiffrement mais avec un autre type de secret (assimilé à un mot de passe). Cet autre objet pourrait être fourni par une PKI d’entreprise, oui. Par contre, en entreprise, la récupération de cet objet pourrait être délicate, s’il est stocké par exemple sur un périphérique de sécurité spécial (par exemple SafeNet 5110).