Gpg
Un article de Wiki de la communauté Mandriva.
Si vous voulez contribuer, cliquez simplement sur l'onglet modifier. Consultez également les autres pages dont la forme est à réviser.
Sommaire |
[modifier] Première approche
[modifier] Qu'est-ce que GPG ?
GPG pour GNU Privacy Guard est un libre subsitut au célèbre programme PGP ("Pretty Good Privacy") de chiffrement du non moins célèbre Phil Zimmerman. PGP et GPG vous permettent de chiffrer, déchiffrer, signer et vérifier des fichiers contenant du texte ainsi que des fichiers binaires.
Je ne vais pas décrire ici la licence ni la version x ou y de PGP. GPG a été développé à partir de zéro sans se baser sur un algorithme de cryptage breveté. Sa licence est la GPL et GPG adhère au standard OpenPGP (RFC2440).
GPG est compatible avec les versions 5.x et supérieures de PGP : vous pouvez échanger des messages cryptés, vérifier des messages et utiliser des clés produites avec ces versions de PGP. GPG fonctionne sur les principaux systèmes Unix ainsi que sur Microsoft Windows.
Les termes de "chiffrement/déchiffrement" sont plus exacts que les termes "cryptage/décryptage". Le terme "décryptage" est à utiliser lorsqu'un tiers essaie de transformer le message chiffré en texte lisible alors qu'il ne connait pas la clé.
[modifier] Pourquoi et quand utiliser GPG ?
Le principal domaine d'application de GPG est l'email. Pensez simplement à ceci : jour après jour vous envoyez des informations non codées sur un réseau non sécurisé. N'importe qui avec les connaissances suffisantes, du matériel et du logiciel peut lire votre courrier ; votre courrier peut traverser les réseaux informatiques d'organisations criminelles, de vos concurrents ou de n'importe quelle agence gouvernementale (et étant donné l'architecture du réseau Internet, ceci peut être plus fréquent que vous l'imaginez), votre compte email peut être ainsi vu par tous ...
GPG assure que seulement vous et le destinataire du courrier peuvent lire le message. De plus, il authentifie les messages au destinataire et lui assure que le contenu n'a pas été modifié.
Bien sûr, cela n'a pas beaucoup d'intêret de signer ou même de chiffrer tous vos messages (à moins que vous vouliez prouvez à tout le monde que vous êtes paranoïaque, n'est-ce pas ;)), mais les informations confidentielles devraient être à l'abri des yeux indiscrets. Vous n'envoyez pas vos rapports professionnels sur des cartes postales, n'est-ce pas ?
GPG vous permet aussi de vérifier les paquetages RPM utilisant la clé publique de Mandriva sur votre CD Mandrivalinux.
[modifier] Comment fonctionne GPG ?
GPG est - comme Ssh - basé sur un mécanisme à double clés. La double clé est constituée d'une clé privée et d'une clé publique. Ces paires sont uniques, c'est à dire qu'une clé privée n'a qu'une et une seule clé publique associée (et vice versa). Autant vous pouvez distribuer votre clé publique à tous, votre clé privée doit rester secret à tout prix.
- Votre clé publique permet aux autres de chiffrer des messages et des fichiers qui vous sont destinés et de vérifier votre signature sur les fichiers et messages que vous avez envoyés.
- Votre clé privée vous permet de déchiffrer les messages et fichiers chiffrés par les autres avec votre clé publique et de chiffrer et/ou signer vos propres fichiers et messages. En relation avec la clé publique du destinataire, votre clé privée vous permet de chiffrer un message ou un fichier pour ce destinataire et/ou le signer.
Comme vous pouvez le voir, il y a deux mécanismes élémentaires, la signature et le chiffrement :
- Un message ou un fichier signé permet au destinataire de vérifier si le message ou le fichier provient bien du propriétaire de la clé privée avec laquelle le message ou le fichier ont été signés. Pour cela, le destinataire a besoin de la clé publique de celui qui a signé le message. La signature authentifie l'émetteur du message ou du fichier.
- Chiffrer un message ou un fichier vous permet de déterminer qui peut les lire. Seulement celui qui possède la clé privée associée à la clé publique que vous avez utilisée pour crypter le fichier ou le message pourra les déchiffrer. Vous pouvez spécifier autant de destinataires que vous voulez, tant que vous disposez de toutes les clés publiques nécessaires. Le chiffrement authentifie le destinataire d'un message ou d'un fichier.
- Pour authentifier les deux parties (l'émetteur et le destinataire) un message ou un fichier peuvent être chiffrés et signés. En fait il est toujours recommandé de signer et de chiffrer un fichier ou un message.
Il est possible d'avoir plus d'une paire de clés, par exemple une pour les communications privées et une autre pour les communications professionnelles. La clé privée doit être protégée par une passphrase (NDT: une passphrase est comme un mot de passe. Mais au lieu qu'il n'y ait qu'un mot, il y a une phrase offrant une meilleur protection.)
Il est extrêmement important de ne jamais compromettre votre clé privée. Si quelqu'un obtenait votre clé privée, lui ou elle pourrait décrypter vos messages, et pire encore, se faire passer pour vous. GPG fournit un mécanisme pour révoquer des paires invalides.
Les clés publiques des destinataires sont organisées dans la keyring (la suite des clés), vous permettant ainsi d'authentifier autant de destinataires ( = des personnes capables de décrypter le message) que vous voulez en fournissant les identifiants de leurs clés publiques.
Il est conseillé de stocker sa clé publique sur l'un des serveurs disponibles gérant les clés publiques. Ainsi, les gens peuvent récupérer votre clé publique et vous envoyer des messages chiffrés sans avoir à vous contacter en premier.
[modifier] Les pièges de GPG
Le système GPG a quelques points faibles :
- la passphrase pour la clé secrète
- la validité des clés publiques
- la consommation de mémoire
- la compatibilité avec PGP
Pour la passphrase, c'est à vous de choisir une bonne phrase qui ne peut pas être facilement devinée ou crackée par un programme spécialisé dans le cassage de mots de passe. Si vous n'arrivez pas à penser à une bonne passphrase, utilisez un générateur de mot de passe disponible sur le Web comme PassMaker (qui a l'avantage de créer des passphrases facile à retenir).
Il est possible de créer une fausse clé publique et donc décrypter les messages chiffrés avec cette fausse clé. Pour éviter cela, un niveau de confiance peut être assigné aux clés publiques par les destinataires. En s'assurant de la validité d'une clé, un destinataire dit qu'il est sûr que cette clé provient bien de la personne qui la possède (ownertrust). Ce mécanisme permet aussi à GPG de calculer le niveau de confiance (trustworthiness) d'une clé.
Si vous ajoutez une clé publique à votre keyring, vous pouvez lui associer un niveau de confiance de unknown ("Je ne sais pas si la clé est valide") à full ("Je suis _absolument_ certain que cette clé est valide"). Nous verrons comment modifier ce niveau de confiance avec Kgpg. pour les adeptes de la console, la commande est :
gpg --edit-key {ID}
suivi par
trust
Les clés de confiance peuvent être ensuite mise sur un serveur qui gère les clés publiques, qui mettera à jour le niveau de confiance de la clé.
Vous remarquerez qu'à chaque fois que vous utilisez GPG, il se plaint ainsi :
gpg: Warning: using insecure memory1.1
GPG ne peut pas vérouiller les pages mémoire tant que vous ne l'utilisez pas avec les privilèges de root. Ainsi, il pourrait être possible de lire le contenu de ces pages et donc de la passphrase. La seule solution est d'exécuter GPG avec le 'setuid root' (chmod 4755 /usr/bin/gpg), mais c'est aussi considéré comme un risque ...
En mettant l'option no-secmem-warning dans le fichier ~/.gnu/options, vous pouvez au moins éviter l'affichage de ce message d'alerte.
GPG ne reconnait pas l'algorithme de cryptage IDEA utilisé en standard dans les versions de PGP jusqu'aux versions 2.x puisque qu'il repose sur un code breveté.
Des clés incompatibles conduisent à ce message d'erreur lorsqu'on essaie de les importer :
unsupported public key algorithm
Les clés de PGP 5 (et des versions suivantes) ne devraient pas poser de problème. Vous pouvez même importer vos clés PGP et les utiliser dans GPG.
La FAQ liste les suggestions pour améliorer l'interopérabilité avec PGP 5.x. Pour PGP 2.x se référer à Replacing PGP 2.x with GnuPG. Bien sûr vous pouvez aussi installer PGP 6.x, qui est disponible gratuitement pour plusieurs plates-formes .
[modifier] Installation et configuration
[modifier] Installation
GnuPG est désormais automatiquement installé avec Mandriva.
- Maintenant vous devez générer votre paire de clés par la commande gpg ––gen-key
- Vous devez répondre à quelques questions (type de la clé, longueur de la clé, validité). Utilisez les valeurs par défaut à moins que vous sachiez ce que vous faites.
- Maintenant vous devez fournir un identifiant d'utilisateur : vos prénom et nom, votre adresse email et éventuellement un commentaire.
- Entrez une passphrase (elle ne s'affichera pas). Vous devez la saisir à 2 reprises pour éviter les erreurs.
- Maintenant votre clé est générée. Pour aider le programme à trouver assez de données aléatoires, déplacez votre souris et appuyez sur les touches CTRL, ALT ou ECHAP de nombreuses fois.
- Ca y est 1.1 Le répertoire ~/.gnupg devrait contenir maintenant ces fichiers : options ou gpg.conf suivant votre version de gnupg (fichier de configuration), pubring.gpg (votre clé publique) et secring.gpg (votre clé privée). Les clés sont au format binaire.
[modifier] Test et configuration
Dans les deux parties suivantes, les manipulations sont faites avec la console. Cependant, il est possible de les effectuer en interface graphique avec Kgpg. C'est ce que nous expliqueront plus bas.
Avant de distribuer votre clé, vous devez faire quelques tests :
- gpg ––list-keys affichera votre paire de clés. Cela ressemblera à :
pub {tailleClé}/{IDdeLaCléPub} {Date de création} {Vos Prénom et Nom} {Le Commentaire} {l'adresseMail}
sub {tailleClé}/{IDdeLaCléPri}} {Date de création}
Notez l'identifiant de votre clé publique (*IDdeLaCléPub*). Vous en aurez besoin de temps en temps.
- Chiffrez et signez un fichier avec la commande gpg -es -r {Votre Prénom} {file}. Cela générera un fichier crypté nommé '{file}.gpg'.
- Déchiffrez ce fichier par la commande gpg {file}.gpg.
- gpg ––clearsign {file} créera une signature dans le fichier '{file}.asc' sans crypter le fichier.
- Vérifiez cette signature par gpg ––verify {file}.asc
- À partir de Mandrivalinux 8.2, la clé publique de Mandriva est automatiquement importée dans la liste de clés ('keyring') de l'utilisateur root lorsque le paquetage gnupg est installé. Pour les autres utilisateurs, pour ajouter la clé publique de Mandriva stockée sur le CD à la liste des clés ('keyring'), utilisez la commande : gpg ––import /mnt/cdrom/RPM-GPG-KEYS. Un bon exemple d'utilisation est lorsqu'un utilisateur (autre que root) veut construire des RPMs à partir des SRPMs (source). Ainsi l'utilisateur pourra vérifier si les SRPMs qu'il a récupérés sont bien des sources d'origine Mandriva.
- Vérifiez le RPM gnupg : rpm ––checksig gnupg-{...}mdk.rpm. Vous devriez avoir le message gnupg-{...}mdk: md5 gpg OK.
- Créez un certificat de révocation. Vous en aurez besoin si votre clé secrète est perdue ou compromise (volée) :
gpg -o revoke.asc ––gen-revoke {IDdeLaCléPri}. Copiez le fichier 'revoke.asc' en un endroit sûr.
Le fichier de configuration de GPG est '~/.gnupg/options' ou 'gpg.conf' suivant votre version de gnupg. Normalement vous n'avez pas besoin de le modifier. Voici mes suggestions pour rendre GPG un peu plus facile d'utilisation ;-)
- Supprimez le caractère dièse (#) du début de la ligne pour no-greeting (suppression du message de copyright) et pour default-recipient-self (pour être vous-même le destinataire par défaut).
- Modifiez la ligne 'keyserver' en keyserver search.keyserver.net ou utilisez le serveur de clés par défaut en supprimant le caractère dièse (#).
- Ajoutez no-secmem-warning pour vous débarasser de ces avertissements embêtants concernant la mémoire non sûre.
Davantage d'options sont disponibles via la commande man gpg.
[modifier] Distribution de la clef publique
Pour distribuer votre clé publique par email ou sur votre site Web, vous devez d'abord exporter votre clé sous la forme d'un fichier texte. Pour empêcher GPG d'utiliser le format binaire, ajoutez l'option --armor :
gpg --armor --export -o mykey {IDdeLaCléPub}
Maintenant vous pouvez envoyer ou poster 'mykey' et les autres personnes peuvent ajouter votre clé publique à leur liste de clés ('keyrings') avec gpg --import mykey.
Une approche plus générale est d'utiliser sur un serveur de clés (keyserver), par exemple un de la famille keyserver.net. De cette façon tout le monde pourra obtenir votre clé publique sans avoir besoin de vous la demander. Lui ou elle aura simplement à chercher sur le serveur votre nom, votre adresse email ou l'identifiant de votre clé, à récupérer la clé et à l'ajouter à sa liste de clés.
Pour soumettre votre clé publique à un serveur, utilisez la commande :
gpg --keyserver search.keyserver.net --send-key {key ID ou votre adresse email}
Cela peut prendre un certain temps. Il y a une liste de serveurs de clés alternatifs disponible sur keyserver.net. Certains serveurs de clés vous permettent aussi de copier/coller votre clé dans un champ de saisie texte.
Pour obtenir une clé à partir d'un serveur de clés, utilisez la commande :
gpg --keyserver search.keyserver.net --recv-key {key ID}
(Vous pouvez omettre le paramètre --keyserver si vous avez spécifié un serveur de clés qui se trouve dans le fichier ~/.gnupg/options). Pour cette commande, vous avez besoin de l'identifiant numérique de la clé que vous voulez. Si vous ne la connaissez pas (ou si le serveur rejette votre demande), vous pouvez rechercher une clé et la fournir à keyserver.net.
Vous pouvez aussi faciliter la tâche de vos correspondants en ajoutant l'identifiant numérique de votre clé publique dans votre signature, avec l'adresse de votre serveur de clés favori.
Pour vérifier les clés, échangez des messages cryptés qui contiennent l'empreinte de la clé (gpg --fingerprint {key ID}). Vous ne devriez utiliser que les clés dont vous avez pu vérifier l'empreinte en contactant le propriétaire de la clé.
[modifier] Validation des paquetages rpm avec les clés GnuPG
Ce sujet est entièrement traité dans l'article Clés de signature des paquetages
[modifier] GPG et les programmes de Mail
Voici quelques programmes de mail qui supportent actuellement GPG :
- Mozilla, qu'on ne présente plus, supporte GPG via le greffon Enigmail.
- Arrow, un client mail léger pour X.
- Exmh, interface graphique dédiée au système MH.
- KMail, le lecteur de courrier de KDE.
- Mew, un lecteur de courrier MIME pour (X)Emacs.
- Mutt, un lecteur de mail en mode console très populaire.
- Pine, un autre lecteur de mail en mode console très populaire. Vous aurez besoin d'un greffon comme [pgp4pine | http://pgp4pine.flatline.de/].
- Postilion, a next-ish mail application for X.
- Spruce, un client de mail GTK+.
- XFMail, un client mail très puissant pour X.
- Sylpheed, un autre client mail pour X
Les lecteurs de courrier avancés comme 'mutt' supportent les types MIME 'PGP/MIME' ou 'application/pgp'. Les autres ne le font pas, ce qui pourrait conduire à des problèmes. Dans ce cas, configurez votre client mail pour utiliser l'ancienne méthode (texte clair) (pgp_create_traditional ask-yes dans 'mutt').
Si vous utilisez un lecteur de mail comme Netscape Mail, vous pouvez toujours écrire vos messages, les chiffrer et les envoyer en pièces jointes. Les outils graphiques comme [Gpgp | http://www.geocities.com/~SiliconValley/Chip/3708/gpgp/gpgp.html], [~TkPGP | http://www.geocities.com/~SiliconValley/Chip/3708/tkpgp/tkpgp.htm] et [Geheimnis | http://geheimnis.sourceforge.net/] vous aiderons. Il serait peut-être plus simple d'utiliser un client mail décent, je pense ;-)
Et si vous voulez vraiment rester dans le lourd, essayez le [PGP Forwarding Server | http://pgpforwarder.sourceforge.net/]. Ce serveur sert de relais de chiffrement/déchiffrement pour les utilisateurs qui n'ont pas de programme GPG/PGP ou qui ne veulent pas l'utiliser.
[modifier] Mise en pratique avec thunderbird et Kgpg
[modifier] Installations
L'installation se fait simplement avec drakrpm, en recherchant thunderbird et kgpg. Vous devez aussi installer par la même occasion le greffon "enigmail" pour thunderbird.
Au premier lancement de KGpg, un assistant va démarrer. Il est extrêmement facile à manier, aussi je n'en parle pas plus en détail.
[modifier] Générer votre paire de clefs
Vous devez posséder une adresse mail. Cette adresse peut provenir de n'importe quel service (votre FAI par exemple). Les clefs seront générées pour cette adresse uniquement.
Vous pouvez ouvrir Kgpg dans l'onglet outils>Kgpg du menu K. Vous aurez alors ceci :
J'ai délibérément caché les informations, pour le moment vous n'avez rien, mais cela ne va pas tarder.
Allons dans Clefs> Générer une paire de clefs..., vous aurez alors ceci :
Il faut mettre votre nom, c'est celui-ci qui apparaîtra sur les serveurs afin que des personnes souhaitant vous écrire puisse recueillir votre clef publique. Ensuite l'adresse e-mail.
Je vous conseille de mettre une date d'expiration. Si un jour vous n'utilisez plus votre clef et que vous oubliez de la révoquer, elle le sera automatiquement. Garder une clef valide alors qu'elle n'est plus utilisée est dangereux, on pourrait, à terme, usurper votre identité.
Plus votre clef sera grande, plus elle résistera à un crackage. Je vous conseille de prendre 2048 ou 4096. Enfin, deux algorithmes : DSA & Algamal ou le célèbre RSA.
Si vous cliquez sur mode expert, vous pourrez créer vos clefs en mode console. Rien de beaucoup plus compliqué.
Entrez ensuite votre passphrase, plus elle sera longue, mieux ce sera. Et les clefs seront générées. Vous aurez ensuite l'occasion d'enregistrer un certificat de révocation. Je vous conseille de le faire de suite. Si votre clef privée venait à être compromise, elle vous permettrait de tuer votre clef.
[modifier] Envoyez et recevoir des clefs
Voilà ! Votre clef est générée. Vous n'avez plus qu'à la partager avec vos correspondants qui utilisent GPG. Pour cela, vous pouvez faire un bouton droit sur votre adresse e-mail qui apparait dans Kgpg et Exporter les clefs publiques. Vous pouvez entre autre la sortir en .asc. Votre correspondant devra juger plus tard de la fiabilité de cette clef, donc transmettez là de façon sûr.
[modifier] Envoyer un email chiffré
Puisque vous avez installé le greffon enigmail, vous remarquerez quelques changements dans thunderbird; notamment le menu OpenPGP.
Lorsque vous voulez envoyer un message avec l'adresse possédant une clef, vous obtiendrai ceci.
On remarque aussi la présence d'un menu OpenPGP, de nouveaux boutons... Ils sont présents quelque soit le compte email que vous selectionner. De plus, si vous sélectionner l'adresse email que nous venons de préparer, vous verrez apparaître en bas à droite, deux symboles verts. Le stylo (à gauche) signifie que le message sera signé et la clef que le message sera chiffré.
[modifier] Autres ressources
Le manuel de GNU Privacy Guard
List Of Related Applications
GnuPG.org
GnuPG FAQ
Wikibook sur GPG
Le manuel en ligne de commande