Génération des clés

On lance gpg --gen-key pour générer les clés

test@nutella:~$ gpg --gen-key
gpg (GnuPG) 1.2.3; Copyright (C) 2003 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
gpg: WARNING: using insecure memory!
gpg: please see http://www.gnupg.org/faq.html for more information
gpg: /home/test/.gnupg: directory created
gpg: new configuration file `/home/test/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/test/.gnupg/gpg.conf' are not yet
active during this run
gpg: keyring `/home/test/.gnupg/secring.gpg' created
gpg: keyring `/home/test/.gnupg/pubring.gpg' created

On remarque de GPG crée un repertoire .gnupg a la racine de compte de l'utilisateur, pour y stoquer sa configuration et ses clefs.

Please select what kind of key you want:
   (1) DSA and ElGamal (default)
   (2) DSA (sign only)
   (5) RSA (sign only)
Your selection? 1

Tout d'abord il faut choisir le type de clé à générer. L'option par défaut est conseillée, puisqu'elle génère les deux types de clés possibles simultanément (DSA et ElGamal).

DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
    minimum keysize is  768 bits
    default keysize is 1024 bits
    highest suggested keysize is 2048 bits
What keysize do you want? (1024) 2048
Requested keysize is 2048 bits

gpg nous demande ensuite la taille que l'on désire pour la clef. 1024 est l'idéal pour avoir un bon chiffrement tout en conservant une bonne rapidité de traitement.

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 (y/n)? y

Il faut ensuite spécifier la durée de validité des clés. Il est conseillé au debut de mettre un petit délais, dans le but de tester un peu gpg. Dans tous les cas, même si la duree est indeterminée, il est possible d'annuler la validité d'une clé, grâce à une clé de révocation. Nous verrons cela un peu plus loin.

Real name: Julien Francoz
Email address: julien@francoz.net
Comment: CoCoZ
You selected this USER-ID:
    "Julien Francoz (CoCoZ) <julien@francoz.net>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O

Il faut ensuite rentrer quelques informations sur l'utilisateur: son nom, son adresse email et un commentaire. Le nom servira d'identificateur de la clé et ne pourra pas être modifié, par contre il sera possible d'associer plusieurs adresses email à une seule clé.

You need a Passphrase to protect your secret key.
Enter passphrase: *******
Repeat passphrase: *******

La passphrase sera le mot de passe de votre clef. Sans cette passphrase la clé sera inutilisable pendant quelques temps à celui qui aura votre clé privée.

Il faut quelque chose de pas trop simple, mais de facile à retenir car il faudra la taper avant d'envoyer/recevoir chaque mail signé/crypté.

We need to generate a lot of random bytes. It is a good idea to perform
other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
++++++++++++++++++++++++++++++.+++++++++++++++..++++++++++++++++++++++++++++++++
++++++++++++++++++.++++++++++.++++++++++.+++++...++++++++++>++++++++++..>+++++..
................................................................................
........+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
..+++++++++++++++..+++++++++++++++++++++++++.+++++++++++++++.+++++.++++++++++.+++
++++++++++++++++++++++++++++++++.+++++.+++++.+++++..++++++++++.++++++++++..+++++>
.++++++++++>.+++++>.+++++...................................................+++++
^^^
gpg: /home/test/.gnupg/trustdb.gpg: trustdb created
public and secret key created and signed.
key marked as ultimately trusted.
pub  1024D/920625BC 2003-11-07 Julien Francoz (CoCoZ) <julien@francoz.net>
     Key fingerprint = 5D4B 4D11 66D5 A49D 6E89  A4B0 1CF9 51FE 9206 25BC
sub  2048g/D8E761F0 2003-11-07

Les clés sont alors générées (la succesion de +.^>...).

Il se peut que GPG indique que le systeme n'est pas assez aléatoire, ce qui signifie que la clé sera pseudo-périodique. Il faudra donc relancer la génération en faisant travailler un peu le système.

la ligne gpg: /home/test/.gnupg/trustdb.gpg: trustdb created indique que la base de donnée du réseau de confiance a été générée. C'est dans cette base que seront stoquées plus tard les clés publiques des personnes dont vous aurez certifié l'authenticité.

Les 3 dernières lignes donnent un récapitulatif des clés générées:

pub 1024D/920625BC 2003-11-07 Julien Francoz (CoCoZ) <julien@francoz.net> indique la taille et l'identifiant de la clé publique: 1024 bits, et numéro 920625BC. Ce numéro permettra à n'importe qui de facilement importer votre clé publique depuis un serveur de clé par exemple. Ensuite il y a la date de création de la clé, le nom de la personne, la commentaire et enfin son adresse email.

Key fingerprint =5D4B 4D11 66D5 A49D 6E89 A4B0 1CF9 51FE 9206 25BC indique le fingerprint de la clé, c'est à dire l'empreinte. C'est un calcul qui permet de vérifier qu'il s'agit bien de la bonne clé (un peu comme md5sum pour un fichier): si deux clés ont le même fingerprint, il y a de très fortes chances pour que ce soit la même clé.

sub 2048g/D8E761F0 2003-11-07 indique la taille, le numéro de série et la date de la clé privée.