Cet article découle d'un besoins, pouvoir crypter des fichiers et des communications. Pour cela on va utiliser GnuPG. Avant tout il est important de comprendre le fonctionnement de la cryptographie asymétrique, je vous conseil cet article de Wikipédia. Il existe des interfaces graphiques pour gérer les paires de clés, mais cependant comme un vrai bon admin nous allons commencer par gérer nos clés en ligne de commande. On verra à la fin de cet article comment utiliser Enigmail avec Thunderbird pour signer et crypter les mails.
Créer et gérer les clés
Installation
On install le paquet suivant
# apt-get install gnupg
Création de la clé
gpg --gen-key
gpg (GnuPG) 1.4.9; Copyright (C) 2008 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.
gpg: répertoire `/home/guidtz2/.gnupg' créé
gpg: nouveau fichier de configuration `/home/guidtz2/.gnupg/gpg.conf' créé
gpg: AVERTISSEMENT: les options de `/home/guidtz2/.gnupg/gpg.conf' ne sont pas encore actives cette fois
gpg: le porte-clés `/home/guidtz2/.gnupg/secring.gpg` a été créé
gpg: le porte-clés `/home/guidtz2/.gnupg/pubring.gpg` a été créé
Sélectionnez le type de clé désiré:
(1) DSA et Elgamal (par défaut)
(2) DSA (signature seule)
(5) RSA (signature seule)
Votre choix ?
On prends le choix (1) et on choisit une taille de clé (par défaut 2048), ensuite on choisit le temps de validité de la clé, soit 0 pour une clé qui n'expire pas, ou alors on précise un nombre de jours/mois/année. Pour créer l'uid de la clé on rentre les paramètres suivants :
Nom réel: Guillaume Chéramy
Adresse e-mail: guidtz2@cheramy.name
Commentaire: clé de test
Au final on obtient les informations de la clé : pub : correspond à la partie publique Empreinte de la clé uid : l'identifiant complet de la clé sub : correspond à la partie privée de la clé Les 8 derniers caractères de l'empreinte correspondent à l'identifiant pub de la clé.
Création du certificat de révocation
En cas de perte ou d'usurpation de la clé privée par exemple ou lors de la perte ou l'usurpation du mot de passe de votre clé, il vous faudra révoquer votre clé.
# gpg --gen-revoke xxxxxxxx
Remplacer xxxxxxxx par les 8 caractères identifiant votre clé. Et préciser la raison de la révocation.
Gérer les clés
Obtenir la liste des clés
On peut obtenir la liste des clés de notre trousseau avec la commande suivante :
# gpg --list-keys
Exporter une clé sur un serveur de clé
On transfert la clé publique sur un serveur de clé pour la mettre à disposition des autres personnes pouvant en avoir besoin :
# gpg --keyserver <keyserver> --send-key <id>
Les serveurs de clés les plus connus sont les suivants : pgp.mit.edu subkeys.pgp.net
Rechercher une clé publique sur un serveur de clé
# gpg --keyserver <keyserver> --search-keys <identifiant>
Si vous ne connaissez pas l'identifiant de la clé vous pouvez chercher une clé par rapport à un nom de personne, un nom d'entreprise, par exemple chercher toutes les clés de Mr Dupont :
# gpg --search-keys dupont
Bon ok il y en a beaucoup.
Ajouter une clé au trousseau à partir d'un serveur
# gpg --keyserver <id>
Supprimer une clé publique de son trousseau
# gpg --delete-keys <id>
Ajouter ou retirer un uid à une clé
Les personnes ayant plusieurs adresses emails, comme moi, ont besoins de mettre plusieurs uid sur la même clé. On va utiliser la commande interactive suivante :
# gpg --edit-key <id>
La commande adduid permet de créer un uid. La commande uid id permet de sélectionner/déselectionner un id en précisant le numéro de l'id entre parenthèse. La commande deluid permet de supprimer l'uid sélectionné.
Signer une clé publique
Signer une clef publique, c'est certifier que cette clef est bien celle de la personne indiquée par l'identifiant. C'est pour cela qu'il faut faire la vérification d'empreinte avant de signer une clef. Après avoir signé une clef publique vous pouvez la renvoyer sur un serveur. Ceci apporte à tous votre garantie sur l'authenticité de cette clef.
Vérifier l'empreinte
# gpg --fingerprint <identifiant>
Signer la clé
# gpg --sign-key <identifiant>
Renvoyer la clé sur un serveur de clé Voir plus haut.
Changer la date d'expiration de la clé
# gpg --edit-key <identifiant> expire
Il faut bien sur disposer de la clé privée pour pouvoir faire cette modification.
Crypter/décrypter un fichier
Crypter un fichier
Crypter un fichier pour soi
# gpg --default-recipient-self --encrypt fichier_test
Vous obtenez alors un fichier fichier_test.gpg qui est votre fichier crypté.
Crypter un fichier pour plusieurs personnes
Pour cela il faut avoir leur clé publique et de préférence, il faut avoir signé les clés publiques (voir plus haut)
# gpg --recipient <id_recipient_1> --recipient <id_recipient_2> --encrypt fichier_test
Crypter et signer en même temps
# gpg --recipient <id_recipient_1> --recipient <id_recipient_2>
--sign --encrypt fichier_test
Décrypter un fichier
# gpg --output fichier_test --decrypt fichier_test.gpg
Votre mot de passe vous sera demandé pour décrypter le fichier, c'est le mot de passe de la clé privée.
Signer et crypter un mail
Avec thunderbird
Pour envoyer des mails de façon sécurisée, on utilisera Enigmail. Enigmail se présente comme une extension à Thunderbird, cet extension va nous permettre de :
- signer les mails
- crypter les mails
- gérer les clés
Avec gmail
J'ai pas essayé mais voici de quoi vous guider si vous utilisez gmail :
http://www.linux.com/archive/articles/62369