Traduction(s) : English - Italiano - Français


Utilisation des sous-clés OpenPGP dans le développement de Debian

Que sont les clés ?

En cryptographie à clé publique, une clé est en réalité une paire : une clé publique et une clé privée. La clé privée est utilisée pour signer numériquement des fichiers et la clé publique permet à quiconque la possède de vérifier ces signatures. À l'inverse, on utilise la clé publique pour chiffrer des fichiers et la clé privée permet de les déchiffrer.

Aussi longtemps que vous resterez la seule personne ayant accès à la clé privée, les autres pourront se fier aux signatures numériques que vous avez émises et vous pourrez vous fier à la confidentialité des fichiers chiffrés qui vous sont destinés.

Que sont les sous-clés ?

OpenPGP étend le support les sous-clés, lesquelles sont similaires à de simples clés, excepté qu'elles sont liées à une paire de clés maîtresse. Le réel intérêt des sous-clés réside dans la possibilité de les stocker ou de les révoquer indépendamment des clés maîtresses.

En d'autres termes, les sous-clés peuvent être considérées comme des paires de clés séparées, mais automatiquement associées à votre paire de clés principale.

La clé principale actuellement utilisée par GnuPG est exclusivement dédiée aux signatures et une sous-clé de chiffrement est automatiquement créée avec. Sans elle, vous ne pouvez pas chiffrer de fichiers. Debian requiert que vous disposiez de la sous-clé de chiffrement afin que certains documents puissent vous être transmis de façon sécurisée, tel que le mot de passe initial de votre compte shell sur debian.org.

Pourquoi ?

Les sous-clés facilitent la gestion des clés.

La clé maîtresse est d'une certaine importance : elle est la meilleure preuve de votre identité en ligne, au moins pour Debian, et en cas de perte, vous devrez reconstruire votre réputation à partir de rien. Si n'importe qui d'autre accède à votre clé privée maîtresse ou ses sous-clés privées, elles lui permettront de s'approprier votre identité : envoyer des paquets en votre nom, voter en votre nom et, plus largement, tout ce que vous pouviez faire avec. Cela serait néfaste pour Debian et vous ne l'apprécieriez peut-être pas non plus. Gardez donc toutes vos clés privées en sûreté.

Votre clé privée maîtresse devrait être gardée très, très en sûreté. Cependant, appliquer cette politique pour toutes vos clés n'est que peu pratique : à chaque nouvelle signature d'un envoi de paquets, il vous faudrait copier ces paquets sur un support amovible, vous rendre dans votre bunker, prouver aux gardes armés que vous êtes la personne que vous prétendez par des méthodes biométriques et autres, traverser un labyrinthe mortel et nourrir le chien de garde avec la bonne pâtée pour enfin pouvoir ouvrir votre coffre-fort, en sortir l'ordinateur contenant la clé de signature, puis signer les paquets. Dès lors, vous pourriez rentrer chez vous et, de là, y envoyer vos paquets.

Les sous-clés rendent tout cela plus aisé : vous possédez déjà une sous-clé de chiffrement créée automatiquement et vous pouvez créer une autre sous-clé dédiée aux signatures ; ces sous-clés pourront être conservées sur votre ordinateur principal et seront à envoyer à un serveur de clés publiques. Vos contacts utiliseront alors celles-ci plutôt que votre clé maîtresse, à peu d'exceptions. De la même façon, vous n'utiliserez cette clé maîtresse qu'en d'exceptionnelles circonstances.

Ces exceptions sont :

Au cas où vos sous-clés seraient compromises alors que vos clés maîtresses serait toujours en sécurité, vous pourriez ainsi révoquer ces sous-clés pour les remplacer par de nouvelles sans devoir rebâtir votre réputation ni impacter celles d'autres gens dont les clés auraient été signées avec la vôtre.

Comment ?

Malheureusement ou non, l'interface utilisateur de GnuPG n'est pas vraiment très fun. Nous vous guiderons donc dans les étapes à suivre.

Ces instructions supposent que vous utilisez un unique ordinateur et que vos clés maîtresses sont stockées sur une clé USB chiffrée, ou préférablement deux (vous devriez garder une sauvegarde de vos clés privées). Nous supposons aussi que vous possédez déjà une paire de clés maîtresses. Si ce n'est pas le cas, dirigez-vous vers la page http://keyring.debian.org/creating-key.html en premier lieu.

  1. Avant toute chose, sauvegardez vos fichiers GnuPG ($HOME/.gnupg). Si quelque chose tournait mal durant l'opération, vous pourriez en avoir besoin pour la recommencer en toute sérénité.

  2. umask 077 ; tar -cf $HOME/gnupg-backup.tar -C $HOME .gnupg
    Note : umask 077 appliquera des permissions restrictives à votre sauvegarde.

  3. Créer une nouvelle sous-clé de signature.
    1. Trouvez l'ID de votre clé : gpg --list-keys <votre_nom>

    2. gpg --edit-key <ID_de_votre_clé_maîtresse>

    3. gpg> addkey

    4. Entrez votre phrase de passe.
    5. Choisissez l'option RSA (sign only)

    6. Il serait judicieux de choisir une taille de clé de 4096 bits.
    7. Définissez une date d'expiration (vous pouvez planifier une rotation de vos sous-clés plus fréquemment que pour vos clés maîtresses ou les gardez pour le reste de la vie de votre paire maîtresse, sans expiration).
    8. GnuPG va (éventuellement) générer une clé, mais il vous faudra attendre qu'il dispose d'assez d'entropie pour cela.
    9. Sauvegardez la clé : gpg> save

  4. Vous pouvez répéter cette procédure et tout aussi bien créer une sous-clé de chiffrement RSA (encrypt only) si vous le désirez. Pour ses besoins, Debian ne requiert qu'une clé de signature.

  5. Maintenant, copier votre dossier $HOME/.gnupg sur votre clé USB.

  6. C'est ici qu'arrive la partie délicate. Il va vous falloir supprimer la clé privée maîtresse, mais GnuPG ne le permet pas de façon pratique. Vous allez devoir exporter la sous-clé, supprimer la clé privée, puis réimportez la sous-clé.
    1. Trouvez l'ID de votre nouvelle sous-clé privée : gpg --list-secret-keys

    2. Exportez les sous-clés : gpg --export-secret-subkeys <ID_de_votre_sous-clé_1>! ... <ID_de_votre_sous-clé_N>! > subkeys
      Note : N'oubliez pas les points d'exclamation !

    3. Exportez également votre clé publique maîtresse : gpg --export <ID_de_votre_clé_maîtresse> > pubkeys

    4. Supprimez votre clé maîtresse : gpg --delete-secret-key <ID_de_votre_clé_maîtresse>

    5. Réimportez vos clés : gpg --import pubkeys subkeys

    6. Vérifiez que gpg -K vous affiche sec# et non un simple sec pour votre clé privée. Cela signifie que la clé secrète n'est pas réellement présente.

Votre machine est maintenant prête pour un usage normal.

Quand vous devrez utiliser vos clés maîtresses, monter votre support USB chiffré, puis définissez la variable d'environnement GNUPGHOME :

export GNUPGHOME=/media/<mon_support>
gpg -K

ou avec l'option --home :

gpg --home=/media/<mon_support> -K

Cette dernière commande devrait lister votre clé privée avec sec, et non sec#.

Et ensuite ?

À ce point, vous disposez d'une sous-clé et il vous faut l'envoyer au serveur de clés de Debian (si votre clé figure déjà dans le trousseau Debian) ainsi qu'au réseau des serveurs de clés publiques :

gpg --send-key --keyserver keyring.debian.org <ID_de_votre_clé_maîtresse>
gpg --send-key --keyserver subkeys.pgp.net <ID_de_votre_clé_maîtresse>

L'envoi au serveur de clés de Debian ne fonctionnera que si votre clé publique maîtresse figure déjà au sein des trousseaux Développeurs Debian ou Mainteneurs Debian : le serveur de clés de Debian accepte les mises à jour des clés qu'il connaît, mais pas de nouvelles clés. Les nouvelles clés sont ajoutées manuellement par les mainteneurs de son trousseau. Par ailleurs, les mises à jour de clés depuis le serveur vers les différents trousseaux sont sont elles aussi effectuées manuellement, généralement une fois par mois.
Voyez la page http://anonscm.debian.org/loggerhead/keyring/debian-keyring/changes pour savoir si votre sous-clé a été ajoutée

Après ça, vous devriez être en mesure d'envoyer vos paquets à Debian en utilisant l'une de vos sous-clés plutôt que votre clé principale.

Si votre clé se trouvait déjà dans le trousseau des rétro-portages, il vous faudra ouvrir un ticket dans le système de suivi de requêtes pour demander que votre clé soit rafraîchie et que vous soyez de nouveau en mesure d'envoyer vos paquets vers backports.debian.org.

Ouch !

Si un désastre se produit et qu'il vous faille révoquer la sous-clé pour n'importe quelle raison, suivez ces consignes :

  1. monter votre support USB chiffré
  2. export GNUPGHOME=/media/<mon_support>

  3. gpg --edit-key <ID_de_votre_clé_maîtresse>

  4. À l'invite de commande gpg>, listez les clés (list), sélectionnez celle en question (key ABCD1234), puis générez un certificat de révocation (revkey). Enfin, sauvegardez (save).

  5. Envoyez la sous-clé mise à jour au serveur de clés comme expliqué ci-dessus.