<- Revenir en arrière

#
Créer une clé GPG

##
Déjà, qu'est ce que c'est GPG?

GPG (pour GNU Privacy Guard) est un logiciel d'outils cryptographiques permettant de signer numériquement, s'authentifier, chiffrer (et déchiffrer), générer des clés etc...

GPG est un outil polyvalent dans la lutte car il permet de sécuriser le contenu d'une discussion même à travers un canal publique. Il permets aussi de prouver qu'un communiqué émmane bien de vous et non d'un.e usurpateur.ice.

Nous allons voir au travers de ce tutoriel, comment générer une paire de clés qui permettront de faire ce que l'on appelle de la cryptographie asymétrique.

##
Chiffrement asymétrique?

Et oui, on entre dans l'air des ordinateurs, et ceux-ci sont très puissant à casser certains codes. Vous connaissez surement le chiffrement de César qui consiste à "faire tourner" les lettres. On appelle ceci un algorithme. L'algorithme de César à besoin d'une clé qui corresponds à combien de lettres vous devez décaler.

Le chiffrement de César est dit symétrique. Cela veut dire que la clé pour chiffrer est la même qui est nécéssaire pour déchiffrer un message.

Cependant, cet algorithme est très facile à casser par analyse statistique. Ici nous allons nous intéresser a un algotithme beaucoup plus sécurisé: le RSA. Le RSA est un algorithme dit asymétrique: la clé de ciffrement est différente de la clé de déchiffrement, et une clé ne peut pas être utilisée pour effectuer le travail de l'autre.

Prennont un exemple concret: Alice et Bob. Alice et Bob veulent s'envoyer un message, sans qu'une personne tierce ne puisse la lire. Alice est la première à envoyer un message: elle chiffre son message avec la clé publique de Bob, une clé que tout le monde peut posséder. Cependant, personne à part Bob ne peut lire le message d'Alice. Et oui! Comme Bob est le seul détenteur de la clé privée, seul Bob peut alors lire le message de Alice, bien que tout le monde ai accès à la clé qui a été utilisée pour verrouiller le message.

##
Le problème de la clé privée

Une des failles de ce système repose sur le stockage de la clé privée. En effet, si la clé privée venait à être publiée par mégarde par Bob, tout le monde qui a enregistré les messages chiffrés d'Alice peut les lire en clair! Il faut donc trouver une solution pour sécuriser cette clé privée.

  • - Une approche à cela est de chiffrer la clé privée elle-même avec un mot de passe que seul Bob connaît
  • - Une autre serait de stocker la clé sur une clé physique comme une YubiKey, chiffrée par mot de passe. Ceci évite alors que Bob se fasse pirater et que l'attaquant.e puisse voler la clé et enregistrer le mot de passe puisque la clé virtuelle est stockée sur l'objet physique
  • - Enfin faire attention, utiliser des logiciels fiables, ne pas cliquer sur des liens douteux etc... (utilisez tails c'est cool)

D'ailleurs ce guide est inspiré du très bon drduh/YubiKey-Guide qui porte sur la configuration d'une telle Yubi Key.

##
Assez parlé, place à la pratique

Ce tutoriel est à destinée des utilisateur.ice.s de Linux. Si vous avez une distribution de Linux "simple", gpg devrait être installé de base sur votre ordinateur (il l'est sur Tails par exemple). Sinon, vous devriez savoir comment faire ;) (ou bien demandez de l'aide sur p0wder). Enfin, ce tutoriel détaille une procédure qui n'est pas particulièrement sécurisée. La faire sur un ordinateur compromis c'est compromettre cette clé. Nous recommandons l'usage d'un second ordinateur, complètement débranché d'internet comme figure sur drduh/YubiKey-Guide mais Tails très bien aussi.

###
Optionnel: Renforcez la sécurité de GPG

$ cd $GNUPGHOME
$ wget https://raw.githubusercontent.com/drduh/config/master/gpg.conf

###
Clé maîtresse

Une clé peut être signée digitalement par une autre clé. Elle devient alors une sous-clé de celle ci. Nous allons créer 4 clés. Une clé maitraîsse, et trois sous-clés: une pour l'authentification, une pour la signature et une pour le chiffrement. On pourraît créer une seule clé qui ferait tout mais globalement, ca serait moins sécurisé.

On va commencer par prendre un bout de papier et y noter un mot de passe. On peut s'aider de générateurs comme openssl ou bitwarden. La clé devrait faire minimum 10-20 caractères et comprendre lettres, chiffres et caractères spéciaux. Une fois que cela est fait, on va créer la clé maîtresse:

$ gpg --expert --full-generate-key
  • - On vient choisir l'option 8: RSA (set your own capabilities)
  • - Puis on viens ne garder que la capacité de certification en tapant E puis entrée puis S puis entrée puis Q
  • - On vient ensuite spécifier la longueur de la clé. On conseille 4096
  • - On renseigne ensuite la durée de vie de la clé. Pour celle-ci on va renseigner 0 (n'expire pas)
  • - Enfin, on entre y pour valider

GPG va ensuite vous demander de renseigner votre identité. Vous êtes bien enendu libre de mettre ce que vous souhaitez:

  • - Renseignez le nom associé à la clé
  • - Entrez l'addresse mail associée à la clé
  • - Pressez entrée pour ne pas mettre de commentaire
  • - Si vous avez fait une erreur, pas de panique, entrez N, C, E, O ou Q respectivement pour modifier le nom, le commentaire, l'addresse mail, valider ou abandonner la procédure

Félicitations! Vous avez créé votre clé :D. Notez précieusement l'ID de cette clé. Sur les dernière lignes, vous devriez lire "pub rsa4096/0x" avec 16 lettres en majuscules et chiffres. C'est votre ID de clé désormais.

###
Les sous clés

Dans cette étape, on va venir rajouter des sous-clés à la toute nouvelle clé qu'on vient de faire. Pour cela:

$ gpg --expert --edit-key VOTRE_ID_DE_CLÉ

Suivez ensuite ces opérations:

  • - --- clé de signature ---
  • - Tapez "addkey" pour ajouter une clé
  • - Choisissez 4: RSA (sign only)
  • - Choisissez une clé de 4096 bits
  • - Choisissez une durée de validité de un ou deux ans
  • - Confirmez avec y
  • - Confirmez encore avec y
  • - --- clé de chiffrement ---
  • - Tapez "addkey" pour ajouter une clé
  • - Choisissez 6: RSA (encrypt only)
  • - Idem: 4096, 1 ou 2 an(s), oui puis oui
  • - --- clé d'authentification ---
  • - Tapez "addkey" pour ajouter une clé
  • - Choisissez 8: RSA (set your own capabilities)
  • - Spécifiez uniquement l'authentification en entrant S puis entrée puis E puis entrée puis A puis entrée puis Q puis entrée
  • - Idem: 4096, 1 ou 2 an(s), oui puis oui
  • - --- sauvegarde ---
  • - Enfin, tapez save (puis entrée) pour enregistrer votre clé :D

###
Félicitations

Vous pouvez taper la commande suivante afin de vérifier vos clés:

$ gpg -K
/tmp.FLZC0xcM/pubring.kbx
-------------------------------------------------------------------------
sec rsa4096/0xFF3E7D88647EBCDB 2017-10-09 [C]
Key fingerprint = 011C E16B D45B 27A5 5BA8 776D FF3E 7D88 647E BCDB
uid Dr Duh [doc@duh.to]
ssb rsa4096/0xBECFA3C1AE191D15 2017-10-09 [S] [expires: 2018-10-09]
ssb rsa4096/0x5912A795E90DD2CF 2017-10-09 [E] [expires: 2018-10-09]
ssb rsa4096/0x3F29127E79649A3D 2017-10-09 [A] [expires: 2018-10-09]

Vous pouvez maintenant passer à l'utilisation de GPG