GNUPG


Introduction


GnuPrivacyGuard est l'équivalent libre de PGP (peut-on encore parler d'équivalent lorsque l'on connait les possibilité de celui-ci par rapport à PGP?). C'est un cryptosystème utilisant des algorithmes de cryptographie à clé assymétriques (DSA,RSA et elGamal) pour chiffrer du contenu.

L'emploi le plus commun de ce type d'outil réside dans les communications par messagerie, ce genre de protocoles n'étant pas axés sur la sécurisation des échanges (POP, IMAP, SMTP...).

En premier lieu, la démocratisation de l'utilisation des mails entraîne généralement la question suivante : Quel est l'intérêt de signer voir de chiffrer ses mails ou ses données? A cela, je répondrai que, exception faite des cartes postales de vacances (qui généralement ne contiennent qu'un nombre limité de phrases types :), nous n'envoyons jamais du courrier sans le mettre dans une enveloppe. Il est légitime de se dire que seul le destinataire de notre lettre a le droit de lire son contenu et aucun des intervenants de LaPoste. Il en est de même pour la messagerie électronique. Pourquoi devrait-on laisser nos messages être lisibles par tout le monde. Lorsqu'un mail est envoyé de bout en bout d'un réseau tel qu'Internet, tout les intermédiaire (serveur SMTP généralement) relayent votre message écris en clair. Une fois arrivé chez votre provider, votre mail attend gentillement sur leur serveur...en clair. En extrapolant, c'est un peu comme si votre bureau de poste avait toutes les lettres de votre commune ouvertes dans ses bureaux, avant la livraison.

GPG ne sert pas uniquement a chiffrer un mail. Il vous est possible également de prouver que le rédacteur est bien celui qu'il prétend être. Nous venons donc d'aborder 2 notions essentielles :


Principes de fonctionnements : Chiffrement et signature


Comme évoqué précédemment, GPG (comme OpenSSL, OpenSSH et nombre de protocoles) repose sur l'utilisation d'algorithme à clé assymétriques. Cette méthode apparue en 76, à la suite de recherche par Diffie & Hellman et fut utilisée pour palier aux problèmes liés a l'utilisation de clé symétriques où une seule et même clé permettait de crypter et de décrypter de l'information. Bien qu'étant bien plus rapide que l'utilisation de clé assymétriques (rapport 1 à 1000...), le besoin de divulguer sa clé de chiffrement à tout les destinataires représentait un réel problème de confidentialité.
Schématiquement, l'utilisation du chiffrement par clé assymétriques se fait comme suit :


En revanche, l'utilisation de signatures numeriques par clé assymétriques se fait comme suit :



Application


Dans cette partie, nous allons détailler comment générer sa propre paire de clé avec gpg et comment gérer son trousseau personnel.


Génération de sa paire de clé

Pour générer sa paire de clé :

[seb@localhost seb]$ gpg --gen-key gpg (GnuPG) 1.2.1; Copyright (C) 2002 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: AVERTISSEMENT: l'utilisation de la mémoire n'est pas sûre ! gpg: voir http://www.gnupg.org/fr/faq.html pour plus d'informations gpg: /home/seb/.gnupg: répertoire créé gpg: nouveau fichier de configuration `/home/seb/.gnupg/gpg.conf' créé gpg: le porte-clés `/home/seb/.gnupg/pubring.gpg` a été créé Sélectionnez le type de clé désiré: (1) DSA et ElGamal (par défaut) (2) DSA (signature seule) (5) RSA (signature seule) Votre choix ? 1

Le type de clé à utilisé dépend sensiblement de ce que vous voulez en faire. Sachant que l'algorithme ElGamal est utilisé dans le mécanisme de signature d'un message, nous choisissons la première valeur.

Nous indiquons ensuite la taille nos clés. La valeur par défaut est bonne. Evitez de choisir une clé trop grande au risque de perdre beaucoup de temps pendant le chiffrement.



La paire de clés DSA fera 1024 bits. Préparation à la génération d'une nouvelle paire de clés ELG-E. la taille minimale est 768 bits la taille par défaut est 1024 bits la taille maximale conseillée est 2048 bits Quelle taille de clé désirez-vous ? (1024)


On indique ensuite la période de validité de la clé. Sauf cas particuliers, nous n'avons pas intérêt à faire expirer notre clé.


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)


Ensuite, pour identifier la paire de clé (notemment depuis un logiciel de messagerie), il faut lui associer un nom, un mail et un commentaire. Vous pouvez si vous le désirez posséder plusieurs clé différentes, selon le contexte. Cette identification devient donc nécessaire.


Vous avez sélectionné ce nom d'utilisateur: "Sebastien AUGEREAU (Exemple) <saugerea@etudiant.univ-mlv.fr>" Changer le (N)om, le (C)ommentaire, l'(E)-mail ou (O)K/(Q)uitter ? o Vous avez besoin d'un mot de passe pour protéger votre clé secrète. Entrez le mot de passe: Validez le mot de passe: 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. .++++++++++..+++++.+++++.+++++...++++++++++++++++++++.+++++.++++++++++.++++++++++..++++++++++++++++++++.++++++++++++++++++++.++++++++++.+++++.+++++>.++++++++++^^^^ gpg: /home/seb/.gnupg/trustdb.gpg: base de confiance créée les clés publique et secrète ont été créées et signées. clé marquée comme ayant une confiance ultime. pub 1024D/02217E97 2003-11-12 Sebastien AUGEREAU (Exemple) <saugerea@etudiant.univ-mlv.fr> Empreinte de la clé = 6905 5F45 513A 180B 4401 D1D5 F98F 086E 0221 7E97 sub 1024g/B52B2DF4 2003-11-12


Notre paire de clé a été générée, elle est directement utilisable depuis n'importe quel logiciel de messagerie récent (Mozilla Enigmail, Evolution, Balsa, Outlook...).

Nous avons également créé un trousseau de clé (pubring). Dans ce trousseau, nous donc allons stocker les clés publiques des personnes utilisant ce système et les signer.


Importation de clé publiques


Importer la clé publique d'un ami, collègue ou de toute autre entité revient à pouvoir lui envoyer des données qu'elle sera la seule à pouvoir déchiffrer via sa clé privée.

La gestion du trousseau se fait toujours par l'outil gpg. Si nous admettons que nous avons une clé au format ascii (codée sur 7bits par utilisation de l'argument –armor à l'export) du type :

-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.1 (GNU/Linux) mQGiBD+yCbcRBACRxHOlVNQGLFFUtou2zIXRL9hjH9JwkUA5/AHv/lvh1AD/29Z/ Se4aYy2NG2vDEmPkFXP/oo0x0bwvk8ELkKdHwuAS+Il3S9cDQmGoMFhNS6hFhqS8 ... +Y8IbgIhfpfteACfSJWpLFNyw4bUwT1mgN/UzeWTkvMAn2bNuczM4VYsOGjnFfWt KgcQi3TT =4K2+ -----END PGP PUBLIC KEY BLOCK-----

Nous l'ajoutons à notre trousseau comme suit :

gpg –import <nom_du_fichier>

Avec <nom_du_fichier> un fichier ASCCI contenant une clé publique exportée au format ASCII.

[seb@localhost seb]$ gpg --import seb.asc gpg: AVERTISSEMENT: l'utilisation de la mémoire n'est pas sûre ! gpg: voir http://www.gnupg.org/fr/faq.html pour plus d'informations gpg: clé 02217E97: clé publique "Sebastien AUGEREAU (Exemple) <saugerea@etudiant.univ-mlv.fr>" importée gpg: Quantité totale traitée: 1 gpg: importée:


Pour partager sa clé privée, l'idéal est de l'exporter au format ASCII, c'est à dire d'utiliser un encodage sur 7bits:

[seb@localhost seb]$ gpg –export -armor > seb_pubkey.asc gpg: AVERTISSEMENT: l'utilisation de la mémoire n'est pas sûre ! gpg: voir http://www.gnupg.org/fr/faq.html pour plus d'informations -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.1 (GNU/Linux) mQGiBD+yCbcRBACRxHOlVNQGLFFUtou2zIXRL9hjH9JwkUA5/AHv/lvh1AD/29Z/ Se4aYy2NG2vDEmPkFXP/oo0x0bwvk8ELkKdHwuAS+Il3S9cDQmGoMFhNS6hFhqS8 ... +Y8IbgIhfpfteACfSJWpLFNyw4bUwT1mgN/UzeWTkvMAn2bNuczM4VYsOGjnFfWt KgcQi3TT -----END PGP PUBLIC KEY BLOCK-----


Le certificat de révocation


Après avoir abordé le thème de la gestion de clé et d'utilisation de son trousseau, nous allons ici détailler la notion de certificats de révocation.

Avoir généré une paire de clé et l'utiliser est, comme nous venons de le voir, relativement simple et pratique. On ne s'en passe plus jusqu'au jour où l'impensable se produit : on perd son trousseau de clé et ses clés personnelles, ou pire, notre clé privée a été compromise. Pour les clé publiques de son trousseau, ce n'est pas si grave puisqu'un simple réenvoi de la part de son cercle d'amis permet de les retrouver.
Pour ce qui est de sa clé publique, ce n'est pas non plus un problème puisque logiquement, elle a été largement diffusée. En revanche, pour la clé privée, c'est un autre problème puisque la logique veut qu'on soit la seule personne à la connaître. Et la perdre implique qu'on ne peut plus lire de mails chiffrés avec notre clé publique.
Heureusement, il existe pour ce genre de situation la notion de certificat de révocation.
Pour générer un certificat de révocation, il suffit d'utiliser la commande :

[seb@localhost seb]$ gpg --gen-revoke saugerea@etudiant.univ-mlv.fr gpg: AVERTISSEMENT: l'utilisation de la mémoire n'est pas sûre ! gpg: voir http://www.gnupg.org/fr/faq.html pour plus d'informations sec 1024D/02217E97 2003-11-12 Sebastien AUGEREAU (Exemple) <saugerea@etudiant.univ-mlv.fr> Create a revocation certificate for this key? y Please select the reason for the revocation: 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 = Cancel (Probably you want to select 1 here) Votre décision ?


Evidemment, à l'issue de la configuration de la création de votre certificat, gpg vérifiera que vos avez bien authorité sur le trousseau que vous souhaitez révoquer en vous demandant la passphrase associée.

Vous avez besoin d'un mot de passe pour déverrouiller la clé secrète pour l'utilisateur: "Sebastien AUGEREAU (Exemple) <saugerea@etudiant.univ-mlv.fr>" clé de 1024 bits DSA, ID 02217E97, créée le 2003-11-12


Puis le certificat est généré, GPG vous conseille alors de placer ce certificat en lieu sur. La raison est simple. Si une personne reussi à accéder par un quelconque moyen à votre certificat de révocation, il pourra faire croire à votre insu que votre trousseau n'est plus valide.


ASCII armored output forced. Revocation certificate created. Please move it to a medium which you can hide away; if Mallory gets access to this certificate he can use it to make your key unusable. It is smart to print this certificate and store it away, just in case your media become unreadable. But have some caution: The print system of your machine might store the data and make it available to others!


Conclusion

Dans cette partie, nous avons souhaité mettre en avant un moyen simple et ouvert de certifier les échanges d'informations sur des canaux non sûr tels qu'Internet. L'utilisation de l'outil gpg est généralement faite au niveau de l'administration de son trousseau.
La plupart des logiciels de messageries évolués reconnaitront automatiquement vos clé et vous permettront d'automatiser les procédures de chiffrement ou de signature. Enfin, le lecteur devra garder en tête que valider l'acceptation d'une clé publique d'un ami (et de toutes ses clé publiques) doit être fait avec précaution en utilisant un canal de transmission absolument sûr. Rappelez vous que dès lors qu'un maillon de la chaine de confiance a été compromis, toutes les personnes qui importerons vos clés publiques seront trompées...

Back Back
First Previous Post comment Next Last