web-dev-qa-db-fra.com

Comment sauvegarder en toute sécurité une clé privée GPG?

J'ai trouvé un gestionnaire de mot de passe CLI très intéressant appelé pass . Pour l'utiliser, vous générez une paire de clés GPG2 et utilisez l'outil pour vous aider à stocker les mots de passe dans des fichiers cryptés gpg2.

Pour chiffrer les fichiers (ajouter un nouveau mot de passe), il utilise la clé publique.

Pour déchiffrer les fichiers (récupérer un mot de passe stocké), il utilise la clé privée, qui nécessite un mot de passe.

Cela fonctionne très bien.

Maintenant que l'outil stocke tous mes mots de passe, je souhaite sauvegarder toutes ces données afin que, en cas de panne de mon ordinateur, tous mes comptes en ligne ne soient pas bloqués.

L’outil s’intégrant bien avec git, j’ai donc été capable de transférer facilement les fichiers .gpg vers mon dépôt git privé sur un autre ordinateur. D'après ce que j'ai compris, ces fichiers sont inutiles sans la clé privée pour les décrypter.

Ma question est la suivante: comment puis-je sauvegarder les clés privée et publique de manière sécurisée afin de pouvoir restaurer la "base de données" sur un autre ordinateur si le besoin s'en fait sentir? Puis-je simplement stocker les clés publique et privée dans mon dépôt Git et les importer ultérieurement sur une autre machine? Ou est-il considéré comme une pratique peu sûre de stocker une clé privée dans un dépôt git privé et local? Le dépôt git nécessite un mot de passe pour y accéder. La clé privée est cryptée et nécessite un mot de passe pour s'ouvrir - est-ce que cela sécurise le stockage?

19
Tal

Le stockage d'une clé privée PGP dans un système de contrôle de révision ne pose pas, en soi, de problème de sécurité important. Le stockage de la clé privée dans un référentiel git local, privé (non publié) ne devrait pas avoir d'incidence importante sur la sécurité, contrairement au stockage de la clé privée sur le même ordinateur mais en dehors de tout git. repository.

Le seul problème auquel je peux penser vient du fait que la clé privée est stockée de manière contrôlée par la version, c'est qu'à moins que vous ne puissiez détruire les révisions plus anciennes, les modifications de clé secrète vous achètent beaucoup moins de protection qu'elles ne le pourraient autrement.

Ce qui peut avoir des conséquences sur la sécurité est de stocker une clé privée de sorte que quelqu'un d'autre puisse avoir accès au fichier de clé. Dans une telle situation, tout ce qui suit: se situe entre un attaquant et votre clé est la force de sa phrase secrète.

Reconnaissant que la sécurité du stockage n'est pas parfaite, et plus encore dans l'environnement moderne où les utilisateurs effectuent régulièrement des sauvegardes vers des services cloud (nous traduisons littéralement par "l'ordinateur de quelqu'un d'autre"), nous protégeons généralement nos clés secrètes avec des mots de passe. J'espère que même si vous utilisez par exemple gpg-agent, vous faites de même.

L'essentiel est que, aussi longtemps que votre phrase secrète est bonne, même stocker une copie du fichier de clé crypté sur l'ordinateur de quelqu'un d'autre devrait être relativement sûr.

Cependant, c'est un assez gros si:les mots de passe ou les phrases de passe de la plupart des gens sont plutôt moche en ce qui concerne les tentatives informatisées de les casser. GnuPG va assez loin pour essayer de fonctionner aussi bien que possible avec ce que vous lui donnez, mais pour une protection solide des données, vous avez besoin d'une bonne phrase secrète, et vous avez besoin de le configurer avant d'importer la clé privée dans le référentiel git. Une fois la clé importée, un attaquant pourrait en principe, attaquez-en n'importe quelle version, et s'ils ont des raisons de croire qu'une révision donnée a une phrase secrète de qualité inférieure, cela ira probablement. Pour cette raison, veillez à choisir le mot de passe complexe avec soin. J'ai rédigé une petite introduction sur la manière de gérer les mots de passe, y compris des suggestions sur la manière de choisir des mots de passe ou des phrases secrètes que vous devez pouvoir mémoriser , qui vous pouvez trouver utile.

7
a CVn

J'ai envisagé une configuration similaire récemment. Avant de répondre à votre question, laissez-moi souligner ce qui me dérange à ce sujet. Ceci est expliqué en détail ici . En bref, lorsque Pass appelle GPG, il effectue une cryptographie asymétrique (RSA/EC) inutile sous le capot. Inutile - car il n'y a aucune partie non approuvée ici.

Ceci est gênant car la crypto asymétrique est moins pérenne que la crypto symétrique. Par exemple, la cryptographie asymétrique d'aujourd'hui est cassée par des ordinateurs quantiques suffisamment grands, qui n'existent pas encore. Plus généralement, la crypto asymétrique repose sur des "problèmes mathématiques" que nous ne savons pas résoudre, bien plus que la crypto symétrique.

Pour atténuer cette faiblesse, le moins que vous puissiez faire est de garder votre clé publique GPG utilisée également avec Pass privé, car par exemple, l'attaque quantique (potentielle) nécessite cette clé publique: , voir ici .

En ce qui concerne votre question, il n’est pas clair si vous avez l’intention de stocker le dépôt git (avec les mots de passe) en public ou en privé. Si vous souhaitez le garder privé, vous pouvez faire ce que vous voulez et réduire la sécurité de la clé privée GPG à celle du support sur lequel vous sauvegardez le référentiel. Cependant, cela pourrait devenir un problème de poule et d’œuf: si le repo est privé, comment le récupérer en cas de blocage? En d'autres termes, en cas de "crash grave", il faut que vous récupériez quelque chose en premier . Donc, vous voudrez peut-être garder le repo git privé, mais sauvegardez la clé GPG de telle sorte que vous puissiez récupérer en premier, indépendamment de tout ce qui se passe d'autre.

Les solutions de sauvegarde hors ligne sont nombreuses: avocats, sous-sols, etc. , voir ici . Mais les sous-sols ne sont pas pour tout le monde, alors laissez-moi vous suggérer une solution en ligne:

  • Créez une phrase secrète extrêmement puissante qui ne doit pas être saisie depuis des années. Suggestion: Une longue phrase mémorable a mal orthographié une phrase qui a une signification personnelle, ou bien un livre qui ne sera pas à court de copies si vous avez besoin de la chercher.

  • Créez une archive avec votre clé secrète GPG exportée et peut-être vos informations d'identification SSH.

  • Cryptez-le symétriquement avec votre phrase secrète: gpg --symmetric --armor.

  • Créez un compte d'hébergement git gratuit.

  • Créez un référentiel public pouvant être cloné sans informations d'identification.

  • Mettez la boule de goudron chiffrée et blindée à l'intérieur.

Pour le récupérer après un "crash grave":

  • Démarrez une clé USB live.

  • Cloner repo publique.

  • gpg --decrypt.

Le mot de passe symétrique sera votre principale protection contre les zombies. Parfois, les gens ne vous donnent pas, à vous ou au lecteur anonyme, le bénéfice du doute quant au choix de la phrase secrète. Mais avec une bonne phrase secrète, la crypto symétrique devrait être solide.

Lorsque vous exportez votre clé privée GPG, celle-ci est cryptée avec une phrase secrète qui lui est propre. Les versions récentes de GPG ne permettent pas une exportation non chiffrée. Vous pouvez utiliser votre phrase secrète GPG "normale" ici. Rappelez-vous qu’en cas de crash, vous aurez besoin des deux mots de passe pour accéder à votre clé privée GPG.

5
Matei David

Une autre option que j’utilise est la suivante: Imprimez votre clé sur papier .

Les détails sont dans la réponse liée. Les gros avantages sont les suivants: vous pouvez facilement le stocker où vous voulez et vous pouvez vérifier s'il est toujours en bon état en le regardant. Mais le plus gros avantage est le suivant: personne ne peut le pirater sans être physiquement à l’endroit où vous stockez votre copie de sauvegarde.

4
Josef

Une autre réponse à cette question est "hors ligne", c’est-à-dire le stocker dans un endroit sécurisé et non connecté à un ordinateur. Je garde une copie complète non chiffrée de toutes mes clés sur une disquette (je le fais de cette façon depuis longtemps, maintenant habitude) dans le coffre-fort à la banque. La raison pour laquelle je les garde non chiffrés sur les médias à la banque est qu’un des scénarios possibles pour "perdre" la clé est l’oubli de la phrase de passe (mes phrases de passe ont souvent beaucoup de ponctuation et d’orthographe étranges, et en oublier une seule inutilisable). Je n'ai jamais eu à recourir à cette copie, mais je prévois le pire.

En outre, il existe une révocation essentielle dans les médias et une note expliquant à mes héritiers quoi en faire, dans le cas où je ne serais plus disponible.

2
MAP