cClaude.rocks ☕ Le blog

[Nouvelles technologies, sciences et coups de gueule…]

Menu

Ce billet nécessite OpenSSL 1.1.1, pour vérifier votre version d’OpenSSL utiliser la commande suivante :

openssl version

Vous devriez avoir quelque chose comme :

OpenSSL 1.1.1  11 Sep 2018

Encrypter un fichier

openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in FICHIER_D_ENTREE -out FICHIER_DE_SORTIE

Par exemple :

openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in ~/chemin/README.md -out ~/chemin/README.md.crypt

Où les commutateurs ont la fonction suivante :

  • -aes-256-cbc est ce que vous devez utiliser pour une protection maximale ou la version 128 bits (avec aes-128-cbc). Notez que le 3DES (Triple DES) a été abandonné (déconseillé depuis 2017).L’AES est maintenant accéléré par tous beaucoup de processeurs modernes; vous pouvez simplement vérifier si votre CPU dispose du jeu d’instructions AES-NI, par exemple en utilisant grep aes /proc/cpuinfo.
  • -md sha512 est la variante la plus rapide de la famille de fonctions SHA-xxx et c’est de plus la méthode la plus sécurisée.
  • -pbkdf2 utilise l’algorithme PBKDF2 (Password-Based Key Derivation Function 2)
  • -iter 100000 défini le nombre 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 le fichier résultant (« brut force »). Cette option permet d’utiliser l’algorithme PBKDF2 pour dériver la clé.

Décrypter un fichier

openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -d -in FICHIER_D_ENTREE -out FICHIER_DE_SORTIE

Par exemple :

openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -d -in ~/chemin/README.md.crypt -out ~/chemin/README.md.decrypt

Il suffit de mettre les même paramètres et d'ajouter le commutateur -d.

Pour les anciennes versions d’OpenSSL

Notez que pour les versions antérieures à OpenSSL 1.1.1 à commencer par la version 1.1.0, il faut utiliser la syntaxe suivante :

openssl aes-256-cbc -in FICHIER_D_ENTREE -out FICHIER_DE_SORTIE

puis ajouter le commutateur -d pour l’opération réciproque.

Automatisation

Pour automatiser ces actions, vous aurez besoin de passer le mot de passe automatiquement, voici comment le faire:

openssl … -passin pass:LE_MOT_DE_PASS1 -passout pass:LE_MOT_DE_PASS2

Par exemple :

openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in README.md -out README.md.crypt -pass pass:test1

Notez que la syntaxe de la ligne de commande est toujours -pass suivi d’un espace, puis du type de phrase secrète que vous fournissez, c’est-à-dire pass: pour la phrase secrète simple, puis la phrase secrète réelle après les deux points (un mot de passe sans espace du coup).

La documentation précise que vous pouvez fournir d’autres sources de phrase secrète en procédant comme suit :

  • env:somevar pour obtenir le mot de passe d’une variable d’environnement, ici la variable somevar,
  • file:somepathname pour obtenir le mot de passe de la première ligne du fichier somepathname,
  • fd:number pour obtenir le mot de passe à partir du numéro de descripteur de fichier,
  • stdin pour lire à partir de l’entrée standard.

A notez que la documentation, fait référence aux options -passin et -passout pour « certaines commandes » en non à -pass. Il me semble que c’est un des points de la documentation qui est assez peu clair. Il est notoirement reconnu que la documentation d’OpenSSL n’est pas lipide, toute précision est bienvenue en commentaire, ce qui est assez logique si l’on considère l’étendue des fonctionnalités couverte pas cette commande.

Références

ᦿ


ℹ 2006 - 2021 | 🏠 Retour à l'accueil du domaine | 🏡 Retour à l'accueil du blog