Please wait, Page is Loading...
 

Gnu PG: GNU Privacy Guard

GnuPG est un logiciel gratuit destiné à remplacer PGP. Il peut être utilisé sans aucune restriction parce qu’il n’emploie pas l’algorithme breveté IDEA . GnuPG est une application se référant au RFC4880 (d’OpenPGP).

GnuPG est un Logiciel Libre. Il peut être utilisé gratuitement mais il est aussi possible de le modifier et de le distribuer selon les termes de la licence GNU General Public License

source: http://www.gnupg.org/%28fr%29/index.html


Premier pas avec GnuPG

AVANT DE COMMENCER:
Cette documentation va présenter l’utilisation de GnuPG (gpg), ainsi que toute la philosophie qui tourne autour du système de chiffrement à clé privée/clé publique. Je présente donc ici une série de commandes utiles à taper dans un terminal. Je ne précise ici uniquement l’utilisation de GnuPG (ie gpg) pour *nix (essentiellement LINUX). Pour les autres logiciels ou plateformes (eg. Windows ou MacOS) référez vous aux logiciels indiquer plus bas.

Dans tous les cas, en guise d’aide mémoire, un recours à gpg —help ou à man gpg ne pourra qu’être conseillé…

Généralement GnuPG est disponible de base sur les diverses distributions LINUX. Si ce n’est pas le cas il est indispensable de récupérer une version de GnuPG compatible avec votre système (compilation des sources, paquetages RPM, DEB, etc.) et de l’installer en suivant le processus habituel. Pour ce faire, lisez la documentation fournie sur le site de GnuPG (http://www.gnupg.org/).
Une fois cette installation faite, il est nécessaire de se créer sa propre paire de clés et de se procurer la clé publique de ses correspondants.

Générer votre paire de clés

Cette paire de clés sera unique normalement, et vous pouvez la conserver durant des années. Donc, entrainez-vous avant de diffuser la clé publique issue de cette paire de clés. GnuPG vous permet de générer votre paire de clés. Cette paire de clés contient une clé publique + une clé privée:

  1. clé publique: le cadenas
  2. clé privée: la clé ouvrant le cadenas

La commande magique pour créer vos clés est:

%> gpg --gen-key

Le cas échéant, il va afficher la ligne:

gpg: you have to start GnuPG again, so it can read the new options file

Dans ce cas, il suffit de taper une nouvelle fois: gpg --gen-key

Plusieurs questions sont posées. Il est recommandé de prendre les valeurs par défaut, à moins de savoir exactement ce que vous faites.

  • Le real name et l’email address sont le nom et l’adresse email qui seront associés à la clé, et qui apparaîtront dans les annuaires et lorsque les autres personnes récupéreront notre clé : il est donc recommandé d’y mettre des informations valides, qui pourront servir à nous différencier.
  • L’adresse email sera utilisée dans les logiciels de messagerie, elle doit donc être celle avec laquelle on veut signer, chiffrer et déchiffrer des messages.
  • Enfin, la passphrase est une sorte de mot de passe. Elle doit être complexe, pas trop courte, et difficilement trouvable. Elle sera demandée à chaque processus de signature ou de chiffrement. Un bon mot de passe mélangera des lettres, des chiffres et des symboles non alpha-numériques, des majuscules et des minuscules, et ne devra pas être trop court. Un bon mot passe serait par exemple Epg(3£9mVfAjpD !
ATTENTION
Si vous perdez ce mot de passe vous ne pourrez plus utiliser votre paire de clés privée/publique, et donc décrypter les messages crypter avec cette clé!

Le programme va peut-être afficher un message disant qu’il n’a pas assez de nombres aléatoires en réserve. Afin de générer de l’entropie dans le système, il suffit d’ouvrir un autre terminal sur la machine et de lancer une commande gourmande en CPU (par exemple, find / -name toto, top, ou tout simplement bouger la sourie…).

À la fin, un message doit nous indiquer que les clés publique et secrète ont été créées. Vous pouvez vérifier en listant les clés qui sont dans notre keyring (porte-clés), il suffit de taper la simple commande :

%> gpg --list-keys 

et vous verrez apparaître un message de la forme:

/home/toto/.gnupg/pubring.gpg
 -----------------------------
 pub 1024D/8B20967A 2007-10-12 Real Toto Name  <toto@email.org>
 sub 2048g/9ADA82E8 2007-10-12

On remarque que notre propre clé publique est déjà dans le trousseau, et qu’elle est elle-même séparée en deux parties : la première pour valider les signatures que l’on émet, et la deuxième pour que d’autres personnes puissent nous chiffrer des messages (que l’on déchiffrera donc avec notre clé secrète). On peut aussi noter l’ID de notre clé, qui référence cette clé de manière unique : il est situé sur la première ligne, après le premier ‘/’ : ici l’ID de notre clé est 0×8B20967A.

Gérer ces clés

Nous venons de créer notre clé, mais nous allons voir qu’il est possible d’importer les clés publiques d’autres personnes dans notre trousseau de clés publiques (pubring). Afin de lister les clés qui sont dans notre keyring (porte-clés), il suffit de taper la simple commande: gpg --list-keys .

Si on le désire, il est possible d’ajouter une adresse email à notre clé. On va éditer notre clé et ajouter un uid:

%> gpg --edit-key toto
[...]

pub 1024D/8B20967A  created: 2007-10-12 expires: never      trust: -/u
sub 2048g/9ADA82E8  created: 2007-10-12 expires: never
(1). Real Toto Name  <toto@email.org>
Command>

À ce stade, il est possible de taper la commande help pour avoir la liste des sous-commandes disponibles, dont voilà un brève aperçut:

  • quit: quitter ce menu
  • save: enregistrer et quitter
  • list: lister la clé et les noms d’utilisateurs
  • uid N: sélectionner le nom d’utilisateur N
  • key N: sélectionner la sous-clé N
  • check: vérifier les signatures
  • sign: signer les noms d’utilisateurs sélectionnés
  • adduid: ajouter un utilisateur
  • addphoto: ajouter une photo d’identité (la photo doit être au format JPEG)
  • deluid: enlever les noms d’utilisateur sélectionnés
  • addkey: ajouter une sous-clé
  • addcardkey: ajouter une clé à une carte à puce
  • expire: changer la date d’expiration de la clé ou des sous-clés sélectionnées

Certaines de ces commandes requiert le mot de passe de la clé
On pourra maintenant signer et se faire envoyer des mails chiffrés en utilisant indifféremment l’une ou l’autre de ces adresses email.

Maintenant que notre clé publique est complète, on peut la diffuser. L’usage veut que les clés publiques soient envoyées sur des serveurs de clés qui eux-mêmes communiquent entre-eux. Ainsi, lorsqu’on reçoit un message signé d’une personne dont on n’a pas la clé dans notre trousseau, il est possible d’aller chercher la clé publique sur un serveur de clés afin de vérifier l’authenticité du message. De la même façon, si on veut envoyer un message chiffré à une personne, on peut récupérer sa clé publique afin de l’utiliser pour chiffrer le message.

Cette méthode n’est pas sûre. Avant de faire confiance à une clé récupérée de cette manière il est important de faire se définir un réseaux de confiance.
Le moyen le plus pertinent et efficace pour obtenir une clé publique est que vos amis (que vous connaissez) vous la communique. bien lire la partie 5 sur les réseaux de confiance.

Il existe plusieurs serveurs de clés usuels. Citons par exemple les serveurs pgp.mit.edu, pool.sks-keyservers.net, subkeys.pgp.net, ldap://certserver.pgp.com, wwwkeys.eu.pgp.net, etc.
Envoyons notre clé sur le serveur pgp.mit.edu, par exemple:

%> gpg --keyserver pgp.mit.edu --send-key 8B20967A
 gpg: success sending to `pgp.mit.edu' (status=200)

Notre clé est donc maintenant disponible sur ce serveur, et par la suite, elle sera normalement répliquée sur les autres serveurs de clés.

Maintenant, nous souhaitons ajouter un ami à notre trousseau, qui nous a indiqué sa clé publique E3350B95. Il suffit donc de taper la commande suivante afin d’importer la clé publique du serveur de clés vers notre trousseau:

%> gpg --keyserver pgp.mit.edu --recv-key 0xE3350B95
gpg: requesting key E3350B95 from pgp.mit.edu ...
gpg: key E3350B95: public key imported
gpg: Total number processed: 1
gpg:               imported: 1

Maintenant, lorsqu’on listera les clés de notre trousseau, on aura une clé supplémentaire correspondant à ce nouvel ami

Utilisation de GnuPG

L’atout principal d’applications comme GnuPG est de permettre la signature électronique. Une signature électronique est un conden sé (hash) des données en clair chiffrées avec votre clef privée. Lorsque le destinataire va recevoir les donn ées, il va calculer le condensé et le comparer avec la signature déchiffrée grâce à votre clef publiqu e. Si les deux condensés sont identiques, l’intégrité du message est vérifiée.

La signature apporte une autre information. Non seulement elle permet de vérifier l’intégrité des informations mais &eacu te;galement leur provenance. En effet, comme seule votre clef publique est capable de déchiffrer la signature, celle-ci n’a pu êtr e chiffrée que grâce à votre clef privée. Or, la paire clef publique/clef privée est intimement liée p uisqu’elle est disponible sur les serveurs de clefs et sans doute signée par vos amis. Le Web of Trust garantit la provenance du message et l’identité de l’expéditeur.

Vérifier une signature

GnuPG met à la disposition de l’utilisateur un mécanisme très simple pour vérifier une signature. Imaginons que vous veniez de récupérer ces deux fichiers: PhpBib/phpbib-1.0b.zip[PhpBib/phpbib-1.0b.zip] Type: application/zip Taille:28,8 Ko Dernière modification: 24/10/2007, 12:40:24Mime:0b.zip et PhpBib/phpbib-1.0b.zip.asc[PhpBib/phpbib-1.0b.zip.asc] Type: text/plain Taille:189 o Dernière modification: 08/11/2007, 17:29:54Mime:zip.asc. Le premier est un fichier que vous souhaitez télécharger, et au fichier signature. (le suffixe ajouté au nom du fichier n’est pas important. Ici, il s’agit de .asc mais cela aurait pu être .gpg, .sign…). Ce qui est important, c’est le contenu du fichier, qui est de la forme:

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)

iD8DBQBHMyz6rdHAoOM1C5URAsYVAKC8OWqNCiI4v201xier/KO0fRK3vgCfZKqx
s7KCfiC2zQBDg7oMBuGFTGo=
=vW7e
-----END PGP SIGNATURE-----

Si nous voulons vérifier la signature sur PhpBib/phpbib-1.0b.zip[PhpBib/phpbib-1.0b.zip] Type: application/zip Taille:28,8 Ko Dernière modification: 24/10/2007, 12:40:24Mime:0b.zip, il nous faut la clef publique associée. Pour cela, il faut disposer l’identifiant de la clé publique ayant servit à apposer la signature. Dans l’exemple l’ID de la clé est: E3350B95. Si cela n’a pas été fait, nous pouvons ensuite la récupérer avec: gpg --keyserver pgp.mit.edu --recv -keys 0xE3350B95 . Puis pour vérifier l’intégrité du fichier, il suffit de faire:

gpg --verify phpbib-1.0b.zip.asc phpbib-1.0b.zip
gpg: Signature faite le jeu 08 nov 2007 16:36:26 CET avec la clé DSA ID E3350B95
gpg: Bonne signature de  « David Folio (dfolio@free.fr PGP key) <dfolio@free.fr> »
...

La signature est vérifiée (Good signature…).

Créé une signature

Soit le fichier myFile.txt que nous souhaitons mettre à la disposition, et contenant simplement le message suivant:

CECI EST UN FICHIER TEXTE :)

GnuPG offre diverses solution pour signer votre fichier:

  1. gpg -u 9ADA82E8 --sign myFile.txt: pour créer une signature. Par défaut on obtient un fichier appelé myFile.txt.gpg, qui est en binaire, illisible:

£›ÀËÌÀ$xtç,•n…iUŒkt“žr+Ý2sRõJ*JÜÝžtvuöTp&QõSpótöðtRqqU°Òäê°gfe©‚ ÈÄð–as…·zºS•7m}v*9a9ÃüЙÁŸœmTÏüܱ£p×é­®Nû

  1. gpg -u 9ADA82E8 --clearsign myFile.txt: pour créer une signature "en clair". Par défaut on obtient un fichier appelé myFile.txt.asc, qui est formaté en ASCII:
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1
    
    CECI EST UN FICHIER TEXTE :)
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.7 (GNU/Linux)
    
    iD4DBQFHMzczrdHAoOM1C5URAiZ4AJdS0cT5NCHKByES8OevsFnijlCJAJ4n71mf
    LTMzbLWrkocCDgt7/x/G2g==
    =Yd8L
    -----END PGP SIGNATURE-----
    

    Nous voyons clairement les marqueurs insérés par GnuPG définissant le début du message signé, le début et la fin de la signature. Autre point intéressant, nous apprenons que le condensé de message utilise l’algorithme SHA1. Tout ce qui vous reste à faire est d’envoyer ce fichier (myFile.txt.asc) à tous ceux qui le souhaitent. Ils pourront facilement vérifier la signature intégrée avec: gpg --verify myFile.txt.asc (pour peu qu’ils disposent de votre clé publique).
  2. gpg -a -u 9ADA82E8 --detach-sign myFile.txt: pour créer une signature "détachée", c’est-à-dire ne contenant que la signature:
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.7 (GNU/Linux)
    
    iD4DBQFHMzczrdHAoOM1C5URAiZ4AJdS0cT5NCHKByES8OevsFnijlCJAJ4n71mf
    LTMzbLWrkocCDgt7/x/G2g==
    =Yd8L
    -----END PGP SIGNATURE-----
    

Note sur les options:

  • L’option -u nom (ou —local-user nom) permet d’indiquer quel nom ou ID utiliser pour signer le document.
  • L’option -a (ou —armor) permet d’obtenir une sortie sous forme ASCII (ie texte en claire). S’il n’est pas activé, par défaut GnuPG créé une signature sur binaire.

On peut procéder de la même manière pour crypter ces documents. Pour cela je vous laisse vous réferrer au manuel de GnuPG.


Liens: pour aller plus loin

GnuPG for Windows

  • GnuPG: provide a command line tool for windows
  • WinPT (Windows Privacy Tools)
    A collection of multilingual applications for easy digital encryption and signing of content. It’s GnuPG-based, compatible with OpenPGP compliant software (like PGP) and free for commercial and personal use under the GPL.
  • GPG4win: email-security using GnuPG for Windows
  • PGP© : Pretty Good Privacy

GnuPG for MacOS X

Tutorials

Voir aussi: S/MIME,Secure email,


« Secure e-Mail | Crypto | S/MIME »

Catégories: Cryptography | Security



Commentaires

Réagissez à cet article:

Signer en tant qu'auteur 
Website 

Veuillez indiquer un nom d'auteur, et entrer la valeur du code (limite le spam...). Merci.


  • Add This
  • Add
  • Get
  • Google

contribution