web-dev-qa-db-fra.com

Quel niveau de confiance devrais-je donner des clés dont j'ai besoin pour cryptage?

Comme je crypter les sauvegardes de serveur, j'installez généralement ma clé GPG publique à partir d'un KeyServer dans KeyRing de Server:

gpg --search-keys 6569758F

J'importe la clé dans mon porte-clés.

Je tente ensuite de chiffrer un fichier:

gpg --encrypt --recipient 6569758F myfile.log

Je suis maintenant présenté avec quelque chose comme ça:

gpg: EE928AAF: There is no assurance this key belongs to the named user

pub  4096R/EE928AAF 2013-12-05 Naftuli Tzvi Kay <[email protected]>
 Primary key fingerprint: 0E26 BDF1 BD1C 4A16 9571  21A8 8938 1D75 6569 758F
      Subkey fingerprint: 65F4 87F2 C898 F0E7 0377  EBA1 8484 EC48 EE92 8AAF

It is NOT certain that the key belongs to the person named
in the user ID.  If you *really* know what you are doing,
you may answer the next question with yes.

Use this key anyway? (y/N) 

J'ai maintenant besoin de faire confiance à la clé. Cependant, j'ai constaté que si je fais confiance à la clé "finalement", c'est-à-dire: niveau 5, je reçois cette invite à chaque fois que je dois crypter quelque chose, ce qui ne fonctionne pas trop pour les scripts shell.

Est-ce que j'ai vraiment besoin de faire confiance à une clé finalement pour simplement chiffrer des fichiers avec elle?

8
Naftuli Kay

Le titre du poste et la question réelle que vous demandez ne correspondent pas tout à fait. Si je lisez ce droit, vous demandez de la meilleure façon d'utiliser votre propre clé PGP publique pour chiffrer des sauvegardes. D'autre part, le titre de la question est d'obtenir des niveaux de confiance aux clés pour le cryptage. Cela me semble que vous utilisez votre propre clé pour le cryptage, ce qui l'attribue un niveau de confiance n'est pas ce que vous recherchez. IMHO vous utilisez le mauvais modèle de fiducie GPG pour le problème de sauvegarde.

Vous pouvez explicitement contourner toute validation de clé dans GPG en modifiant le "modèle de confiance" pour la commande que vous exécutez. Par défaut, le modèle de confiance 'PGP' est utilisé, c'est pourquoi GPG s'attend à ce que vous marquiez explicitement les clés de confiance. Sinon, vous pouvez dire à GPG d'utiliser le modèle de confiance "Toujours" qui contournera le message que vous voyez:

--trust-model always

Je pense que cela vous obtiendra le comportement que vous après. N'oubliez pas que votre script télécharge une clé à partir d'un hôte distant que vous ne contrôlez pas, vous n'avez donc pas vraiment de garantie que c'est la clé que vous attendez (compromis de clés serveur). Si vous vous attendez seulement à utiliser la touche unique pour chiffrer vos sauvegardes, il peut suffire d'intégrer la clé publique de votre script (ce n'est pas sensible) et de couper complètement le clavier de l'architecture. Cela supprimera toute dépendance sur le Keyserver et simplifiera les relations de confiance dans votre solution de sauvegarde.

Juste un cependant. J'espère que cela t'aides.

Comme demandé voici un exemple. Supposons que je souhaite collecter des données de sauvegarde sur un système que j'ai admin. Je veux seulement que ces données de sauvegarde soient récupérables par moi-même. Pour atteindre cet objectif, je veux que toutes les données collectées dans le script soient cryptées avec ma clé PGP publique. Je suppose également que le compte d'utilisateur qui fait la sauvegarde n'est pas utilisé pour rien au-delà des sauvegardes, il n'y a donc rien d'important dans le répertoire ~/.gnupg et que je peux la supprimer sans vous soucier des touches perdues.

Sauvegarde toujours votre répertoire .gnupg avant de jouer avec cela!

Ce qui suit est un script bash simple qui cryptera du texte avec une clé publique intégrée au script:

#!/bin/bash -e                                                                 

gpg --trust-model always --import <<EOF
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)

xxxxxx
...
...
-----END PGP PUBLIC KEY BLOCK-----
EOF

echo "backup data" | gpg --trust-model always --armor  --encrypt --recipient [email protected] > backup-data.enc

La "magie" dans ce script est l'utilisation de la coque '- ici document ' (voir le EOF marqueurs) pour intégrer ma clé publique dans le script tout en le passant. au GPG sur STDIN pour importer ma clé avant de faire la tâche de cryptage/de sauvegarde. Naturellement, vous devrez mettre tout votre ASCII Key Key blindé à la place du "..." ... Mon exemple. Assurez-vous également de remplacer "[email protected]" avec l'ID associé à votre clé publique. Typiquement c'est votre email.

Il y a un million de façons de nettoyer cet exemple et de le rendre plus utile. L'importation de la clé publique sur chaque exécution est un peu ridicule alors vérifiant si la clé est déjà dans la bague est d'où je commencerais :)

Bonne chance!

5
flihp

Lorsque vous mettez la confiance ultime sur une clé, vous définissez cela comme votre propre.

Trust active une clé valide à prendre en compte lors du calcul de la validité des autres clés . Pour être valide, vous devez avoir une trajectoire de confiance sur cette clé, qui est réalisée en la signant (ou que le chemin des signatures de la clé de la clé de la clé, tout en faisant confiance).

Ceci est plutôt confus au début, surtout parce que les termes semblent mélangés. J'ai expliqué le Web de la confiance en plus de détails dans cette réponse.

Si vous savez qui est le propriétaire de la clé et vérifiait cela, vous pouvez simplement signer la clé (et peut-être même l'envoyer à un Keyserver). Si vous n'êtes pas trop sûr, vous pouvez effectuer une signature locale (qui ne sera jamais téléchargée/exportée) à l'aide de votre propre clé. Les deux veilleront à ce que la clé est valide, vous n'avez pas besoin de lui faire confiance!

1
Jens Erat