Comment taper le mot de passe d'un fichier .gpg uniquement lors de son ouverture

17

(Je comprends les implications de sécurité des éléments suivants, et je suis d'accord avec eux.)

J'ai un seul fichier crypté dans mon répertoire org, diary.org.gpg. Je n'ai jamais fait de configuration spéciale pour que ça marche, toujours

  1. Chaque fois que je visite le fichier, je suis invité à entrer le mot de passe de cryptage. Qui est genial.
  2. Chaque fois que j'enregistre le tampon, on me demande à nouveau le mot de passe deux fois. Quel est mon problème .

Notez que je n'ai rien configuré pour que cela fonctionne, donc toutes les réponses concernant les agents ou les trousseaux de clés devront venir avec des instructions de configuration.

J'ai pensé à conserver le mot de passe écrit quelque part à l'intérieur du fichier (dans l'en-tête ou les commentaires de fin de fichier). Ensuite, chaque fois que j'enregistre, Emacs peut lire le mot de passe dans le tampon et l'utiliser au lieu de me le demander. Mais quand j'ai commencé à regarder cela, je me suis complètement perdu quelque part à l'intérieur epa.el.

Q: Comment envoyer un mot de passe directement d'Emacs au système / processus de chiffrement lors de l'enregistrement du tampon, au lieu d'être invité à le faire?

Tout le reste (trouver le mot de passe dans le tampon), je peux me comprendre. Je me suis juste perdu en essayant de comprendre comment Emacs était interfacé avec gpg.

Notez que je suis sur Ubuntu, Arch Linux et Windows. C'est pourquoi ma première idée était une solution centrée sur emacs.
Je peux vivre avec une solution qui ne fonctionne pas sur Windows, tant que je peux toujours accéder au fichier dessus de manière manuelle.

Malabarba
la source
Je pense que ceci: orgmode.org/worg/org-tutorials/encrypting-files.html#sec-5 est ce que vous voulez (l'agent gpg).
wvxvw
@wvxvw Peut-être. Cela ne dit rien sur l'épargne, donc je vais devoir essayer.
Malabarba
Pour être honnête, GPG et les programmes associés ont une interface utilisateur remarquablement mauvaise. Il est vraiment difficile de comprendre ce qu'ils font à partir de l'interface ou de la documentation. Mais ma compréhension de l'objectif gpg-agentest qu'il s'agit de ssh-agentstocker les mots de passe que vous avez, une fois que vous les activez. Donc, vous ne serez pas invité à entrer le mot de passe ni lorsque vous ouvrez un fichier, ni lorsque vous l'enregistrez (tant que l'agent se souvient du mot de passe), mais je ne pense pas que cela s'étende à la phrase secrète, qui est un peu stupide , si vrai.
wvxvw
Vous souhaitez probablement configurer gpg-agentcorrectement, afin qu'il cache la clé pendant un certain temps? :)
Günther Noack
1
@wvxvw Peut-être que c'était le cas auparavant? J'ai trouvé les pages de manuel de ces outils assez détaillées et l'interface (CLI) est ce que l'on attend généralement des programmes basés sur un terminal.
legends2k

Réponses:

12

Cryptage à l'aide d'un mot de passe + clé

Cela n'enregistre pas le mot de passe directement dans le fichier mais fait quelque chose de similaire sans aucun risque de sécurité et vous aide à réaliser ce que vous voulez.

  • Vous devez utiliser un cryptage asymétrique pour que votre mot de passe soit associé à un identifiant de messagerie dans un trousseau de clés .

  • Enregistrez ce qui suit en haut de votre fichier .gpg

-*- epa-file-encrypt-to: ("[email protected]") -*-

Le mot de passe est demandé la toute première fois que le fichier est enregistré / créé. Mais après cela, le mot de passe n'est demandé qu'une seule fois à chaque fois que vous ouvrez le fichier enregistré

Le seul hic est que vous ne devez pas perdre le fichier de clés qui est enregistré ~/.gnupg/par défaut.

Configuration GPG

Configuration d'Emacs

Aucune configuration n'est nécessaire pour cela dans emacs.

Installation du système

Mais vous devez avoir votre environnement système prêt avec quelques bibliothèques pour que la fonctionnalité GPG fonctionne.

Au moment de la configuration, j'ai dû installer les éléments suivants:

  • gpgme-1.5.3
  • libgpg-error-1.17
  • libksba-1.3.2
  • libassuan-2.2.0
  • libgcrypt-1.6.2
  • gnupg-2.0.26
  • pinentry-0.9.0

J'avais besoin d'une ou deux des bibliothèques ci-dessus et j'ai fini par installer les autres car il s'agissait de dépendances obligatoires ou facultatives.

Une fois que tout est installé, faites

> gpg --gen-key

Et générez vous-même une clé qui n'expire jamais et associez-la à votre vrai nom et à votre adresse e-mail.

La clé générée sera enregistrée dans votre ~/.gnupg/répertoire.

Modification de l'emplacement du trousseau de clés

Vous pouvez modifier l'emplacement du trousseau en modifiant $GNUPGHOME, en utilisant --homedirou les --keyringoptions de gpg.

De man gpg:

--keyring file

Ajoutez un fichier à la liste actuelle des trousseaux de clés. Si le fichier commence par un tilde et une barre oblique, ceux-ci sont remplacés par le répertoire $ HOME. Si le nom de fichier ne contient pas de barre oblique, il est supposé se trouver dans le répertoire personnel de GnuPG ("~ / .gnupg" si --homedir ou $ GNUPGHOME n'est pas utilisé).

Notez que cela ajoute un trousseau de clés à la liste actuelle. Si l'intention est d'utiliser seul le trousseau de clés spécifié, utilisez --keyring avec --no-default-keyring.

Utilisation de GPG avec emacs

Dans emacs, vous créez simplement un fichier avec une .gpgextension. Par exemple, si le fichier était à l'origine auth.el, vous le renommeriez auth.el.gpg.

Placez cette ligne en haut du fichier:

;; -*- epa-file-encrypt-to: ("[email protected]") -*-

Notez que j'ai utilisé les caractères de commentaires elisp ;;comme l'exemple de fichier ici auth.el.gpg.

Utilisez l'adresse e-mail exacte que vous avez utilisée au moment de la génération de la clé.

Lorsque vous essayez de l'enregistrer, emacs affichera cette invite dans un tampon:

Select recipients for encryption.
If no one is selected, symmetric encryption will be performed.  
- `m' to mark a key on the line
- `u' to unmark a key on the line
[Cancel][OK]

  u <GPG KEY> <YOUR NAME> (<YOUR GPG KEY NAME>) <<YOUR GPG KEY EMAIL>>

Naviguez le point jusqu'à la ligne contenant la clé, appuyez sur m.

Accédez au point jusqu'au [OK]bouton et appuyez sur <return>.

Vous pouvez maintenant enregistrer le fichier et tuer ce tampon de fichier.

La prochaine fois que vous ouvrirez ce fichier .gpg, vous serez invité à entrer le mot de passe une seule fois, puis les enregistrements consécutifs seront sans invite de mot de passe.

Plus d'informations

Kaushal Modi
la source
Si je perds le fichier de clés, pourrai-je toujours ouvrir le fichier crypté avec le mot de passe habituel ou est-il perdu pour toujours?
Malabarba
@Malabarba Je n'ai pas essayé ça mais je crois que c'est perdu pour toujours. Mais la bonne chose est que ce fichier n'est généré qu'une seule fois lorsque vous associez un e-mail et un mot de passe à un élément de trousseau de clés. Il n'est pas modifié après cette première fois jusqu'à ce que vous ajoutiez plus d'éléments de porte-clés (plus de paires mot de passe + e-mail). Je garde simplement des sauvegardes de ce fichier sur une clé USB et Dropbox et je m'assure que le mot de passe est super sécurisé.
Kaushal Modi
J'ai testé les documents cryptés symétriquement pour qu'ils soient portables. J'ai chiffré quelque chose dans emacs sous Linux et l'ai ouvert en utilisant l'un des nombreux outils de décryptage GPG gratuits disponibles pour Windows. Il a demandé le trousseau de clés et l'a pointé vers ma sauvegarde dans Dropbox et cela a fonctionné.
Kaushal Modi
Juste pour info: Oui, la perte du fichier clé signifie que vous perdez définitivement l'accès à vos fichiers cryptés également. Vous avez besoin à la fois du mot de passe et du fichier de clé privée pour les décrypter. Cela fait partie du modèle de sécurité GPG pour le chiffrement asymétrique.
Tyler
On dirait que je vais devoir aller avec cette réponse après tout. Savez-vous comment je peux changer l'emplacement du fichier de clés?
Malabarba
9

Il s'avère que tout ce que j'avais à faire était

(setq epa-file-cache-passphrase-for-symmetric-encryption t)

Cette solution fonctionne à la fois sur Linux et Windows, et est une courtoisie de Ted et Michael sur help-gnu-emacs.

Malabarba
la source
Bon à savoir que cela fonctionne pour vous! J'ai eu ce paramètre dans ma configuration Emacs pendant des années, mais à un moment donné, il a juste cessé de fonctionner. Je soupçonne que cela a à voir avec mon utilisation du démon gnome-keyring-daemon (qui agit également comme un porte-clés gpg).
paprika
4
De la docstring pour epa-file-cache-passphrase-for-symmetric-encryption: "Notez que cette option n'a aucun effet si vous utilisez GnuPG 2.0."
Wilfred Hughes