GPG : création de votre première paire de clefs et chiffrement d'un fichier

Celui qui met plus de 10 minutes ira au coin 52
En bref
image dediée
Crédits : ismagilov/iStock
Sécurité
Par
le mardi 27 décembre 2016 à 18:01
David Legrand

Nous avons décidé de continuer à étudier GnuPG (GPG), mais à travers la création d'une paire de clefs et le chiffrement d'un premier fichier. Une procédure bien plus simple qu'il n'y paraît. Testez, vous verrez.

Après vous avoir expliqué les concepts de base de la cryptologie et du chiffrement et vous avoir détaillé tout ce qu'il faut savoir sur GnuPG, passons aux travaux pratiques. Dans un premier temps, nous allons nous attarder sur son installation, la création d'une première paire de clefs et le chiffrement d'un fichier. L'occasion de voir que cela ne demande que... quelques minutes.

Le but est d'effectuer une première approche, pas de vous fournir une paire de clefs définitive que vous pourrez partager largement. Attention donc à ne pas la diffuser sur un serveur de clefs. Car une fois que ce sera fait, il sera impossible de la faire supprimer.

Nous reviendrons dans de prochains articles sur le renforcement et la publication d'une paire de clefs, la signature de clefs tierces, la gestion des sous-clefs, l'intégration à une clef USB en utilisant OpenPGP Card, le chiffrement des emails et l'évolution du fonctionnement des serveurs de clefs.

Pour chaque système d'exploitation on trouve des ensembles d'outils assez complets et des alternatives qui facilitent la gestion des clefs et le chiffrement au quotidien. Nous proposerons à chaque fois nos guides pour trois OS : Debian 8.0 (Jessie), macOS 10.12 (Sierra) et Windows 10.

Pour nos essais, nous utiliserons notre nouvelle identité secrète : Jean Deauh <me@jeandeauh.fr>. En ligne de commande, nous nous baserons sur la branche 2.1 de GnuPG qui reflètera mieux le fonctionnement de l'outil dans les mois à venir. Ces essais seront effectués sous Windows mais peuvent être reproduits à l'identique depuis un terminal sous Debian ou macOS.

Une clef privée étant protégée par une phrase de passe, nous ne pouvons que vous conseiller de relire notre article consacré au choix d'un bon mot de passe, qui détaille aussi la notion d'entropie que vous retrouverez évoquée ici.

Installer GnuPG et de quoi l'utiliser facilement

Installer GnuPG est assez simple puisqu'il suffit pour cela de télécharger la version dédiée à votre système d'exploitation sur le site du projet. Néanmoins, cela ne permet un usage qu'en ligne de commande, ce qui n'est pas toujours la préférence des utilisateurs. Surtout pour un public qui n'y est pas habitué ou pour un usage quotidien.

Pour cela, il existe des outils complémentaires et des packages qui proposent une interface graphique. Pour en profiter, il vous suffit de les télécharger et de les installer.

  • Sous Debian (Nautilus et Seahorse)

Sous Debian, où l'utilisation de GPG fait partie des mœurs, tout est presque natif. GPG est en effet installé par défaut avec le système et le gestionnaire de mot de passe (Seahorse) propose aussi de gérer vos paires de clefs. Attention néanmoins, c'est la branche classique qui est proposée par défaut. Pour utiliser la branche stable, il faut utiliser la commande gpg2.

Il ne manque qu'un petit plug-in au gestionnaire de fichiers Nautilus pour intégrer directement des fonctionnalités de chiffrement. Il peut être trouvé dans le gestionnaire de paquets sous le nom seahorse-nautilus ou installé avec la ligne de commande suivante : 

apt install seahorse-nautilus

Notez que vous pouvez aussi très bien installer des outils comme GPA pour la gestion de vos clefs : 

apt install gpa
  • Sous macOS (GPG Suite)

Sous macOS comme sous Windows, il faut télécharger un package spécifique. Dans le premier cas il s'agit de GPG Suite proposé par GPGTools. Attention, il ne faut pas le confondre avec PGP Tools proposé dans l'App Store à 0,99 euro. Ainsi, il est bel et bien gratuit.

Il intègre MacGPG (basé sur la branche stable), GPG Keychain pour la gestion des clefs, GPG Services pour le chiffrement intégré via les menus contextuels du système et GPGMail, un plug-in pour Apple Mail. Attention, ce dernier n'est pas encore compatible avec macOS 10.12 (Sierra), une solution temporaire étant fournie en attendant la mise en ligne de la version 2017.1 finale.

GnuPG macOS GPG SuiteGnuPG macOS GPG Suite

  • Sous Windows (GPG4Win)

Sous Windows, c'est GPG4Win qui est le package de référence. Ici, vous aurez le choix entre la version 2.x basée sur la branche stable et la 3.x (actuellement en bêta) basée sur la branche moderne. Cette dernière devrait être finalisée début 2017 et intègre des versions plus récentes des outils fournis.

On y retrouve là aussi un gestionnaire de clef, Kleopatra (GPA est proposé en option), GPGEx pour l'intégration aux menus contextuels et GPGOL pour l'intégration à Outlook (mais pas à l'application Courrier).

GPG4Win 3.xGPG4Win 3.x

Créer votre première clef

  • Sous Debian

Le gestionnaire de mots de passe de Debian (Seahorse) gère nativement les clefs GPG. Ainsi, il suffit de le lancer, de se rendre dans la section dédiée et de cliquer sur le « + » pour démarrer la procédure.

Là on vous demandera ce qu'il faut créer. Cliquez sur « Clé PGP ». Vous devrez alors indiquer les deux informations principales, à savoir le nom/prénom et l'adresse email associés à la paire de clefs. Les paramètres par défaut sont de type RSA 2048 bits sans expiration, mais vous avez la possibilité de les modifier simplement dans les « Options avancées de la clé ». Nous avons opté pour du RSA 4096 bits valable pour une durée d'un an.

Vous serez ensuite invités à choisir votre phrase de passe. Quelques secondes plus tard, la procédure sera terminée. Vous pourrez alors voir et modifier les détails de la paire de clef à travers le menu Propriétés (clic droit).

Nautilus Seahorse GPGNautilus Seahorse GPG

  • Sous macOS

Pour créer votre paire de clefs sous macOS, il vous faut utiliser l'outil GPG Keychain de GPG Suite. Un bouton « Nouveau » vous permettra d'ouvrir une fenêtre vous demandant simplement d'indiquer un couple nom/prénom, une adresse email et une « phrase secrète ». Vous pouvez aussi choisir de publier cette nouvelle clef, ce que vous ne devez pas faire dans un premier temps (nous verrons cela plus tard).

Pour accéder à l'ensemble des paramètres, vous devez cliquer sur « Options avancées ». Vous aurez alors la possibilité d'ajouter un commentaire, de choisir le type de clef et de préciser sa date d'expiration. Si vous utilisez une phrase secrète trop simple, un avertissement sera affiché.

GnuPG macOS GPG SuiteDétail clef GnuPG macOS GPG Keychain

Vous serez ensuite invité à effectuer des actions avec votre clavier/souris afin de maximiser l'entropie. Une fois la procédure terminée, la clef apparaîtra en gras afin d'indiquer que vous disposez de la clef publique (pub) et privée (sec).

D'un clic droit vous pourrez voir les détails, la copier, la supprimer, décider d'exporter la clef sous la forme d'un fichier, avec la clef secrète ou non. Vous pourrez aussi envoyer la clef publique, ce qui permet de l'intégrer facilement à une conversation ou un email.

  • Sous Windows

Une fois la procédure d'installation de GPG4Win terminée, il vous sera proposé de lancer Kleopatra. Il s'agit de l'interface de référence pour la gestion de vos paires de clefs, mais aussi pour tout un tas d'actions comme le chiffrement et la vérification de fichiers.

Pour créer votre première clef, il vous suffira de vous rendre dans Fichier > Nouveau certificat, ou d'utiliser le raccourci CTRL+N. Là, vous devrez choisir le type de clef que vous désirez créer (X.509 étant aussi géré). Choisissez OpenPGP.

Création Clef GPG KleopatraCréation Clef GPG Kleopatra

Par défaut, les trois informations de base vous seront demandées : nom/prénom, email et commentaire. La clef créée sera de type RSA 2048 bits, sans date d'expiration. Vous pourrez modifier ces paramètres via le bouton « Configuration avancée... ». Dans notre cas nous avons opté pour une clef RSA 4096 bits valable 1 an.

Vous pourrez alors vérifier les paramètres de votre clef, puis vous serez invités à choisir votre phrase de passe, avec un indicateur de qualité. Attention, si vous en choisissez une sans chiffre ou caractère spécial, vous serez invité à en fournir une plus complexe (ou à continuer si vous le désirez).

Vous serez ensuite incités à effectuer des actions comme taper au clavier, bouger la fenêtre avec la souris ou lancer des applications afin de générer de l'entropie. Une fois votre paire de clefs créée, son empreinte sera affichée et il vous sera proposé de la sauvegarder, de partager la clef publique par email ou de l'envoyer vers un serveur de clefs (ce que nous verrons plus tard).

Création Clef GPG KleopatraCréation Clef GPG Kleopatra

  • En ligne de commande

Comme indiqué en introduction, nous utilisons ici une version de la branche 2.1 de GPG qui intègre des procédures différentes pour la création d'une paire de clefs et de nouveaux paramètres par défaut. Jusqu'à maintenant, tout passait par la commande --gen-key qui proposait une version plus complète à travers le paramètre --expert

Désormais, c'est un mode simplifié qui est proposé par défaut. gpg --gen-key permet ainsi de créer rapidement une clef de base, tout en invitant à taper le nom/prénom, l'adresse email et à confirmer. Des étapes qui ne sont pas forcément nécessaires puisqu'un mode rapide est aussi disponible.

Celui-ci permet de générer une paire de clefs en une seule commande, ce qui devrait faciliter l'intégration à des scripts, possible en mode batch (voir cette page du manuel). Essayons avec la commande la plus simple :

gpg --quick-gen-key 'Jean Deauh <me@jeandeauh.fr>'

Comme avec la nouvelle version de --gen-key, la paire de clefs générée utilisera des paramètres par défaut : RSA 2048 bits sans date d'expiration. Cela ira pour nos premiers essais, même si pour un usage plus définitif on aura tendance à considérer que ce n'est pas suffisant.

Sachez que vous avez néanmoins la possibilité de préciser certains paramètres comme expliqué dans le manuel. Nous avons par exemple utilisé cette commande pour générer une clef RSA 4096 bits valable un an :

gpg --quick-gen-key 'Jean Deauh <me@jeandeauh.fr>' rsa4096 - 1y

Malheureusement, dès que des paramètres complémentaires sont passés, seule une clef primaire est créée, alors qu'habituellement le chiffrement est attribué par défaut à une sous-clef (voir cet article). Ainsi, il est précisé que « cette clef ne peut pas être utilisée pour chiffrer » et qu'il faut la compléter. Dommage.

Notez qu'il est possible de remplacer « - » par un ou plusieurs usages. Ainsi, en utilisant sign,encr, il est possible de gérer le chiffrement et la signature, mais là encore sans sous-clef. Il faudra ainsi passer par une méthode plus complexe.

Reste la procédure complète, qui demandera le plus d'intervention mais qui est aussi la plus flexible. Elle s'utilise désormais via la commande suivante (qui peut être complétée par le paramètre --expert) : 

gpg --full-gen-key

Vous devrez alors choisir manuellement le type de clef (RSA/RSA), sa longueur en bits (4096), la durée avant son expiration (1y), puis préciser les informations sur l'identité associée (nom/prénom, email, commentaire) et la phrase de passe. Votre clef sera alors créée en à peine une minute.

Si cette procédure n'est pas la plus simple, elle est finalement celle qui donne le plus rapidement un résultat convenable qui s'adapte à vos préférences. Voici un exemple de la fenêtre du terminal lors de l'un de nos essais :

gpg (GnuPG) 2.1.15; Copyright (C) 2016 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Sélectionnez le type de clef désiré :
(1) RSA et RSA (par défaut)
(2) DSA et Elgamal
(3) DSA (signature seule)
(4) RSA (signature seule)
Quel est votre choix ? 1
les clefs RSA peuvent faire une taille comprise entre 1024 et 4096 bits.
Quelle taille de clef désirez-vous ? (2048) 4096
La taille demandée est 4096 bits
Veuillez indiquer le temps pendant lequel cette clef devrait être valable.
0 = la clef n'expire pas
<n> = la clef expire dans n jours
<n>w = la clef expire dans n semaines
<n>m = la clef expire dans n mois
<n>y = la clef expire dans n ans
Pendant combien de temps la clef est-elle valable ? (0) 1y
La clef expire le 12/27/17 14:34:20 Paris, Madrid
Est-ce correct ? (o/N) o

GnuPG doit construire une identité pour identifier la clef.

Nom réel : Jean Deauh
Adresse électronique : me@jeandeauh.fr
Commentaire :
Vous avez sélectionné cette identité :
« Jean Deauh <me@jeandeauh.fr> »

Changer le (N)om, le (C)ommentaire, l'(A)dresse électronique ou (O)ui/(Q)uitter ? o
De nombreux octets aléatoires doivent être générés. 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'obtenir suffisamment d'entropie.
De nombreux octets aléatoires doivent être générés. 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'obtenir suffisamment d'entropie.
gpg: clef 129BEB3FCC9FD2EE marquée de confiance ultime.
gpg: revocation certificate stored as '...'
les clefs publique et secrète ont été créées et signées.

pub rsa4096 2016-12-27 [SC] [expire : 2017-12-27]
942DBF7A5D563AB96A6A996B129BEB3FCC9FD2EE
uid Jean Deauh <me@jeandeauh.fr>
sub rsa4096 2016-12-27 [E] [expire : 2017-12-27]

Chiffrer votre premier fichier

GnuPG est souvent associé à un chiffrement des emails. Mais il propose du chiffrement au sens large. Puisqu'il s'agit d'un outil asymétrique utilisant une paire de clefs, aucun mot de passe ne sera nécessaire (voir cet article).

Ainsi, vous chiffrez pour un ou plusieurs destinataires en fonction de leurs clefs publiques. Ils seront ainsi les seuls à pouvoir le lire et vous pourrez leur transmettre les données de la manière que vous souhaitez, sans crainte que le contenu puisse être analysé ou intercepté.

CNIL Chiffrement
Crédits : CNIL (licence: CC by 4.0)

Il est aussi possible de simplement signer un fichier, afin d'assurer que vous en êtes bien à l'origine et qu'il n'a pas été modifié. C'est notamment ce que proposent de nombreuses distributions linux ou applications en complément de leurs liens de téléchargement.

Notez que souvent, les outils exploitant GPG vous proposeront aussi la possibilité d'utiliser un chiffrement par mot de passe. Il sera alors symétrique et vous pourrez simplement transmettre le fichier chiffré à n'importe qui, le mot de passe étant nécessaire pour l'ouvrir. Il faudra donc trouver un moyen de le transmettre de manière sécurisée. En ligne de commande, cette possibilité est offerte à travers le paramètres -c ou --symmetric.

Aujourd'hui, nous commencerons par chiffrer un premier fichier de manière asymétrique, mais pour nous-mêmes.

  • Sous Debian

Le plug-in pour Nautilus permet d'ajouter les fonctions de base aux menus contextuels de l'application. Ainsi, il suffira ici de sélectionner un fichier, puis Chiffrer pour que cela fonctionne. Une fenêtre apparaîtra alors pour vous demander de sélectionner les destinataires du fichier, et vous laissera le choix de le signer ou non.

Pour la fonction inverse, il vous suffira d'effectuer un double-clic ou de sélectionner Ouvrir avec Déchiffrer le fichier dans le menu contextuel. L'ensemble sera néanmoins un peu moins complet que ce que l'on trouve dans d'autres intégrations.

 Nautilus Seahorse GPG

  • Sous macOS

GPG Services fera ici tout le travail à travers son intégration aux menus contextuels. Notez d'ailleurs que cela fonctionnera aussi bien pour des fichiers dans le Finder que pour du texte, ce qui peut être pratique pour échanger de manière chiffrée à travers des messages privés sur Twitter par exemple (uniquement sur la version web par contre).

Dans tous les cas, pour chiffrer un fichier il vous suffira de faire un clic droit dessus puis de sélectionner OpenPGP: Encrypt File dans le menu Services. Là vous devrez choisir la liste des destinataires, préciser si vous voulez vous ajouter à cette liste et si vous voulez ajouter une signature. Pour déchiffrer ou vérifier la signature d'un fichier, il faudra passer par le même menu et sélectionner l'action appropriée.

GnuPG macOS GPG SuiteGnuPG macOS GPG Suite

  • Sous Windows

Ici, rien de plus simple puisque GpgEX propose directement la fonctionnalité au sein du menu contextuel. Un clic droit suffit donc. Plusieurs possibilités seront proposées, notamment Encrypt pour le chiffrement, Sign pour la signature. Il est aussi possible de cumuler les deux (c'est le choix proposé par défaut).

Vous devrez bien entendu valider la procédure en tapant votre phrase de passe. Une fois terminé, un fichier « .gpg » fera son apparition. Un double-clic permettra de le déchiffrer, tout comme un clic droit en sélectionnant Decrypt and verify.

Chiffrement Windows GnuPG GpgEXChiffrement Windows GnuPG GpgEX

  • En ligne de commande

Vous avez la possibilité de signer (-s ou --sign) et de chiffrer simplement un fichier à travers une simple ligne de commande. Vous pouvez même cumuler les deux. Si vous optez pour du chiffrement, il faudra penser à préciser un ou plusieurs destinataires (-r ou --recipient). L'identité des destinataires pourra être donnée sous diverses formes : nom, email, ID, empreinte. C'est à vous de décider.

gpg -se -r me@jeandeauh.fr SECRAY.txt
gpg -s SECRAY.txt

Pour déchiffrer (--decrypt) ou vérifier (--verify) ce sera aussi simple : 

gpg -d SECRAY.txt.gpg

Retrouvez notre dossier Chiffrement, clefs de sécurité et cryptobidules :


chargement
Chargement des commentaires...