URL: https://linuxfr.org/users/gouttegd/journaux/gfsecret-0-5-0 Title: Gfsecret 0.5.0 Authors: gouttegd Date: 2021年07月18日T23:38:29+02:00 License: CC By-SA Tags: gestionnaire_de_mots_de_passe et debian Score: 37 Jour’Nal, Il y a cinq ans, je t’entretenais de [gfsecret](https://linuxfr.org/users/gouttegd/journaux/gfsecret-le-secret-reparti-en-pratique), un couple d’outils de mon cru pour faciliter la mise en œuvre du [partage de secret](https://fr.wikipedia.org/wiki/Secret_r%C3%A9parti). J’utilise toujours ces outils aujourd’hui, et comme je viens de publier la [version 0.5.0](https://git.incenp.org/damien/gfsecret/releases/tag/gfsecret-0.5.0), c’est l’occasion de te tenir au courant de ce qui a changé depuis 2016. # Rappel : notion « d’URI de fragment » Un concept clef du projet est celui des « URI de fragment » (_share URIs_), qui décrivent l’emplacement d’un fragment de secret. Ces URIs sont utilisées par _gfsec-split_ pour savoir où répartir les fragments générés après avoir partagé un secret, et par _gfsec-use_ pour savoir où récupérer les fragments pour reconstituer le secret d’origine. Quelques exemples d’URI de fragment : * `file:///home/alice/fragment.045` indique un fragment sur le système de fichier local ; * `label://ALICEKEY/fragment.163` indique un fragment à la racine d’un périphérique de stockage USB identifié par l’étiquette `ALICEKEY` ; * `mtp://RF8GB1X407P/Documents/fragment?share=195` indique un fragment sur le périphérique MTP identifié par son numéro de série (RF8GB1X407P) ; * `https://example.com/private/fragment.217` indique un fragment sur un serveur web. # Changement de syntaxe pour gfsec-split Un premier changement mineur, inspiré par [un commentaire](https://linuxfr.org/users/gouttegd/journaux/gfsecret-le-secret-reparti-en-pratique#comment-1672313) sur mon précédent journal, concerne la syntaxe d’appel du programme _gfsec-split_. Les URI de fragments sont désormais considérées comme des _arguments_ et non plus comme des _options_. C’est-à-dire qu’une invocation comme la suivante : ```sh $ gfsec-split \ -s file:///home/alice/.local/share/gfsecret/mysecret \ -s label://ALICEKEY/mysecret \ -s mtp://RF8GB1X407P/Documents/mysecret \ ~/Documents/LinuxFR-Gate/preuves.txt ``` où les URI de fragments sont spécifiées par l’intermédiaire des options `-s`, sera désormais (depuis la version 0.4.0) attendue comme suit : ```sh $ gfsec-split \ ~/Documents/LinuxFR-Gate/preuves.txt \ file:///home/alice/.local/share/gfsecret/mysecret \ label://ALICEKEY/mysecret \ mtp://RF8GB1X407P/Documents/mysecret ``` où les URI de fragments sont spécifiées à la fin de la ligne de commande, après l’argument indiquant le fichier à partager. C’est plus logique puisque ces URI ne sont pas du tout _optionnelles_. (En réalité, par souci de compatibilité _gfsec-split_ accepte toujours l’option `-s`, mais cette option n’est plus affichée dans l’aide en ligne ni mentionnée dans la page de manuel.) # Menu interactif Une nouveauté plus significative est l’introduction, à partir de la version 0.4.1, d’un menu interactif (option `-i`) permettant à l’utilisatrice de _gfsec-split_ de choisir où envoyer les fragments sans avoir à spécifier manuellement des URI. L’invocation de _gfsec-split_ devient alors : ```sh $ gfsec-split -i ~/Documents/LinuxFR-Gate/preuves.txt Sélectionnez un périphérique pour le fragment numéro 1 : (1) Système de fichiers local (2) Volume externe étiquetté 'ALICEKEY' (3) Samsung Galaxy A3 (x) Terminé Votre choix ? ``` L’utilisatrice sélectionne alors le périphérique (le système de fichier local étant ici considéré, pour simplifier, comme un « périphérique »), puis entre le nom de fichier (avec son chemin éventuel) à utiliser sur le périphérique en question. Elle répète l’opération autant de fois qu’elle veut créer de fragments, puis sélectionne `(x) Terminé` lorsque tous les fragments voulus ont été spécifiés. Il est possible d’utiliser simultanément le menu interactif _et_ des URI spécifiées en argument sur la ligne de commande. Une limitation du menu interactif pour l’instant est qu’il ne permet pas de sélectionner un _dossier_ sur un périphérique. Pour stocker un fragment dans un dossier plutôt qu’à la racine du périphérique sélectionné, il faut saisir manuellement le chemin d’accès exact vers le dossier voulu. Le dossier en question doit par ailleurs déjà exister sur le périphérique, _gfsec-split_ ne le créera pas (à la place une erreur sera renvoyée). # Gestion plus aisée des fichiers de configuration Par défaut, _gfsec-split_ créée un fichier de configuration portant le même que le fichier à partager et stocké dans le dossier `$XDG_CONFIG_HOME/gfsecret`. L’option `-c` permet de spécifier un autre emplacement pour le fichier de configuration. Si son argument contient un séparateur de chemin d’accès (`/`) ou un point, alors il est utilisé tel quel ; sinon, l’argument est interprété comme un nom de fichier à enregistrer dans le dossier `$XDG_CONFIG_HOME`. Ainsi : * `gfsec-split ~/Documents/LinuxFR-Gate/preuves.txt [...]` : pas d’option `-c`, comportement par défaut, le fichier de configuration est `$XDG_CONFIG_HOME/gfsecret/preuves.conf` ; * `gfsec-split -c partage.conf ~/Documents/LinuxFR-Gate/preuves.txt [...]` : la configuration sera enregistrée dans un fichier `partage.conf`, dans le dossier courant au moment de l’invocation de `gfsec-split` ; * `gfsec-split -c partage ~/Documents/LinuxFR-Gate/preuves.txt [...]` : la configuration sera enregistrée dans `$XDG_CONFIG_HOME/gfsecret/partage.conf`. L’option `-c` de _gfsec-use_ obéit à la même logique : * `gfsec-use -c partage.conf` : le fichier est cherché relativement au dossier courant ; * `gfsec-use -c partage` : le fichier `partage.conf` est cherché dans le dossier `$XDG_CONFIG_HOME/gfsecret`. # Commandes de destruction et restauration du fichier partagé Normalement, lorsque _gfsec-split_ a fini de créer les fragments, il supprime le fichier d’origine. À l’inverse, lorsque _gfsec-use_ a fini de rassembler les fragments, il re-créée ce fichier (puis le re-supprime lorsque l’utilisatrice a fait ce qu’elle voulait avec). Il est maintenant possible de spécifier des commandes arbitraires à exécuter pour « détruire » et « reconstruire » le secret d’origine, si une simple suppression et re-création de fichier n’est pas appropriée. Par exemple, si le secret à partager est une clef secrète OpenPGP stockée dans le trousseau privée de GnuPG, on pourra appeler _gfsec-split_ avec les options suivantes : ```sh $ gfsec-split \ --destroy-cmd "gpg-connect-agent 'DELETE_KEY --force DE389DE3[...]7866BA8F' /bye" \ --restore-cmd "gpg --import -" \ [...] ``` La commande `gpg-connect-agent...`, appelée pour détruire le secret, demandera à l’agent GnuPG de supprimer la clef identifiée par le _keygrip_ mentionné (`DE389DE3...`). À l’inverse, la commande `gpg --import -`, appelée une fois le secret reconstitué, et qui recevra le secret en question sur son entrée standard, ré-importera la clef dans les trousseaux de GnuPG. En principe d’autres utilisations de ces options sont bien sûr imaginables, mais en pratique c’est le seul usage que j’ai de ces options – le projet _gfsecret_ a dès le départ été conçu dans l’idée de partager des clefs secrètes OpenPGP, et ça reste la principale raison pour laquelle je l’utilise et le maintiens. En fait, le partage de clefs secrètes OpenPGP est tellement le cas d’utilisation primaire que le projet est désormais fourni avec un script appelé `gfsec-split-gpg` qui « enveloppe » `gfsec-split` pour partager automatiquement une clef OpenPGP en épargnant à l’utilisatrice le soin d’obtenir le _keygrip_ de la clef et de spécifier manuellement les options ci-dessus. Le script s’utilise comme _gfsec-split_, sauf qu’au lieu de prendre un nom de fichier à partager en argument, il va automatiquement chercher la clef primaire secrète dans le trousseau GnuPG de l’utilisatrice. # Support des plans http:// et https:// Dernière nouveauté majeure, et principale nouveauté de la version 0.5.0 publiée ce mois-ci, l’ajout des plans `http://` et `https://` permettant d’envoyer / récupérer un fragment vers / depuis un serveur web. La prise en charge de ces plans par _gfsec-split_ est quelque peu limitée, et surtout suppose que le serveur web cible autorise le dépôt de fichier. En pratique, il est probable qu’il sera souvent préférable, pour stocker un fragment sur un serveur distant, de créer le fragment sur le système de fichiers local (avec une URI de plan `file://`), puis de déposer le fragment sur le serveur distant par tout moyen approprié (par exemple avec `scp`) — il ne faudra alors pas oublier de mettre à jour le fichier de configuration généré par _gfsec-split_ pour remplacer l’URI de plan `file://` par une URI de plan `http(s)://`. Si une authentification est requise pour déposer (_gfsec-split_) ou récupérer (_gfsec-use_) un fragment depuis une URI de plan `http(s)://`, les deux programmes s’attendent à obtenir le nom d’utilisateur et le mot de passe nécessaires depuis le fichier classique `.netrc`. C’est à l’heure actuelle le seul moyen de fournir de quoi s’authentifier. L’utilisation du [Secret Service](https://specifications.freedesktop.org/secret-service/latest/) pour obtenir les identifiants depuis le gestionnaire de mots de passe du système (e.g., Gnome Keyring) ~~est à l’étude~~ est une idée en l’air que je viens d’avoir en écrivant ce paragraphe. # Disponible dans une Debian Testing près de chez vous Dernière nouveauté, mais qui n’est pas de mon fait, _gfsecret_ s’est glissé dans les dépôts de Debian. La version 0.4.6 (fournissant presque toutes les fonctionnalités décrites ci-dessus, à part la prise en charge des URI `http(s)://`) est ainsi disponible dans [Testing](https://packages.debian.org/bullseye/gfsecret) et dans [Sid](https://packages.debian.org/sid/gfsecret), ainsi que dans [Ubuntu](https://packages.ubuntu.com/focal/gfsecret). Merci à [Thomas Perret](https://git.incenp.org/damien/gfsecret/issues/1) pour l’empaquetage ! (Comme quoi, les distros GNU/Linux acceptent vraiment des logiciels de n’importe qui, c’est scandaleux !)

AltStyle によって変換されたページ (->オリジナル) /