Makina Blog

Le blog Makina-corpus

Repatelier GPG


PGP, OpenPGP, GPG, signature, chiffrement. Vous saurez tout grâce à @lhirlimann.

Nous avons accueilli Ludovic Hirlimann, développeur chez Mozilla, ex QA lead pour thunderbird, pour nous parler de OpenGPG. Autour d'un repas, il nous a présenté les intérêts des signatures sécurisées PGP, l'utilisation de l'outil GPG pour gérer son trousseau de clés et fait une petite démonstration de signature croisée de clés.

Pourquoi signer ?

Nous n'avons pas besoin d'avoir de grands pouvoirs pour avoir de grande responsabilité. Et quand Ludovic nous explique que si tout le monde signait ses emails, il y aurait moins de spam, phishing (hameçonage) compris, l'intérêt est explicite.

Mais sans forcément virer dans l'utopie, l'intérêt d'une signature PGP est la même que celle d'un certificat SSL : avoir confiance en l'auteur du contenu. Et pour un éditeur de logiciel, pour des développeurs, ça peut être très utile de propager confiance et assurance.

Avec une paire de clés PGP, il est également possible de proposer à n'importe qui de nous envoyer un message chiffré que nous serons les seuls à pouvoir lire. Les tentatives de contrôle d'internet des pays même les plus républicains sont une démonstration de l'utilité de ce genre de prévention. Les lanceurs d'alerte ne savaient pas qu'ils allaient l'être avant de se retrouver dans de sales draps. Nos correspondants peuvent avoir n'importe quelle raison pour vous contacter avec un message chiffré et si nous leur laissons la possibilité de le faire, c'est déjà ça.

PGP, OpenPGP, GPG ? C'est un peu compliqué

PGP veut dire Pretty Good Privacy, c'est le premier programme qui a permis de définir le standard OpenPGP. PGP comme son standard a été proposé par Phil Zimmermann entre 1991 et 1997. PGP appartient maintenant à Symantec.

La fondation de Richard Stallman Free Software Foundation a proposé sa propre implémentation du standard OpenPGP appelée GNU PRivacy Guard ou GPG. C'est donc cette implémentation qu'il est recommandé d'utiliser puisque son développement est actif et que son code est ouvert et libre.

Comment ça marche ?

Le chiffrement asymétrique est au centre d'OpenPGP. L'idée est la suivante :

  1. nous générons deux clés, l'une privée et personnelle, l'autre publique ;
  2. nous publions la clé publique à qui veut ;
  3. nous gardons précieusement la clé privée.

Lorsque quelqu'un voudra nous envoyer un message que nous serons les seuls à pouvoir lire, il en chiffrera le contenu avec notre clé publique. Seule notre clé privée permettra de déchiffrer ce message.

Autre cas d'utilisation : si nous voulons certifier que nous sommes l'expéditeur d'un message, nous pouvons créer une empreinte du contenu, et la chiffrer avec notre clé privée, c'est ce qu'on appellera la signature à proprement parler. Le destinataire pourra également de son coté générer un empreinte et la comparer à celle qu'il obtient en déchiffrant la signature. Si il y a correspondance entre les deux empreintes, le destinataire pourra être sûr de deux choses grâce à cette signature numérique : c'est notre clé privée qui a permis de générer l'empreinte chiffrée du message et le contenu du message est le même que celui que nous avons envoyé (personne ne l'a altéré).

Et en pratique

En pratique nous nous reposerons sur un système Open Source comme Linux sur lequel nous installerons le programme GPG. Les étapes citées ci-dessous proviennent de la documentation recommandée par Ludovic : http://keyring.debian.org/creating-key.html. Elle-même étant basée sur le billet de blog de Ana Beatriz Guerrero López.

Créer une nouvelle clé GPG.

Il vous incombe, selon votre distribution, d'installer GPG avant de continuer.

Bien qu'il puisse y avoir des raisons d'utiliser une clé sur 2048 bits, il est recommandé d'utiliser une clé sur 4096 bits, non pas uniquement parce que la clé est plus longue, mais aussi parce que l'algorithme est plus solide.

Nous allons commencer par mettre à jour GPG pour utiliser SHA2. Pour ce faire, ajoutons à la fin du fichier ~/.gnupg/gpg.conf :

personal-digest-preferences SHA256 
cert-digest-algo SHA256 
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed 

Lançons la commande de génération de clés :

gpg --gen-key 

Depuis GnuPG 1.4.0+, l'option par défaut est "RSA", quelle que soit la version que vous utilisez, il faut choisir la génération d'une clé RSA.

Renseignons les informations que GPG nous demande (Nom réel, adresse mail et commentaire) et validons ces informations. GPG nous demande alors de choisir une passphrase, c'est à dire un mot de passe permettant de protéger notre clé privée.

À la fin de la génération de notre paire de clé, GPG vous précisera qu'il serait bon d'éditer notre nouvelle clé pour le chiffrement ou pour ajouter un UID.

Voici l'exemple d'Ana Beatriz Guerrero López qui va nous permettre de prendre des repères pour la suite :

pub 4096R/6AA15948 2009-05-10 
 Key fingerprint = 7A33 ECAA 188B 96F2 7C91 7288 B346 4F89 6AA1 5948 
uid Ana Beatriz Guerrero López <ana@ekaia.org> 

Ajouter un autre UID

Pour ajouter une autre adresse mail (une autre identité) à notre jeu de clé :

gpg --edit-key 0x6AA15948
 … 
command> adduid 

Remplacez 0x6AA15948 par l'empreinte de votre clé.

GPG nous demande toutes les informations nécessaires à notre nouvel UID : nom, mail et commentaire. GPG nous demandera notre passphrase pour dévérouiller notre clé. Enfin nous devrons sauvegarder notre clé.

command> save 

Ajouter une sous-clé pour le chiffrement

Nous devons éditer notre clé derechef :

gpg --edit-key 0x6AA15948
 … 
Command> addkey 

Après avoir dévérouillé la clé avec la passphrase, nous ajouterons une nouvelle clé pour le chiffrement (encryption), choix 6. Nous choisirons une longueur de 4096 bits pour cette nouvelle clé. Enfin nous choisirons la date d'expiration (jamais). Nous validerons tout nos choix et nous sauvegarderons la clé avec :

command> save 

Publier la nouvelle clé sur le serveur

Le serveur est configuré dans le fichier ~/.gnupg/gpg.conf, par défaut keyserver hkp://keys.gnupg.net. Pour envoyer la clé, nous exécuterons la commande GPG suivante :

gpg --send-key 6AA15948 

Là encore, vous adapterez l'empreinte de votre propre clé.

Bibliothèques de liens

Le repatelier

C'était un véritable plaisir d'accueillir Ludovic Hirlimann dans nos locaux. Nous pourrons désormais divulguer la bonne parole et organiser des booms de signatures (key signing party).

Un grand merci à lui.

Actualités en lien

Image
Encart article DrupalCamp 2024
06/03/2024

Makina Corpus, parte­naire du Drupal­Camp 2024

Nous sommes fiers d’an­non­cer que Makina Corpus est le spon­sor du Drupal­Camp à Rennes. Notre expert vous y propose une confé­rence « migrer de Drupal 7 à Drupal 10 ».

Voir l'article
Image
AFUP Meet-up DBToolsBundle
15/02/2024

Meetup AFUP Nantes de février : parlons anony­mi­sa­tion avec le DbTools­Bundle Symfony

Notre expert Symfony/PHP prend la parole au Meet-up de l’AFUP pour présen­ter le nouveau bundle Symfony déve­loppé par Makina Corpus : le DbTools­Bundle !

Voir l'article
Image
Encart référence Prospective
10/01/2024

Connaissez-vous la "Prospective" ?

Lors de l'Assemblée Générale du réseau MFQM au mois de juin dernier, nous avons eu la chance d'assister à une intervention de Pamela Bellier et Emmanuel Turbé sur la définition même de la Prospective et de ses enjeux.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus