Jul 03, 2024

Wiki

Python

Aide

edit SideBar

Search

Utilisation De Gnupg


Création d'une clé

La création

Dans un terminal, on lance gpg :

  guyeux@guyeux-laptop:~$ gpg --gen-key

  gpg (GnuPG) 1.4.6; Copyright (C) 2006 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.

Sélectionnez ensuite le type de clé désiré:

  (1) DSA et Elgamal (par défaut)
  (2) DSA (signature seule)
  (5) RSA (signature seule)

  Votre choix ?

Le choix par défaut pour le type de clé (DSA et Elgamal) est raisonnable.

  La paire de clés DSA fera 1024 bits.

  Les clés ELG-E peuvent faire entre 1024 et 4096 bits de longueur.

  Quelle taille de clé désirez-vous ? (2048) 

Fixez la taille de votre clé (2048 bits est suffisant). La prochaine étape consiste à fixer la durée de validité de la clé clé

  La taille demandée est 2048 bits

  Spécifiez combien de temps cette clé devrait être valide.

  0 = la clé n'expire pas

  <n>  = la clé expire dans n jours
  <n>w = la clé expire dans n semaines
  <n>m = la clé expire dans n mois
  <n>y = la clé expire dans n années

  La clé est valide pour ? (0) 

Fixez la durée de validité de votre clé, selon vos besoins.

  La clé n'expire pas du tout
  Est-ce correct ? (o/N) o

Vous avez besoin d'un nom d'utilisateur pour identifier votre clé; le programme le construit à partir du nom réel, d'un commentaire et d'une adresse e-mail de cette manière : « Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de> »

  Nom réel:

Tapez prénom et nom. Ils seront publiques, comme votre clé : ne mettez pas n'importe quoi !

Vient ensuite le courriel attaché à la clé. Vous pouvez alors ajouter un commentaire, puis...

  Vous avez sélectionné ce nom d'utilisateur:
  "Christophe Guyeux <guyeux@gmail.com>"

  Changer le (N)om, le (C)ommentaire, l'(E)-mail ou (O)K/(Q)uitter ? 

Vous avez alors besoin d'une phrase de passe pour protéger votre clé secrète.

  gpg: gpg-agent n'est pas disponible dans cette session

  Entrez la phrase de passe: 

Entrez alors votre phrase de passe, suffisamment compliquée. Deux fois (rien n'apparaît).

Un grand nombre d'octets aléatoires doit être généré. Vous devriez faire autre-chose (taper au clavier, déplacer la souris, utiliser les disques) pendant la génération de nombres premiers; cela donne au générateur de nombres aléatoires une meilleure chance d'avoir assez d'entropie.

Des symboles apparaissent pendant cette génération...

  .+++++++++++++++.++++++++++++++++++++.++++++++++..+++++++++++++++++++

Pendant qu'il génère la clé, faites n'importe quoi : votre clé n'en sera que plus sûre.

Par exemple, ouvrez un autre terminal, et lancez une commande gourmande en CPU (comme find / -name toto).

On a alors généré nos clés...

  gpg: clé 558D43BA marquée comme ayant une confiance ultime.

  les clés publique et secrète ont été créées et signées.

  gpg: vérifier la base de confiance

  gpg: 3 marginale(s) nécessaires, 1 complète(s) nécessaires, modèle de confiance PGP

  gpg: profondeur: 0  valide:   1  signé:   0

  confiance: 0-. 0g. 0n. 0m. 0f. 1u

  pub   1024D/558D43BA 2007-12-10

  Empreinte de la clé = EE03 AA67 E5FF 78D5 822C  7798 0EA0 9EBC 558D 43BA

  uid                  Christophe Guyeux <guyeux@gmail.com>

  sub   2048g/8C3B40DD 2007-12-10

  guyeux@guyeux-laptop:~$ 

Ce que l'on vient de faire...

Nous avons généré deux clés.

  • L'une d'elle est la clé publique (pub), que l'on va pouvoir donner à tout le monde, et dont l'identifiant est 558D43BA.
  • L'autre est la clé secrète (sub), que l'on doit absolument être le seul à conserver. Son identifiant est 8C3B40DD.

On trouve aussi, dans le compte-rendu final, la taille de chaque clé, la date de création de ces clés, l'uid, ainsi que l'empreinte de la clé totale.

Ces clés sont enregistrées dans le répertoire par défaut qui est le répertoire /.gnupg/.

Lorsqu'on regarde à l'intérieur de ce répertoire, on remarque en effet qu'il y a en particulier deux fichiers, pubring et secring.

Utilité des clés

Les clés publique et secrète sont étroitement liées. L'une sert à défaire ce que l'autre a fait :

  • Lorsqu'on signe un message, on chiffre un résumé (hash) avec la clé secrète,
    • N'importe qui avec la clé publique peut déchiffrer ce résumé pour vérifier s'il correspond bien au message.
    • Vu que personne ne doit connaître la clé secrète, si le message est valide à la fin, c'est qu'il a été signé par la bonne personne.
  • Enfin, lorsqu'on chiffre un message, on utilise la clé publique, et seul le propriétaire de la clé secrète pourra appliquer la formule pour déchiffrer le message.

On se rend compte que la clé secrète est une des clés de voûte du système : si quelqu'un d'autre a accès à notre clé secrète, il pourra envoyer des messages en se faisant passer pour nous, ou bien il pourra lire des message chiffrés à notre intention.

Pour améliorer encore plus la sécurité, les programmes demanderont la phrase de passe pour pouvoir utiliser la clé secrète (la clé secrète est chiffrée avec la passphrase).

Ainsi, en plus de la clé secrète, il faut connaître la passphrase pour pouvoir utiliser les fonctionnalités de GnuPG.

Certificats de révocation

Avant d'aller plus loin, il est préférable de créer des certificats de révocation.

En effet, il se peut que, pour différentes raisons, notre clé ne soit plus sûre, perdue, ou tout simplement périmée.

Afin de pouvoir dire au reste du monde que cette clé est périmée, on peut utiliser un certificat, créé auparavant, que l'on publiera pour informer nos correspondants.

Pour ce faire, la commande suivante suffit :

  gpg --gen-revoke monId

monId, comme on le retrouvera par la suite, est une chaîne de caractères propre à la clé à révoquer : nom, adresse mail, etc.

Soyons clair : cette commande ne révoque pas votre clé, elle établit juste un certificat, qui vous sera utile le jour où vous souhaiterez révoquer cette clé.

Il est conseillé de générer un certificat pour les trois types de révocation, afin d'être prêt dans tous les cas de figure. Une fois ces certificats générés, il faut les garder dans plusieurs endroits sûrs : il ne faut pas que n'importe qui puisse révoquer notre clé !

Voici un exemple complet de génération d'un certificat de révocation, dans lequel la phrase de passe m'a été posée :

  guyeux@coriace:~$ gpg --gen-revoke Guyeux

  sec  1024D/B52FF09E 2009-01-30 Christophe Guyeux (Clé du boulot) 
  <christophe.guyeux@univ-fcomte.fr>

  Générer un certificat de révocation pour cette clé ? (o/N) o
  choisissez la cause de la révocation:
    0 = Aucune raison spécifiée
    1 = La clé a été compromise
    2 = La clé a été remplacée
    3 = La clé n'est plus utilisée
    Q = Annuler
  (Vous devriez sûrement sélectionner 1 ici)
  Votre décision ? 3
  Entrez une description optionnelle ; terminez-là par une ligne vide:
  > 
  Cause de révocation: La clé n'est plus utilisée
  (Aucune description donnée)
  Est-ce d'accord ? (o/N) o

  Vous avez besoin d'une phrase de passe pour déverrouiller la

clé secrète pour l'utilisateur: « Christophe Guyeux (Clé du boulot) <christophe.guyeux@univ-fcomte.fr> »

  clé de 1024 bits DSA, ID B52FF09E, créée le 2009-01-30

  sortie avec armure ASCII forcée.
  Certificat de révocation créé.

  Déplacez-le dans un support que vous pouvez cacher ; si Mallory a
  accès à ce certificat il peut l'utiliser pour rendre votre clé
  inutilisable.
  Une bonne idée consiste à imprimer ce certificat puis à le stocker
  ailleurs, au cas où le support devient illisible. Mais attention :
  le système d'impression de votre machine pourrait stocker ces
  données et les rendre accessibles à d'autres personnes !
  -----BEGIN PGP PUBLIC KEY BLOCK-----
  Version: GnuPG v1.4.9 (GNU/Linux)
  Comment: A revocation certificate should follow

  bdslkmkmkfqkfmlqskfmqskfmlkqsmgkmdlgkmsdfg
  gqgkfqdmkg
  gqlkglqsd
  -----END PGP PUBLIC KEY BLOCK-----

Le certificat (qui n'est pas le mien :)) est ce qui est à la fin du document (entre le BEGIN et le END). Il est à conserver.

Une fois les clés et les certificats créés, l'initialisation du processus est faite. On peut se mettre à l'utiliser dans la vie de tous les jours.

Signer ses informations

Avec un fichier joint

Signature

Pour signer un fichier, il faut taper :

  gpg --default-key votre-clef --armor --detach-sign fichier

Cela créera un fichier portant le même nom que celui à signer avec une extension *.asc

Ensuite il vous suffira d'envoyer votre fichier avec lequel vous allez joindre le fichier *.asc

Vérification

Pour vérifier que le fichier est certifié authentique, il suffit de taper (si bien sûr vous avez la clef publique de votre correspondant) :

  gpg --verify fichier.asc fichier

Signature intégrée

Vous pouvez intégrer dans le fichier même la signature électronique.

Pour cela :

  gpg --default-key votre-clef --clearsign fichier

La signature se trouvera à l'intérieur du fichier.

Vous le remarquerez rapidement, votre texte sera entouré des balises GPG avec le morceau de la signature.

Pour vérifier l'authenticité :

  gpg --verify le-fichier-signé

Chiffrer ses informations

Chiffrement via clefs

Pour chiffrer :

  gpg --recipient clef-du-recepteur --armor --encrypt fichier

Vous aurez un fichier *.asc (ascii), qui est lisible par un éditeur de textes, mais bien sûr incompréhensible.

Vous pouvez faire un copier coller du fichier dans votre courriel, etc.

sans --armor, on obtient un fichier binaire (.gpg), plus légère, mais moins souple d'utilisation.

Seule la personne possédant la clef indiquée dans la commande pourra déchiffrer :

  gpg --decrypt fichier > fichier

Tout simplement, il demandera le mot de passe de l'utilisateur et transformera le fichier.gpg en fichier lisible.

Chiffrement symétrique

Autre moyen de chiffrer / déchiffrer: le chiffrement symétrique.

C'est-à-dire qui n'utilise pas le système de clefs publique/privée.

On vous demande un mot de passe que votre interlocuteur doit connaître.

Pour chiffrer :

  gpg -c fichier 

Pour déchiffrer :

  gpg -d fichier.gpg -o fichier

Rappelons que la meilleure façon de donner un mot de passe à quelqu'un, c'est par un contact SOCIAL !

Page Actions

Recent Changes

Group & Page

Back Links