Tux aux hermines
Accueil du site > Les Documentations > GnuPG : Signez, Cryptez !

GnuPG : Signez, Cryptez !

Qui Quoi Quand Comment Pourquoi

mardi 4 février 2003, par Vincent Correze

Voici un petit résumé de ce qui a été discuté au MDL sur la cryptographie.

On a essayé de traiter de tout ! Voici ce qu’on a tenté d’expliquer.

La cryptographie, c’est quoi

C’est tout système permettant de dissimuler le contenu réel d’un texte à un lecteur autre que le destinataire. En informatique, c’est un (petit) ensemble de protocoles qui permettent cette dissimulation. C’est utilisé surtout sur deux types de services :

Le web : on utilise alors le protocole SSL (Secure Socket Layer). Il permet de garantir que l’échange entre un client (votre micro) et le serveur (le site web) ne peut pas être lu par un tiers.

La messagerie : On a là plusieurs utilisations distinctes, qui visent à obtenir les choses suivantes :
- Signature électronique : elle garantit non seulement que c’est bien vous qui avez envoyé le mail (authentification) mais aussi qu’il n’a pas été modifié (intégrité).
- Cryptage de messagerie : Il garantit la même chose que la signature, mais assure en plus la confidentialité (seul le destinataire peut lire le mail).

Le programme le plus utilisé en messagerie est GnuPG. A la différence d’autres systèmes de cryptographie, GnuPG ne garantit pas la non-répudiation (c’est à dire que vous pouvez dire « Je n’ai pas reçu ce message »)

Principe de fonctionnement

On ne traite ici que de la messagerie.

On utilise en fait deux clefs :
- la clef publique est connue de tout un chacun. C’est celle qu’on utilise pour crypter un message à l’intention de quelqu’un.
- la clef privée est connue seulement du propriétaire et sert à déchiffrer les messages cryptée pour soi avec la clef publique.

Ces clefs sont dépendante l’une de l’autre, c’est pourquoi on parle toujours de paire de clefs.

Le caractère public de la première clef permet d’éviter d’avoir à fournir sa clef a l’expéditeur avant qu’il envoie le message.

Si la clef privée vient à être découverte, le secret des messages est alors compromis. c’est pourquoi il ne faut JAMAIS la faire circuler à travers un canal moins qu’absolument sûr.

Pour garantir que la clef privée est bien utilisée par la personne qui l’a créée, on exige à chaque fois la saisie d’une « phrase de pass », qui permet, comme un login, de garantir que c’est bien le créateur de la clef qui l’utilise [1].

Signer un Mail

Lorsqu’on signe, l’ordinateur calcule un résumé [2] du message (y compris les en-têtes, et donc l’adresse de l’expéditeur) et on crypte ce résumé avec la clef privée de l’expéditeur.

Lorsqu’on reçoit, l’ordinateur décrypte ce résumé à l’aide de la clef publique de la personne (ce qui est possible car les clef sont dépendantes), et vérifie que le résumé correspond bien au message reçu.

Crypter un mail

On procède alors dans l’autre sens : On crypte le contenu complet du message avec la clef publique du destinataire. Du coup, seul le possesseur de la clef privée pourra décrypter le contenu du message.

détail technique

En fait, lorsqu’on crypte, l’ordinateur génère une clef de session unique [3]. Cette clef est alors utilisée pour crypter le message. On crypte alors la clef de session avec la clef publique du destinataire (ou la clef privée lorsqu’on signe) et on transmet le message crypté & la clef de session cryptée.

répudiation

Lorsqu’on ne souhaite plus se servir de sa clef, soit qu’elle ait été compromise, soit qu’on n’en ait plus envie, il faut pouvoir « dire au monde » que la clef ne sert plus. c’est le rôle du certificat de révocation. C’est un code, signé par la clef privée de la paire à révoquer.

réseau de confiance & signature de clef

Le problème avec ce système, c’est que si je crée une clef en indiquant (au clavier) que mon nom est Napoléon, mon mail napoleon@sainthelene.fr et en commentaire Empereur des Français, vous allez reçevoir un mail d’un type mort depuis près de 2 siècles ;-)

Pour certifier l’authenticité d’une clef, il faut créer ce qu’on appelle un réseau de confiance en signant la clef publique.

Pour cela, on extrait un code (hexadécimal) permettant de désigner clairement (pour un ordinateur) la clef publique en question. Ce code est appelé fingerprint (empreinte digitale) de la clef. On se présente ensuite physiquement devant d’autres utilisateurs, et on leur montre ses papiers d’identité. Ces personnes peuvent alors garantir que M. Dupont leur a garanti que la clef possédant le fingerprint en question est bien celle de M. Dupont.

Sûr de ce fait, il peuvent signer la clef pour dire à tout le monde « Je m’appelle David Vincent, je l’ai vu et c’est bien sa clef ». Si 256 personnes signent la clef de M. Dupont, vous pouvez raisonnablement être certain que la clef que vous avez chargée est bien celle de M. Dupont.

Mais pour aller encore plus loin, vous pouvez indiquer lorsque vous signez la clef quelle confiance vous faites à la personne : il y a en effet une différence entre « J’ai rencontré une fois M. Dupont, et il m’a montré ses papiers et son Fingerprint. » et « Je connais par coeur M. Dupont, il m’envoie 156 mails signés par jour, et je suis certain que la clef possédant ce fingerprint est bien en sa possession. »

Serveurs de clefs

Pour simplifier la récupération des clefs, il existe un réseau de serveurs sur lesquelles ces clefs sont disponibles. Le plus connu est sans doute pgp.mit.edu, situé au MIT, mais la racine de ce réseau est à wwwkeys.pgp.net. Ces serveurs font partie du réseau PGP [4]. Une autre version (OpenPGP) dispose elle-aussi de son réseau de serveurs, accessible à www.keyserver.net. De là, on peut sélectionner les serveurs proches de soi [5].

Qui peut s’en servir en France

Depuis le décret n°99-200 du 17 mars 1999, tout le monde peut utiliser « un matériel ou logiciel utilisant un service de confidentialité mis en oeuvre par un algorithme dont la longueur est supérieure à 40 bits et inférieure ou égale à 128 bits, à condition, soit que lesdits matériels où logiciels aient préalablement fait l’objet d’une déclaration (...) soit [qu’ils] soient exclusivement réservés à l’usage privé d’une personne physique. »

GnuPG versions 1.0.7 et suivantes et OpenSSL version 0.9.6d et suivantes ont été autorisées à la diffusion en 2002 par la DCSSI. Tout le monde peut donc télécharger ces logiciels, et même les exporter sans droit de douanes.

De plus, le système GnuPG est fait de telle sorte que la clef visée par la loi ne dépasse jamais 128 bits [6].

Pourquoi utiliser la cryptographie

Deux anecdotes vont vous montrer très clairement à quoi ça sert :

Cet été, j’ai reçu un mail d’un type qui était gestionnaire Usenet, et qui annonçait pourquoi il lançait un vote pour la disparition du forum fr.soc.politique. Dans ce mail apparaissant le nom de Stéphane MARCHAU, bien connu de la liste. J’ai fait confiance à ce mail, mais comme je ne vais jamais sur ce forum, je n’ai rien fait.

Quinze jours plus tard, je reçois un mail de la même personne, qui expliquait qu’on avait usurpé son identité, et qu’il n’avait jamais été question de supprimer le forum mais de le remplacer par trois forums plus précis... Quelqu’un avait usurpé son identité pendant les vacances, et lui avait fait beaucoup de mal en terme de crédibilité. S’il avait eu une signature électronique, cela n’aurait pas pu être possible.

L’autre histoire est du même genre, mais moins récente. Il y a quelques années, Airbus Industrie a négocié un gros contrat de vente d’avions avec une compagnie Sud-Américaine. Curieusement, ils se sont aperçu que Boeing faisait systématiquement une offre légèrement inférieure à la leur, dans la journée durant laquelle ils avaient envoyé leur dernière proposition, par mail, à leur commercial.

Imaginez maintenant que vous appartenez à un parti politique en Chine, où à un groupement pour les droits de l’homme en Russie... Vous comprenez très vite pourquoi c’est utile. Pour info, Phil. Zimmermann (le créateur de PGP, l’ancêtre (propriétaire) de GnuPG) reçoit régulièrement des mails cryptés de remerciement pour son travail pour les droits de l’homme.

Quand se servir du cryptage, de la signature

Les deux histoires ci-dessus vous montrent clairement comment faire :
- Il faut signer quand vous voulez garantir votre identité auprès des destinataires.
- Il faut crypter quand vous ne voulez pas que quelqu’un (qui peut-être le/la petit(e) ami(e) de votre correspondant) ne lise le mail.

En pratique, comment fait-on

Générer ses clefs

gpg --list-keys
gpg --gen-key

Choisir au moins l’algorithme DSA et ElGamal et le niveau 2048. Les autres ne sont vraiment plus sûrs ! Il faut aussi choisir une phrase de pass qui soit assez longue pour être sécurisée.

Exporter sa clef

gpg --keyserver pgp.mit.edu --send-key me@monfai.org
gpg --export --armor me > me.asc

Importer une clef publique dans son "trousseau" de clef connues

gpg --import fred.asc
gpg --keyserver pgp.mit.edu --recv-key 0x3DC5FD14

Voir les clef du trousseau et leur signatures

gpg --list-keys
gpg --list-sigs 0x3DC5FD14

Editer une clef

gpg --edit-key Fred

Mettre à jour toutes ses clefs d’un coup

gpg --refresh-keys

Je vous renvoie à la documentation pour la suite !

Liens

- Lea-Linux, la base ;
- Mini-Howto de GnuPG ;
- OpenPGP en Français Avec une très complète liste de liens ;
- Introduction à GnuPG assez complet sur les commandes en shell ;
- Manuel Complet de Gnu Privacy Guard ;
- FAQ non officielle, sur le site du CLX ;
- Une page de lien sur les PKI, très complète ;
- Une Liste de serveurs de clef avec indication de leur statut ;
- Une autre Liste de serveurs, plus conviviale ;
- Biglumber, un site où l’on peut trouver des séances de signature de clef (avec inscription) ;
- The Open Source PKI Book, un livre sur la PKI et ses implémentations OpenSource ;
- Cryptonomicon, site sur un livre de SF « culte » sur la cryptographie.

P.-S.

Avec tout ça, vous êtes parés !


Notes

[1] la phrase en question est saisie à la génération de la clef.

[2] un hash.

[3] Elle est toujours plus petite que 128 bits.

[4] Le programme original, propriétaire. GnuPG est totalement compatible avec ces clefs.

[5] AFAIK, le serveur france.keyserver.net n’a jamais marché... Utiliser plutôt belgium.keyserver.net.

De plus, selon spaceports, les serveurs OpenPGP ne sont pas synchrones, sauf Notwise, qui est "down" en ce moment :-(

Enfin, le serveur Mandrake existe bien, mais il n’est pas synchronisé du tout avec le réseau :-(( Pas très malin de leur part !

[6] C’est la clef de session, distincte de la clef publique. Vous pouvez donc avoir une clef publique aussi grande que vous voulez.

2 Messages de forum

SPIP | squelette | | Plan du site | Suivre la vie du site RSS 2.0