44 votes

GPG - pourquoi est-ce que je chiffre avec une sous-clé au lieu de la clé principale?

Lorsque je chiffre un fichier à envoyer à un collaborateur, je vois ce message :

gpg: utilisation de la sous-clé XXXX au lieu de la clé principale YYYY

Pourquoi cela ? J'ai remarqué que lorsqu'ils m'envoient un fichier chiffré, il semble également chiffré vers ma sous-clé au lieu de ma clé principale. Pour moi, cela ne semble pas poser problème ; gpg (1.4.x, macosx) gère simplement la situation et continue. Mais pour eux, avec leur configuration d'outils automatisés, cela semble être un problème, et ils m'ont demandé de bien vouloir utiliser leur clé principale.

J'ai essayé de faire quelques recherches, et j'ai commandé le livre de Michael Lucas "GPG & PGP", mais je ne comprends pas pourquoi il y a cette distinction. J'ai lu que la clé utilisée pour la signature et la clé utilisée pour le chiffrement seraient différentes, mais j'ai d'abord supposé que cela concernait les clés publiques et privées.

Au cas où il s'agirait d'un problème de confiance/validation, j'ai suivi le processus de comparaison des empreintes et de vérification, et oui, je fais confiance à cette clé. En faisant cela, j'ai remarqué que les clés principale et secondaire avaient des notes "d'utilisation" différentes :

principale :  utilisation: SCA
sous-clé :   utilisation: E

"E" semble probablement signifier "Chiffrement". Mais je n'ai pas pu trouver de documentation à ce sujet. De plus, mon collaborateur utilise ces outils et techniques depuis quelques années maintenant, alors pourquoi cela pose-t-il problème seulement pour moi ?

56voto

Old Pro Points 1285

Mise à jour

Alors que le post original ci-dessous explique correctement pourquoi vous pourriez vouloir utiliser des clés d'encryption et de signature distinctes, il ne répond pas très bien à la question de pourquoi vous utilisez des sous-clés au lieu de la clé principale. Le Wiki Debian fournit une réponse beaucoup plus complète.

En résumé, votre clé principale est votre identité en ligne, et votre identité et réputation sont construites en ayant d'autres personnes affirmant que la clé vous appartient en la signant eux-mêmes. (Vous pourriez penser à cela comme étant votre nom d'utilisateur Twitter, et votre réputation étant vos followers sur Twitter, ou vous pourriez contester cette analogie, mais j'espère qu'elle vous donne une idée de pourquoi vous voulez la protéger.) Donc, puisque votre clé principale est très importante et se construit au fil des ans, vous voulez la protéger énormément. En particulier, vous ne voulez pas la stocker sur un ordinateur qui pourrait être volé ou piraté; vous voulez garder votre clé principale hors ligne dans un endroit sûr.

Cela rend bien sûr votre clé principale très inconvenante à utiliser. Donc, pour les opérations quotidiennes, vous voulez utiliser une clé qui ne pose pas autant de problèmes à remplacer si elle est compromise. C'est pourquoi les sous-clés ont été inventées.

Une sous-clé est toujours une paire de clés publique/privée et est sécurisée tant que vous êtes le seul à avoir la clé privée. Cryptographiquement, elle est aussi sécurisée que votre clé principale. La différence est que votre réputation n'y est attachée que par votre propre signature, la signature de votre clé privée. Pour utiliser l'analogie Twitter, le monde fait confiance à ce que vous êtes votre nom d'utilisateur Twitter car tous vos followers le disent (je sais, ça ne fonctionne pas toujours vraiment comme ça, mais les analogies sont difficiles!), puis avec cette confiance établie, vous pouvez bien plus facilement convaincre le monde que vous possédez votre nom d'utilisateur Instagram en tweetant simplement et les gens vous croiront car le tweet vient de votre compte, en qui ils ont confiance.

Vous voulez toujours garder votre sous-clé en sécurité, mais maintenant si elle est compromise, ce n'est pas le gros problème que ce serait si votre clé principale était compromise (ou, dans l'analogie, si quelqu'un piratait votre compte Twitter). Maintenant, vous pouvez simplement révoquer la sous-clé et émettre une nouvelle en signant un certificat de révocation et une nouvelle sous-clé et en les postant tous les deux sur votre trousseau de clés publique (comme tweetant "hé, mon nom d'utilisateur Instagram a changé, n'utilisez pas l'ancien, utilisez celui-ci à la place"). Cela rend le fait de garder votre sous-clé sur votre ordinateur portable un risque plus acceptable que de garder votre clé principale dessus.

TL;DR Les sous-clés facilitent beaucoup la gestion des clés en séparant les fonctions cryptographiques des clés publiques de celles de confiance et d'identité des clés publiques (principales).


Post original

Si vous regardez les détails des mathématiques de l'encryption à clé publique, vous découvrirez que signer et décrypter sont en fait des opérations identiques. Ainsi, dans une implémentation naïve, il est possible de piéger quelqu'un pour qu'il décrypte un message en lui demandant de le signer.

Plusieurs choses sont faites en pratique pour se protéger contre cela. La plus évidente est que vous ne signez jamais un message réel, vous signez plutôt un hash sécurisé du message. Moins évidemment, mais juste pour être plus sûr, vous utilisez des clés différentes pour signer et encrypter. De plus, garder la clé d'encryption séparée vous permet de garder les autres clés, arguablement plus importantes et certainement moins utilisées, hors ligne et plus sécurisées. C'est le cas des clés que vous avez inspectées. Au fait les drapeaux signifient :

  • e = encrypter/décrypter (décrypter un message que vous avez reçu encrypté pour que vous puissiez le lire)
  • s = signer (signer des données. Par exemple un fichier ou envoyer un e-mail signé)
  • c = certifier (signer une autre clé, établissant une relation de confiance)
  • a = authentifier (se connecter à SSH avec une clé PGP; cette utilisation est relativement nouvelle)

Notez que dans tous les cas, "clé", signifie une paire de clés publique & privée.

Cela ne devrait pas poser de problème pour votre ami s'il a tout configuré correctement, mais configurer tout correctement peut être plus complexe que cela ne le devrait. Donc la meilleure solution pourrait être pour votre ami de générer une nouvelle clé publique qu'il utilise à la fois pour signer et encrypter. Comme je l'ai dit, parce que la principale défense contre une attaque est de signer uniquement un hash cryptographiquement sécurisé d'un message, ce n'est pas une faiblesse sérieuse d'avoir une telle clé.

2voto

Référence pour les drapeaux

Référence alternative

En dehors de cela, je ne suis pas susceptible d'être d'une grande aide. J'ai toujours trouvé que PGP/GPG était trop complexe pour ce qu'il accomplit. Bonne chance.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X