La version anglaise originale de ce texte est disponible ici.
Je tiens à noter : je ne suis pas Alex Cabal.

Je suis un développeur logiciel qui fait marcher Scribophile, un groupe d'écrivains en ligne destiné à ceux qui sont sérieux par rapport à littérature, un service de portfolio en ligne, Writerfolio, pour les pigistes et Standard Ebooks, un projet à code ouvert qui produit des Ebooks libérés pour les vrais amoureux des livres.

Créer la paire de clés GPG 'parfaite'

A rusty lock.

Il y a beaucoup d'informations en ligne sur comment créer une paire de clés GPG. Malheuresement beaucoup de celles-ci sont vielles et recommandent des paramètres qui aujourd'hui serait peut-être non sécurisé.

Il n'y a aussi pas beaucoup d'information sur comment protéger votre paire de clés si vous utilisiez un ordinateur portable qui pourrait être volé ou perdu.

Protéger votre paire de clés sur un ordinateur portable est compliqué.

D'un côté, vous avez besoin de votre clé privé avec vous pour déchiffrer ou signer des messages.

D'un autre côté, si votre ordinateur portable est volé alors vous risquez de perdre la totalité de votre identité numérique, parce que le voleur aura accés à votre clé privée et pourrait alors se faire passer pour vous.

Vous penseriez qu'aujourd'hui, où les voyages à travers le monde et les ordinateurs portables sont choses communes, qu'il y aurait un petit peu plus d'information sur comment sécuriser une clé privée avec qui vous devez voyager. Mais je n'ai pu trouver seulement qu'une ressource: la page Wiki de Debian sur les sous-clés.

Les sous-clés aident à protéger votre identité en cas de vol de la clé privée (ou vol ordinateur portable)

Si un voleur met la main sur l'ordinateur portable avec votre clé privée dessus, c'est pratiquement game over. Le voleur peut non seulement déchiffrer les messages adressés à vous, il peut aussi vous imiter en signant vos messages avec votre clé privée. Votre seul recours serait de révoquer votre clé, mais ça voudrait dire perdre des années de signatures de confiance sur cette clé et basiquement vous créer un incomfort massif.

Une partie de la réponse à ce problème est le concept des sousc-lés. Les sous-clés ne peuvent pas empêcher un voleur de déchiffrer les messages à l'intention de votre clé privée. Mais elles peuvent aider à mitiger les dommages causés à votre identité s'il adviendrait que votre clé soit perdue ou volée.

Le concept derrière cette technique est comme il suit:

  1. Créez une paire de clés GPG normale. Par défaut GPG créé une sous-clé de signature (votre identité) et une sous-clé de chiffrement (comment vous recevez les messages vous étant destinés.

  2. Utilisez GPG pour ajouter une sous-clé de signature additionnelle à votre paire de clé. Cette nouvelle sous-clé est lié à la première clé de signature. Nous avons maitenant trois sous-clés.

  3. Cette paire de clés est votre paire de clés maître. Stockez là dans un endroit sécurisé tel que votre maison ou un conteneur sécurisé (en banque par exemple). La paire de clés maître est celle dont la perte serait vraiment catastrophique.

  4. Copiez votre paire de clés maître sur votre ordinateur portable. Puis utilisez GPG pour enlever la clé de signature originelle, laissant seulement la nouvelle sous-clé de signature et de chiffrement. Ceci transforme votre paire de clés maître en votre paire de clés d'ordinateur portable.

Votre paire de clé d'ordinateur portable est ce vous utiliserez pour un usage de GPG quotidien.

Quel est le bénéfice de cette configuration? Puisque votre paire de clés maître n'est pas stockée sur votre ordinateur portable de voyage, celà veut dire que vous pouvez révoquez les sous-clés de votre ordinateur portable si celui-ci se fait voler. Vous ne révoquez pas la sous clé originelle que vous avez créé dans la paire de clé maître—souvenez-vous, nous l'avons enlevé de notre paire de clés d'ordinateur portable— celà veut dire que vous n'avez pas à créer une nouvelle paire de clés et de traverser le tracas d'avoir à la faire signer par des personnes. Vous auriez encore à revoquer la sous-clé volée, et le voleur pourrait encore l'utiliser pour déchiffrer n'importe quels messages que vous avez déjà reçu, mais au moins les dommages faits ne seront pas aussi catastrophique.

Créer la paire de clés GPG 'parfaite', étape-par-étape

Je vais vous guider à travers les étapes pour créer une nouvelle paire de clés utilisant cette méthode de sous-clés. Pour faire ceci nous utiliserons GPG version 1.4.1, qui est la version distribuée en ce moment avec Ubuntu 12.04 LTS.

Créer votre paire de clés initiale

Utilisez la commande gpg --full-generate-key pour créer une nouvelle paire de clés GPG.

Généralement vous devriez définir la date d'expiration de votre clé à environ une année ou moins. Vous pouvez toujours choisir la date d'expiration plus tard, mais si vous téléversez une clé sans une date d'expiration à un serveur de clés, et qu'ensuite votre clé est perdue ou compromise, alors la mauvaise clé restera là-bas à jamais. Lui donner une date d'expiration est une mesure de sécurité contre celà. Pour notre clé d'exemple et afin de simplifier un peu les choses, nous allons la définir sans date d'expiration.

gpg --gen-key gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Sélectionnez le type de clef désiré : (1) RSA et RSA (par défaut) (2) DSA et Elgamal (3) DSA (signature seule) (4) RSA (signature seule) Quel est votre choix ? 1 Les clefs RSA peuvent faire une taille comprise entre 1024 et 4096 bits. Quelle taille de clef désirez-vous ? (2048) 4096 La taille demandée est 4096 bits Veuillez indiquer le temps pendant lequel cette clef devrait être valable. 0 = la clef n'expire pas <n> = la clef expire dans n jours <n>w = la clef expire dans n semaines <n>m = la clef expire dans n mois <n>y = la clef expire dans n ans Pendant combien de temps la clef est-elle valable ? 0 La clef n'expire pas. Est-ce correct (o/N) o GnuPG doit construire une identité pour identifier la clef. Nom réel : Marcel Dupont Adresse électronique : marcel.dupont@monmail.fr Commentaire : Vous avez sélectionné cette identité : "Marcel Dupont » Changer le (N)om, le (C)ommentaire, l'(A)dresse électronique ou (O)ui/(Q)uitter ? o Vous avez besoin de saisir une phrase de passe afin de protéger votre clé privée. <tapez votre phrase de passe> gpg: clé 488BA441 marquée de confiance ultime clé publique et privée créées et signées gpg: vérification de la base de données de confiance gpg: besoin de 3 marginaux , 1 complet, mode de confiance PGP gpg: profondeur: 0 valide: 1 signée: 0 confiance: 0-, 0q, 0n, 0m, 0f, 1u pub 4096R/488BA441 2013-03-13 Empreinte de la clé = B878 1FB6 B187 B94C 3E52 2AFA EB1D B79A 488B A441 uid Marcel Dupont <marcel.dupont@monmail.fr> sub 4096R/69B0EA85 2013-03-13

Quand on vous demande une phrase de passe, assurez-vous de choisir une qui soit longue et unique. Si votre clé se fait voler, cette phrase de passe est la seule chose qui la protège !

Ajouter une photo

Vous voudriez peut-être ajouter une photo de vous-mêmes pour la complétude. Puisque la photo est stockée dans votre clé publique et que celle-ci est distribué dans beaucoup d'endroits, comprenant aussi l'email, c'est mieux de choisir une petite image pour ne pas prendre trop de place.

Utilisez la commande gpg --edit-key. Quand l'interpréteur de gpg (>) apparaît, entrez la commande addphoto et fournissez à GPG le chemin vers la photo que vous souhaitez utiliser. Une fois que vous avez fini, tapez save dans le dernier prompt gpg> afin d'enregistrer vos changements:

gpg --edit-key marcel.dupont@monmail.fr gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Secret key is available. pub 4096R/488BA441 created: 2013-03-13 expires: never usage: SC trust: ultimate validity: ultimate sub 4096R/69B0EA85 created: 2013-03-13 expires: never usage: E [ultimate] (1). Marcel Dupont <marcel.dupont@monmail.fr> gpg> addphoto Pick an image to use for your photo ID. The image must be a JPEG file. Remember that the image is stored within your public key. If you use a very large picture, your key will become very large as well! Keeping the image close to 240x288 is a good size to use. Enter JPEG filename for photo ID: /home/marceldup/maphoto.jpg Is this photo correct (y/N/q)? o You need a passphrase to unlock the secret key for user: "Marcel Dupont <marcel.dupont@monmail.fr>" 4096-bit RSA key, ID 488BA441, created 2013-03-13 <tapez votre phrase de passe> pub 4096R/488BA441 created: 2013-03-13 expires: never usage: SC trust: ultimate validity: ultimate sub 4096R/69B0EA85 created: 2013-03-13 expires: never usage: E [ultimate] (1). Marcel Dupont <marcel.dupont@monmail.fr> [ unknown] (2) [jpeg image of size 5324] gpg> save

Renforcer les préférences de hachages

Maintenant nous allons définir notre clé afin quelle préfère des hachages plus robuste. Utilisez de nouveau la commande gpg --edit-key. Au prompt de gpg>, entrez la commande setpref SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed (notez que celle-ci sera problablement tronqué dans l'exemple ci-dessous; surlignez le avec votre souris pour le voir), puis ensuite save.

gpg --edit-key marcel.dupont@monmail.fr gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Secret key is available. gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u pub 4096R/488BA441 created: 2013-03-13 expires: never usage: SC trust: ultimate validity: ultimate sub 4096R/69B0EA85 created: 2013-03-13 expires: never usage: E [ultimate] (1). Marcel Dupont <marcel.dupont@monmail.fr> [ultimate] (2) [jpeg image of size 5324] gpg> setpref SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed Set preference list to: Cypher: AES256, AES192, AES, CAST5, 3DES Digest: SHA512, SHA384, SHA256, SHA224, SHA1 Compression: ZLIB, BZIP2, ZIP, Uncompressed Features: MDC, Keyserver no-modify Really update the preferences? (o/N) o You need a passphrase to unlock the secret key for user: "Marcel Dupont <marcel.dupont@monmail.fr>" 4096-bit RSA key, ID 488BA441, created 2013-03-13 <tapez votre phrase de passe> pub 4096R/488BA441 created: 2013-03-13 expires: never usage: SC trust: ultimate validity: ultimate sub 4096R/69B0EA85 created: 2013-03-13 expires: never usage: E [ultimate] (1). Marcel Dupont <marcel.dupont@monmail.fr> [ultimate] (2) [jpeg image of size 5324] gpg> save

Ajouter une nouvelle sous-clé de signature

Maintenant allons-y pour la spéciale: ajoutons notre nouvelle sous-clé de signature.

Utilisez encore une fois la commande gpg --edit-key. Au prompt de gpg> , entrez la commande addkey. Sélectionnez RSA (signer seulement) et 4096 pour la taille de la clef. N'oubliez pas de faire save en tout dernier.

gpg --edit-key marcel.dupont@monmail.fr gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Secret key is available. gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u pub 4096R/488BA441 created: 2013-03-13 expires: never usage: SC trust: ultimate validity: ultimate sub 4096R/69B0EA85 created: 2013-03-13 expires: never usage: E [ultimate] (1). Marcel Dupont <marcel.dupont@monmail.fr> [ultimate] (2) [jpeg image of size 5324] gpg> addkey Key is protected. You need a passphrase to unlock the secret key for user: "Marcel Dupont <marcel.dupont@monmail.fr>" 4096-bit RSA key, ID 488BA441, created 2013-03-13 <tapez votre phrase de passe> Please select what kind of key you want: (3) DSA (sign only) (4) RSA (sign only) (5) Elgamal (encrypt only) (6) RSA (encrypt only) Your selection? 4 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 4096 Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) 0 Key does not expire at all Is this correct? (o/N) o Really create? (o/N) o pub 4096R/488BA441 created: 2013-03-13 expires: never usage: SC trust: ultimate validity: ultimate sub 4096R/69B0EA85 created: 2013-03-13 expires: never usage: E sub 4096R/C24C2CDA created: 2013-03-13 expires: never usage: S [ultimate] (1). Marcel Dupont <marcel.dupont@monmail.fr> [ultimate] (2) [jpeg image of size 5324] gpg> save

Créer un certification de révocation

Maintenant nous générons un fichier certificat de révocation. Si notre paire de clés maître se perd ou est volée, ce fichier de certificat est la seule façon de signaler aux gens d'ignorer la clé volée. C'est important, ne sautez pas cette étape !

gpg --output \<marcel.dupont@monmail.fr\>.gpg-revocation-certificate --gen-revoke marcel.dupont@monmail.fr

Stockez le fichier certificat de révocation dans un lieu différent que votre paire de clés maître (que nous exporterons dans une étape d'après). Vous l'utiliseriez pour révoquer votre paire de clés maître ma dans le cas où vous la perdez. Si vous perdez seulement accés à votre paire de clés d'ordinateur portable, alors vous révoquerez ces sous-clés en utilisant la paire de clés maître, et non pas ce certificat de révocation.

Exporter le produit final

Maintenant que votre paire de clés a été créé, allons derechef l'exporter afin de la sauvegarder:

gpg --export-secret-keys --armor marcel.dupont@monmail.fr > \<marcel.dupont@monmail.fr\>.private.gpg-key gpg --export --armor marcel.dupont@monmail.fr > \<marcel.dupont@monmail.fr\>.public.gpg-key

Celà créera deux fichiers: votre clé publique et votre clé privée. Protégez ces deux fichiers, avec le certificat de révocation, du mieux que vous pouvez —ne pas les gardez sur votre ordinateur portable, gardez les dans votre maison (une clef USB, une carte SD) ou dans un conteneur de banque/coffre personel. Ces trois fichiers sont votre paire de clés maître.

Transformer votre paire de clés maître en votre paire de clés d'ordinateur portable.

Maintenant nous avons notre paire de clés maître dans notre trousseau de clefs, et à côté les trois fichiers représentant la paire de clés maître, comprenant le certificat de révocation. Pour transformer notre paire de clés maître en notre paire de clés d'ordinateur portable, nous avons à enlever la sous-clé de signature original de la paire de clés maître dans notre trousseau de clef.

GPG ne rend pas la tâche facile, mais allons-y:

  1. Exportez toutes les sous-clés de notre nouvelle paire de clés dans un fichier. Nous allons d'abord créer un dossier de type ramfs résidant dans la mémoire de l'ordinateur (NdT: sur Windows, ImDisk Virtual Disk Driver peut faire l'affaire, il est gratuit et open source), afin de prévenir le fait que nos clés soit écrites dans le disque dur. Nous utilisons ramfs au lieu de tmpfs ou /dev/shm parce ramfs n'écrit pas dans l'espace d'échange, plus couramment appelé swap. mkdir /tmp/gpg sudo mount -t ramfs -o size=1M ramfs /tmp/gpg sudo chown $(logname):$(logname) /tmp/gpg gpg --export-secret-subkeys marcel.dupont@monmail.fr > /tmp/gpg/subkeys

  2. Supprimez la clé de signature originale de la paire de clé dans notre trousseau:

    gpg --delete-secret-key marcel.dupont@monmail.fr
  3. Ré-importer les clés que nous avons exportés plus tôt et nettoyons nos fichier temporaires:

    gpg --import /tmp/gpg/subkeys sudo umount /tmp/gpg rmdir /tmp/gpg

C'est tout! Vous pouvez vérifier que celà a marché en exécutant:

gpg --list-secret-keys /home/marceldup/.gnupg/secring.gpg ----------------------------- sec# 4096R/488BA441 2013-03-13 uid Marcel Dupont <marcel.dupont@monmail.fr> ssb 4096R/69B0EA85 2013-03-13 ssb 4096R/C24C2CDA 2013-03-13

Remarquez-vous que la troisième ligne commence par "sec#" et non "sec"? Le signe dièse signifie que la sous-clé de signature n'est pas dans la paire de clef situé dans le trousseau.

Vous avez tout fini!

Que venons-nous juste d'accomplir ?

Si vous avez suivi toutes les étapes dans ce guide, vous avez:

  1. Créé une nouvelle paire de clés utilisant les paramètres les plus robustes.
  2. Ajouté une nouvelle sous-clé de signature à cette paire de clés.
  3. Exporté la paire de clés complète dans deux fichiers avec en plus un certificat de révocation, tout trois stocké dans un lieu sécurisé, et non pas sur votre ordinateur portable. Ceci est votre paire de clés maître.
  4. Enlevé la clé de signature originale de la paire de clés maître dans le trousseau de clefs de l'ordinateur portable, transformant donc votre paire de clés maître en votre paire de clés d'ordinateur portable. Votre vie sera un peu plus facile s'il advient que votre ordi portable se perd ou se fasse voler.

Utiliser votre nouvelle paire de clés d'ordinateur portable

Vous pouvez maintenant utiliser votre paire de clés pour chiffrer, déchiffrer, et signer des fichiers et des messages.

Pour signer la clé de quelqu'un d'autre ou pour créer ou révoquer sur cette paire de clés, vous aurez besoin d'utiliser la paire de clés maître que vous gardez en sécurité—celle qui n'est pas sur votre ordinateur portable.

Vous devriez distribuer votre clé publique à un serveur de clefs. Il y a pléthore de tutoriaux en lignes sur le comment de la chose.

En cas d'urgence

Au cas où le pire arrive et votre ordinateur portable avec votre paire de clés spéciale est perdu ou volé (ou que votre paire de clés spéciale est compromise de quelconque façon), nous avons besoin de révoquer les sous-clés de cette paire de clés

  1. Dévérouillez votre coffre/ prenez la clef usb mise en sécurité et obtenez votre paire de clés maîtrei

  2. Démarrez un clef USB live (NdT: en direct, environnement temporaire sur média amovible) d'Ubuntu ou d'une distribution de votre choix. Ensuite, importez votre paire de clés maître dans le trousseau de clef du live USB:

    gpg --import /path/to/\<marcel.dupont@monmail.fr\>.public.gpg-key /path/to/\<marcel.dupont@monmail.fr\>.private.gpg-key
  3. Utilisez maintenant la commande gpg --edit-key afin de révoquer de façon interactive nos sous-clés:

    gpg --edit-key marcel.dupont@monmail.fr gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Secret key is available. pub 4096R/488BA441 created: 2013-03-13 expires: never usage: SC trust: ultimate validity: ultimate sub 4096R/69B0EA85 created: 2013-03-13 expires: never usage: E sub 4096R/C24C2CDA created: 2013-03-13 expires: never usage: S [ultimate] (1). Marcel Dupont <marcel.dupont@monmail.fr> [ultimate] (2) [jpeg image of size 5324] gpg> key 1 pub 4096R/488BA441 created: 2013-03-13 expires: never usage: SC trust: ultimate validity: ultimate sub* 4096R/69B0EA85 created: 2013-03-13 expires: never usage: E sub 4096R/C24C2CDA created: 2013-03-13 expires: never usage: S [ultimate] (1). Marcel Dupont <marcel.dupont@monmail.fr> [ultimate] (2) [jpeg image of size 5324] gpg> key 2 pub 4096R/488BA441 created: 2013-03-13 expires: never usage: SC trust: ultimate validity: ultimate sub* 4096R/69B0EA85 created: 2013-03-13 expires: never usage: E sub* 4096R/C24C2CDA created: 2013-03-13 expires: never usage: S [ultimate] (1). Marcel Dupont <marcel.dupont@monmail.fr> [ultimate] (2) [jpeg image of size 5324] gpg> revkey Do you really want to revoke the selected subkeys? (o/N) o Please select the reason for the revocation: 0 = No reason specified 1 = Key has been compromised 2 = Key is superseded 3 = Key is no longer used Q = Cancel Your decision? 1 Enter an optional description; end it with an empty line: > Reason for revocation: Key has been compromised (No description given) Is this okay? (o/N) o You need a passphrase to unlock the secret key for user: "Marcel Dupont <marcel.dupont@monmail.fr>" 4096-bit RSA key, ID 488BA441, created 2013-03-13 <tapez votre phrase de passe> You need a passphrase to unlock the secret key for user: "Marcel Dupont <marcel.dupont@monmail.fr>" 4096-bit RSA key, ID 488BA441, created 2013-03-13 <tapez votre phrase de passe> pub 4096R/488BA441 created: 2013-03-13 expires: never usage: SC trust: ultimate validity: ultimate This key was revoked on 2013-03-13 by RSA key 488BA441 Marcel Dupont <marcel.dupont@monmail.fr> sub 4096R/69B0EA85 created: 2013-03-13 expires: never usage: E This key was revoked on 2013-03-13 by RSA key 488BA441 Marcel Dupont <marcel.dupont@monmail.fr> sub 4096R/C24C2CDA created: 2013-03-13 expires: never usage: S [ultimate] (1). Marcel Dupont <marcel.dupont@monmail.fr> [ultimate] (2) [jpeg image of size 5324] gpg> save
  4. Maintenant que votre sous-clé a été révoqué, ilfaut le dire à tout le monde en la distribuant à un serveur de clefs.

De quoi lire un peu plus